package com.guru.section 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.display.LabelMovieClip;
	import flash.display.MovieClip;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class SectionBase
	{
		protected var mTimeline_mc:MovieClip;
		protected var mIndex_str:String;
		protected var mInited_bol:Boolean;
		protected var mControl:LabelMovieClip;
		
		public function SectionBase(pIndex_str:String, pTimeline_mc:MovieClip)
		{
			mTimeline_mc = pTimeline_mc;
			mIndex_str = pIndex_str;
			mInited_bol = false;
		}
		
		public function fadeIn(pDoneCall:ICall = null):void
		{
			if(mControl == null)
				this.init();
			
			mControl.playTo("in", new FunctionCall(this, onFadeInDone, pDoneCall));
		}
		
		public function fadeOut(pDoneCall:ICall = null):void
		{
			mControl.playTo("out", new FunctionCall(this, onFadeOutDone, pDoneCall));
		}
		
		public function dispose():void
		{
			mControl.dispose();
			mControl = null;
		}
		
		public function getName():String
		{
			return mIndex_str;
		}
		
		public function getTimeline():MovieClip
		{
			return mTimeline_mc;
		}
		
		protected function init():void
		{
			mControl = new LabelMovieClip(mTimeline_mc, "init");
		}
		
		protected function onFadeInDone(pDoneCall:ICall = null):void
		{
			if (pDoneCall != null)
				pDoneCall.execute();
		}
		
		protected function onFadeOutDone(pDoneCall:ICall = null):void
		{
			mControl.jumpTo("init");
			
			if (pDoneCall != null)
				pDoneCall.execute();
		}
	}

}