package com.guru.project.brother.game.fabricStep 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.display.button.LabelButton;
	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 GameSectionFabricStep extends GameStepBase
	{
		private var mGiftItem:GiftItem;
		private var mFabricBtn_array:Array;
		private var mPrevBtn:LabelButton;
		private var mNextBtn:LabelButton;
		
		public function GameSectionFabricStep(pTimeline_mc:MovieClip, pNextCall:ICall = null, pPrevCall:ICall = null, pData_obj:Object = null)
		{
			super(pTimeline_mc, pNextCall, pPrevCall, pData_obj);
			
			Tracking.getInstance().track("GameSection_FabricStep");
			
			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));
			
			mGiftItem = new GiftItem(mTimeline_mc.item_mc);
			mGiftItem.changeItemTo(GameDataObject.sItemID_num);
			
			mFabricBtn_array = new Array();
			var itemBtn_mc:MovieClip;
			for (var i:Number = 0; itemBtn_mc = mTimeline_mc["fabricBtn" + i + "_mc"]; i++ )
			{
				var itemBtn:LabelButton = new LabelButton(itemBtn_mc);
				itemBtn.setPressCall(new FunctionCall(this, onItemBtnPress, i));
				mFabricBtn_array.push(itemBtn);
			}
			
			if (GameDataObject.sFabric_num != -1)
			{
				this.onItemBtnPress(GameDataObject.sFabric_num);
			}
			else
			{
				this.onItemBtnPress(0);
			}
		}
		
		override public function dispose():void 
		{
			mGiftItem.dispose();
			mNextBtn.dispose();
			mPrevBtn.dispose();
			
			super.dispose();
		}
		
		private function onItemBtnPress(pId_num:Number):void
		{
			GameDataObject.sFabric_num = pId_num;
			
			for (var i:Number = 0; i < mFabricBtn_array.length; i++ )
			{
				if( i != pId_num)
					LabelButton(mFabricBtn_array[i]).reset();
				else
					LabelButton(mFabricBtn_array[i]).select();
			}
			
			this.enableBtn(false);
			this.changeToItem(pId_num, new FunctionCall(this, onChangeItemDone));
		}
		
		private function onChangeItemDone():void
		{
			this.enableBtn(true);
		}
		
		private function changeToItem(pId_num:Number, pDoneCall:ICall = null):void
		{
			mGiftItem.changeFabricTo(pId_num, pDoneCall);
		}
		
		private function enableBtn(pEnable_bol:Boolean):void
		{
			for (var i:Number = 0; i < mFabricBtn_array.length; i++ )
			{
				LabelButton(mFabricBtn_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();
		}
		
	}

}