//Copyright TurnTool ApS - 1998 - 2008 - All Right Reserved.
//You are NOT allowed to use this HTML document for derivative work including parts here of without the written permission from TurnTool.
//This HTML document may not be redistributed in any form.

var inactiveuser = true;
var timerIDEnableWalk = -1;
var timerIDInActiveUser = -1;

function CancelTimeouts()
{
	if (timerIDEnableWalk!=-1)
	{
		clearTimeout(timerIDEnableWalk);
		timerIDEnableWalk = -1;
	}
	if (timerIDInActiveUser!=-1)
	{
		clearTimeout(timerIDInActiveUser);
		timerIDInActiveUser = -1;
	}
}

function menuHoverToAnimate(event) // changes images in menu with or without animation
{

	if(this)
	{
		var img = this.getElementsByTagName('img')[0]; 	
		if(img)
		{
			var imgSrc = img.src.toString();
			var org = imgSrc;
			if(imgSrc.search('tool_sel_') != -1)
			{
				imgSrc = imgSrc.replace('tool_sel_','tool_');
			}
			else
				imgSrc = imgSrc.replace('tool_','tool_sel_');
			img.src = imgSrc;
		}
	}

}

function menuEnter(event) 
{

	me = this;
	if(!me.className){
		me = element(event);
	}

	if(me)
	{
		var add = ' selected';
		if(me.className.search('item') != -1){
			add = ' selected2';
		}
		//me.className += add;
	}

}

function menuLeave(event)
{

	me = this;
	if(!me.className){
		me = element(event);
	}

	if(me)
	{
		var add = ' selected';
		if(me.className.search('item') != -1){
			add = ' selected2';
		}

		if(me.className.search(add+add) == -1)
		{
		//	me.className = me.className.replace(add,'');
		}
	}

}


function changeImg(_id,_from,_to){

	var el = element(_id);

	if (el.src) {
		el.src = el.src.replace(_from,_to);
	}else{
		el.style.filter = el.style.filter.replace(_from,_to);
	}
}

function showElement(elm,state)
{
	if(!elm)
		return false;
	var cls = elm.className.toString();

	if(state)
	{
		cls = cls.replace('hidden','');
	}
	else
	{
		cls = cls + ' hidden';
	}
	elm.className = cls;
}

function doLoaded()
{

	curLang = nativeLang;
	if(getArgument('lan'))
		curLang = getArgument('lan');
	centerWindow();
	var temp = Number(getArgument('level'));
	if(!isNaN(temp) && buildingLevelStart <= temp && buildingLevelEnd >= temp)
		level = temp;
	else
		level = 0;
	createFilePath(level);
	var t = 'PlanEdit: ';
	if(project)
		t += project;
	document.title = t;
	
	setDynamicContent();
	makeToolbar();
	
	assignEventHandlers('toolbar');
	assignEventHandlers('help_nav_tour');
	assignEventHandlers('help_lay_wallcolor');
	assignEventHandlers('help_lay_floorcolor');
	assignEventHandlers('help_lay_interiorpos');
	assignEventHandlers('help_lay_measurement');
	assignEventHandlers('help_lay_deco');
	assignEventHandlers('help_nav_thumb');

	insertTurnTool("#D8E5FF", lanObj.GetString('s_ttloadplanedit'), lanObj.GetString('s_ttloadplaneditres'));
	lastActive = element('menu_nav_tour');
	fixPNG();
}

addEvent(window,"load",doLoaded);

function showHelp(hide)
{	
	if (hide == 1)
	{
		menuSetActive(lastActive);
		helpSetActive(lastActive);
		foldit(1);
	}
	else
	{
		if (element("TNTCtrl") != null)
		{
			element('turntoolHolder').style.width = "0px";
			element('turntoolHolder').style.display = "none";

			element('controlHolder').style.width = "800px";
			element('controlHolder').style.display = "block";
		}
	}
}

function assignEventHandlers(par)
{
	var _tmp = element(par).getElementsByTagName('div');
	for(var m = 0; m < _tmp.length; m++)
	{
		if(_tmp[m].id.toString().search('link_misc') != -1)
		{
			addEvent(_tmp[m],"click",menuClick,false);
			addEvent(_tmp[m],"mouseover",menuEnter);
			addEvent(_tmp[m],"mouseout",menuLeave);
		}

		if(_tmp[m].id.toString().search(/^menu_/) != -1)
		{
			addEvent(_tmp[m],"click",menuClick,false);
			addEvent(_tmp[m],"mouseover",menuEnter);
			addEvent(_tmp[m],"mouseout",menuLeave);
		}	
	}
	_tmp = element('flag').getElementsByTagName('a');
	for(var m = 0; m < _tmp.length; m++)
	{
		addEvent(_tmp[m],"click",changelanguageevent,false);	
	}
	
//	_tmp = element('controlHolder').getElementsByTagName('a');
//	for(var m = 0; m < _tmp.length; m++)
//	{
//		addEvent(_tmp[m],"click",menuClick,false);	
//	}
}

var imgid = 0;
function makeButtonX(_class,_id,_tip,_image,_imageid,_click){
	if (_click == null){
		_click = "";
	}else{
		_click = 'onclick="'+_click+'"';
	}
	if (_imageid == null){
		_imageid = 'imgbut'+imgid;
		imgid++;
	}

	var ret = '<div class="'+_class+'" id="'+_id+'" title="'+lanObj.GetString( _tip )+'" '+_click+'><img src="'+_image+'" id="'+_imageid+'"/></div>';
	return ret;
}

function makeSeperatorX(rgt)
{
	var e='style="float: left;"';
	if (rgt) 
	{
		e = 'style="float: right;"';
	}
	var ret = '<div id="seperator" '+e+'></div>';
	return ret;
}

var f_vis = 1;
function furnituretoggle()
{

	// Make sure the furniture is visible, and skip if they already are
	if (currNavMode == 6){
		if (f_vis!=0){
			return;
		}
	}

	f_vis = 1-f_vis;

	if (f_vis){
		TNTDoCommand('Objecttree(*#A*).SetVisible(true)');
		TNTDoCommand('Objects(*#A*).SetVisible(false)');
		changeImg('furniture_img','hidden','shown');
	}else{
		TNTDoCommand('Objecttree(*#A*).SetVisible(false)');
		changeImg('furniture_img','shown','hidden');
	}

}

function setDynamicContent()
{
	element('agentlogo').innerHTML += logolink;

	var elm = element('agentcase');
	var html = elm.innerHTML.toString();
	if(html.search(/nobreak/) == -1 && infoArray.length > 0)
	{
		html += lanObj.GetString('w_casename')+' '+infoArray[3]+' ';
		if(infoArray[0].length > 0)
			html += infoArray[0]+' ';
		if(infoArray[2].length > 0)
			html += infoArray[2]+' ';
		if(infoArray[1].length > 0)
			html += infoArray[1]+' ';
	}
	elm.innerHTML = html;
	
	elm = element('supportinfo');
	html = lanObj.GetString('t_guided3dmodel')+'. '+lanObj.GetString('s_techfrom')+'. ';
	if(infoArray[4].length > 0)
		html += lanObj.GetString('s_supplier')+' '+infoArray[4]+'.';
	elm.innerHTML = html;
		
	if(nativeLang != 'uk')
	{
		elm = element('flag');
		var _href = window.location.href.toString();
			if(_href.indexOf('?') == -1)
				_href += '?';
			else
				_href += '&';
		var _href2 = '';
		var _index = _href.indexOf('lan=');
		if(_index == -1) {
			_href += 'lan=';
			_href2 = _href+'uk';
			_href += nativeLang;
		}
		else {
			_href = _href.replace(_href.substr(_index+4,_index+6),nativeLang);
			_href2 = _href.replace(_href.substr(_index+4,_index+6),'uk');
		}
		html = '&nbsp;<a href="'+_href+'"><img src="'+imgPath+nativeLang+'.gif"></a>';
		html += '&nbsp;<a href="'+_href2+'"><img src="'+imgPath+'uk.gif"></a>';
		elm.innerHTML = html;
	}

}

function menuSetActive(who)
{
	var _tmp = element('toolbar').getElementsByTagName('div');
	var newSelectedFunction = who.id.toString();
	for(var m = 0; m < _tmp.length; m++)
	{
		if(_tmp[m].id.toString().search('menu') != -1)
		{
			c = _tmp[m].className.toString();
			c = c.replace(/_selected/g,'');
			if(_tmp[m].id.toString().length > 1 && _tmp[m].id.toString() == newSelectedFunction)
			{
				c += '_selected';
			}
			_tmp[m].className = c;
		}
	}	
}

function helpSetActive(who)
{
	showElement(element('help_loading'),false);
	_tmp = element('ctrlContent').getElementsByTagName('div');
	for(var m = 0; m < _tmp.length; m++)
	{
		if(_tmp[m].id.toString().search("help_") != -1)
		{
			if(_tmp[m].className.toString().search(/hidden/) == -1)
			{
				_tmp[m].className = _tmp[m].className + ' hidden';		
			}
		}
	}
	var newSelectedFunction = who.id.toString().substr(who.id.toString().lastIndexOf('_'),who.id.toString().length);
	if (who != null) {
		for(var m = 0; m < _tmp.length; m++)
		{
			if(_tmp[m].id.toString().search(newSelectedFunction)!= -1)
			{
				_tmp[m].className = _tmp[m].className.toString().replace('hidden','');
			}
		}
		if (who.id.toString()=="menu_lay_help"){
			showHelp();
		}
	}
}

var lastActive;

function menuClick(event)
{
	if(this.href && this.href.toString().search(/#$/) == -1)
		return true; // if it is a real link to another page!

	inactiveuser = false;
	var _id = this.id.toString();

	foldit(1);

	if(_id.search(/_nav_/)!= -1)
	{
		if(_id.search(/_walk$/)!= -1)
		{
			changeNavMode(0);
		}
		else if(_id.search(/_tour$/)!= -1)
		{
			changeNavMode(1);
		}
		else if(_id.search(/_overview$/)!= -1)
		{
			changeNavMode(4);
		}
		else if(_id.search(/_thumb$/)!= -1)
		{
			
		}
		else if(_id.search(/_vinkel[0-9]$/)!= -1)
		{
			var num = Number(_id.charAt(_id.length-1));
			if(!isNaN(num))
				panoImage(num-1);
		}
	}
	else if(_id.search(/_lay_/)!= -1)
	{
		if(_id.search(/wallcolor$/)!= -1)
		{
			doPaletteChanged();
			setMeasurementMode(0);
		}
		else if(_id.search(/floorcolor$/)!= -1)
		{
			setMeasurementMode(0);
		}
		else if(_id.search(/interiorpos$/)!= -1)
		{
			changeNavMode(6);
		}
		else if(_id.search(/measurement$/)!= -1)
		{
			changeNavMode(5);
		}
	}
	else if(_id.search(/_misc_/)!= -1)
	{
		// misc returns false, therefore no gui change
		if(_id.search(/_playpause$/)!= -1)
		{
			changeNavMode(1);
			return false;
		}
		else if(_id.search(/_measure$/) != -1)
		{
			setMeasurementMode(measureMode);
			return false;
		}
		else if(_id.search(/_back$/) != -1)
		{
		//	setMeasurementMode(measureMode);
		}
		
	}

	menuSetActive(this);
	helpSetActive(this);

	if (this.id != "menu_lay_help")
	{
		lastActive = this;
	}
	if (event.preventDefault)
        event.preventDefault();
    else
        event.returnValue= false;
    return false;
}
function changelanguageevent(event)
{
	var _tmp = element('flag').getElementsByTagName('a');
	var newLan = this.childNodes[0].src.toString();
	newLan = newLan.substring(newLan.lastIndexOf('/')+1,newLan.length-4);
	changeLanguage(newLan);
}
function changeLanguage(newLan)
{
	var str = window.location.href.toString();
	if(str.substring(str.length-1,str.length) == '#')
    str = str.substring(0,str.length-1);
	if(str.indexOf('lan=') > -1)
		str = str.replace(curLang,newLan);
	else
	{
		if(str.indexOf('?') == -1)
			str += '?';
		else
			str += '&';
		str += 'lan='+newLan;
	}
	window.location.href = str;
}

function centerWindow()
{
	var windowXcrop = 80;
	var windowYcrop = 108;
	
	if (window.screen)
	{
		if (!document.styleSheets) return;
		var kkk = new Array();

		if (document.styleSheets[0].cssRules)
			kkk = document.styleSheets[0].cssRules;
		else if (document.styleSheets[0].rules)
			kkk = document.styleSheets[0].rules;
		else return;
		
		var topbarheight = -50;
		var menuHeight = -108;
		var bottomBar = -30;
		for(var m = 0; m < kkk.length ; m++)
		{
			if(kkk[m].selectorText.toString().search(/^.topBar$/) != -1)
			{
				var txt = kkk[m].style.cssText.toString().split(';');
				for(var n = 0; n < txt.length; n++)
				{
					var _txt = txt[n].split(':');
					if(_txt[0].search(/height/) != -1)
					{
						topbarheight = Number(_txt[1].substring(0,_txt[1].length-2));
						break;
					}
				}
			}

			else if(kkk[m].selectorText.toString().search(/^.bottomBar$/) != -1)
			{
				var txt = kkk[m].style.cssText.toString().split(';');
				for(var n = 0; n < txt.length; n++)
				{
					var _txt = txt[n].split(':');
					if(_txt[0].search(/height/) != -1)
					{
						bottomBar = Number(_txt[1].substring(0,_txt[1].length-2));
						break;
					}
				}
			}
			if(topbarheight > 0 && menuHeight > 0 && bottomBar > 0)
				break;
		}
		if(topbarheight < 0)
			topbarheight = -1*topbarheight;
		if(menuHeight < 0)
			menuHeight = -1*menuHeight;
		if(bottomBar < 0)
			bottomBar = -1*bottomBar;
		
		var screenWidth = screen.width;
		var screenHeight = screen.height;
		
		var winWidth = screenWidth - windowXcrop;
		var winHeight = screenHeight - windowYcrop;
		var offsetX = screenWidth/2 - winWidth/2;
		var offsetY = screenHeight/2 - winHeight/2;
		if (offsetX<0)
			offsetX=0;
		if (offsetY<0)
			offsetY=0;
		if (mode>=0)
		{
			if(screenWidth < winWidth || screenHeight < winHeight) {
				top.resizeTo(winWidth,winHeight);
				top.moveTo(offsetX, offsetY);
			}
		}
		winWidth = getViewabelSize('x');
		winHeight = getViewabelSize('y');
		var tileFactorW = parseInt((winWidth - 280) / 32);
		var tileFactorH = parseInt((winHeight - topbarheight - menuHeight - bottomBar) * 1.777 / 32);
		if (tileFactorH>tileFactorW)
		{
			tileFactorH=tileFactorW;
		}
		if ((tileFactorH+2)<tileFactorW)
		{
			tileFactorW = tileFactorH;
		}
		if (tileFactorH<tileFactorW)
		{
			tileFactorW = parseInt((tileFactorW + tileFactorH + 1) / 2);
		}
		if (tileFactorW<17)
		{
			tileFactorW=17;
		}	
		element('controlHolder').style.height = tntHeight;
		element('TurnTool').style.width = tntWidth;
		element('TurnTool').style.height = tntHeight;
		
		filesize = tntWidth * tntHeight * 3 / 1000000;
		highfact = 2;
		superfact = 4;
		megafact = 8;
		highWidth = highfact * tntWidth;
		highHeight = highfact * tntHeight;
		superWidth = superfact * tntWidth;
		superHeight = superfact * tntHeight;
		megaWidth = megafact * tntWidth;
		megaHeight = megafact * tntHeight;
		dpi = 300;
		inch2cm = 2.54;  //1 inch = this value in cm
	}
}

function SetToolTipLanguage()
{			
	messages[0] = new Array('',lanObj.GetString('w_measure') + tntWidth + lanObj.GetString('w_y_x_z_pixels') + tntHeight + lanObj.GetString('w_pixel')
									+ Math.round((tntWidth / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_y_x_z_pixels') + Math.round((tntHeight / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_cm_in') + dpi + lanObj.GetString('w_dpi')
									+ lanObj.GetString('w_filesize') + Math.round(filesize * 10) / 10 + lanObj.GetString('w_megabytes'));
	messages[1] = new Array('',lanObj.GetString('w_measure') + highWidth + lanObj.GetString('w_y_x_z_pixels') + highHeight + lanObj.GetString('w_pixel')
									+ Math.round((tntWidth * highfact / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_y_x_z_pixels') + Math.round((tntHeight * highfact / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_cm_in') + dpi + lanObj.GetString('w_dpi')
									+ lanObj.GetString('w_filesize') + Math.round(highfact * highfact * filesize * 10) / 10 + lanObj.GetString('w_megabytes'));
	messages[2] = new Array('',lanObj.GetString('w_measure') + superWidth + lanObj.GetString('w_y_x_z_pixels') + superHeight + lanObj.GetString('w_pixel')
									+ Math.round((tntWidth * superfact / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_y_x_z_pixels') + Math.round((tntHeight * superfact / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_cm_in') + dpi + lanObj.GetString('w_dpi')
									+ lanObj.GetString('w_filesize') + Math.round(superfact * superfact * filesize * 10) / 10 + lanObj.GetString('w_megabytes'));
	messages[3] = new Array('',lanObj.GetString('w_measure') + megaWidth + lanObj.GetString('w_y_x_z_pixels') + megaHeight + lanObj.GetString('w_pixel')
									+ Math.round((tntWidth * megafact / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_y_x_z_pixels') + Math.round((tntHeight * megafact / dpi) * inch2cm * 10) / 10 + lanObj.GetString('w_cm_in') + dpi + lanObj.GetString('w_dpi')
									+ lanObj.GetString('w_filesize') + Math.round(megafact * megafact * filesize * 10) / 10 + lanObj.GetString('w_megabytes'));
	//Navigation
	messages[4] = new Array('',lanObj.GetString('mo_walk'));
	messages[5] = new Array('',lanObj.GetString('mo_camtour'));
	messages[6] = new Array('',/*lanArray[lanIndex][31]*/'');
	messages[7] = new Array('',/*lanArray[lanIndex][32]*/'');
	//væg farver			
	messages[8] = new Array('',lanObj.GetString('mo_wallcolor'));
	messages[9] = new Array('',lanObj.GetString('mo_wallcolorpalet'));
	//gulve
	messages[10] = new Array('',lanObj.GetString('mo_floorcolor'));
}

function javaReady()
{
	showElement(element('help_loading'),false);
	showElement(element('help_default'),true);
	showElement(element('tabPane1'),true);	
}

function OnReady()
{
	inactiveuser = true;
	if (agent != '3dshowrooms_uk')
	{
		if(floorChangeNavMode == -1) 
		{
			showElement(element('help_loading'),false);
			showElement(element('help_default'),true);
			showElement(element('tabPane1'),true);
		}
	}
	timerIDInActiveUser = window.setTimeout("checkInactiveUser();",11500);
	var frameCount = parseInt(TNTDoCommand('SceneGraph.Objects(Camera01).GetFrameCount()'))-1.0;
	if (frameCount>0)
	{
		TNTDoCommand('Objects(PhysicsSphere).SetEnable(false)');
		TNTDoCommand('Objects(Camera01).PlayAnimation(0,'+frameCount+',false,30)');
		if (mode>=0)
		{
			timerIDEnableWalk = setTimeout("changeNavMode(0)",frameCount*1000/30);
		}
	}
	TNTDoCommand('Objects(*#A*).SetEnable(false)');		
	focus();
	window.setTimeout("floorChangeInProgress = false;",1000);
	if(TNTsupportedPlatform()==true && mode > 3) 
	{
		doPaletteChanged();
	}
	if(isFullscreen==true)
	{
		changeNavMode(1);
	}
	if (TNTDoCommand('Objects(#Clock_Hour).GetObjectCount()')>0)
	{
		if (TNTDoCommand('Objects(#Clock_Minute).GetObjectCount()')>0)
		{
			updateClock();
		}
	}
}

function checkInactiveUser()
{
	if(inactiveuser == true)
	{
		inactiveuser = false;
		if(mode == 1) 
		{
			menuSetActive(element('menu_nav_overview'));
			helpSetActive(element('menu_nav_overview'));
		} 
		else 
		{
			menuSetActive(element('menu_nav_tour'));
			helpSetActive(element('menu_nav_tour'));
		}
	}
}

var mesMode = 0;
var floorChangeInProgress = true;

function changeFloor(zone)
{
	if(zone.search(/^#StairUp|^#StairDown/) != -1 && floorChangeInProgress == false)
	{
		CancelTimeouts();	
		floorChangeInProgress = zone;
		if(zone.search(/^#StairUp/i)!= -1)
		{
			level++;	
		}
		else
		{
			level--;
		}
		createFilePath(level);
		var _elm = element('floorselectorlist'); 
		for(var m = 0; m < _elm.options.length; m++)
		{
			_elm.options[m].selected = (_elm.options[m].value == level);
		}
		resetZoneObjArray();
		currNavMode = -1;
		element('TNTCtrl').src = filepath + 'turntool.tnt';
	}
}

function newFloorSelected(who)
{
	CancelTimeouts();	
	var zone = '#Stair';
	if(who[who.selectedIndex].value > level)
		zone+='Up';
	else if(who[who.selectedIndex].value < level)
		zone+='Down';
	else
		return false;
	zone+='_00';
	floorChangeInProgress = zone;
	currNavMode = -1;
	level = who[who.selectedIndex].value;
	createFilePath(level);
	resetZoneObjArray();
	if(TNTsupportedPlatform()==true)
		element('TNTCtrl').src = filepath + 'turntool.tnt';
	else 
	{
		// Linux and Mac stuff
		element('TurnTool').innerHTML = createJavaObject(tntWidth, tntHeight);
		menuSetActive(element('menu_nav_vinkel1'));
		helpSetActive(element('help_nav_angle1'));
	}	
}

var zoneObjStatusArray = new Array();

function resetZoneObjArray()
{
	var zoneObjCount = Number(TNTDoCommand('Objects(#ZoneSphere*).GetObjectCount()'));
	for (var zIdx=0; zIdx<zoneObjCount; zIdx++)
	{
		zoneObjStatusArray[zIdx] = 0;
	}
}

function updateAllZoneObjs()
{
	var zoneObjCount = Number(TNTDoCommand('Objects(#ZoneSphere*).GetObjectCount()'));
	for (var zIdx=0; zIdx<zoneObjCount; zIdx++)
	{
		if (zoneObjStatusArray[zIdx] == 1)
		{
			TNTDoCommand('ObjectTree(#ZoneSphere'+zIdx+').PlayAnimation(,200,false,100)');
		}
		else
		{
			TNTDoCommand('ObjectTree(#ZoneSphere'+zIdx+').PlayAnimation(,0,false,100)');
		}
	}
}

function openAllZoneObjs()
{
	var zoneObjCount = Number(TNTDoCommand('Objects(#ZoneSphere*).GetObjectCount()'));
	for (var zIdx=0; zIdx<zoneObjCount; zIdx++)
	{
		TNTDoCommand('ObjectTree(#ZoneSphere'+zIdx+').PlayAnimation(,200,false,100)');
	}
}

function OnZoneEnter( zone, physics )
{
	if (zone.substring(0,11) == "#ZoneSphere")
	{
		var zIdx = Number(zone.substring(11,zone.length));
		zoneObjStatusArray[zIdx] = 1;
		if (currNavMode == 0)
		{
			TNTDoCommand('ObjectTree(#ZoneSphere'+zIdx+').PlayAnimation(,200,false,100)');
		}
	}
	if(zone.search(/^#Stair/i)!= -1 && !moving)
	{
		changeFloor(zone);
	}
}

function OnZoneExit( zone, physics )
{
	if (zone.substring(0,11) == "#ZoneSphere")
	{
		var zIdx = Number(zone.substring(11,zone.length));
		zoneObjStatusArray[zIdx] = 0;
		if (currNavMode == 0)
		{
			TNTDoCommand('ObjectTree(#ZoneSphere'+zIdx+').PlayAnimation(,0,false,100)');
		}
	}
}

// NavMode = -1 //Something else
// NavMode = 0	//WalkInside
// NavMode = 1	//GuideTour
// NavMode = 2	//GotoAngle1
// NavMode = 3	//GotoAngle2
// NavMode = 4	//GotoOverview
// NavMode = 5	//Measure
// NavMode = 6	//Move

function changeNavMode(newNavMode)
{
	CancelTimeouts();
	if (currNavMode != newNavMode)
	{
		oldNavMode = currNavMode;
		currNavMode = newNavMode;
		reclickCounter = 0;
		if(floorChangeInProgress == false)
		{
			// Avoid floorchange on NavModeChange when camera is located on top of stair.
			floorChangeInProgress = true;
			window.setTimeout("floorChangeInProgress = false;",1000);
		}
		// ---- Exit NavMode ----
		if (oldNavMode==0)
		{
			TNTDoCommand('SceneGraph.Physics.Reset()');
			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*).SetEnable(false)');
			TNTDoCommand('Objects(*).SetSelected(0)');
			TNTDoCommand('Objects(*).SetMouseOverEvent(0)');
			TNTDoCommand('Objects(*).SetOcclusion(0)');	
		}
		// ---- Init NavMode ----
		if (currNavMode==0)
		{
			WalkInside();
			updateAllZoneObjs();
		}
		if (currNavMode==1)
		{
			changeImg('cambutton','_play','_pause');
			GuideTour();
			openAllZoneObjs();
		}
		if (currNavMode==2)
		{
			GotoAngle1();
		}
		if (currNavMode==3)
		{
			GotoAngle2();
		}
		if (currNavMode==4)
		{
			GotoOverview();
			openAllZoneObjs();			
		}
		if (currNavMode==5)
		{
			setMeasurementMode(1);	
		}
		if (currNavMode==6)
		{
			// make sure furniture is visible
			furnituretoggle();
			initMove();
			openAllZoneObjs();			
		}
		if (oldNavMode==1)
		{
			TNTDoCommand('Objects("Camera02").StopAnimation()');
		}
	}
	else
	{
		reclickCounter++;
		if (currNavMode==0)
		{
			if (reclickCounter>0)
			{
				TNTDoCommand('SceneGraph.Physics.Reset()');
			}
			WalkInside();
		}
		if (currNavMode==1)
		{
			var tmpstr = ['play','pause'];
			var newPlaytext = lanObj.GetString('w_tourstop');
			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)');

				changeImg('cambutton','_pause','_play');
			}
			else
			{
				TNTDoCommand('Objects(Camera02).StartAnimation()');
				TNTDoCommand('CameraCtrl.SetControlable(false)');
				tmpstr.reverse();
				newPlaytext = lanObj.GetString('w_tourplaying');

				changeImg('cambutton','_play','_pause');
			}
		}
		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)');
			}
		}
	}
}


var wallcolors = [
	/* Sponsors */ 
	[		
			/*["FFFBF0", "Pollux", "F7FFF4", "Centauri", "E4EDE1", "Albireo", "EBEDEA", "Acrux", "FFF6F4", "Aldebaran", "FFFDEB", "Helios", "EBF2E9", "Carinae", "F8F7EF", "Altair", "F0F3EC", "Sirius", "FDEFDA", "Agena", "F3FDFC", "Vega", "FEFEFE", "Polaris", "F6FEF4", "Capella", "F5F3FE", "Castor", "F1FEFA", "Regulus", "F4ECD5", "Mimosa", "CCD7C1", "Alnitak", "C3D1C6", "Scorpii", "E0D8C2", "Procyon", "F7E4E1", "Spica", "D4DDE5", "Rigel", "E5D7CC", "Canopus", "C9CBBA", "Mira", "E3F3F4", "Hamal", "FAF5D7", "Arcturus", "FFE3C7", "Antares", "D7DDCF", "Mizar", "FFF6DA", "Algol", "E9E2F1", "Shaula", "E5E3C8", "Alcyone", "DEDAE4", "Proxima"],*/
			["FFFFFF","DYRUP 800","F9CDC0","DYRUP 6145","C0C1C3","DYRUP 2010","BCD7D1","DYRUP 4150","D2C3D6","DYRUP 4146","FFEABA","DYRUP 3143","EBDDC4","DYRUP 3145","EBD8B7","DYRUP 3133","E7D6BF","DYRUP 811","EACDC0","DYRUP 8063","C0D8CE","DYRUP 5127","B7BCCA","DYRUP 4133","E9CFCB","DYRUP 2007","EBC7AF","DYRUP 6143","CBDCD1","DYRUP 5138","DBC3A6","DYRUP 2020","D1D0D2","DYRUP 4149","D1DFD6","DYRUP 5137","EE5264","DYRUP 6122","8A94B2","DYRUP 4114","DDCBDA","DYRUP 6105","FED2B6","DYRUP 5134","E6E3C0","DYRUP 5139","FF9D68","DYRUP 3146","E2DFE1","DYRUP 2023","FDC6AC","DYRUP 3148","87B2D0","DYRUP 4135","235F93","DYRUP 4137","B69993","DYRUP 2022","D89C84","DYRUP 7021","E3C995","DYRUP 3134","7D8485","DYRUP 233"],
			["DFC3C3","DYRUP 6142","584236","DYRUP 2018","FDCC6F","DYRUP 3138","762936","DYRUP 6131","3B3F3E","DYRUP 5117","C0C1C3","DYRUP 2008","A17063","DYRUP 7019","9D8E82","DYRUP 2021","EFB0C3","DYRUP 6106","895A71","DYRUP 6128","4A5251","DYRUP 2019","F03333","DYRUP 6110","002852","DYRUP 4123","FFD2AF","DYRUP 3130","FEEDCE","DYRUP 3147","C7896B","DYRUP 6111","949B99","DYRUP 2014","7D3963","DYRUP 6129","48293D","DYRUP 4127","00465E","DYRUP 4121","34281D","DYRUP 9202","EACDC0","DYRUP 3137","FF9145","DYRUP 6121","CCC6BC","DYRUP 3136","636669","DYRUP 2015","833129","DYRUP 6132","F6CCC9","DYRUP 6144","071732","DYRUP 4128","5D3326","DYRUP 7020","EBC7AF","DYRUP 3132","DC5726","DYRUP 6125","BBADA8","DYRUP 2017"],
			["FCEED6","DYRUP 8062","D1D0D2","DYRUP 2016","AA7B2C","DYRUP 5115","75231E","DYRUP 745","762936","DYRUP 6133","003928","DYRUP 5116","69937D","DYRUP 5129","6F252A","DYRUP 6136","E2E1E2","DYRUP 802","FFEABA","DYRUP 3139","A4996E","DYRUP 5136","B12530","DYRUP 6124","A42724","DYRUP 6126","D5B41F","DYRUP 3135","36705E","DYRUP 5133","5A2837","DYRUP 4147","EBC09A","DYRUP 3142","CFB187","DYRUP 5118","FFE12A","DYRUP 3129","BD5C15","DYRUP 6123","9F1E31","DYRUP 6139","592B52","DYRUP 469","0087A9","DYRUP 4118","002A43","DYRUP 4129","ECD1B5","DYRUP 806","B1B2B4","DYRUP 2011","4C473A","DYRUP 9203","FFB886","DYRUP 322","A92A1D","DYRUP 6127","85463A","DYRUP 7084","003765","DYRUP 4119","4A4D50","DYRUP 4125"],
			["FFD797","DYRUP 3144","F8C3B7","DYRUP 6135","D62E2E","DYRUP 650","8996BC","DYRUP 4138","AC9E7B","DYRUP 5119","87B2D0","DYRUP 4116","80B2A4","DYRUP 5134","2D6B99","DYRUP 4139","BD3435","DYRUP 6138","9A5386","DYRUP 4132","D290AE","DYRUP 4145","FFD374","DYRUP 3128","625D1E","DYRUP 5135","5DA631","DYRUP 5109","D1CA91","DYRUP 5107","00609E","DYRUP 4117","DB4E24","DYRUP 630","FFB852","DYRUP 349","A92A2B","DYRUP 6137","8E8CB1","DYRUP 4115","FFCE9C","DYRUP 3141","006B5C","DYRUP 5114","2B6885","DYRUP 4134","A4A5A9","DYRUP 2021","CB678D","DYRUP 644","401B34","DYRUP 4148","AEA9C4","DYRUP 4142","006C59","DYRUP 5130","D3BD68","DYRUP 5104","C8A267","DYRUP 5108","7DB5D8","DYRUP 4131","8DB2A3","DYRUP 5128" ]
	],
	/* Names */
	[/*'Extreme',*/'Energy','Passion','Sensual']
	];
function colorclicked(nColor)
{
	var farver;
	switch( element("PaletteDropDown").selectedIndex )
	{
	case 0:
		farver = wallcolors[0][0];
		break;
	case 1:
		farver = wallcolors[0][1];
		break;
	case 2:
		farver = wallcolors[0][2];
		break;
	case 3:
		farver = wallcolors[0][3];
		break;
	case 4:
		farver = wallcolors[0][4];
		break;
	}	
	var color = farver[nColor*2];
	var colorname = farver[((nColor+1)*2)-1];

	tableSelect('walltable','color_'+nColor);
	if (currNavMode==0)
	{
		var posx = TNTDoCommand('Objects(PhysicsSphere).GetPositionWorldX()');
		var posy = TNTDoCommand('Objects(PhysicsSphere).GetPositionWorldY()');
		var posz = TNTDoCommand('Objects(PhysicsSphere).GetPositionWorldZ()');
		var floorName = TNTDoCommand('Core.GetNameByRaycast('+posx+','+posy+','+posz+',0.0,0.0,-1.0)');
		var roomName = floorName.substring(7,10);
		//TNTDoCommand('Objects("Ceiling#R'+roomName+'#*").SetEmissiveColor(#'+color+',0.85)');
		TNTDoCommand('Objects("Wall'+roomName+'").SetAmbientColor(#'+color+',0.15)');
		TNTDoCommand('Objects("Wall'+roomName+'").SetDiffuseColor(#'+color+',0.40)');
		TNTDoCommand('Objects("Wall'+roomName+'").SetEmissiveColor(#'+color+',0.60)');
		TNTDoCommand('Objects("Wall'+roomName+'").SetSpecularColor(#'+color+',0.0)');
	}
	else
	{
		//TNTDoCommand('Objects("Ceiling*").SetEmissiveColor(#'+color+',0.85)');
		TNTDoCommand('Objects("Wall*").SetAmbientColor(#'+color+',0.15)');
		TNTDoCommand('Objects("Wall*").SetDiffuseColor(#'+color+',0.40)');
		TNTDoCommand('Objects("Wall*").SetEmissiveColor(#'+color+',0.60)');
		TNTDoCommand('Objects("Wall*").SetSpecularColor(#'+color+',0.0)');
	}
	focus();
}

function doPaletteChanged()
{
	var farver;
	switch( element("PaletteDropDown").selectedIndex )
	{
	case 0:
		farver = wallcolors[0][0];
		break;
	case 1:
		farver = wallcolors[0][1];
		break;
	case 2:
		farver = wallcolors[0][2];
		break;
	case 3:
		farver = wallcolors[0][3];
		break;
	case 4:
		farver = wallcolors[0][4];
		break;
	}
	
	var html = '';
	for(var m = 0; m< farver.length/2;m++)
	{
		html += '<div id="color_'+m+'" class="item" onclick="colorclicked(' + m + ');" title="'+lanObj.GetString('mo_wallcolor')+'" onMouseOver="menuEnter(\'color_'+m+'\');" onMouseOut="menuLeave(\'color_'+m+'\');">';
		html += '<div class="thumb" style="background-color: #'+ farver[m*2] +';"></div>';
		html += '<div class="label">' + farver[(m*2)+1] + '</div>';
		html += '</div>';
	}
	element("walltable").innerHTML = html;
}
/*
	floorArray[y][n][i];
	y indicates sponsor (if more than one)
	n indicated index
	i indicated information (0: nice-name, 1: map-name, 2: map-dimensions[x,y], 3: type (0: normal or 1: tile or 2: carpet))
*/
var floorArray = [
	[ /* Sponsor 0 */
	/* n = 0 */	["Egeparket","wood03",[139.8,144.7],[0]],
	/* n = 1 */	["Skibsplanke","wood02",[139.8,144.7],[0]],
				["Ask","wood",[139.8,144.7],[0]],
				["Hvidolieret ask","wood01",[139.8,144.7],[0]],
				["Black tile","tile00",[35.0,35.0],[1]],
				["Grey tile","tile01",[40.0,40.0],[1]],
				["Small grey tile","tile02",[20.0,20.0],[1]],
				["granada","0017730",[41.90,47.44],[2]],
				["quadro","0027210",[44.58,44.58],[2]],
				["Confetti","0051560",[44.58,44.58],[2]]
	]
	/* Add more floor sponsors here... */
	];

function carpetClicked(_sponsor, nCarpet, sType)
{
	var mapfile = planedit_sponsor_path + '/1/floormaps/' + floorArray[_sponsor][nCarpet][1];
	var _objName = sType;

	TNTDoCommand('SceneGraph.Bitmap("Floor_'+_objName+'").Load("' + mapfile + '.jpg")');
	var cnt = parseInt(TNTDoCommand('Objects(*'+_objName+'*).GetObjectCount()'));
	for(var c=0; c<cnt; c++)
	{
		var n = c.toString();
		if(n.length == 1)
			n = '0'+n;
		var xSize = TNTDoCommand('Objects(*#'+_objName+n+').GetGeometrySizeX()');
		var ySize = TNTDoCommand('Objects(*#'+_objName+n+').GetGeometrySizeY()'); 
		var mapSizeU = floorArray[_sponsor][nCarpet][2][0];
		var mapSizeV = floorArray[_sponsor][nCarpet][2][1];
		var tilingU = ySize / mapSizeU;
		var tilingV = xSize / mapSizeV;
		TNTDoCommand('Objects(*#'+_objName+n+').SetTilingU(' + tilingU + ')');
		TNTDoCommand('Objects(*#'+_objName+n+').SetTilingV(' + tilingV + ')');
	}
	tableSelect('floortable','floor_'+nCarpet);
	tableSelect('tiletable','floor_'+nCarpet);
	focus();
}

function tableSelect(t,i){

	var elm = element(t).childNodes;
	var str = i;

	if(elm)
	{
		var found = false;
		for(var m = 0; m < elm.length; m++)
		{
			if(elm[m].id.toString().search(str) != -1){
				found = true;
			}
		}

		if (!found){
			return false;
		}

		var tmp = '';
		for(var m = 0; m < elm.length; m++)
		{
			var cls = 'item';

			if(elm[m].id.toString().search(str) != -1)
			{
				cls = 'item selected2 selected2';
			}

			elm[m].className = cls;
		}
	}

}

function windowClicked( nWindow )
{
	alert('Not implemented yet');
}

var measureMode = 1;

function setMeasurementMode(mesMode)
{
	if (mesMode>0)
	{
		var elm0 = element('image_misc_measure'); //.getElementsByTagName('img')[0];//.firstChild;
		var elm1 = element('label_misc_measure');

		if (mesMode==1)
		{
			measureMode=2;
			
			//elm0.src = elm0.src.replace('tool_measure','tool_rotate')
			changeImg('image_misc_measure','tool_measure','tool_rotate');

			var tmpstr = lanObj.GetString('s_rotate');
			elm1.innerHTML = tmpstr;
			TNTDoCommand('Objects(*).SetOcclusion(0)');
			TNTDoCommand('Objects(Collision*).SetOcclusion(1)');
			TNTDoCommand('Objects(Floor*).SetOcclusion(1)');
			TNTDoCommand('Measurement.SetLineSize(150)');
			TNTDoCommand('CameraCtrl.SetIgnoreInput(1)');
			TNTDoCommand('Measurement.SetMode(1)');	
			if (currCamera!='Camera06')
			{
				TNTDoCommand('ObjectTree(Camera*).SetEnable(false)');
				TNTDoCommand('CameraCtrl.SetCurrent("Camera06")');
				currCamera = 'Camera06';
				TNTDoCommand('ObjectTree("Camera06").SetEnable(true)');
			}
		}
		else
		{
			measureMode=1;
			// elm0.src = elm0.src.replace('tool_rotate','tool_measure');;
			
			changeImg('image_misc_measure','tool_rotate','tool_measure');
			
			var tmpstr = lanObj.GetString('w_measure1');
			elm1.innerHTML = tmpstr;
			TNTDoCommand('SceneGraph.Objects(*).SetOcclusion(0)');
			TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');	
			TNTDoCommand('Measurement.SetMode(2)');	
		}
	}
	else
	{
		TNTDoCommand('SceneGraph.Objects(*).SetOcclusion(0)');
		TNTDoCommand('CameraCtrl.SetIgnoreInput(0)');	
		TNTDoCommand('Measurement.SetMode(0)');
		distance = "0";
		OnMeasureUpdate(distance);
	}
}
var distance = "0";

function OnMeasureUpdate(distance)
{
	var dst = distance - distance % 5;	// not that precise! only every 5 cm
	element('measurementtext').innerHTML = dst;
}
