package com.guru.component.quiz 
{
	import com.guru.display.button.LabelButton;
	import com.guru.display.button.LabelCheckButton;
	import com.guru.display.Text;
	import com.guru.form.FormTextElement;
	import flash.display.MovieClip;
	import flash.events.FocusEvent;
	import flash.events.MouseEvent;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class QuizOptionButton extends LabelCheckButton
	{
		private var mContent_mc:MovieClip;
		private var mId_num:Number;
		private var mQuizData:QuizData;
		
		private var mIndexText:Text;
		private var mDynamicText:Text;
		private var mInputText:FormTextElement;
		
		private var mHitAreaSpacer_mc:MovieClip;
		private var mHitAreaGap_mc:MovieClip;
		
		public function QuizOptionButton(pTimeline_mc:MovieClip, pId_num:Number)
		{
			super(pTimeline_mc);
			
			mId_num = pId_num;
			mContent_mc = this.getInnerTimeline().content_mc
			mIndexText = new Text(mContent_mc.indexText_mc);
			mDynamicText = new Text(mContent_mc.dynamicText_mc);
			mInputText = new FormTextElement(mContent_mc.inputTextElement_mc, 1, 100);
			mInputText.getTextField().addEventListener(FocusEvent.FOCUS_IN, onFocusInHandler);
			
			mContent_mc.mouseEnabled = false;
			mIndexText.getTimeline().mouseEnabled = false;
			mDynamicText.getTimeline().mouseEnabled = false;
			
			mHitAreaSpacer_mc = mHitArea.spacer_mc;
			mHitAreaGap_mc = mHitArea.gap_mc;
		}
		
		public function isCustomTextFilled():Boolean
		{
			return !mInputText.checkError();
		}
		
		override public function dispose():void 
		{
			mInputText.getTextField().removeEventListener(FocusEvent.FOCUS_IN, onFocusInHandler);
			mInputText.dispose();
			mQuizData.dispose();
			mIndexText.dispose();
			mDynamicText.dispose();
			
			super.dispose();
		}
		
		override public function onPress(pEvent:MouseEvent = null):void 
		{
			super.onPress(pEvent);
			
			if (mQuizData && mQuizData.getOptionType(mId_num) == "1")
			{
				mHitArea.mouseChildren = true;
			}
		}
		
		public function setData(pData:QuizData):void
		{
			mQuizData = pData;
		}
		
		public function setInputText(pText_str:String):void
		{
			mInputText.setText(pText_str);
		}
		
		public function getInputText():String
		{
			return mInputText.getData();
		}
		
		public function refresh():void
		{
			mIndexText.setText(mQuizData.getOptionIndex(mId_num).replace(/\r/g, ""));
			mDynamicText.setText(mQuizData.getOptionDescription(mId_num).replace(/\r/g, ""));
			
			mIndexText.fitWidth();
			//mDynamicText.fitWidth();
			
			if (mQuizData.getOptionType(mId_num) == "0")
			{
				mInputText.setText("");
				mInputText.hideError();
				mInputText.getTimeline().visible = false;
			}
			else if (mQuizData.getOptionType(mId_num) == "1")
			{
				mInputText.setDefaultText(mQuizData.getOptionDefaultText(mId_num));
				mInputText.setText("");
				mInputText.hideError();
				mInputText.getTimeline().visible = true;
			}
			
			mDynamicText.getTimeline().x = mIndexText.getTimeline().x + mIndexText.getTimeline().width;
			mInputText.getTimeline().x = mDynamicText.getTimeline().x + mDynamicText.getTimeline().width;
			
			mHitAreaSpacer_mc.width = mTimeline.width;
			mHitAreaSpacer_mc.height = mTimeline.height;
			
			mHitAreaGap_mc.y = mHitAreaSpacer_mc.height;
		}
		
		private function onFocusInHandler(e:FocusEvent):void
		{
			if (!this.isChecked())
				this.onPress();
		}
	}

}