package com.guru.display.scrollPanel
{
	import com.guru.call.FunctionCall;
	import flash.display.MovieClip;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class GuruScrollPanel
	{
		private var mScrollContent_mc:MovieClip;
		private var mScrollMask_mc:MovieClip;
		private var mScrollBar_mc:MovieClip;
		private var mScrollBar:GuruScrollBar;
		private var mScrollableRange_num:Number;
		
		public function GuruScrollPanel(pScrollContent_mc:MovieClip, pScrollMask_mc:MovieClip, pScrollBar_mc:MovieClip)
		{
			mScrollContent_mc = pScrollContent_mc;
			mScrollMask_mc = pScrollMask_mc;
			mScrollBar_mc = pScrollBar_mc;
			
			this.init();
			this.update();
		}
		
		public function getScrollContentTimeline():MovieClip
		{
			return mScrollContent_mc;
		}
		
		public function dispose():void
		{
			mScrollBar.dispose();
		}
		
		public function update(pPercent_num:Number = 0, pJump_bol:Boolean = false):void
		{
			mScrollBar_mc.visible = mScrollContent_mc.height > mScrollMask_mc.height;
			mScrollBar.enable(mScrollBar_mc.visible);
			
			var target_num:Number = pPercent_num;
			if (pPercent_num < 0 || pPercent_num > 100)
			{
				target_num = Math.abs(mScrollMask_mc.y - mScrollContent_mc.y) / Math.abs(mScrollContent_mc.height - mScrollMask_mc.height)*100;
				target_num = Math.min(100, Math.max(0, target_num));
			}
				
			mScrollBar.update(target_num, pJump_bol);
		}
		
		public function enable(pEnable_bol:Boolean):void
		{
			mScrollBar.enable(pEnable_bol);
		}
		
		private function init():void
		{
			mScrollContent_mc.mask = mScrollMask_mc;
			mScrollContent_mc.x = mScrollMask_mc.x;
			mScrollContent_mc.y = mScrollMask_mc.y;
			
			mScrollBar = new GuruScrollBar(mScrollBar_mc);
			mScrollBar.setUpdateCall(new FunctionCall(this, onDrag));
			
			this.update();
		}
		
		private function onDrag(pPercent_num:Number):void
		{
			mScrollContent_mc.y = mScrollMask_mc.y - Math.abs(mScrollContent_mc.height - mScrollMask_mc.height) * pPercent_num;
		}
	}

}