package  Packer {
	
	import djarts.core.CacheManager;
	import djarts.core.*;
	import djarts.display.*;
	
	public class GraphicDefClipCollection
	{

		public var ClipsLoaded = null;
		public function GraphicDefClipCollection(graphicDefs:Array = null, callback = null)
		{
			if (graphicDefs != null) LoadDefs(graphicDefs, callback);
		}
		
		var defs = null;
		public function LoadDefs(graphicDefs:Array, callback)
		{
			defs = graphicDefs;
			ClipsLoaded = callback;
			LoadNextDef();
		}
		
		public function LoadNextDef()
		{	
			if (defs.length == 0)
			{
				Done();
				return;
			}
		
			var currentDef = defs.shift();
			var g = GraphicFactory.Instance().GetGraphicByID(currentDef.ID, null, GraphicLoaded);
			if (GraphicFactory.Instance().LoadedOK(g))
			{
				GraphicLoaded(null, g);
			}
		}
		
		var clips = new Array();
		protected function GraphicLoaded(caller, g)
		{
			clips.push(g);
			LoadNextDef();
		}
		
		protected function Done()
		{
			if (ClipsLoaded != null) ClipsLoaded(clips);
		}

	}
	
}
