var ie4 = (document.all && !document.getElementById);
var ie5 = (document.all && document.getElementById);
var ns6 = (!document.all && document.getElementById);

var agt=navigator.userAgent.toLowerCase();
var firefox = 0;
if (agt.indexOf("firefox") != -1) firefox=1;

isopened = 0;
StartDoorFrame=0;
StopDoorFrame=50;

var roof_state = "showed";
var intervaltimer = 0;
var intervaltimerGuided = 0;
var renderidx = 0;

var CurFrame = 0;

// VARS for MINIMAP INTERACTIVE for ANTONETTI //
var PosCornerX = 765;
var PosCornerY = 135;
var ScaleValue = 3170;
var minimapWidth = 203;
var minimapHeight = 119;
//////////////////////////////////

function element(id)
{
	if(ie4)	// Explorer 4
		return document.all[id];
	else	// Explorer 5+ Netscape 6+ and Mozilla and Firefox
		return document.getElementById(id);
}

function initTurnTool()
{
	var tntInstalled = isTurnToolInstalled();
	
	if (tntInstalled==false)
	{
		popInfo({content:'./turntool.html',width:'650',height:'450',hide:['flashfunction'],title:'t&eacute;l&eacute;chargement plugin',status:'visimmo3d'});
		checkRefresh();
	}
}

function isTurnToolInstalled()
{
	var tntInstalled = false;
	if (ie4||ie5)
	{
		try
		{
			var xObj = new ActiveXObject("TNT.TNTCtrl");
			if (xObj)
			{
				tntInstalled = true;
			}
		}
		catch (e)
		{
		}
	}
	else
	{
		if(navigator.plugins.namedItem("TurnTool XPCOM Plugin"))
		{
			tntInstalled = true;
		}
	}
	return tntInstalled;
}

function installTurnTool()
{
	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)
{
	window.location.href = window.location;
}

var checkCounter = 0;
function checkRefresh()
{
	var tntInstalled = isTurnToolInstalled();
	if(tntInstalled==false)
	{
		checkCounter++;
		if (checkCounter>20)
		{
			checkCounter=0;
			installTurnTool();
		}
		setTimeout('checkRefresh()',500);
	}
	else
	{
		window.location.href = window.location;
	}
}

function TNTDoCommand(string)
{
	var control = element("TNTCtrl");
	if(control && control.ready)
		return control.TNTDoCommand(string);
	return "";
}

function TntCtrlBrowserSize(typeobj, typebg, tailleX, tailleY)
{
		var installationIE = '<OBJECT id="TNTCtrl" width="' + tailleX + '" height="' + tailleY + '" classid="CLSID:402ee96e-2ce8-482d-ada5-ceceea07e16d" codebase="http://www.turntool.com/ViewerInstall.exe#version=2,12,0,8">' +
	 											'<param name="transparent" value="1">' +
	 											'<param name="tnt_back_color" value="' + typebg + '">' +
	 											'<param name="ctrl_color" value="#000000">' +
	 											'<param name="src" value="' + typeobj + '.tnt">' +
	 											'<param name="script" value="ProgressBar.SetDownloadText(\'Téléchargement de la scène 3D en cours (made by VISIMMO 3D)\');ProgressBar.SetCoreDownloadText(\'Mise à jour du plugin 3D\');TNTCtrl.SetLogo(\'None\');">' +
	 											'</OBJECT>';
	 											
	 	var installationMozilla = '<embed id="TNTCtrl" width="' + tailleX + '"  height="' + tailleY +  '"src="' + typeobj + '.tnt" transparent="1" ctrl_color="#0000FF"' +
	 													 "tnt_back_color='" + typebg + "' pluginspage='http://www.turntool.com/download/' type='application/tntfile'></embed>" ;
	 	
		if (ie4||ie5)
		{								
		document.write(installationIE);								
		}
		else
		{
		document.write(installationMozilla);								
		}
		
}


function OnReady(){
		element('TNTCtrl').transparent = 0;
		TNTDoCommand('Objects("lounge_frying_fire").PlayAnimation(0,7,true,20)');
		
		//var webOk = false;
		//new Ajax.Request('http://www.visimmo3d.com/testWeb.php',{asynchronous:false,onSuccess:function(r){webOk = true;}});
		//if (webOk)
			//TNTDoCommand('SceneGraph.Bitmap("logo_v3D").Load("http://www.visimmo3d.com/advert/alliance/plm/logo_tv_salon.jpg")');
}

function OnClick(obj){
	obj = obj.toLowerCase();
		switch (obj)
			{
				case 'lounge_tvscreen_v3d':
				window.open("http://www.visimmo3d.com"); 
				break
				
				//case 'arrow_up_left':
				//	ChangeAngleInteractive('Camera_r1', 'PhysSphere_Camera_r1', 'R1');
				//	chargerMap("R1");
				//break
				///////////
			}
}

function OnMouseExit(obj){
	obj = obj.toLowerCase();
	TNTDoCommand('Objects("'+ obj +'_border").SetVisible(false)');
}

function OnMouseEnter(obj){
	obj = obj.toLowerCase();
	TNTDoCommand('Objects("'+ obj +'_border").SetVisible(true)');
}


function LookOutside(skysphere)
{
	element("toit").disabled = false;
  TNTDoCommand('CameraCtrl.SetCurrent("Camera02")');
  //Trick to morph Cameras FOV
  TNTDoCommand('CameraCtrl.Match("Camera02",0)');
		
	if (skysphere) TNTDoCommand('Objects("' + skysphere + '").SetVisible(false)');
	clearInterval(intervaltimer);
  clearInterval(intervaltimerGuided);
  element("camXY").style.visibility= 'hidden';
}

function GuidedTourInteractive()
{
	clearInterval(intervaltimer);
  clearInterval(intervaltimerGuided);
	camera_etage = "CameraGuided";
	intervaltimerGuided = setInterval(function() {SetUpdatedCameraPos("CameraGuided");}, 100);

		
	//chargerMap(etage);
		
	StartFrame = TNTDoCommand('SceneGraph.ObjectTree(' + camera_etage + ').GetStartFrame()');
	StopFrame = TNTDoCommand('SceneGraph.ObjectTree(' + camera_etage + ').GetStopFrame()');
	TNTDoCommand('SceneGraph.ObjectTree(' + camera_etage + ').StopAnimation()');
	TNTDoCommand('SceneGraph.ObjectTree(' + camera_etage + ').PlayAnimation(' + StartFrame +',' + StopFrame + ',true,19)');
	TNTDoCommand('SceneGraph.ObjectTree(' + camera_etage + ').SetEnable(true)');
	TNTDoCommand('CameraCtrl.SetCurrent("' + camera_etage + '")');
	
}

function ChangeAngleInteractive(camera, physsphere, etage)
{
	TNTDoCommand("SceneGraph.Objects(" + physsphere + ").SetEnable(true)");
	TNTDoCommand("CameraCtrl.SetCurrent('" + camera + "')'");
	usingCamera02 = false;
	TNTDoCommand('SceneGraph.Physics.Reset()');
	
	//chargerMap(etage);
	
	clearInterval(intervaltimer);
	clearInterval(intervaltimerGuided);
	intervaltimer = setInterval(function() {SetUpdatedCameraPos(camera);}, 100);
	element("TNTCtrl").focus();
}

//Fonction pour repère camera sur plan
function SetUpdatedCameraPos(cam)
{
		pos_cam_x = Math.ceil(TNTDoCommand("SceneGraph.Objects(" + cam + ").GetPositionWorldX()")); 
		pos_cam_y = Math.ceil(TNTDoCommand("SceneGraph.Objects(" + cam + ").GetPositionWorldY()"));
	
		orient_cam_z = Math.ceil(TNTDoCommand("SceneGraph.Objects(" + cam + ").GetRotationWorldZ()"));
		
		angleidx = Math.round(orient_cam_z/30);
		if (angleidx == 12) (angleidx = 0) ;
		imgrotatecursor = "<img src='./images/curseur_map_" + angleidx + ".gif' border=0>" ;
		
		ratioech = ScaleValue/minimapWidth;
		deltaX = PosCornerX;
		deltaY = PosCornerY;
		if (document.all && !window.opera && window.XMLHttpRequest)
			{
				deltaX -= 10;
				deltaY -= 2;
			}
		if (firefox)
		{
			deltaX -= 11;
			deltaY -= 8;
		}
		
		pos_ico_x=Math.ceil(pos_cam_x/ratioech + deltaX); 
		pos_ico_y=Math.ceil(-pos_cam_y/ratioech + deltaY);
		
		if (pos_cam_x <= 0) pos_ico_x=deltaX;
			else
				if
					(pos_ico_x >= deltaX + minimapWidth) pos_ico_x=deltaX+minimapWidth;
		if (pos_cam_y >= 0) pos_ico_y=deltaY;
			else
				if
					(pos_ico_y >= deltaY + minimapHeight) pos_ico_y=deltaY+minimapHeight;
		
	if (document.getElementById || (ie4))
   {
    element("camXY").style.left = pos_ico_x;
		element("camXY").style.top = pos_ico_y;
		element("camXY").innerHTML =  imgrotatecursor ;
		element("camXY").style.visibility= 'visible';
   }
   else if (document.layers)
   {
   	document.layers["camXY"].left = pos_ico_x;
		document.layers["camXY"].top = pos_ico_y;
		document.layers["camXY"].innerHTML =  imgrotatecursor ;
		document.layers["camXY"].style.visibility= 'visible';
   }
}


function Snapshot2x()
{
	renderidx += 1 ;
	if (ie4||ie5){
		 	var pos =  documentname() + '_' + renderidx +'.bmp';
		 	if(confirm('Enregistrer la vue 3D actuelle sur votre bureau en tant que "'+pos+' " ?')){
				TNTDoCommand('Renderer.SaveImage("'+pos+'",1)');
	 			alert("La capture a été placée sur votre bureau : "+pos);
	 		}
		}
	else{
			var pos =  'C:\\'+documentname() + '_' + renderidx +'.bmp';
			if(confirm('Enregistrer la vue 3D actuelle sur votre disque en tant que "'+pos+' " ?')){
				TNTDoCommand('Renderer.SaveImage("'+pos+'",1)');
		 		alert("La capture a été placée sur C:  : "+pos);
			}
		}
}

function Snapshot4x()
{
	renderidx += 1 ;
	if (ie4||ie5){
		 	var pos =  documentname() + '_' + renderidx +'.bmp';
		 	if(confirm('Enregistrer la vue 3D actuelle sur votre bureau en tant que "'+pos+' " ?')){
				TNTDoCommand('Renderer.SaveImage("'+pos+'",2)');
	 			alert("La capture a été placée sur votre bureau : "+pos);
	 		}
		}
	else{
			var pos =  'C:\\'+documentname() + '_' + renderidx +'.bmp';
			if(confirm('Enregistrer la vue 3D actuelle sur votre disque en tant que "'+pos+' " ?')){
				TNTDoCommand('Renderer.SaveImage("'+pos+'",2)');
		 		alert("La capture a été placée sur C:  : "+pos);
			}
		}
}

function documentname()
{
	var doc = document.location.href;
	var tab = doc.split('/');
	var page = tab[tab.length-1];
	tab = page.split('.');
	var nom = tab[0];
	return(nom);
}

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


function OpenCloseDoor(doorname,isopened)
{
	TNTDoCommand('Objects('+ doorname + ').StopAnimation()');
	TNTDoCommand('Objects('+ doorname + ').SetEnable(true)');
	
	var CurFrame = TNTDoCommand('Objects('+ doorname +').GetFrame()');
	if (!isopened)
		TNTDoCommand('Objects('+ doorname + ').PlayAnimation(' + CurFrame +',' + StartDoorFrame + ',false)');
	else
		TNTDoCommand('Objects('+ doorname + ').PlayAnimation(' + CurFrame +',' + StopDoorFrame + ',false)');
}

function do360(newCamera)
{
	StartFrame = TNTDoCommand('SceneGraph.Objects("Camera360").GetStartFrame()');
	StopFrame = TNTDoCommand('SceneGraph.Objects("Camera360").GetStopFrame()');
	TNTDoCommand('SceneGraph.Objects("Camera360").StopAnimation()');
	
	TNTDoCommand('SceneGraph.Objects("Camera360").SetEnable(true)');
	TNTDoCommand('CameraCtrl.Match("Camera360",0)');
	TNTDoCommand('CameraCtrl.SetCurrent("Camera360")');

	TNTDoCommand('SceneGraph.Objects("Camera360").PlayAnimation(' + StartFrame +',' + StopFrame + ',true,30)');
	clearInterval(intervaltimer);
  clearInterval(intervaltimerGuided);
  element("camXY").style.visibility= 'hidden';
}


///////ROOF HIDE/SHOW POUR SEULEMENT UN ETAGE///////

function setRoofOn(){
	element("toit").checked = false;
	TNTDoCommand('Objects("roof_*").SetVisible(true)');
	roof_state = "showed";	
}

function setRoofOff(){
	element("toit").checked = true;
	TNTDoCommand('Objects("roof_*").SetVisible(false)');
	roof_state = "hidden";
}

function toggleRoof(){
	if(roof_state == "hidden")
		setRoofOn();
	else
		setRoofOff();
}
///////////////////////////////////////////////////////
