package com.guru.panel 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.display.LabelButton;
	import com.guru.display.LabelMovieClip;
	import flash.display.MovieClip;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class PanelBase
	{
		protected var mTimeline_mc:MovieClip;
		protected var mName_str:String;
		protected var mPanelControl:LabelMovieClip;
		protected var mContent_mc:MovieClip;
		protected var mCloseBtn:LabelButton;
		protected var mHideDoneCall:ICall;
		
		public function PanelBase(pName_str:String, pTimeline_mc:MovieClip)
		{
			mTimeline_mc = pTimeline_mc;
			mName_str = pName_str;
			mContent_mc = mTimeline_mc.content_mc;
			mPanelControl = new LabelMovieClip(mTimeline_mc, "hide");
			mCloseBtn = new LabelButton(mContent_mc.closeBtn_mc);
			mCloseBtn.setPressCall(new FunctionCall(this, hidePanel));
			
			mTimeline_mc.visible = false;
		}
		
		public function getName():String
		{
			return mName_str;
		}
		
		public function dispose():void
		{
			mCloseBtn.dispose();
			mPanelControl.dispose();
		}
		
		public function setHideDoneCall(pCall:ICall):void
		{
			mHideDoneCall = pCall;
		}
		
		public function showPanel(pDoneCall:ICall = null, pData_obj:Object = null):void
		{
			mTimeline_mc.visible = true;
			mPanelControl.playTo("show", new FunctionCall(this, onPanelShowDone, pDoneCall));
		}
		
		public function hidePanel(pDoneCall:ICall = null):void
		{
			mPanelControl.playTo("hide", new FunctionCall(this, onPanelHideDone, pDoneCall));
		}
		
		protected function onPanelShowDone(pDoneCall:ICall = null):void
		{
			if(pDoneCall != null)
				pDoneCall.execute();
		}
		
		protected function onPanelHideDone(pDoneCall:ICall = null):void
		{
			mCloseBtn.reset();
			mTimeline_mc.visible = false;
			
			if (mHideDoneCall != null)
				mHideDoneCall.execute();
				
			if(pDoneCall != null)
				pDoneCall.execute();
		}
		
	}

}