package classes.matutoDesktop.core
{
	import classes.matuto.loaders.SwfLoad;
	import classes.matutoDesktop.events.EventCore;
	import classes.matutoDesktop.model.DataCore;
	import classes.matutoDesktop.view.BaseView;
	
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.utils.setTimeout;
	import classes.matuto.utils.display.LibraryExternal;

	public class Core extends Sprite
	{
		
		private var container		:Sprite;
		private var currentModule	:BaseView;
		private var url				:String;
		private var CLASS			:BaseView
		
		public static var ref		:Core;
		
		public function Core(_container:Sprite,_CLASS:BaseView,type:String="LOCAL",_start:String=" ")
		{

			container = _container;
		
			CLASS = _CLASS;
			initLocal();

			
			ref 	  = this;
			
		}
		
		
	

		
		
		//###################################################################################################//
		//LOCAL
		//###################################################################################################//
		
		private function initLocal():void
		{
			try
			{
				
					if(currentModule)
					{
					   currentModule.onDelete();
					   container.removeChild(currentModule);			   
					   currentModule = null;
					}
					
					url 		  = CLASS.toString().substring(8,CLASS.toString().length-1);
					currentModule = CLASS;
					dispatchEvent(new EventCore(EventCore.UPDATE_MODULE,getData)); 
					container.addChild(currentModule);
					currentModule.inicialize();
					container.setChildIndex(currentModule, container.numChildren - 1);
					
			
			} catch(e:Error){
			
				
				
				
			}
			
		}
	
		
		//###################################################################################################//
		//###################################################################################################//
		
		
		//###################################################################################################//
		//UPDATE 
		//###################################################################################################//

		
		
		public function updateLocal(_CLASS:BaseView):void
		{
			
			try 
			{

				CLASS = _CLASS;
				
				dispatchEvent(new EventCore(EventCore.CLOSE_MODULE,getData));
				currentModule.clear();

				dispatchEvent(new EventCore(EventCore.DELETE_MODULE,getData));
				initLocal();
			
			
			} catch(e:Error){
			
				
				
				
			}
		}
		
		public function get getData():DataCore
		{
		    return new DataCore(currentModule,url);  
		}
		
		//###################################################################################################//
		//###################################################################################################//

		
		
		
	}//end class
}