var FileLocation = "http://BGOMPS02.vizky.com/Demo/USprimary/";
//var FileLocation = VizkyGetPathOfHtmlPage() + "USprimary/"
var stationID = 1234;
var extIDMain = 0;
var extIDvp1 = 0;
var extIDvp2 = 0;
var extIDLoad = 0;
var instIDMain = 0;
var instIDvp1 = 0;
var instIDvp2 = 0;
var instIDLoad = 0;
var panelstatus = 0;//--value 0 for Start State//--value 1 for Democrat playing;//--value 2 for Replubican playing
var stateclick = 0;//--variable for get state active to control director for each stateclick--//
var repProgress = 0; //republican progress bar playing; 0 = "false", 1 = "True"--//
var PnPlaying = 0; //Is panelplaying; 0 = "No panelplaying", 1 = "Overall Panel playing", 2 = "State Panel playing"--//
var crrVP = 99; //--Start status use dummy value for current viewport = 99, used for check crrVp to check swap viewport 1-2--//
var actObject = 0;
var crrInstId = 0;
//Full Window button scene
var extIDFull = 0;
var instIDFull = 0;
var fullflag = false
//Full Window button scene
function Preview(ControlObject)
 {
	extIDMain = ControlObject.Import(stationID, FileLocation + "MainScene8.mps.idx");
	instIDMain = ControlObject.Load(stationID, extIDMain);
	extIdFull = Control.Import(stationID, "http://BGOMPS02.vizky.com/Demo/full/full.mps.idx");
	instIDFull = Control.Load(stationID, extIdFull);
	ControlObject.TakeIn(stationID, 0, 0, instIDMain); //---TakeIn MainScene at back layer Channel0 Layer0---//
	ControlObject.TakeIn(stationID, 69, 0, instIDFull);
 }
function OnVizkyInit(ControlObject)
{
	ControlObject.CreateViewport(5);
	ControlObject.SetConsoleActive(0);
	ControlObject.SetDisplayDownloading(1);
	
	stationID = ControlObject.GenerateStationID(window.location);

	//------MainScene Layer Viewport---------Viewport:0; Channel:0-------//
	ControlObject.SetViewportPercentPositionAndSize(0, 0, 0, 100, 100);
	ControlObject.SetViewportStationAndChannelID(0, stationID, 0);
	ControlObject.SetViewportPriorityLevel(0,1);                   //--viewport Priority:1--//
	
	//------Panel Back Layer Viewport---------Viewport:1; Channel:1-------//
	ControlObject.SetViewportPercentPositionAndSize(1, 0, 0, 100, 100);
	ControlObject.SetViewportStationAndChannelID(1, stationID, 1); 
	ControlObject.SetViewportPriorityLevel(1,5);                   //--At start status viewport Priority:5--//

	//------Panel Front Layer Viewport---------Viewport:2; Channel:2-------//
	ControlObject.SetViewportPercentPositionAndSize(2, 0, 0, 100, 100);
	ControlObject.SetViewportStationAndChannelID(2, stationID, 2);
	ControlObject.SetViewportPriorityLevel(2,0);                   //--At start status viewport Priority:0--//

	ControlObject.SetViewportPercentPositionAndSize(3, 0, 0, 100, 100);
	ControlObject.SetViewportStationAndChannelID(3, stationID, 69);
	ControlObject.SetViewportPriorityLevel(3,30)

	ControlObject.SetViewportPercentPositionAndSize(4, 0, 0, 100, 100);
	ControlObject.SetViewportStationAndChannelID(4, stationID, 911);
	ControlObject.SetViewportPriorityLevel(4,0)

	ControlObject.CommitAllViewportStationAndChannelChanges();

	var VizkyVersion = ControlObject.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)
	{	
		//Preview(ControlObject);
		ControlObject.SetVariable(stationID, 911, "start", 1);
	}
	else
		{
			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 OnVizkyVarChange(ControlObject, varPubstation, varChannelId, szVarName, szVarValue)
{
	//var CkStation = varPubstation;
	var CkStation = stationID;
	ControlObject.Log("Recieve command from Pubstation: "+ szVarName);
	if(CkStation == stationID) //Case Setvariable used for Local station area// 
	{
		ControlObject.Log("Recieve command from Pubstation: "+ CkStation);
		if (szVarName == "start")
		{
			//ControlObject.SetCommandPipeline(1);//
			//ControlObject.ClearCommandPipeline();//
			if (instIDMain == 0)
			{
				extIDMain = ControlObject.Import(stationID, FileLocation + "MainScene8.mps.idx");
				instIDMain = ControlObject.Load(stationID, extIDMain);
				extIdFull = Control.Import(stationID, "http://BGOMPS02.vizky.com/Demo/full/full.mps.idx");
				instIDFull = Control.Load(stationID, extIdFull);
				ControlObject.TakeIn(stationID, 0, 0, instIDMain); //---TakeIn MainScene at back layer Channel0 Layer0---//
				ControlObject.TakeIn(stationID, 69, 0, instIDFull);
			}else//In case reset All
				{
					ControlObject.SetCommandPipeline(3);
					ControlObject.ClearCommandPipeline();
					Control.Log("RESETTING ALL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")

					//ControlObject.ReverseDirector(instIDMain,"*",0);
					ControlObject.ResetDirector(instIDMain, "*");
					//ControlObject.ReverseDirector(instIDvp1,"*",0);
					ControlObject.ResetDirector(instIDvp1, "*");
					//ControlObject.ReverseDirector(instIDvp2,"*",0);
					ControlObject.ResetDirector(instIDvp2, "*");
					ControlObject.TakeIn(stationID, 1, 1, 0);
					ControlObject.TakeIn(stationID, 2, 1, 0);
					
					ControlObject.SetViewportPriorityLevel(1,5);
					ControlObject.SetViewportPriorityLevel(2,0);
					//ControlObject.WaitBySecond(1.0)
					panelstatus = 0;
					stateclick = 0;
					repProgress = 0; 
					PnPlaying = 0;
					crrVP = 99; 
					actObject = 0;
					crrInstId = 0;	
					ControlObject.SetCommandPipeline(0);
				}
		}
		if (szVarName == "ClosePanel")
		{
			 ControlObject.SetCommandPipeline(4);
			 ControlObject.ClearCommandPipeline();
			 CloseClick(ControlObject);
			 ControlObject.SetCommandPipeline(0);
		}
		if (szVarName == "StatePanel")
		{
			ControlObject.SetCommandPipeline(3);
			ControlObject.ClearCommandPipeline();
			StatePanel(ControlObject);
			ControlObject.SetCommandPipeline(0);
		}
	}
}
function Fullscreen(ControlObject)
{
	ControlObject.ToggleFullscreen();
	if (fullflag)
	{
		ControlObject.ShowDirectorTag(instIDFull,"full","max");
		fullflag = false
	}else
		{
		   ControlObject.ShowDirectorTag(instIDFull,"full","min");
		   fullflag = true
		}
}
function OnVizkyLMouseDown(ControlObject)
{
	var aObject = ControlObject.GetInteractivityObject()
	Control.Log("ObjectName is : "+ aObject)
	actObject = aObject;
	if (aObject == "Full")
	{
		ControlObject.SetCommandPipeline(9);
		ControlObject.ClearCommandPipeline();
		Fullscreen(ControlObject);

	}else{
			switch(aObject)
			{
				case("ResetAll"):
					ControlObject.SetVariable(stationID, 911, "start", 1);
				break;
				//--Logo Icon Praties--//
				case("Democrat"):
				case("Republican"):
					LogoClick(ControlObject);
				break;
				//--Logo Icon Praties--//
				case("DemocratClose"):
				//--Close Button For Panel Replubican--//
				case("RepublicanClose"):

					ControlObject.SetVariable(stationID, 911, "ClosePanel", 1);
					//CloseClick(ControlObject);
					
				break;
							//Case RadioButton in CountryMap Container// 
							//--WEST REGION 11 STATES--//
							case("Washington"):
							case("Oregon"):
							case("California"):
							case("Nevada"):
							case("Idaho"):
							case("Utah"):
							case("Arizona"):
							case("NewMexico"):
							case("Colorado"):
							case("Wyoming"):
							case("Montana"):
							//--WEST REGION 11 STATES--//
							//--MID-WEST REGION 12 STATES--//
							case("Iowa"):
							case("Minnesota"):
							case("Wisconsin"):
							case("Michigan"):
							case("NorthDakota"):
							case("SouthDakota"):
							case("Nebraska"):
							case("Kansas"):
							case("Missouri"):
							case("Illinois"):
							case("Indiana"):
							case("Ohio"):
							//--MID-WEST REGION 12 STATES--//
							//--NORTH-EAST REGION 9 STATES--//
							case("Pensylvania"):
							case("NewYork"):
							case("NewHampshire"):
							case("Vermont"):
							case("Massachusetts"):
							case("Connecticut"):
							case("NewJersey"):
							case("RhodeIsland"):
							case("Maine"):
							//--NORTH-EAST REGION 9 STATES--//
							//--SOUTH REGION 17 STATES--//
							case("Texas"):
							case("Oklahoma"):
							case("Arkansas"):
							case("Louisiana"):
							case("Mississippi"):
							case("Alabama"):
							case("Florida"):
							case("Georgia"):
							case("Tennessee"):
							case("Kentucky"):
							case("SouthCarolina"):
							case("NorthCalorina"):
							case("Virginia"):
							case("WestVirginia"):
							case("Delaware"):
							case("Maryland"):
							case("WashingtonDC"):
							//--SOUTH REGION 17 STATES--//
							//--OTHER REGION 2 STATES--//
							case("Hawaii"):
							case("Alaska"):
								stateclick = aObject +"Click";
								ControlObject.SetVariable(stationID, 911, "StatePanel", 1);
								//StatePanel(ControlObject);
							break;
			}
		 }
}
function CloseClick(ControlObject)
{
	Control.Log("crrVP = : "+crrVP)
	Control.Log("panelstatus = : "+panelstatus)
	switch(crrVP)
	{
		case(1):
		{
			switch(panelstatus)
			{
				case(0):
					//alert("fdf")
					ControlObject.ResetDirector(instIDvp1,"*");
					ControlObject.TakeIn(stationID, 1, 1, 0);

				break;
				case (1):
					ClosePanelD(ControlObject)
				break;
				case (2):
					ClosePanelR(ControlObject)
				break;
			}
			crrVP = 1;
		}
		break;
		case(2):
		{
			switch(panelstatus)
			{
				case(0):
					//alert("fdf")
					ControlObject.ResetDirector(instIDvp2,'*');
					ControlObject.TakeIn(stationID, 2, 1, 0);
				break;
				case (1):
					ClosePanelD(ControlObject)
				break;
				case (2):
					ClosePanelR(ControlObject)
				break;
			}
			crrVP = 2;
		}
		break;
	}
	panelstatus = 0; //---set value for panelstatus = 1 for DemocratPanelStatus playing---//
	PnPlaying = 0;
}
function LogoClick(ControlObject)
{
	switch(PnPlaying) //---Check Is any panel playing?---//
	{
		case (0): //---No panel playing---//
			{
				switch(crrVP) //---Check Lastest Viewport used to play Panel---//
				{
					case (99): //---At Start status No viewport used,Dummy value of viewport=99 ---// 
						{
							TakeLVP1(ControlObject)
							crrInstId = instIDvp1;
							crrVP = 1;
						}
					break;
					case (1): //---Lastest Playing panel used viewport=1---// 
						{
							SwapToVP2(ControlObject);
							TakeLVP2(ControlObject)

							crrInstId = instIDvp2;
							crrVP = 2;
						}
					break;
					case (2): //---Lastest Playing panel used viewport=2---// 
						{
							SwapToVP1(ControlObject);
							TakeLVP1(ControlObject)
							crrInstId = instIDvp1;
							crrVP = 1;
						}
					break;
				}
				PnPlaying = 1;
				switch(actObject)
				{
					case ("Democrat"):
						PlayPanelD(ControlObject);
					break;
					case ("Republican"):
						PlayPanelR(ControlObject);	
					break;
				}
			}
		break;
		case (1): //---Panel Overall result playing---//
			{
				switch(crrVP) //---Check Lastest Viewport used to play Panel---//
				{
					case (1): //---Lastest Playing panel used viewport=1---// 
						{
							crrVP = 1;
						}
					break;
					case (2): //---Lastest Playing panel used viewport=2---// 
						{
							crrVP = 2;
						}
					break;
				}
				PnPlaying = 1;
				switch(actObject)
				{
					case ("Democrat"):
						PlayPanelD(ControlObject);
					break;
					case ("Republican"):
						PlayPanelR(ControlObject);	
					break;
				}
			}
		break;
		case (2): //---Some PanelState result playing---//
			{
				switch(crrVP) //---Check Lastest Viewport used to play Panel---//
				{
					case (1): //---Lastest Playing panel used viewport=1---// 
						{
							crrVP = 1;
						}
					break;
					case (2): //---Lastest Playing panel used viewport=2---// 
						{
							crrVP = 2;
						}
					break;
				}
				PnPlaying = 2;
				switch(actObject)
				{
					case ("Democrat"):
						PlayPanelD(ControlObject);
					break;
					case ("Republican"):
						PlayPanelR(ControlObject);	
					break;
				}
			}
		break;
	}
}
function TakeLVP1(ControlObject)
{
	extIDvp1 = ControlObject.Import(stationID, FileLocation + "Country.mps.idx");
	instIDvp1 = ControlObject.Load(stationID, extIDvp1);
	ControlObject.TakeIn(stationID, 1, 1, instIDvp1);
	Control.Log("Take in Overall Country result in VP id : 1============================================>")
}
function TakeLVP2(ControlObject)
{
	extIDvp2 = ControlObject.Import(stationID, FileLocation + "Country.mps.idx");
	instIDvp2 = ControlObject.Load(stationID, extIDvp2);
	ControlObject.TakeIn(stationID, 2, 2, instIDvp2);
	Control.Log("Take in Overall Country result in VP id : 2============================================>")
}
function SwapToVP1(ControlObject)
{

	ControlObject.TakeIn(stationID, 2, 1, 0);
	Control.Log("Takeout everything in VP 2 and Swap VP id To VP : 1============================================>")
	switch(panelstatus)
	{
		case(0):
				ControlObject.SetViewportPriorityLevel(2,0);
		break;
		case(1)://---DemocratPanel Playing in Viewport2---//
				ControlObject.PlayDirectorToTag(instIDvp2, "DAlfa", "DHide"); //---Hide Overall country DemocratPanel which playing in Viewport2---//
		break;
		case(2)://---RepublicanPanel Playing in Viewport2---//
				ControlObject.PlayDirectorToTag(instIDvp2, "RAlfa", "RHide"); //---Hide Overall country RepublicanPanel which playing in Viewport2---//
		break;
	}

	ControlObject.ReverseDirector(instIDvp2,"*",0);
	ControlObject.ResetDirector(instIDvp2,"*");

	ControlObject.SetViewportPriorityLevel(1,5);
}
function SwapToVP2(ControlObject)
{
	ControlObject.TakeIn(stationID, 1, 1, 0);
	Control.Log("Takeout everything in VP 1 and Swap VP id To VP : 2============================================>")
	switch(panelstatus)
	{
		case(0):
				ControlObject.SetViewportPriorityLevel(1,0);
		break;
		case(1)://---DemocratPanel Playing in Viewport1---//
				ControlObject.PlayDirectorToTag(instIDvp1, "DAlfa", "DHide"); //---Hide Overall country DemocratPanel which playing in Viewport1---// 
		break;
		case(2)://---RepublicanPanel Playing in Viewport1---//
				ControlObject.PlayDirectorToTag(instIDvp1, "RAlfa", "RHide"); //---Hide Overall country RepublicanPanel which playing in Viewport1---//
		break;
	}

	ControlObject.ReverseDirector(instIDvp1,"*",0);
	ControlObject.ResetDirector(instIDvp1,"*");
	ControlObject.SetViewportPriorityLevel(2,5);
}
function ClosePanelD(ControlObject)
{
	ControlObject.PlayDirectorToTag(crrInstId, "DemocratPanelIn", "DFade");
	ControlObject.PlayDirectorToTag(instIDMain, "DemocratClick", "DMSclick"); //--set back bar chart near logo to start state--//
	ControlObject.ReverseDirector(instIDMain, stateclick, 1);
	ControlObject.ContinueDirector(instIDMain, stateclick);
	//ControlObject.ResetDirector(crrInstId,  "DemocratPanelIn");
	//Try to use resetDirector command below to reset PanelReplubican off//
	ControlObject.ResetDirector(crrInstId,"RepublicanPanelIn");
	repProgress = 0;
	switch(crrVP)
	{
		case(1):
			ControlObject.TakeIn(stationID, 1, 1, 0);
			ControlObject.Log("Close Dromocrat in VP : "+crrVP)
		break;
		case(2):
			ControlObject.TakeIn(stationID, 2, 1, 0);
			ControlObject.Log("Close Dromocrat in VP : "+crrVP)
		break;
	}
	
}
function ClosePanelR(ControlObject)
{
	//ControlObject.PlayDirectorToTag(crrInstId, "RepublicanPanelIn", "RFade");
	ControlObject.ResetDirector(crrInstId, "RepublicanPanelIn");
	ControlObject.PlayDirectorToTag(instIDMain, "RepublicanClick", "RBSclick"); //--set back bar chart near logo to start state--//
	ControlObject.ReverseDirector(instIDMain, stateclick, 1);
	ControlObject.ContinueDirector(instIDMain, stateclick);
	//Try to use resetDirector command below to reset PanelReplubican off//
	ControlObject.ResetDirector(crrInstId,"DemocratPanelIn");
	repProgress = 1;
	switch(crrVP)
	{
		case(1):
			ControlObject.TakeIn(stationID, 1, 1, 0);
			ControlObject.Log("Close REpublican in VP : "+crrVP)
		break;
		case(2):
			ControlObject.TakeIn(stationID, 2, 1, 0);
			ControlObject.Log("Close REpublican in VP : "+crrVP)
		break;
	}
}
function PlayPanelD(ControlObject)
{
	ControlObject.ResetDirector(crrInstId,  "DemocratPanelIn");
	ControlObject.PlayDirectorToTag(crrInstId, "RAlfa", "RHide"); //---Set Director of RAlfa to Tag "RHide".Then RepublicanPanel will not appear in Scene.---//
	ControlObject.PlayDirectorToTag(instIDMain, "DemocratClick", "DMEclick");
	ControlObject.PlayDirectorToTag(crrInstId, "DAlfa", "DShow"); //---Ser Director of DAlfa to Tag "DShow" that start point of director begin to display DemocratPanel---// 
	ControlObject.ReverseDirector(crrInstId, "DemocratPanelIn",0); //---Set Director direction to start direction---//
	ControlObject.PlayDirectorToTag(crrInstId,  "DemocratPanelIn","EDpanel"); //---Start Director DemocratPanelIn to display into scene.---// 	
	panelstatus = 1;  //---set value for panelstatus = 1 for DemocratPanelStatus playing---//
	repProgress = 0;	//--director "RepublicanClick",Tag "RBEclick" = "False".This Director is not playing--//
}
function PlayPanelR(ControlObject)
{
	ControlObject.ResetDirector(crrInstId,  "RepublicanPanelIn");
	ControlObject.PlayDirectorToTag(crrInstId, "DAlfa", "DHide"); //---Set Director of DAlfa to Tag "DHide".Then DemocratPanel will not appear in Scene.---//
	ControlObject.PlayDirectorToTag(instIDMain, "RepublicanClick","RBEclick");//---Start Logo Active--//
	ControlObject.PlayDirectorToTag(crrInstId, "RAlfa", "RShow"); //---Ser Director of RAlfa to Tag "RShow" that start point of director begin to display REpublicanPanel---//
	ControlObject.ReverseDirector(crrInstId, "RepublicanPanelIn",0); //---Set Director direction to start direction---//
	ControlObject.PlayDirectorToTag(crrInstId, "RepublicanPanelIn","ERpanel"); //---Start Director RepublicanPanelIn to display into scene.---//
	panelstatus = 2;	//---set value for panelstatus = 2 for RepublicanPanelStatus playing---//
	repProgress = 1; //--director "RepublicanClick",Tag "RBEclick" = "True".it is already played to end of this Director--// 
}
function StatePanel(ControlObject)
{
	if(PnPlaying==0)//---No panel playing---//
	{
		switch(crrVP) //---Check Lastest Viewport used to play Panel---//
		{
			case (99): //---At Start status No viewport used,Dummy value of viewport=99 ---// 
			{
				TakeSVP1(ControlObject)
				crrInstId = instIDvp1;
				PlayPanelD(ControlObject)
				crrVP = 1;
			}
			break;
			case (1): //---Lastest Playing panel used viewport=1---// 
			{
				TakeSVP2(ControlObject);
				SwapToVP2(ControlObject);
				crrInstId = instIDvp2;
				switch(repProgress)
				{
					case(0):
						PlayPanelD(ControlObject);
					break;
					case(1):
						PlayPanelR(ControlObject);
					break;
				}
				crrVP = 2;
			}
			break;
			case (2): //---Lastest Playing panel used viewport=1---// 
			{
				TakeSVP1(ControlObject)
				SwapToVP1(ControlObject);
				crrInstId = instIDvp1;
				switch(repProgress)
				{
					case(0):
						PlayPanelD(ControlObject)
					break;
					case(1):
						PlayPanelR(ControlObject);
				}
				crrVP = 1;
			}
			break;
		}//end switch(crrVP)
	}else //if (PnPlaying==1)||(PnPlaying==2)
		{
			switch(crrVP)
			{
				case(1)://---Overall panel Playing in Viewport1---//
					TakeSVP2(ControlObject);
					SwapToVP2(ControlObject);
					crrInstId = instIDvp2;
					crrVP = 2;
				break;
				case(2)://---Overall panel Playing in Viewport2---//
					TakeSVP1(ControlObject);
					SwapToVP1(ControlObject);
					crrInstId = instIDvp1;
					crrVP = 1;
				break;
			}
			switch(panelstatus)
			{
				case(1):
					PlayPanelD(ControlObject)
				break;
				case(2):
					PlayPanelR(ControlObject);
				break;
			}
		}
	PnPlaying = 2;
}
function TakeSVP1(ControlObject)
{
	extIDvp1 = ControlObject.Import(stationID, FileLocation + actObject +".mps.idx");
	instIDvp1 = ControlObject.Load(stationID, extIDvp1);
	ControlObject.TakeIn(stationID, 1, 1, instIDvp1);
	Control.Log("Take in "+ stateclick +" result in VP id : 1============================================>")
}
function TakeSVP2(ControlObject)
{
	extIDvp2 = ControlObject.Import(stationID, FileLocation + actObject +".mps.idx");
	instIDvp2 = ControlObject.Load(stationID, extIDvp2);
	ControlObject.TakeIn(stationID, 2, 2, instIDvp2);
	Control.Log("Take in "+ stateclick +" result in VP id : 2============================================>")
}