﻿package captivate.veela_as3.aggregator
{
	
	import flash.display.*;
	import flash.media.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.external.ExternalInterface;
	import flash.events.*;	
	
	public dynamic class AggMainTimeLine extends MovieClip
	{
		public var movieList:Array = new Array();
		public var AggManager;
		public var isCPMovie:Boolean = true;
		public var CPMovieType:Number = 2;
	
		var mySound:Sound = new Sound();
		var origVol:Number;
		public var MasterMovieIndex:Number;
		var contentHeight:Number = 510;
		var contentWidth:Number = 640;
		public var isPreview:Boolean;
		var loadExecuted:Number;
		public var isMediaFile:Boolean = false;
		
		//TOC info variables
		public var useInfoFromMM:Boolean = true;
		public var InfoName;
		public var InfoDesignation;
		public var InfoEMail;
		public var InfoHyperLink;
		public var InfoTitle ;
		public var InfoDescription;
		
		public var AggInfoImage_mc:MovieClip = null;
		public var ShowHideTocLeft_mc:MovieClip = null;
		public var ShowHideTocRight_mc:MovieClip = null;
		
		public var SWFFileID:Number = 0;
		public var AggContainer_mc:MovieClip;
		function AggMainTimeLine()
		{
			addFrameScript(0, onload);
			if(AggContainer_mc)
			{
				AggContainer_mc.visible = false;
			}
		}
		
		public function setMute(mute:Boolean)
		{
			var swfsound:SoundTransform = new SoundTransform();
			swfsound.volume = mute?0:1;
			//KK Change the SoundTransform of the CaptivateMainTimeline object.
			soundTransform = swfsound;
			//RK Needed for embedded sounds -- FLVs
			var swfsound1:SoundTransform = new SoundTransform();
			swfsound1.volume = mute?0:1;
			SoundMixer.soundTransform = swfsound1;
		}
		
		function onload() 
		{
			if(!isNaN(loadExecuted))
				return;
			trace("Condition success");
			//setMute(true);
			loadExecuted = 10;
			
			var i:Number;
			try
			{
				if((ExternalInterface.available == true) && (parent==stage))
				{
					myTrace("ExternalInterface is available");
					ExternalInterface.addCallback("cpEISetValue", cpEISetValue);
					ExternalInterface.addCallback("cpEIGetValue", cpEIGetValue);
					ExternalInterface.addCallback("cpGetValue", cpGetValue);
				}
			}
			catch(e)
			{
				myTrace("Security sandbox violation error " + e);
			}
			

			AGGREGATORMOVIELIST
			
			/*if(! isPreview)
			{
				System.security.allowDomain("*");
				for( i =0;i< movieList.length;i++)
				{
					movieList[i].moviePath = getLoadBase() + movieList[i].moviePath;
				}
			}//*/
			for( i =0;i< movieList.length;i++)
			{
				movieList[i].loaded = false;
				movieList[i].initialized = false;
				movieList[i].AggLoaded = false;
				movieList[i].contentMovie = null;
				movieList[i].timingUpdated = false;
				movieList[i].suspendVars = new Array(); 
			}
			
			AggManager = new cpAggManager();//new captivate.Veela_AS3.aggregator.cpAggManager();
			trace("creating cpAggManager " + cpAggManager);
			AggManager.NoOfMovies = movieList.length;
			AggManager.parentMovie = this;
			AggManager.LoadMovies();

		}
		
		
		function getLoadBase() 
		{
			if (__loadbase == undefined) 
			{
				var q = _url.indexOf("?");// skip query string
		
				if (q>0) 
				{
					__loadbase = _url.substring(0, Math.max(_url.lastIndexOf("/", q), _url.lastIndexOf("\\", q))+1);
				} 
				else 
				{
					__loadbase = _url.substring(0, Math.max(_url.lastIndexOf("/"), _url.lastIndexOf("\\"))+1);
				}
			}
			return __loadbase;
		}
		
		private function myTrace(str:String)
		{
			trace("AggMainTimeline::"+str);
		}

		//For External Interface
		public function cpEISetValue(variable:String, val):void
		{
			//myTrace("cpSetValue variable1 " + variable + " ; val  " + val);
			
			var arr:Array = variable.split(".");
			var ref = this;
			
			for(var i=0; i < arr.length -1; i++)
			{
				ref = ref[arr[i]];
			}
			var nVal:Number = Number(val);
			if(isNaN(nVal))
				ref[ arr[arr.length -1] ] = val;		//For Strings
			else
				ref[ arr[arr.length -1] ] = nVal;		//For Numbers and booleans

		}
		
		public function cpEIGetValue(variable:String)
		{
			//myTrace("cpGetValue variable " + variable);
			
			var arr:Array = variable.split(".");
			var ref = this;
			
			for(var i=0; i < arr.length -1; i++)
			{
				ref = ref[arr[i]];
			}
			ref = ref[ arr[arr.length -1] ];
			return ref;	
		}
		
		public function cpGetValue(variable:String)
		{
			return cpEIGetValue(variable);
		}
		function onTocOverlayButtonUp(aevet:Event)
		{
			AggManager.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);
			}
		}
		
		
	};
}