package com.guru.facebookApplicationBase.friendPanel 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	import com.guru.conn.ConnPath;
	import com.guru.display.button.LabelCheckButton;
	import com.guru.display.externalLoader.ExternalLoader;
	import com.guru.display.externalLoader.LoaderQueue;
	import com.guru.display.button.LabelButton;
	import com.guru.display.externalLoader.PhotoCache;
	import flash.display.BitmapData;
	import flash.display.MovieClip;
	import flash.text.TextFieldAutoSize;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class FriendSelectorItem
	{
		private var mTimeline_mc:MovieClip;
		private var mItem_mc:MovieClip;
		private var mLoader_mc:MovieClip;
		private var mLoader:ExternalLoader;
		private var mName_mc:MovieClip;
		private var mData_array:Array;
		private var mBtn:LabelCheckButton;
		private var mPressCall:ICall;
		private var mBmpData:BitmapData;
		private var mLoaderQueue:LoaderQueue;
		
		public function FriendSelectorItem(pTimeline_mc:MovieClip, pLoaderQueue:LoaderQueue)
		{
			mTimeline_mc = pTimeline_mc;
			mLoaderQueue = pLoaderQueue;
			
			mBtn = new LabelCheckButton(mTimeline_mc);
			mItem_mc = mBtn.getInnerTimeline().item_mc;
			mName_mc = mItem_mc.name_mc;
			mName_mc.text_txt.autoSize = TextFieldAutoSize.LEFT;
			mName_mc.text_txt.multiline = true;
			mName_mc.text_txt.wordWrap = true;
			mName_mc.mouseEnabled = false;
			mName_mc.mouseChildren = false;
			mLoader_mc = mItem_mc.loader_mc;
			mLoader = new ExternalLoader(mLoader_mc, 0, true);
			
			mBtn.setPressCall(new FunctionCall(this, onBtnPress));
		}
		
		public function getSpacer():MovieClip
		{
			return mItem_mc.spacer_mc;
		}
		
		public function isSelected():Boolean
		{
			return mBtn.isChecked();
		}
		
		public function setPressCall(pCall:ICall):void
		{
			mPressCall = pCall;
		}
		
		public function setData(pData_array:Array):void
		{
			mData_array = pData_array;
			this.update();
		}
		
		public function select():void
		{
			mBtn.select();
		}
		
		public function enable(pEnable_bol:Boolean):void
		{
			mBtn.enabled = pEnable_bol;
		}
		
		public function reset():void
		{
			mBtn.reset();
		}
		
		public function dispose():void
		{
			try{
				mBmpData.dispose();
				mBmpData = null;
			}catch(e){	}
			mBtn.dispose();
			mLoader.dispose();
		}
		
		public function getTimeline():MovieClip
		{
			return mTimeline_mc;
		}
		
		private function update():void
		{
			mName_mc.text_txt.text = mData_array["name"];
			if (PhotoCache.getInstance().hasBMPData(mData_array["pic"]))
			{
				mLoader.loadBitmapData(PhotoCache.getInstance().getBMPData(mData_array["pic"]).clone());
			}
			else
			{
				if (String(mData_array["pic"]).length > 0)
				{
					if (String(mData_array["pic"]).indexOf(".gif") == -1)
					{
						mLoader.setPath(mData_array["pic"]);
					}
					else
					{
						mLoader.setPath(ConnPath.getImagePrefix() + "default_user.jpg");
					}
						
					mLoader.setShowDone(new FunctionCall(this, createBMPData));
					mLoaderQueue.addToStack(mLoader);
				}
			}
		}
		
		private function onBtnPress():void
		{
			var copy_array:Array = new Array();
			
			for (var i in mData_array)
			{
				if (mData_array[i] is BitmapData)
				{
					copy_array[i] = BitmapData(mData_array[i]).clone();
				}
				else
				{
					copy_array[i] = mData_array[i];
				}
			}
			
			mPressCall.execute(copy_array);
		}
		
		private function createBMPData():void
		{
			try {
				mBmpData = new BitmapData(mLoader_mc.container_mc.width, mLoader_mc.container_mc.height, true, 0x00000000);
				mBmpData.draw(mLoader_mc.container_mc);
				mData_array["bmpData"] = mBmpData.clone();
				
				PhotoCache.getInstance().addBitmapData(mData_array["pic"], mBmpData.clone());
			}catch (e) {	Logger.eddy(e) }
		}
		 
	}

}