package com.guru.component.panel 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.display.button.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(pTimeline_mc:MovieClip, pName_str:String = "")
		{
			mTimeline_mc = pTimeline_mc;
			mName_str = pName_str;
			mContent_mc = mTimeline_mc.content_mc;
			mPanelControl = new LabelMovieClip(mTimeline_mc, "hide");
			
			if (mContent_mc.closeBtn_mc)
			{
				mCloseBtn = new LabelButton(mContent_mc.closeBtn_mc);
				mCloseBtn.setPressCall(new FunctionCall(this, onCloseBtnPress));
			}
			
			mTimeline_mc.visible = false;
		}
		
		public function getName():String
		{
			return mName_str;
		}
		
		public function dispose():void
		{
			if(mCloseBtn)
				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
		{
			if(mCloseBtn)
				mCloseBtn.reset();
				
			mTimeline_mc.visible = false;
			
			if (mHideDoneCall)
				mHideDoneCall.execute();
				
			if(pDoneCall)
				pDoneCall.execute();
		}
		
		protected function onCloseBtnPress():void
		{
			this.hidePanel();
		}
	}

}