package com.guru.project.brother.game.introStep
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.display.button.LabelButton;
	import com.guru.display.LabelMovieClip;
	import com.guru.display.pagination.Pagination;
	import com.guru.facebookApplicationBase.gameBase.GameStepBase;
	import com.guru.facebookApplicationBase.tracking.Tracking;
	import flash.display.MovieClip;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class GameSectionIntroStep extends GameStepBase
	{
		private var mPagination:Pagination;
		private var mNextBtn:LabelButton;
		private var mIntroControl:LabelMovieClip;
		private var mIntroContent_mc:MovieClip;
		
		public function GameSectionIntroStep(pTimeline_mc:MovieClip, pNextCall:ICall = null, pPrevCall:ICall = null, pData_obj:Object = null)
		{
			super(pTimeline_mc, pNextCall, pPrevCall, pData_obj);
			
			Tracking.getInstance().track("GameSection_IntroStep");
			
			var instruction_mc:MovieClip = mTimeline_mc.instruction_mc;
			mIntroContent_mc = instruction_mc.content_mc;
			mPagination = new Pagination(instruction_mc.btnWithText_mc, instruction_mc.pagingBtnContainer_mc, mIntroContent_mc.totalFrames, Pagination.ALIGN_TOP, instruction_mc.prevBtn_mc, instruction_mc.nextBtn_mc, instruction_mc.pauseBtn_mc, instruction_mc.rollOverDetector_mc, true, 3);
			mPagination.setChangePageCall(new FunctionCall(this, changeIntro));
			
			mIntroControl = new LabelMovieClip(instruction_mc, "hide");
			
			mNextBtn = new LabelButton(mTimeline_mc.nextBtn_mc);
			mNextBtn.setPressCall(new FunctionCall(this, onNextBtnPress));
			
			mPagination.changeToPage(0);
		}
		
		override public function dispose():void 
		{
			mIntroControl.dispose();
			mIntroControl = null;
			
			mIntroContent_mc = null;
			
			mPagination.dispose();
			mPagination = null;
			
			mNextBtn.dispose();
			mNextBtn = null;
			
			super.dispose();
		}
		
		private function onNextBtnPress():void
		{
			mNextStepCall.execute();
		}
		
		private function changeIntro(pIndex_num:Number):void
		{
			mIntroControl.playTo("hide", new FunctionCall(this, doChangeIntro, pIndex_num));
		}
		
		private function doChangeIntro(pIndex_num:Number):void
		{
			mIntroContent_mc.gotoAndStop(pIndex_num + 1);
			mIntroControl.playTo("show", new FunctionCall(this, onChangeIntroDone));
		}
		
		private function onChangeIntroDone():void
		{
			mPagination.changePageDone();
		}
	}

}