// JavaScript Document
var timeoutValue = 0;
function eraseTimeout()
{
	if (timeoutValue!=0)
	{
		clearTimeout(timeoutValue);
		timeoutValue = 0;
	}
}

var oldNavMode = 0;
var currNavMode = 0;
var reclickCounter = -1;
var currCamera = 'Camera01';

// NavMode = 0	//WalkInside
// NavMode = 1	//GuideTour
// NavMode = 2	//GotoAngle1
// NavMode = 3	//GotoAngle2
// NavMode = 4	//GotoOverview
// NavMode = 5	//Measure
// NavMode = 6	//Move

function changeNavMode(newNavMode)
{
	if (currNavMode != newNavMode)
	{
		oldNavMode = currNavMode;
		currNavMode = newNavMode;
		reclickCounter = 0;
		// ---- Exit NavMode ----
		if (oldNavMode==0)
		{
			TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
			TNTDoCommand('Objects(*_Text).SetVisible(true)');
		}
		if (oldNavMode==5)
		{
			TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');
			setMeasurementMode(0);
		}
		if (oldNavMode==6)
		{
			TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');
			TNTDoCommand('Objects(*#A*).SetVisible(0)');
			TNTDoCommand('Objects(*).SetSelected(0)');
			TNTDoCommand('Objects(*).SetMouseOverEvent(0)');
			TNTDoCommand('Objects(*).SetOcclusion(0)');	
		}
		// ---- Init NavMode ----
		if (currNavMode==0)
		{
			TNTDoCommand('SceneGraph.Physics.Reset()');
			WalkInside();
		}
		if (currNavMode==1)
		{
			GuideTour();
		}
		if (currNavMode==2)
		{
			GotoAngle1();
		}
		if (currNavMode==3)
		{
			GotoAngle2();
		}
		if (currNavMode==4)
		{
			GotoOverview();
		}
		if (currNavMode==5)
		{
			setMeasurementMode(1);	
		}
		if (currNavMode==6)
		{
			initMove();
		}
		if (oldNavMode==1)
		{
			TNTDoCommand('Objects("Camera02").StopAnimation()');
		}
	}
	else
	{
		reclickCounter++;
		if (currNavMode==0)
		{
			if (reclickCounter>0)
			{
				TNTDoCommand('SceneGraph.Physics.Reset()');
			}
			WalkInside();
		}
		if (currNavMode==4)
		{
			if (reclickCounter%2)
			{
				TNTDoCommand('Objects(*#ShowIfReclicked*).SetVisible(true)');
				TNTDoCommand('Objects(*#HideIfReclicked*).SetVisible(false)');
			}
			else
			{
				TNTDoCommand('Objects(*#ShowIfReclicked*).SetVisible(false)');
				TNTDoCommand('Objects(*#HideIfReclicked*).SetVisible(true)');
			}
		}
	}
}
function WalkInside()
{
	TNTDoCommand('Objects(*_Text).SetVisible(false)');	
	TNTDoCommand('Objects(PhysicsSphere).SetEnable(true)');
	TNTDoCommand('CameraCtrl.SetCurrent("Camera01")');
	currCamera = 'Camera01';
	TNTDoCommand('ObjectTree(Camera*).SetEnable(false)');
	TNTDoCommand('ObjectTree(Camera01).SetEnable(true)');
	TNTDoCommand('CameraCtrl.SetMoveSpeed(0.0)');
	TNTDoCommand('CameraCtrl.SetMaxHorizontalAngle(3.14)');
	TNTDoCommand('CameraCtrl.SetMinHorizontalAngle(0)');
	UnhideInside();
	HideInside();
	element("TNTCtrl").focus();
}

function GuideTour()
{
	if (ie4||ie5)
	{
		var frameCount = TNTDoCommand('SceneGraph.GetFrameCount()');
		TNTDoCommand('Objects(Camera02).PlayAnimation(0,'+frameCount+',true)');
	}
	else
	{
		TNTDoCommand('Objects(Camera02).SetLoop(1)');
		TNTDoCommand('Objects(Camera02).StartAnimation()');
	}
	TNTDoCommand('CameraCtrl.SetCurrent("Camera02")');
	currCamera = 'Camera02';
	TNTDoCommand('ObjectTree("Camera*").SetEnable(false)');
	TNTDoCommand('ObjectTree("Camera02").SetEnable(true)');
	UnhideInside();
	HideInside();
}


function GotoAngle1()
{
	if (currCamera=='Camera01')
   	{
   		TNTDoCommand('CameraCtrl.SetCurrent("Camera03")');
		currCamera = 'Camera03';
		UnhideInside();
   	}
	else
   	{
   		TNTDoCommand('CameraCtrl.Match("Camera03",2000)');
   		eraseTimeout();
		timeoutValue = setTimeout("UnhideInside();",2000);
   	}
	TNTDoCommand('ObjectTree(Camera*).SetEnable(false)');
	TNTDoCommand('ObjectTree('+currCamera+').SetEnable(true)');
	TNTDoCommand('CameraCtrl.SetMoveSpeed(0.0)'); 
	HideInside();
}

function GotoAngle2()
{
	if (currCamera=='Camera01')
   	{
		TNTDoCommand('CameraCtrl.SetCurrent("Camera04")');
		currCamera = 'Camera04';
		UnhideInside();
	}
	else
	{
		TNTDoCommand('CameraCtrl.Match("Camera04",2000)');
   		eraseTimeout();
		timeoutValue = setTimeout("UnhideInside();",2000);
	}
	TNTDoCommand('ObjectTree(Camera*).SetEnable(false)');
	TNTDoCommand('ObjectTree('+currCamera+').SetEnable(true)');
	TNTDoCommand('CameraCtrl.SetMoveSpeed(0.0)');
	HideInside();
}

function UnhideInside()
{
	TNTDoCommand('Objects(*#HideWhenOutside*).SetVisible(true)');
	TNTDoCommand('Objects(*#ShowIfReclicked*).SetVisible(true)');
	TNTDoCommand('Objects(*#HideIfReclicked*).SetVisible(true)');
}

function HideInside()
{
	TNTDoCommand('Objects(*#HideIfInside*).SetVisible(false)');
}

function UnhideOutside()
{
	TNTDoCommand('Objects(*#HideIfInside*).SetVisible(true)');
}

function GotoOverview()
{
	//eraseTimeout();
	
	UnhideOutside();
	TNTDoCommand('Objects(*#HideWhenOutside*).SetVisible(false)');		
	if (currCamera=='Camera01')
	{
		TNTDoCommand('CameraCtrl.SetCurrent("Camera05")');
		currCamera = 'Camera05';
	}
	else
	{
   		TNTDoCommand('CameraCtrl.Match("Camera05",2000)');
   	}
	TNTDoCommand('ObjectTree(Camera*).SetEnable(false)');
	TNTDoCommand('ObjectTree('+currCamera+').SetEnable(true)');
	TNTDoCommand('CameraCtrl.SetMaxHorizontalAngle(1.57)');
	TNTDoCommand('CameraCtrl.SetMinHorizontalAngle(0)');	
}