var MPSFileLocation = "http://BGOMPS02.vizky.com/Demo/demos/motorsport/scenes/";
//var MPSFileLocation = VizkyGetPathOfHtmlPage() + "demos/motorsport/scenes/";
var StationID = 0;
var ChannelID = 0;
var ExternalSceneID = 0;
var InstanceSceneID = 0;
var UIextID = 0;
var UIinstID = 0;
var Crrcamera = 0;
var MenuSelect = 0;
var MenuPlay = false;
var IsPause = false;
var IsScenery = true;
var FlyPlay = false;
var crrScroll = 1;
var F1extID = 0;
var F1instID = 0;
var IsF1Info = false;
var IsVDOPlay = false;
var IsVol = true;
var IsPause = false;
//Full Window button scene
var extIDFull = 0;
var instIDFull = 0;
var fullflag = false
//Full Window button scene
var VizkyVersion = 0;
function Fullscreen(ControlObj)
{
	ControlObj.SetCommandPipeline(9);
	ControlObj.ClearCommandPipeline();
	ControlObj.ToggleFullscreen();
	if (fullflag)
	{
		ControlObj.ShowDirectorTag(instIDFull,"full","max");
		fullflag = false
	}else
		{
		   ControlObj.ShowDirectorTag(instIDFull,"full","min");
		   fullflag = true
		}
	ControlObj.SetCommandPipeline(0);
}
function OnVizkyInit(ControlObj)
 {
	 ControlObj.CreateViewport(3);
     ControlObj.SetDisplayDownloading(1);
	 StationID = ControlObj.GenerateStationID(window.location);
     ControlObj.SetViewportPercentPositionAndSize (0, 0, 0, 100, 100);
     ControlObj.SetViewportStationAndChannelID(0, StationID, ChannelID);
     ControlObj.SetViewportPercentPositionAndSize (1, 0, 0, 100, 100);
     ControlObj.SetViewportStationAndChannelID(1, StationID, ChannelID+1);

     ControlObj.SetViewportPercentPositionAndSize (2, 0, 0, 100, 100);
     ControlObj.SetViewportStationAndChannelID(2, StationID, ChannelID+2);
     ControlObj.CommitAllViewportStationAndChannelChanges();
	 
	 ControlObj.SetViewportPriorityLevel(1,10)
	 ControlObj.SetViewportPriorityLevel(2,20)

	VizkyVersion = ControlObj.GetVersion();
	var VersionArray = VizkyVersion.split(".");
	var currentVersion = ((parseInt(VersionArray[0]) << 28) | (parseInt(VersionArray[1]) << 24) | (parseInt(VersionArray[2]) << 16) | parseInt(VersionArray[3]));
	var requiredVersion = ((1 << 28) | (5 << 24) | (8 << 16) | 0);
	if(currentVersion >= requiredVersion)
	{		 
		 ExternalSceneID = ControlObj.Import(StationID, MPSFileLocation + "SepangCircuit11x3.mps.idx");
		 InstanceSceneID = ControlObj.Load(StationID, ExternalSceneID);
		 UIextID = ControlObj.Import(StationID, MPSFileLocation + "UI_Newx3.mps.idx");
		 UIinstID = ControlObj.Load(StationID, UIextID);
		 F1extID = ControlObj.Import(StationID, MPSFileLocation + "F1_0007x3.mps.idx");
		 F1instID = ControlObj.Load(StationID, F1extID); 

		 extIdFull = ControlObj.Import(StationID, "http://BGOMPS02.vizky.com/Demo/full/full.mps.idx");
		 instIDFull = ControlObj.Load(StationID, extIdFull);

		 SetVPCamera(1)
		 ControlObj.TakeIn(StationID, ChannelID, 0, InstanceSceneID);
		 ControlObj.TakeIn(StationID,ChannelID+2, 0, instIDFull);
	}else
		{
			//---------------Vizky Checkversion Text-------------//			
			var pleaseInstall2 = '<div class="tv2_millionaer_content millionaer_download" style="font-family: arial; font-size: 12px; padding-right: 200px;"><h2>Please upgrade your Vizky plug-in</h2><p style="font-size: 12px;">Your Vizky version is&nbsp;'+ VizkyVersion +'&nbsp;This page require at least Vizky version 1.5.8.0<br>We now add up more functions in the new version.<br /> Please update your Vizky to experience new enhancement of 3D Graphics.<br /><br /> <a target="_blank" style="color: #ff9000;" href="http://www.vizky.com/download/"><strong>Click to update your Vizky </strong></a><br />The program is developed from Vizrt, the world\'s leader in real-time 3D graphic render for broadcasting which has several major TV channels on the customer lists, including CNN and BBC.<br /></p><p style="font-size: 12px;"><a target="_blank" style="color: #ff9000;" href="http://mps2.vizky.com/node/68">Basic Troubleshooting</a><br /></p><p style="font-size: 12px;">When the program is installed, <strong>Restart the Browser</strong>.</p></div>';
			document.write(pleaseInstall2);
		}
}
function F1In()
{
	Control.ResetDirector(F1instID,"*")
	Control.TakeIn(StationID, ChannelID+1, 0, F1instID);
	Control.ContinueDirector(InstanceSceneID,"BlockScene")
}
function F1Out()
{
	Control.ContinueDirector(F1instID,"Fade")
	Control.waitBySecond(1)
	Control.ResetDirector(F1instID,"*")
	Control.TakeIn(StationID, ChannelID+1, 0, 0);
	Control.ResetDirector(InstanceSceneID,"BlockScene")
}

function SetVPCamera(Cmr)
{
	Crrcamera = Cmr
	Control.SetViewportCameraID(0,0,Crrcamera);
}
function TakeInUI()
{
	Control.ResetDirector(UIinstID,"*")
	Control.TakeIn(StationID, ChannelID+1, 0, UIinstID);
	if (!IsScenery)
	{
		Control.PlayDirectorToTag(UIinstID,"SceneryClick","off")
	}
}
function TakeOutUI()
{
	Control.ResetDirector(UIinstID,"*")
	Control.TakeIn(StationID, ChannelID+1, 0, 0);
}
function ScrollUp()
{
	if (crrScroll != 1)
	{
		crrScroll -= 1
		Control.PlayDirectorToTag(InstanceSceneID,"CircuitScroll",crrScroll)
	}
	Control.Log("crrScroll : " + crrScroll)
}
function ScrollDown()
{
	if (crrScroll != 19)
	{
		crrScroll += 1
		Control.PlayDirectorToTag(InstanceSceneID,"CircuitScroll",crrScroll)
	}	
	Control.Log("crrScroll : " + crrScroll)
}
function CloseCircuit()
{
	Control.PlayDirectorToTag(InstanceSceneID,"CircuitClick","off")
	MenuSelect = 0;
	MenuPlay = false;
}
function CloseDriver()
{	
	Control.PlayDirectorToTag(InstanceSceneID,"DriverClick","off")
	//Control.WaitBySecond(2)
	Control.ResetDirector(InstanceSceneID,"DLVolClick")
	Control.ResetDirector(InstanceSceneID,"DLPlayClick")
	//Control.ResetDirector(InstanceSceneID,"RPM")
	MenuSelect = 0;
	MenuPlay = false;
	//VDOOut()
	//	IsVDOPlay = false;
	IsPause = false;
	IsVol = true;
}
function OnVizkyLMouseDown(ControlObj)
{
	var ActObj = ControlObj.GetInterActivityObject();
	switch(ActObj)
	{
		//Full Screen Window//
		case ("Full"):
			Fullscreen(ControlObj); 
		break;
		//Full Screen Window//
		case("Fly"):
			if (MenuPlay)
			{
				if (MenuSelect == 1)
				{
					CloseCircuit()
				}else
					{
					  CloseDriver()
					}
			}
			Control.ResetDirector(InstanceSceneID,"FlyThrough")
			Control.ShowDirectorTag(InstanceSceneID,"FlyThrough","start")
			Control.ContinueDirector(InstanceSceneID,"FlyThrough")
			SetVPCamera(5)
			TakeInUI()
			FlyPlay = true;
		break;
		case("Reset"):
			ResetAll()
		break;
		case("DriverLap"):
			if (!MenuPlay)
			{
				MenuSelect = 2;
				Control.PlayDirectorToTag(InstanceSceneID,"DriverClick","on")
				Control.PlayDirectorToTag(InstanceSceneID,"DLPlayClick","play")
				Control.PlayDirectorToTag(InstanceSceneID,"DLVolClick","on")
				MenuPlay = true;
			}else
				{
					if (MenuSelect == 1)
					{
						Control.ResetDirector(InstanceSceneID,"CircuitClick")
						Control.PlayDirectorToTag(InstanceSceneID,"DriverClick","on")
						//Control.ContinueDirector(InstanceSceneID,"DLPlayClick")
						Control.PlayDirectorToTag(InstanceSceneID,"DLPlayClick","play")
						Control.PlayDirectorToTag(InstanceSceneID,"DLVolClick","on")
						IsVol = true;
						MenuSelect = 2;
						MenuPlay = true;
					}else
						{
						}
				}
			//Control.WaitBySecond(5)
			//VDOIn()
		break;
		//VDO Control
		case("DLPlay"):
			//VDOPause()
		break;
		case("DLReset"):
			//ResetVDO()
		break;
		case("Volume"):			
			if (IsVol)
			{
				//Control.SetViewportAudioLevel(0,1,0)
				Control.PlayDirectorToTag(InstanceSceneID,"DLVolClick","off")
				IsVol = false;
			}else
				{
					//Control.SetViewportAudioLevel(0,1,80)
					Control.PlayDirectorToTag(InstanceSceneID,"DLVolClick","on")
					IsVol = true;
				}
		break;	
		//VDO Control
		//Close for DriverLap	
		case("Driver1"):
			CloseDriver()
		break;
		case("CircuitInfo"):	
			if (!MenuPlay)
			{
				MenuSelect = 1;
				Control.PlayDirectorToTag(InstanceSceneID,"CircuitClick","on")
				MenuPlay = true;
			}else
				{
					if (MenuSelect == 2)
					{
						//VDOOut()
						Control.ResetDirector(InstanceSceneID,"DriverClick")
						Control.ResetDirector(InstanceSceneID,"DLPlayClick")
						Control.ResetDirector(InstanceSceneID,"DLVolClick")
						//Control.ResetDirector(InstanceSceneID,"RPM")
						Control.PlayDirectorToTag(InstanceSceneID,"CircuitClick","on")
						MenuSelect = 1;
						MenuPlay = true;
						IsPause = false;
						IsVol = true;
					}else
						{
						}
				}
		break;
		//Close for CircuitInfo
		case("Circuit1"):
			CloseCircuit()
		break;
		//Circuit Scroll Bar//
		case("ScrollUp"):
			ScrollUp()
		break;
		case("ScrollDown"):
			ScrollDown()
		break;
		case("PosFirst"):
			{
				Control.ShowDirectorTag(InstanceSceneID,"CircuitScroll","1")
				crrScroll = 1;
			}
			Control.Log("crrScroll : " + crrScroll)
		break;
		case("PosLast"):
			{
				Control.ShowDirectorTag(InstanceSceneID,"CircuitScroll","19")
				crrScroll = 19;
			}
			Control.Log("crrScroll : " + crrScroll)
		break;
		//Circuit Scroll Bar//
		case("Scenery"):
			if (IsScenery)
			{
				Control.PlayDirectorToTag(InstanceSceneID,"SceneryClick","off")
				if(FlyPlay)
				{
					Control.PlayDirectorToTag(UIinstID,"SceneryClick","off")
				}
				IsScenery = false
			}else
				{
					Control.PlayDirectorToTag(InstanceSceneID,"SceneryClick","on")
					if(FlyPlay)
					{
						Control.PlayDirectorToTag(UIinstID,"SceneryClick","on")
					}
					IsScenery = true
				}
		break;
		//UI Interactive//
		case("FlyPlay"):
			if (IsPause)
			{
				Control.ContinueDirector(InstanceSceneID,"FlyThrough")
				Control.PlayDirectorToTag(UIinstID,"FlyPlayClick","play")
				IsPause = false;
			}else
				{
					Control.StopDirector(InstanceSceneID,"FlyThrough")
					Control.PlayDirectorToTag(UIinstID,"FlyPlayClick","pause")
					IsPause = true;
				}
			Control.Log("IsPause : " + IsPause)
		break;
		case("FlyRestart"):
			Control.ResetDirector(InstanceSceneID,"FlyThrough")
			Control.ResetDirector(UIinstID,"FlyPlayClick")
			Control.ShowDirectorTag(InstanceSceneID,"FlyThrough","start")
			Control.ContinueDirector(InstanceSceneID,"FlyThrough")			
			IsPause = false;
		break;
		case("FlyClose"):
			Control.ResetDirector(InstanceSceneID,"FlyThrough")
			TakeOutUI();
			SetVPCamera(1)
			IsPause = false;
			FlyPlay = false;
			if (IsScenery)
			{
				Control.PlayDirectorToTag(InstanceSceneID,"SceneryClick","on")
			}else
				{
					Control.PlayDirectorToTag(InstanceSceneID,"SceneryClick","off")
				}
		break;
		case("Switcher"):
			if (IsF1Info)
			{
				if (IsVDOPlay)
				{
					SwitchVDOback()
				}
				F1Out()
				IsF1Info = false;			
			}else
				{
					if (IsVDOPlay)
					{
						//SwitchVDOout()
					}
					F1In()
					IsF1Info = true;
				}
		break;
		//UI Interactive//
	}
}
function VDOPause()
{
	if (!IsPause)
	{
		//Control.PauseVideo(VDOLocation)
		Control.PlayDirectorToTag(InstanceSceneID,"DLPlayClick","pause")
		Control.StopDirector(InstanceSceneID,"RPM")
		IsPause = true;
	}else
		{
		  //Control.PlayVideo(VDOLocation)
		  Control.PlayDirectorToTag(InstanceSceneID,"DLPlayClick","play")
		  Control.ContinueDirector(InstanceSceneID,"RPM")
		  IsPause = false;
		}	
}
/*
function VDOIn()
{
	 Control.SetViewportVideoInput(0,1,VDOLocation);
	 Control.CommitAllViewportVideoChanges();
	 var x = Control.GetVideoDuration(VDOLocation)

	 Control.SetViewportAudioLevel(0,1,80)
	 Control.SeekVideo(VDOLocation,0)
	 Control.PlayVideo(VDOLocation)	 
	 IsVDOPlay = true;
	 //Control.Log("Duration : "+ x)
	 //Control.WaitBySecond(0.3)
	 Control.ResetDirector(InstanceSceneID,"RPM")
	 Control.ContinueDirector(InstanceSceneID,"RPM")

}

function VDOOut()
{
	Control.SetViewportVideoInput(0,1,'');
	Control.CommitAllViewportVideoChanges();
	IsVDOPlay = false;
}
*/
function ResetVDO()
{
	 if (IsPause)
	 {
		 Control.PlayDirectorToTag(InstanceSceneID,"DLPlayClick","play")
         IsPause = false;
	 }	
}
function OnVizkyTimelineTrigger(varControlObject, varPlayableId, varDirectorName, varTagName, varParam)
{
	Control.Log("OnVizkyTimelineTrigger : DirectorName = " + varDirectorName + "; TagName : " + varTagName + " ; ParaName : " + varParam);
	//SetVPCamera(varParam)
	//FlyThrought Trigger
	if (varTagName == "FlyCam1")
	{
		SetVPCamera(varParam)
		TakeOutUI();	
	}
	//VDO RPM Trigger
	//if (varTagName == "RPM")
	//{
	//	ResetVDO()
	//}
}
function ResetAll()
{
	if (MenuSelect == 2)
	{	VDOOut()
	//	IsVDOPlay = false;
	}
	SetVPCamera(1)
	Control.ResetDirector(InstanceSceneID,"*")
	MenuSelect = 0;
	MenuPlay = false;
    IsPause = false;
    IsScenery = true;
    FlyPlay = false;
	crrScroll = 1
	IsVol = true;
}
/*
function SwitchVDOout()
{
	//Control.StopDirector(InstanceSceneID,"RPM")
	//tmpRPM = Control.GetDirectorCurrentTime(InstanceSceneID,"RPM")

	//Control.PauseVideo(VDOLocation)
	//tmpVDO = Control.GetVideoCurrentPosition(VDOLocation)
	//Control.Log("tmpRPM : "+tmpRPM+"  tmpVDO : "+tmpVDO)
	Control.SetViewportVideoInput(0,1,'');
	Control.CommitAllViewportVideoChanges();
}
*/
function SwitchVDOback()
{	
	//Control.SetViewportVideoInput(0,1,VDOLocation);
	//Control.CommitAllViewportVideoChanges();
	//Control.Log("##  tmpVDO : "+tmpVDO)
	//Control.PlayVideo(VDOLocation)
	//Control.SeekVideo(VDOLocation,tmpVDO)
	//tmpVDO2 = Control.GetVideoCurrentPosition(VDOLocation)
	//Control.WaitBySecond(3)
	//Control.Log("##  tmpVDO2 : "+tmpVDO2)
	//Control.ShowDirector(InstanceSceneID,"RPM",tmpRPM)
	//Control.PlayVideo(VDOLocation)
	//Control.SeekVideo(VDOLocation,tmpVDO)	
	//Control.ContinueDirector(InstanceSceneID,"RPM")
	if (IsPause)
	{
	  Control.PlayDirectorToTag(InstanceSceneID,"DLPlayClick","play")
	  IsPause = false;
	}
		//Control.SetViewportAudioLevel(0,1,80)
		IsVol = true;
		Control.PlayDirectorToTag(InstanceSceneID,"DLVolClick","on")
}
var tmpRPM = 0;
var tmpVDO = 0;
