// turntool.js
// ---
// Author: Pekka Jääskeläinen
//



// === CONFIGURATION INITIALIZATION   === === === === === === === === === ===
d = new Date(); // a date object to fetch time stamps in to the configs



// === CONFIGURATION  === === === === === === === === === === === === === ===
// --- project options -- --- --- --- --- --- --- --- --- --- --- --- --- ---
var project_name = ""; // used to give a name to a certain cubicasa scene project

// --- screenshot --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// format: prefix + main + timestamp + suffix + running count number + file extension (fixed to .bmp)
var screenshot_main = ""; // the main part of the screenshot file name
var screenshot_prefix = "CubiCasa SnapShot - "; // the prefix for the screenshot files
var screenshot_timestamp = d.getTime(); // timestamp for the screenshot
var screenshot_suffix = ""; // the suffix for the screenshot files
var xpcomversion = "1.4.0.0"; // Some weird old turntool-attribute. Better not mess with this one...



// === VARIABLE INITIALIZATION == === === === === === === === === === === ===
var messages = new Array(); // weird old turntool stuff...
var shotNum = 0; // the running counter number of the screenshot utility



// === TO BE EXECUTED RIGHT AFTER THE SCRIPT IS LOADED == === === === === ===
//addLoadEvent(insertTurnTool); // adds the turntool insertion function in to the queue that will be executed when the parent xhtml-document has been loeaded



function listObjects()
{
	var objcount = TNTDoCommand('SceneGraph.GetObjectCount()');
	var objnames;

	for(i=1;i<objcount;i++)
	{
		obj_command = 'SceneGraph.Object(' + i +').GetName()';
		objnames += TNTDoCommand(obj_command) + '\n</br>';
	}
	//document.getObjectByID('debugOut').innerHTML = "aaa";//objnames;
	document.write(objnames);
}

function TNTDoCommand(string)
{
	var tntCtrl = element("TNTCtrl");
        if(tntCtrl && tntCtrl.ready) {
		return tntCtrl.TNTDoCommand(string);
	}
        return "";
}

function TNTfocus()
{
	var tntCtrl = element("TNTCtrl");
	if(tntCtrl && tntCtrl.ready)
	{
		tntCtrl.focus();
	}
}

function RenderImg(size)
{
 if(!size) size = 0;
 var rendername = 'C:\\' + screenshot_prefix + screenshot_main +
 screenshot_timestamp + screenshot_suffix + shotNum + '.bmp';
 var cmd = '"' + rendername + '",' + size;
 TNTDoCommand('Renderer.SaveImage(' + cmd + ')');
 alert("Kuva on tallettu: " + rendername);
 shotNum++;
}

function insertTurnTool()
{
	//createTurnTool(tntWidth,tntHeight, "#FFFFFF", 0, lanArray[lanIndex][36], lanArray[lanIndex][37]);	// create embed and object tag
	createTurnTool("#FFFFFF", 0, lanArray[lanIndex][36], lanArray[lanIndex][37]);	// create embed and object tag
	if(TNTsupportedPlatform()==true)
	{
		if (isTurnToolNewestVersion()==false && ns6)
		{
			// this is mozilla only, if missing plugin or plugin is outdated
			element('TurnTool').innerHTML = '<CENTER><INPUT TYPE=button VALUE="Install TurnTool Viewer" onclick="manualInstallTurnTool();"></CENTER>';
			manualInstallTurnTool();
		}
		if(isTurnToolInstalled() == false && (ie4||ie5))
		{
			element('TurnTool').innerHTML = '<CENTER><INPUT TYPE=button VALUE="Install TurnTool Viewer" onclick="manualInstallTurnTool();"></CENTER>';
			checkRefresh();
		}
	}
}
function isTurnToolNewestVersion()
{
	var tntInstalled = false;
	if(ie4||ie5)
	{
		try
		{
			var xObj = new ActiveXObject("TNT.TNTCtrl");
			if (xObj)
			{
				tntInstalled = true;
			}
		}
		catch (e)
		{
		}
	}
	else
	{
		var isSupported = navigator.mimeTypes['application/tntfile'];
		isSupported = isSupported && isSupported.enabledPlugin; //in case they disabled it
		if(isSupported)
		{
			var v = navigator.plugins.namedItem("TurnTool XPCOM Plugin");
			if(v && v.description) {
				var version = v.description.replace(/([a-zA-Z]|\s)+/, "").split(".");
				var minversion = xpcomversion.split(".");
				for (var i=0; i<minversion.length; i++)
				{
					if (i >= version.length)
						break;
					if (version[i] > minversion[i])
					{
						tntInstalled = true;
						break;
					}
					if (version[i] < minversion[i])
						break;
					if (i == (minversion.length-1))
						tntInstalled = true;
				}
			}
		}
	}
	return tntInstalled;
}
function isTurnToolInstalled()
{
	var tntInstalled = false;
	if (ie4||ie5)
	{
		try
		{
			var xObj = new ActiveXObject("TNT.TNTCtrl");
			if (xObj)
			{
				tntInstalled = true;
			}
		}
		catch (e)
		{
		}
	}
	else
	{
		var isSupported = navigator.mimeTypes['application/tntfile'];
		isSupported = isSupported && isSupported.enabledPlugin; //in case they disabled it
		if(isSupported)
		{
			var v = navigator.plugins.namedItem("TurnTool XPCOM Plugin");
			if(v && v.description) tntInstalled = true;
		}
	}
	return tntInstalled;
}

function installTurnTool()
{
	element('TurnTool').innerHTML = '<CENTER><INPUT TYPE=button VALUE="Install TurnTool Viewer" onclick="manualInstallTurnTool();"></CENTER>';
	if (ns6) return false;
	checkRefresh();
}

function manualInstallTurnTool()
{
	if (ie4||ie5)
	{
		window.location.href = 'http://www.turntool.com/ViewerInstall.exe';
	}
	else
	{
		var xpi = {'TurnTool Viewer Installation':'http://www.turntool.com/ViewerInstall.xpi'};
		InstallTrigger.install(xpi,installFinish);
	}
}

function installFinish(url, result)
{
	if(result >= 0)
	{
		element('TurnTool').innerHTML = lanArray[lanIndex][43];
	}
	else if(result < 0)
	{
		alert('The installation failed, please close all browser windows and try again.\n\nIf the problem continues, try restarting your computer.\n\nIf the problem still continues, please contact your content provider.\n\nIn the meantime, you can view a simplifyed Java version of this solution. Click the "'+lanArray[lanIndex][42]+'" button at the bottom of the screne.');
	}
}

function redirectToJava()
{
	var str = window.location.href.toString();
	if(str.indexOf('?') == -1)
		str += '?';
	else
		str += '&';
	window.location.href = str+'viewer=java';
}

var checkCounter = 0;
function checkRefresh()
{
	var tntInstalled = isTurnToolInstalled();
	if(tntInstalled==false)
	{
		checkCounter++;
		if (checkCounter==80)
		{
			installTurnTool();
		}
		if (checkCounter==160)
		{
			viewBigJavaScreen();
		}
		setTimeout('checkRefresh()',500);
	}
	else
	{
		window.location.href = window.location;
	}
}

function TNTsupportedPlatform()
{
	if (getArgument('viewer')=='java')
		return false;
	if (navigator.platform.toString().indexOf("Win") != -1)
		return true;
	if (navigator.platform.toString().toLowerCase().indexOf("mac")!=-1 || navigator.platform.toString().toLowerCase().indexOf("linux")!=-1)
		return false;
	return true;
}

var agent = '';
var project = '';
var mode = 3;
var filepath = "files/";

function doLoaded()
{
  insertTurnTool();
}

function getArgument(argument)
{
	var filepth  = window.location.search;
	var lastChar  = filepth.indexOf('?') + 1;
	var m = filepth.substring(lastChar,filepth.length);
	var k = m.split('&');
	var a = -1;
	var searchstr = '^'+argument+'=';
	for(var n = 0; n<k.length; n++)
	{
		if(k[n].toString().search(searchstr) != -1)
		{
			a = n;
			break;
		}
	}
	if(a != -1)
		return unescape(k[a].split(argument + '=')[1]);
}


var lanIndex = 0;
var lan = getArgument('lan');

for(var i=0; i<lanArray.length; i++)
{
	if(lanArray[i][0]==lan)
	{
		lanIndex = i;
		break;
	}
}

function OnReady()
{
	if (TNTDoCommand('Objects(#Clock_Hour).GetObjectCount()')>0)
	{
		if (TNTDoCommand('Objects(#Clock_Minute).GetObjectCount()')>0)
		{
			updateClock();
		}
	}
	if (mode==-1)
	{
		setTimeout("setDoneMessage()",1000*30);
		saveThumbs();
	}
	else if (mode==-2)
	{
		saveVideo();
	}
	else if (mode==-3)
	{
		savePanoImagesForAllCameras();
	}
	else
	{
		var currentCamera = TNTDoCommand('CameraCtrl.GetCurrent()');
		if (currentCamera == 'Camera01')
		{
			changeNavMode(0);
		}
		else if (currentCamera == 'Camera02')
		{
			changeNavMode(1);
		}
		else if (currentCamera == 'Camera03')
		{
			changeNavMode(2);
		}
		else if (currentCamera == 'Camera04')
		{
			changeNavMode(3);
		}
		else if (currentCamera == 'Camera05')
		{
			changeNavMode(4);
		}
		else
		{
			changeNavMode(1);
		}
		if(mode&0x4)
			doPaletteChanged();
		if(mode&0x8)
			generateCarpets();
	}
	if (typeof floorChangeInProgress == "string")
	{
		if(floorChangeInProgress.search(/^#StairUp/) != -1)
			floorChangeInProgress = floorChangeInProgress.replace('Up','Down');
		else
			floorChangeInProgress = floorChangeInProgress.replace('Down','Up');
		var xRot  = Number(TNTDoCommand('Objects('+floorChangeInProgress+').GetRotationWorldX()'))-180.0;
		var yRot  = Number(TNTDoCommand('Objects('+floorChangeInProgress+').GetRotationWorldY()'));
		var zRot  = Number(TNTDoCommand('Objects('+floorChangeInProgress+').GetRotationWorldZ()'));
		var xPos = Number(TNTDoCommand('Objects('+floorChangeInProgress+').GetPositionWorldX()'));
		var yPos = Number(TNTDoCommand('Objects('+floorChangeInProgress+').GetPositionWorldY()'));
		var zPos = Number(TNTDoCommand('Objects('+floorChangeInProgress+').GetPositionWorldZ()'))+20.0;
		if(!isNaN(zPos+yPos+xPos) && !isNaN(xRot+yRot+zRot))
		{
			TNTDoCommand('Objects(PhysicsSphere).SetRotationWorld('+xRot+','+yRot+','+zRot+')');
			TNTDoCommand('Objects(PhysicsSphere).SetPositionWorld('+xPos+','+yPos+','+zPos+')');
		}
		window.setTimeout("floorChangeInProgress = false;",1000);
	}

	TNTfocus();
}

function updateClock()
{
	var thisDate = new Date();
	var hours = parseInt(thisDate.getHours());
	var minutes = parseInt(thisDate.getMinutes());
	TNTDoCommand('Objects(#Clock_Hour).SetRotationLocal(0,0,'+(270-hours*30-(minutes*0.5))+')');
	TNTDoCommand('Objects(#Clock_Minute).SetRotationLocal(0,0,'+(270-minutes*6)+')');
	var seconds = 60-parseInt(thisDate.getSeconds());
	setTimeout("updateClock()",seconds*1000);
}

var mesMode = 0;

function OnClick( obj )
{
	var cmd = obj.split('_');
	if(cmd[0].match('#ButtonChgVisible'))
	{
		TNTDoCommand('Objects(' + cmd[1] + '*).SetVisible(false)');
		TNTDoCommand('Objects(*' + cmd[2] + '*).SetVisible(true)');
	}
}

function OnMouseEnter( obj )
{
	if (!moving)
	{
		TNTDoCommand('Objects(' + obj + ').SetSelected(1)');
		TNTDoCommand('Objects(' + obj + ').SetVisible(1)');
	}
}

function OnMouseExit( obj )
{
	TNTDoCommand('Objects(' + obj + ').SetSelected(0)');
	TNTDoCommand('Objects(' + obj + ').SetVisible(0)');
}

var insideGateway = false;
var gotoName = '';
var gotoDone = true;
var startTime = 0;
var srcPosX = 0.0;
var srcPosY = 0.0;
var srcPosZ = 0.0;
var srcRotZ = 0.0;
var desPosX = 0.0;
var desPosY = 0.0;
var desPosZ = 0.0;
var desRotZ = 0.0;
var deltaPosX = 0.0;
var deltaPosY = 0.0;
var deltaPosZ = 0.0;
var deltaRotZ = 0.0;
var timePassOne = 0.0;
var timePassTwo = 0.0;

function doZoneCheck(zone, enter)
{
	var name = zone.slice(0,8);
	var type = zone.slice(8,11);
	var id = zone.slice(11,13);
	if (insideGateway==false)
	{
		if (name == "#Gateway")
		{
			if (gotoDone==true)
			{
				if (type == "Src")
				{
					gotoDone = false;
					insideGateway = true;
					gotoName = name + "Des" + id;
					Goto();
				}
			}
		}
	}
}

function Goto()
{
	TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
	srcPosX = parseFloat(TNTDoCommand('Objects(PhysicsSphere).GetPositionLocalX()'));
	srcPosY = parseFloat(TNTDoCommand('Objects(PhysicsSphere).GetPositionLocalY()'));
	srcPosZ = parseFloat(TNTDoCommand('Objects(PhysicsSphere).GetPositionLocalZ()'));
	srcRotZ = parseFloat(TNTDoCommand('Objects(PhysicsSphere).GetRotationLocalZ()'));
	desPosX = parseFloat(TNTDoCommand('Objects('+gotoName+').GetPositionLocalX()'));
	desPosY = parseFloat(TNTDoCommand('Objects('+gotoName+').GetPositionLocalY()'));
	desPosZ = parseFloat(TNTDoCommand('Objects('+gotoName+').GetPositionLocalZ()'));
	desRotZ = parseFloat(TNTDoCommand('Objects('+gotoName+').GetRotationLocalZ()'));
	deltaPosX = desPosX-srcPosX;
	deltaPosY = desPosY-srcPosY;
	deltaPosZ = desPosZ-srcPosZ;
	deltaRotZ = desRotZ-srcRotZ;
	var tempRotZ = (desRotZ+360.0)-srcRotZ;
	if (Math.abs(tempRotZ)<Math.abs(deltaRotZ))
	{
		deltaRotZ = tempRotZ;
	}
	tempRotZ = desRotZ-(srcRotZ+360.0);
	if (Math.abs(tempRotZ)<Math.abs(deltaRotZ))
	{
		deltaRotZ = tempRotZ;
	}
	timePassOne = Math.sqrt(deltaPosX*deltaPosX+deltaPosY*deltaPosY+deltaPosZ*deltaPosZ)*7.0;
	if (timePassOne>3000)
	{
		timePassOne=3000;
	}
	if (timePassOne<1000)
	{
		timePassOne=1000;
	}
	timePassTwo = Math.abs(deltaRotZ)*10.0;
	startTime = parseInt(new Date().getTime());
	Goto_ProcedurePos();
}

function Goto_ProcedurePos()
{
	var deltaTime = parseFloat(parseInt(new Date().getTime()) - startTime)/timePassOne;
	if (deltaTime<1.0)
	{	TNTDoCommand('Objects(PhysicsSphere).SetPositionLocal('+(srcPosX+(deltaPosX * deltaTime))+','+(srcPosY+(deltaPosY*deltaTime))+','+(srcPosZ+(deltaPosZ*deltaTime))+')');
		setTimeout("Goto_ProcedurePos();",0);
	}
	else
	{
		startTime = parseInt(new Date().getTime());
		Goto_ProcedureRot();
	}
}

function Goto_ProcedureRot()
{
	var deltaTime = parseFloat(parseInt(new Date().getTime()) - startTime)/timePassTwo;
	if (deltaTime<1.0)
	{
		TNTDoCommand('Objects(PhysicsSphere).SetRotationLocal(0,0,'+(srcRotZ+(deltaRotZ * deltaTime))+')');
		setTimeout("Goto_ProcedureRot();",0);
	}
	else
	{
		TNTDoCommand('Objects(PhysicsSphere).SetPositionLocal('+desPosX+','+desPosY+','+desPosZ+')');
		TNTDoCommand('Objects(PhysicsSphere).SetRotationLocal(,,'+desRotZ+')');
		TNTDoCommand('Objects(PhysicsSphere).SetEnable(true)');
		gotoDone = true;
		TNTfocus();
	}
}

function OnZoneEnter( zone, physics )
{
	var name = zone.slice(0,9);
	if (name=='#MenuZone')
	{
		var id = zone.slice(9,12);
		var menuFrameCount = TNTDoCommand('Objects(#Menu'+id+').GetFrameCount()');
		TNTDoCommand('Objects(#Menu'+id+').PlayAnimation(,' + menuFrameCount + ')');
	}
	else if(zone.search(/^#Stair/i)!= -1)
	{
		changeFloor(zone);
	}
	else
	{
		doZoneCheck(zone, true);
	}
}

function OnZoneExit( zone, physics )
{
	var name = zone.slice(0,9);
	if (name=='#MenuZone')
	{
		var id = zone.slice(9,12);
		TNTDoCommand('Objects(#Menu'+id+').PlayAnimation(,0)');
	}
	else
	{
		if (zone==gotoName)
		{
			if (gotoDone==true)
			{
				insideGateway=false;
			}
		}
	}
}

var timeoutValue = 0;
function eraseTimeout()
{
	if (timeoutValue!=0)
	{
		clearTimeout(timeoutValue);
		timeoutValue = 0;
	}
}

var timerID = 0;
var oldNavMode = 0;
var currNavMode = 0;
var reclickCounter = -1;
var currCamera = '';

// 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(*_Text).SetVisible(true)');
		}
		if (oldNavMode==2||oldNavMode==3)
		{
			if (timerID!=0)
			{
				clearTimeout(timerID);
				timerID = 0;
			}
		}
		if (oldNavMode==5)
		{
			TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');
			setMeasurementMode(0);
		}
		if (oldNavMode==6)
		{
			TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');
			TNTDoCommand('Objects(*#A*).SetEnable(false)');
			TNTDoCommand('Objects(*).SetSelected(0)');
			TNTDoCommand('Objects(*).SetMouseOverEvent(0)');
			TNTDoCommand('Objects(*).SetOcclusion(0)');
		}
		// ---- Init NavMode ----
		if (currNavMode==0)
		{
			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==1)
		{
			if (reclickCounter%2)
			{
				TNTDoCommand('CameraCtrl.SetControlable(true)');
				TNTDoCommand('Objects("Camera02").StopAnimation()');
				TNTDoCommand('CameraCtrl.SetRotationSpeedX(0.007)')
				TNTDoCommand('CameraCtrl.SetRotationSpeedY(0.007)')
				TNTDoCommand('CameraCtrl.SetMaxHorizontalAngle(3.14)');
				TNTDoCommand('CameraCtrl.SetMinHorizontalAngle(0.0)');
				TNTDoCommand('CameraCtrl.SetMinVerticalAngle(-1000.0)');
				TNTDoCommand('CameraCtrl.SetMaxVerticalAngle(1000.0)');
			}
			else
			{
				TNTDoCommand('Objects(Camera02).StartAnimation()');
				TNTDoCommand('CameraCtrl.SetControlable(false)');
			}
		}
		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()
{
	if (currCamera!="Camera01")
	{
		if (currCamera!='')
		{
			TNTDoCommand('SceneGraph.Physics.Reset()');
			TNTDoCommand('Objects(PhysicsSphere).SetEnable(true)');	
		}
		TNTDoCommand('Objects(*_Text).SetVisible(false)');
		TNTDoCommand('CameraCtrl.SetCurrent("Camera01")');
		currCamera = 'Camera01';
		updateCameraLight();
		UnhideInside();
		HideInside();
	}
	else
	{
		TNTDoCommand('CameraCtrl.Match("Camera01",2000)');
		timeoutValue = setTimeout("UnhideInside();HideInside();TNTDoCommand('Objects(*_Text).SetVisible(false)');",2000);
	}
	TNTDoCommand('CameraCtrl.SetMoveSpeed(0.0)');
	TNTDoCommand('CameraCtrl.SetMaxHorizontalAngle(3.14)');
	TNTDoCommand('CameraCtrl.SetMinHorizontalAngle(0)');
	TNTfocus();
}

function GuideTour()
{
	var frameCount = TNTDoCommand('SceneGraph.GetFrameCount()');
	TNTDoCommand('Objects(Camera02).PlayAnimation(0,'+frameCount+',true)');
	TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
	TNTDoCommand('CameraCtrl.SetCurrent("Camera02")');
	currCamera = 'Camera02';
	updateCameraLight();
	UnhideInside();
	HideInside();
}

function GotoAngle1()
{
	if (currCamera=='Camera01')
   	{
		TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
   		TNTDoCommand('CameraCtrl.SetCurrent("Camera03")');
		currCamera = 'Camera03';
		updateCameraLight();
		UnhideInside();
   	}
	else
   	{
   		TNTDoCommand('CameraCtrl.Match("Camera03",2000)');
   		eraseTimeout();
		timeoutValue = setTimeout("UnhideInside();",2000);
   	}
	TNTDoCommand('ObjectTree('+currCamera+').SetEnable(true)');
	HideInside();
	timerID = setTimeout('makeMovable()',2100);
}

function GotoAngle2()
{
	if (currCamera=='Camera01')
   	{
   		TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
		TNTDoCommand('CameraCtrl.SetCurrent("Camera04")');
		currCamera = 'Camera04';
		updateCameraLight();
		UnhideInside();
	}
	else
	{
		TNTDoCommand('CameraCtrl.Match("Camera04",2000)');
   		eraseTimeout();
		timeoutValue = setTimeout("UnhideInside();",2000);
	}
	HideInside();
	timerID = setTimeout('makeMovable()',2100);
}

function makeMovable()
{
	TNTDoCommand('CameraCtrl.SetControlable(true)');
	TNTDoCommand('CameraCtrl.SetMoveSpeed(3.0)');
}

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();
	TNTDoCommand('Objects(*#HideWhenOutside*).SetVisible(false)');
	var cam1ParentNodeIdx = TNTDoCommand('Objects("Camera01").GetParentNodeIndex()');
	var destParentNodeIdx = TNTDoCommand('Objects("Camera05").GetParentNodeIndex()');
	if (cam1ParentNodeIdx == destParentNodeIdx)
	{
		if (currCamera=='Camera01')
		{
			TNTDoCommand('CameraCtrl.Match("Camera05",2000)');
		}
		else
		{
			TNTDoCommand('SceneGraph.Physics.Reset()');
			TNTDoCommand('Objects(PhysicsSphere).SetEnable(true)');	
			TNTDoCommand('CameraCtrl.SetCurrent("Camera01")');
			currCamera = 'Camera01';
			updateCameraLight();
			TNTDoCommand('CameraCtrl.Match("Camera05",1)');
		}
	}
	else
	{
		TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');	
		if (currCamera=='Camera01')
		{
			TNTDoCommand('CameraCtrl.SetCurrent("Camera05")');
			currCamera = 'Camera05';
			updateCameraLight();
		}
		else
		{
			TNTDoCommand('CameraCtrl.Match("Camera05",2000)');
		}
		UnhideOutside();
	}
	TNTDoCommand('CameraCtrl.SetMaxHorizontalAngle(1.57)');
	TNTDoCommand('CameraCtrl.SetMinHorizontalAngle(0)');
	TNTfocus();
}

function updateCameraLight()
{
	if (currCamera=='Camera01')
	{
		TNTDoCommand('ObjectTree(Camera01).SetEnable(true)');
	}
	else
	{
		TNTDoCommand('ObjectTree(Camera01).SetEnable(false)');
	}	
	if (currCamera=='Camera02')
	{
		TNTDoCommand('ObjectTree(Camera02).SetEnable(true)');
	}
	else
	{
		TNTDoCommand('ObjectTree(Camera02).SetEnable(false)');
	}
	if (currCamera=='Camera03')
	{
		TNTDoCommand('ObjectTree(Camera03).SetEnable(true)');
	}
	else
	{
		TNTDoCommand('ObjectTree(Camera03).SetEnable(false)');
	}	
	if (currCamera=='Camera04')
	{
		TNTDoCommand('ObjectTree(Camera04).SetEnable(true)');
	}
	else
	{
		TNTDoCommand('ObjectTree(Camera04).SetEnable(false)');
	}
	if (currCamera=='Camera05')
	{
		TNTDoCommand('ObjectTree(Camera05).SetEnable(true)');
	}
	else
	{
		TNTDoCommand('ObjectTree(Camera05).SetEnable(false)');
	}
	if (currCamera=='Camera06')
	{
		TNTDoCommand('ObjectTree(Camera06).SetEnable(true)');
	}
	else
	{
		TNTDoCommand('ObjectTree(Camera06).SetEnable(false)');
	}
}

var moving = false;

function OnMoveStart()
{
	moving = true;
	TNTDoCommand('CameraCtrl.SetIgnoreInput(1)');
}

function OnMoveEnd()
{
	moving = false;
	TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');
}

function initMove()
{
	TNTDoCommand('Objects(*).SetOcclusion(0)');
	TNTDoCommand('Objects(*).SetMouseOverEvent(0)');
	TNTDoCommand('Objects(*#A*).SetEnable(true)');
	TNTDoCommand('Objects(*#A*).SetVisible(false)');
	TNTDoCommand('Objects(*#A*).SetOcclusion(1)');
	TNTDoCommand('Objects(*#A*).SetMouseOverEvent(1)');
	TNTDoCommand('Objects(Collision*).SetOcclusion(1)');
	TNTDoCommand('Selection.SetMoveDirectionZ(0)');
	TNTDoCommand('Selection.SetRotationSpeedX(0.0)');
	TNTDoCommand('Selection.SetRotationSpeedY(0.0)');
	TNTDoCommand('Selection.SetRightMode(5)');
	TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');
	if (currCamera!='Camera06')
	{
		TNTDoCommand('CameraCtrl.SetCurrent("Camera06")');
		currCamera = 'Camera06';
		updateCameraLight();
		TNTDoCommand('ObjectTree("Camera06").SetEnable(true)');
	}
}

function loadButtons()
{
  var tempMode = getArgument('mode');
  if (tempMode!=undefined)
  {
  	mode = tempMode;
    if (mode==-1||mode==-3)
	  {
		  setTimeout("setDoneMessage()",1000*60);
	  }
	}
	if(TNTsupportedPlatform()==false)
	{
    mode = 128;
  }

  document.write(createButtons());
}

function createButtons()
{
		var rs = '';
							rs+='<img class="TurnTool_Button" id="TurnTool_Button_walkimg" src="files/image0.jpg" onclick="changeNavMode(0)">';
							rs+='<img class="TurnTool_Button" id="TurnTool_Button_guideimg" src="files/image1.jpg" onclick="changeNavMode(1)">';
							rs+='<img class="TurnTool_Button" id="TurnTool_Button_vinkel1img" src="files/image2.jpg" onclick="changeNavMode(2)">';
							rs+='<img class="TurnTool_Button" id="TurnTool_Button_vinkel2img" src="files/image3.jpg" onclick="changeNavMode(3)">';
							rs+='<img class="TurnTool_Button" id="TurnTool_Button_oversigtimg" src="files/image4.jpg" onclick="changeNavMode(4)">';

		return rs;
}

function createTurnTool(color, transparent, tntDownloadText, coreDownloadText)
{
	var w = element("TurnTool").offsetWidth;
	var h = element("TurnTool").offsetHeight;

        if(navigator.userAgent.substring("MSIE"))
          filepath = "http://cubicasa.fi" + document.getElementById('tntUrl').name;
        else
          filepath = document.getElementById('tntUrl').name;

        if(TNTsupportedPlatform()==true)
	{
		if (ie4||ie5)
		{
			turntoolObject = '<object id="TNTCtrl" width="' + w + '" height="' + h + '" classid="CLSID:402ee96e-2ce8-482d-ada5-ceceea07e16d" codebase="http://www.turntool.com/ViewerInstall.exe#version=2,12,0,8"><param name="transparent" value="'+transparent+'"><param name="ctrl_color" value="'+color+'"><param name="script" value="ProgressBar.SetDownloadText(\''+tntDownloadText+'\');ProgressBar.SetCoreDownloadText(\''+coreDownloadText+'\');TNTCtrl.SetLogo(\'None\');"><param name="src" value="'+filepath+'turntool.tnt"></object>';
			turntoolObject += '<sc'+'r'+'ipt LANGUAGE=JavaScript FOR=TNTCtrl EVENT=TNTEvent(string)> execScript(string); </sc'+'r'+'ipt>';
		}
		else
		{
			turntoolObject = '<embed id="TNTCtrl" width="' + w + '" height="' + h + '" src="'+filepath+'turntool.tnt" transparent="0" ctrl_color="'+color+'" script="ProgressBar.SetDownloadText(\''+tntDownloadText+'\');ProgressBar.SetCoreDownloadText(\''+coreDownloadText+'\');TNTCtrl.SetLogo(\'None\');" pluginspage="http://www.turntool.com/ViewerInstall.xpi" pluginsurl="http://www.turntool.com/ViewerInstall.xpi" type="application/tntfile"></embed>';
		}
		//if (isTurnToolInstalled()==true)
		//	element('InstallTag').style.display = 'none';
	}
	else
	{
    document.write("<p> Alustasi ei tue </p>");
	}
	element("TurnTool").innerHTML = turntoolObject;
}


