package captivate.veela_as3 
{
	import flash.display.*;
	import flash.net.*;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
	import flash.ui.*;
	import flash.events.*;
	import flash.media.*;
	
	import flash.external.ExternalInterface;

//	import captivate.veela_as3.rdMovie;
//	import captivate.veela_as3.rdPacemaker;
//	import captivate.veela_as3.rdSlideTransition;
//	import captivate.veela_as3.rdSlideData;

	public dynamic class CaptivateMainTimeline extends MovieClip 
	{
	
		var TOCEntries :Array;
		var TOCSettings:Object;
		var NoOfTOCEntries:Number = -1;
		public var tocInitDone:Boolean=false;
		public var PlaybarProperties:XML = CPSKINXMLSTR;
		
		public var  cpPbcBar_mc:MovieClip;//cpPlaybar;
		public var  playbar_mc:MovieClip;//rdPlaybar
		public var  cpSkinBorder_mc:MovieClip;
		
		public var  TOCManager:Object = null;
		public var  TOCContainer_mc:MovieClip;
		public var  TOCInfoImage_mc:MovieClip;
		public var 	ShowHideTocLeft_mc:MovieClip;
		public var 	ShowHideTocRight_mc:MovieClip;


		public var  contentLeft:int;
		public var  contentTop:int;
		public var  contentWidth:int;
		public var  contentHeight:int;
		public var isPreviewSkin;
		
		var cpMovieXForEmbededPlaybar:Number = 0;
		var cpMovieYForEmbededPlaybar:Number = 0;
		var cpMovieXForTOC:Number = 0;
		var cpMovieYForTOC:Number = 0;
	
		TOCENTRIESDEFINITION
		function CaptivateMainTimeline()
		{
			if(TOCContainer_mc != null)
				TOCContainer_mc.visible = true;
			if (TOCInfoImage_mc != null)
				TOCInfoImage_mc.visible = false;
			if(ShowHideTocLeft_mc)
				ShowHideTocLeft_mc.visible = false;
			if(ShowHideTocRight_mc)
				ShowHideTocRight_mc.visible = false;

			
			trace(" ******** CaptivateMainTimeline11 ********")
			
			addFrameScript(0, frame1);
			addFrameScript(1, frame2);
		
		}

		public function cpSetTOCTextParam(paramName:String, val1:int, val2):void
		{
			trace('cpSetTOCTextParam called with paramName = ' + paramName + 'val1 = ' + val1 + 'val2 = ' + val2 );
			if( (null == TOCManager) || (undefined == TOCManager) )
				return;
			if( (null == TOCManager.TOCModel) || (undefined == TOCManager.TOCModel) )
				return;
			if( (null == TOCContainer_mc) || (undefined == TOCContainer_mc) )
				return;
			if( (null == TOCContainer_mc.TOCBar_mc) || (undefined == TOCContainer_mc.TOCBar_mc) )
				return;
			switch(paramName)
			{
				case 'TextFontSizeL':
					TOCManager.TOCModel.setTextFontSize(val1, val2);
					break;

				case 'TextColorL':
					TOCManager.TOCModel.setTextFontColor(val1, val2);
					break;
					
				case 'TextBoldL':
					TOCManager.TOCModel.setTextFontBold(val1, val2);
					break;
					
				case 'TextItalicL' :
					TOCManager.TOCModel.setTextFontItalic(val1, val2);
					break;
					
				case 'TextUnderlineL' :
					TOCManager.TOCModel.setTextFontUnderline(val1, val2);
					break;
					
				case 'TextFontName':
					TOCManager.TOCModel.setTextFont( val1, val2 );
			}
			TOCContainer_mc.TOCBar_mc.positionTOCEntries(false);
			TOCContainer_mc.TOCBar_mc.positionTOCInfo();
		}
		
		public function cpSetTOCParam(paramName:String, val):void
		{
			trace('cpSetTOCParam called with paramName = ' + paramName + 'val = ' + val);
			var tocInfo : Boolean = false;
			if( (null == TOCManager) || (undefined == TOCManager) )
				return;
			if( (null == TOCManager.TOCModel) || (undefined == TOCManager.TOCModel) )
				return;
			if( (null == TOCContainer_mc) || (undefined == TOCContainer_mc) )
				return;
			if( (null == TOCContainer_mc.TOCBar_mc) || (undefined == TOCContainer_mc.TOCBar_mc) )
				return;
			switch(paramName)
			{
				case 'tocVisible':
					TOCContainer_mc.visible = val;
					break;
				case 'tocColor':
					TOCManager.TOCModel.setTOCColor( val );
					break;
				case 'tocEntryColor':
					TOCManager.TOCModel.setTOCEntryColor( val );
					break;
				case 'tocEntryGlowColor':
					TOCManager.TOCModel.setTOCEntryGlowColor( val );
					break;
				case 'tocEntryActiveColor':
					TOCManager.TOCModel.setTOCEntryActiveColor( val );
					break;
				case 'tocHeadingColor':
					TOCManager.TOCModel.setTOCHeadingColor( val );
					break;
				case 'tocBorderColor':
					TOCManager.TOCModel.setTOCBorderColor( val );
					break;
				case 'tocPosition':
					TOCSettings.TOCPosition = val;
					break;
				case 'tocStyle':
					TOCSettings.TOCStyle = val;
					break;
				case 'tocTransparency':
					TOCContainer_mc.alpha = (100 - val)/100;
					break;
				case 'tocName':
					TOCManager.TOCModel.setName( val );
					tocInfo = true;
					break;
				case 'tocDesignation':
					TOCManager.TOCModel.setDesignation( val );
					tocInfo = true;
					break;
				case 'tocEmail':
					TOCManager.TOCModel.setEmail( val );
					tocInfo = true;
					break;
				case 'tocHyperlink':
					TOCManager.TOCModel.setHyperlink( val );
					tocInfo = true;
					break;
				case 'tocTitle':
					TOCManager.TOCModel.setTitle( val );
					tocInfo = true;
					break;
				case 'tocDescription':
					TOCManager.TOCModel.setDescription( val );
					tocInfo = true;
					break;
				case 'tocSelfPaced':
					TOCManager.TOCModel.setHasSelfPaced( val );
					break;
				case 'tocDuration':
					TOCManager.TOCModel.setHasDuration( val );
					break;
				case 'tocVisited':
					TOCManager.TOCModel.setHasVisited( val );
					break;
				case 'tocClearVisited':
					TOCContainer_mc.TOCBox_mc.TOCFooter_mc.Clear_Btn.visible = (val && TOCManager.TOCModel.getHasVisited());
					break;
				case 'tocSearch': 
					TOCContainer_mc.TOCBox_mc.TOCFooter_mc.ShowSearch_mc.visible = val;
					break;
				case 'tocQuiz':
					TOCManager.TOCModel.setHasSO( val );
					break;					
			}
			if( tocInfo )
			{
				TOCContainer_mc.TOCBar_mc.positionTOCInfo();
				TOCContainer_mc.TOCBar_mc.initializeTOC();
			}
			TOCContainer_mc.TOCBar_mc.positionTOCEntries(false);
			TOCContainer_mc.TOCBar_mc.ApplyItemData();
		}
				
		public function cpSetSkinParam(skinParamName:String, val):void
		{
			trace('cpSetSkinParam called with skinParamName = ' + skinParamName + 'val = ' + val);
			//var hasRewind:Boolean = true;
			//var hasBack:Boolean = true;
			//var hasPlayPause:Boolean = true;
			//var hasSlider:Boolean = true;
			//var hasForward:Boolean = true;
			//var hasCC:Boolean = true;
			//var hasMute:Boolean = true;
			//var hasExit:Boolean = true;
			//var hasInfo:Boolean = true;
			//var hasFastForward:Boolean = true;
			
			//var pbcBtnFaceColor:Number = 0x5D8a8a;
			//var pbcBtnGlowColor:Number = 0x00ff00;
			//var pbcBtnIconColor:Number = 0xffffff;
			//var pbcBkColor:Number = 0x123456;
					
			switch(skinParamName)
			{
				case 'pbcBtnFaceColor':
					{
						cpPbcBar_mc.pbcBar_mc.pbcBtnFaceColor = val;
					}
					break;
				case 'pbcBtnGlowColor':
					{
						cpPbcBar_mc.pbcBar_mc.pbcBtnGlowColor = val;
					}
					break;
				case 'pbcBtnIconColor':
					{
						cpPbcBar_mc.pbcBar_mc.pbcBtnIconColor = val;
					}
					break;
				case 'pbcBkColor':
					{
						cpPbcBar_mc.pbcBar_mc.pbcBkColor = val;
					}
					break;
				case 'pbcApplyColor':
					{
						cpPbcBar_mc.pbcBar_mc.pbcApplyColor = val;
					}
					break;
					
					
					
				case 'hasPlayPause':
					{
						cpPbcBar_mc.pbcBar_mc.hasPlayPause = val;
					}
					break;
				case 'hasRewind':
					{
						cpPbcBar_mc.pbcBar_mc.hasRewind = val;
					}
					break;
				case 'hasFastForward':
					{
						cpPbcBar_mc.pbcBar_mc.hasFastForward = val;
					}
					break;
				case 'hasBack':
					{
						cpPbcBar_mc.pbcBar_mc.hasBack = val;
					}
					break;
				case 'hasMute':
					{
						cpPbcBar_mc.pbcBar_mc.hasMute = val;
					}
					break;
				case 'hasExit':
					{
						cpPbcBar_mc.pbcBar_mc.hasExit = val;
					}
					break;
				case 'hasCC':
					{
						cpPbcBar_mc.pbcBar_mc.hasCC = val;
					}
					break;
				case 'hasForward':
					{
						cpPbcBar_mc.pbcBar_mc.hasForward = val;
					}
					break;
				case 'hasSlider':
					{
						cpPbcBar_mc.pbcBar_mc.hasSlider = val;
					}
					break;
				case 'transparency':
					{
						cpPbcBar_mc.pbcBar_mc.pbcBkAlpha = val/100;
					}
					break;
				case 'hasToolTip':
					{
						cpPbcBar_mc.pbcBar_mc.noToolTips = val;
						TOCManager.TOCModel.setNoToolTips( val );
					}
					break;
			}
			cpPbcBar_mc.pbcBar_mc.initPbcColor();
			cpPbcBar_mc.pbcBar_mc.initPbcBtnVisibility();
			cpPbcBar_mc.pbcBar_mc.layOutPbcBtns();
		}
	
		function frame1()
		{
			CPPREVIEWFRAME1
			//TOCSTR
			tocInitDone = true;
			
			if(ExternalInterface.available == true)
			{
				trace('ExternalInterface is available');
				flash.external.ExternalInterface.addCallback("cpSetSkinParam",cpSetSkinParam);
				flash.external.ExternalInterface.addCallback("cpSetTOCParam",cpSetTOCParam);
				flash.external.ExternalInterface.addCallback("cpSetTOCTextParam",cpSetTOCTextParam);
			}
			
			trace("cpSkinBorder_mc  "  +cpSkinBorder_mc );
//			if(cpSkinBorder_mc != null)	
//				cpSkinBorder_mc.visible = Boolean(isPreviewSkin);		

				if(NoOfTOCEntries != -1)
				{
					TOCManager = new cpTOCManager();
					TOCManager.parentMovie = this;
					TOCManager.createTOC();			
					TOCManager.setTocVisibility(true);
					var ref = this;
					if(TOCManager.TOCModel.getTOCStyle() == 1)
					{
						//seperate style -> show the toc
					TOCContainer_mc.visible = true;
					}
					else
					{
						//overlay style -> default visibility false
						TOCContainer_mc.visible = true;
					}
					TocOverlayBtnInitialize();
				}
				else if(TOCContainer_mc)
				{
					TOCContainer_mc.visible=true;
					ShowHideTocLeft_mc.visible = false;
					ShowHideTocRight_mc.visible = false;
				}
		}
		
		
		function frame2()
		{
			
			
			stop();
		}
		
		function TocOverlayBtnInitialize()
		{
			if(TOCSettings.TOCStyle != 0)	//Not overlay mode
				return;
				
			ShowHideTocLeft_mc.visible = false;
			ShowHideTocRight_mc.visible = false;
			
			ShowHideTocLeft_mc.gotoAndStop(1);
			ShowHideTocRight_mc.gotoAndStop(1);
			
			if(TOCSettings.TOCPosition == 1)	//if toc is on left
			{
				ShowHideTocLeft_mc.x = TOCContainer_mc.x + TOCManager.TOCModel.getTOCWidth();
				ShowHideTocRight_mc.x = TOCContainer_mc.x ;
				if(TOCContainer_mc.visible)
					ShowHideTocLeft_mc.visible = true;
				else
					ShowHideTocRight_mc.visible = true;
			}
			else
			{
				ShowHideTocLeft_mc.x = TOCContainer_mc.x + TOCManager.TOCModel.getTOCWidth() - ShowHideTocLeft_mc.width;
				ShowHideTocRight_mc.x = TOCContainer_mc.x - ShowHideTocRight_mc.width;
				if(TOCContainer_mc.visible)
					ShowHideTocRight_mc.visible = true;
				else
					ShowHideTocLeft_mc.visible = true;
			}
			
			ShowHideTocLeft_mc.y = cpMovieYForTOC + contentTop;
			ShowHideTocRight_mc.y = cpMovieYForTOC + contentTop;
			
			ShowHideTocLeft_mc.buttonMode = true;
			ShowHideTocLeft_mc.useHandCursor = true;
			ShowHideTocLeft_mc.addEventListener(MouseEvent.MOUSE_UP,onTocOverlayButtonUp);
			ShowHideTocLeft_mc.addEventListener(MouseEvent.MOUSE_OVER,onTocOverlayButtonOver);
			ShowHideTocLeft_mc.addEventListener(MouseEvent.MOUSE_OUT,onTocOverlayButtonOut);
			ShowHideTocLeft_mc.addEventListener(KeyboardEvent.KEY_DOWN,onTocOverlayButtonkeyDown);
			ShowHideTocLeft_mc.addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
			ShowHideTocLeft_mc.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
			ShowHideTocLeft_mc.tabEnabled = true;
			ShowHideTocLeft_mc.tabChildren = false;
			ShowHideTocLeft_mc.focusRect = true;
			
			ShowHideTocRight_mc.buttonMode = true;
			ShowHideTocRight_mc.useHandCursor = true;
			ShowHideTocRight_mc.addEventListener(MouseEvent.MOUSE_UP,onTocOverlayButtonUp);
			ShowHideTocRight_mc.addEventListener(MouseEvent.MOUSE_OVER,onTocOverlayButtonOver);
			ShowHideTocRight_mc.addEventListener(MouseEvent.MOUSE_OUT,onTocOverlayButtonOut);		
			ShowHideTocRight_mc.addEventListener(KeyboardEvent.KEY_DOWN,onTocOverlayButtonkeyDown);
			ShowHideTocRight_mc.addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
			ShowHideTocRight_mc.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
			ShowHideTocRight_mc.tabEnabled = true;
			ShowHideTocRight_mc.tabChildren = false;
			ShowHideTocRight_mc.focusRect = true;
		}
		
		function onTocOverlayButtonUp(aevet:Event)
		{
			TOCManager.showTOC();
		}
		
		function onTocOverlayButtonOver(aevet:Event)
		{
			aevet.currentTarget.gotoAndStop(2);
		}
		
		function onTocOverlayButtonOut(aevet:Event)
		{
			aevet.currentTarget.gotoAndStop(1);
		}
		
		function focusInHandler(aevent:Event)
		{
			onTocOverlayButtonOver(aevent);
		}
		
		function focusOutHandler(aevent:Event)
		{
			onTocOverlayButtonOut(aevent);
		}
		
		function onTocOverlayButtonkeyDown(aevent:Event)
		{
			if((aevent.keyCode == Keyboard.ENTER) || (aevent.keyCode == Keyboard.SPACE))
			{
				onTocOverlayButtonUp(aevent);
			}
		}
	};
}
