package com.guru.project.brother.game.chooseStep 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.display.button.LabelButton;
	import com.guru.display.LabelMovieClip;
	import com.guru.facebookApplicationBase.gameBase.GameStepBase;
	import com.guru.facebookApplicationBase.tracking.Tracking;
	import com.guru.project.brother.game.GameDataObject;
	import com.guru.project.brother.game.item.GiftItem;
	import flash.display.MovieClip;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class GameSectionChooseStep extends GameStepBase
	{
		private var mItemBtn_array:Array;
		private var mPrevBtn:LabelButton;
		private var mNextBtn:LabelButton;
		private var mGiftItem:GiftItem;
		private var mItemControl:LabelMovieClip;
		
		public function GameSectionChooseStep(pTimeline_mc:MovieClip, pNextCall:ICall = null, pPrevCall:ICall = null, pData_obj:Object = null)
		{
			super(pTimeline_mc, pNextCall, pPrevCall, pData_obj);
			
			Tracking.getInstance().track("GameSection_ChooseStep");
			
			mNextBtn = new LabelButton(mTimeline_mc.nextBtn_mc);
			mPrevBtn = new LabelButton(mTimeline_mc.prevBtn_mc);
			
			mNextBtn.setPressCall(new FunctionCall(this, onNextBtnPress));
			mPrevBtn.setPressCall(new FunctionCall(this, onPrevBtnPress));
			
			mItemControl = new LabelMovieClip(mTimeline_mc.itemControl_mc, "hide");
			mGiftItem = new GiftItem(mTimeline_mc.itemControl_mc.item_mc);
			
			mItemBtn_array = new Array();
			var itemBtn_mc:MovieClip;
			for (var i:Number = 0; itemBtn_mc = mTimeline_mc["itemBtn" + i + "_mc"]; i++ )
			{
				var itemBtn:LabelButton = new LabelButton(itemBtn_mc);
				itemBtn.setPressCall(new FunctionCall(this, onItemBtnPress, i));
				mItemBtn_array.push(itemBtn);
			}
			
			if (GameDataObject.sItemID_num != -1)
			{
				this.onItemBtnPress(GameDataObject.sItemID_num);
			}
			else
			{
				this.onItemBtnPress(0);
			}
		}
		
		override public function dispose():void 
		{
			mGiftItem.dispose();
			mNextBtn.dispose();
			mPrevBtn.dispose();
			
			super.dispose();
		}
		
		private function handleItem10():void
		{
			LabelButton(mItemBtn_array[mItemBtn_array.length - 1]).enabled = GameDataObject.isItem10Unlocked();
		}
		
		private function onItemBtnPress(pId_num:Number):void
		{
			GameDataObject.sItemID_num = pId_num;
			
			for (var i:Number = 0; i < mItemBtn_array.length; i++ )
			{
				if ( i != pId_num)
				{
					if (i == 9)
					{
						if(GameDataObject.isItem10Unlocked())
							LabelButton(mItemBtn_array[i]).reset();
					}
					else
					{
						LabelButton(mItemBtn_array[i]).reset();
					}
						
				}
				else
				{
					LabelButton(mItemBtn_array[i]).select();
				}
			}
			
			this.enableBtn(false);
			this.changeToItem(pId_num, new FunctionCall(this, onChangeItemDone));
		}
		
		private function onChangeItemDone():void
		{
			this.enableBtn(true);
			
			this.handleItem10();
		}
		
		private function changeToItem(pId_num:Number, pDoneCall:ICall = null):void
		{
			this.hideItem(new FunctionCall(this, doChangeToItem, pId_num, pDoneCall));
		}
		
		private function doChangeToItem(pId_num:Number, pDoneCall:ICall = null):void
		{
			mGiftItem.changeItemTo(pId_num);
			this.showItem(pDoneCall);
		}
		
		private function showItem(pDoneCall:ICall = null):void
		{
			mItemControl.playTo("show", pDoneCall);
		}
		
		private function hideItem(pDoneCall:ICall = null):void
		{
			mItemControl.playTo("hide", pDoneCall);
		}
		
		private function enableBtn(pEnable_bol:Boolean):void
		{
			//for (var i:Number = 0; i < mItemBtn_array.length; i++ )
			//{
				//LabelButton(mItemBtn_array[i]).enabled = pEnable_bol;
			//}
			mPrevBtn.enabled = pEnable_bol;
			mNextBtn.enabled = pEnable_bol;
		}
		
		private function onNextBtnPress():void
		{
			mNextStepCall.execute();
		}
		
		private function onPrevBtnPress():void
		{
			mPreviousStepCall.execute();
		}
		
	}

}