// Template specific script

//globals
var myMap;
var MapObjectName = "PhysicsSphere";

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}

MM_reloadPage(true);

function initMap() {
	myMap = new arupMap(element('map_layer'));
}

function UpdateMap()
{
	srcPosX = parseInt(TNTDoCommand('Objects(' + MapObjectName + ').GetPositionWorldX()')); // + 350;
	srcPosY = parseInt(TNTDoCommand('Objects(' + MapObjectName + ').GetPositionWorldY()')); // +170;
	srcRotZ1 = parseInt(TNTDoCommand('Objects(' + MapObjectName + ').GetRotationLocalZ()'));

	srcRotZ = 360 - srcRotZ1;
	
	myMap.UpdateLocatorPos(element("map_locator_layer"), srcPosX, srcPosY, srcRotZ);
	
	MapTimer = setTimeout("UpdateMap()", 50);
}

function OnReady()
{
	SetPhysics();
	
	UpdateMap();
	
	//set model loaded flag
	//ModelLoaded = true;	
	
	focus();
	window.status = "TurnTool Ready";	
}

function OnClick(obj)
{
	
	
	
	var zone = obj.substring(0, obj.indexOf("_"));
	
	var tnt_name = zone + ".tnt";
	//alert(tnt_name);
	
	element('Text').innerHTML = eval(zone);
	createTurnTool2(233,131, 'models/'+tnt_name, "#000000", 0);
}

function SetPhysics() {
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsMoveSpeed(17)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsGravityForce(-75)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsFriction(0.5)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsMass(1)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsBounce(0)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsAirResistance(0.5)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsGripThreshold(25)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsGripFaceAngle(-0.684)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsAngleToFace(0.01)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsAngleToGrip(1)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsJumpUpForce(0)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsJumpScalar(0)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsAirControlFactor(0.0936)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsJumpEnableAngle(-0.684)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsMoveEnableAngle(-0.56)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsBorderSize(0.5)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsCacheFactor(2)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsRotateMaxSpeed(0.003)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsRotateQuadratic(0.05)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsRotateLinear(0.13)');
	TNTDoCommand('Objects(PhysicsSphere).SetPhysicsRotateDamping(0.975)');
}

function HideShowObject(id,boxValue)
{
	//alert(id + ', ' + boxValue);
	//var checkboxEl = element('showHideChkBox' + id).checked;
	TNTDoCommand('Objects("' + id + '").SetVisible('+(boxValue)+')');
}

function changeCamera(obj)
{
	newCamera = obj; //obj.options[obj.selectedIndex].value;
	SelectedCamera = newCamera;
	var currentCamera = TNTDoCommand('CameraCtrl.GetCurrent()');
	var srcParentNodeIdx = TNTDoCommand('Objects('+currentCamera+').GetParentNodeIndex()');
	var desParentNodeIdx = TNTDoCommand('Objects('+newCamera+').GetParentNodeIndex()');
	if (srcParentNodeIdx == desParentNodeIdx)
		TNTDoCommand('CameraCtrl.Match("'+newCamera+'",2000)');
	else
		TNTDoCommand('CameraCtrl.SetCurrent("'+newCamera+'")');
		
	focus();
}

function doCommand()
{
	var retval = TNTDoCommand( element("doCommandEdit").value );
	if(retval)
		element("returnval").innerHTML = 'Return Value = "' + retval + '"';
	else
		element("returnval").innerHTML = "";
}

function onDoCommandKeypress()
{
	if(window.event.keyCode==13) // if return key was pressed
		doCommand();
}

function saveImage() {
	alert('A screenshot will now be saved on the desktop entitled nv_3d_screenshot.bmp');
	TNTDoCommand('Renderer.SaveImage("nv_3d_screenshot.bmp",0)');
}

function view_help() {
	var url = 'model_help.php';
	window.open(url, "Help", "toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,width=600,height=600");
	//alert(url);
}

function ArialTour()
{
	
	var currentCamera = TNTDoCommand('CameraCtrl.GetCurrent()');
	if (currentCamera != "animated_cam")
	{
		MapObjectName = "animated_cam";
		CameraRotation = parseInt(TNTDoCommand('Objects(PhysicsCamera).GetRotationLocalX()'));
		PhysicsRotation = parseInt(TNTDoCommand('Objects(PhysicsSphere).GetRotationLocalZ()'));
		TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
		changeCamera('animated_cam');
		TNTDoCommand('Objects("animated_cam").PlayAnimation(0,750,true,5)');
	}
}

function WalkAround()
{
	var currentCamera = TNTDoCommand('CameraCtrl.GetCurrent()');
	if (currentCamera != "PhysicsCamera")
	{	
		MapObjectName = "PhysicsSphere";
		TNTDoCommand('Objects("Camera01").StopAnimation()');
		if (CameraRotation==0 && PhysicsRotation==0)
		{
			CameraRotation = parseInt(TNTDoCommand('Objects(PhysicsCamera).GetRotationLocalX()'));
			PhysicsRotation = parseInt(TNTDoCommand('Objects(PhysicsSphere).GetRotationLocalZ()'));
		}	
		
		TNTDoCommand('Objects(PhysicsCamera).SetRotationLocal(' + CameraRotation + ',0,0)');
		TNTDoCommand('Objects(PhysicsSphere).SetRotationLocal(0,0,' + PhysicsRotation + ')');
		
		CameraRotation=0;
		PhysicsRotation=0;
		
		TNTDoCommand('Objects(PhysicsSphere).SetEnable(true)');
		changeCamera('PhysicsCamera');
	}
}