package com.guru.facebookApplicationBase.rank 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.conn.ConnAbstract;
	import com.guru.display.button.LabelButton;
	import com.guru.facebook.FacebookDataBridge;
	import com.guru.facebookApplicationBase.message.Message;
	import com.guru.panel.Panel;
	import com.guru.panel.StatusBar;
	import com.guru.utils.TimerUtil;
	import flash.display.MovieClip;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class RankTab
	{
		private var mId_num:Number;
		private var mTabBtn_mc:MovieClip;
		private var mTabBtn:LabelButton;
		private var mAPIPath_str:String;
		private var mPressCall:ICall;
		private var mPrePressCall:ICall;
		private var mGetDataConn:ConnAbstract;
		
		public function RankTab(pId_num:Number, pTabBtn_mc:MovieClip, pAPIPath_str:String)
		{
			mId_num = pId_num;
			mTabBtn_mc = pTabBtn_mc;
			mAPIPath_str = pAPIPath_str;
			
			mTabBtn = new LabelButton(mTabBtn_mc);
			mTabBtn.setPressCall(new FunctionCall(this, onTabBtnPress))
		}
		
		public function dispose():void
		{
			mTabBtn.dispose();
		}
		
		public function reset():void
		{
			mTabBtn.reset();
		}
		
		public function setPrePressCall(pCall:ICall):void
		{
			mPrePressCall = pCall;
		}
		
		public function setPressCall(pCall:ICall):void
		{
			mPressCall = pCall;
		}
		
		public function select():void
		{
			mTabBtn.onPress();
		}
		
		private function onTabBtnPress():void
		{
			try{
				mPrePressCall.execute();
			}catch (e) {	}
			
			mGetDataConn = new ConnAbstract(mAPIPath_str);
			mGetDataConn.setSuccessCall(new FunctionCall(this, onGetDataComplete));
			mGetDataConn.setFailCall(new FunctionCall(this, onGetDataError));
			//mGetDataConn.send( { uid:FacebookDataBridge.getLoggerUid() } );
			TimerUtil.setFrameDelay(5, new FunctionCall(mGetDataConn, mGetDataConn.send, { uid:FacebookDataBridge.getLoggerUid() }));
			Panel.showStatusBar(StatusBar.LOADING, Message.RANK_LOADING);
		}
		
		private function onGetDataComplete():void
		{
			if (mGetDataConn.getXML()..status == "true")
			{
				Panel.hideStatusBar();
				try{
					mPressCall.execute(mId_num, mGetDataConn.getXML());
				}catch (e) {	trace("WARNING! mPressCall is not set!"); }
			}
			else
			{
				this.onGetDataError();
			}
		}
		
		private function onGetDataError():void
		{
			Panel.showStatusBar(StatusBar.STATUS, Message.RANK_FAIL, new FunctionCall(mTabBtn, mTabBtn.reset));
		}
		
	}

}