////////////////////////////
//////////VARS DEF /////////
////////////////////////////
var INITIAL = 0;
var STATE1 = 1;
var STATE2 = 2;
var STATE3 = 3;
var STATE4 = 4;
var STATE5 = 5;

var roof_state = INITIAL;
var measures_state = INITIAL;
var ext_wall_state = INITIAL;
var floor_state = claire;

////////////////////////////
///PUBLIC FUNCTION DEF /////
////////////////////////////
function OnReady(){
	element('TNTCtrl').transparent = 0;	
	
	//addSwitch("kitchen_tiles");
	//initGraphicSwitches();
}

function setState(wall, state){
	var final_state = state;

	if(state == "INITIAL")
		final_state = INITIAL;
	if(state == "STATE1")
		final_state = STATE1;
	if(state == "STATE2")
		final_state = STATE2;
	if(state == "STATE3")
		final_state = STATE3;
	if(state == "STATE4")
		final_state = STATE4;
	if(state == "STATE5")
		final_state = STATE5;
	
		
	switch(wall){
		
		case "ext":
		
		if(final_state == STATE5){	
			
				TNTDoCommand('Objects("Walls_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Left_Ivoire").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_Ivoire_up").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Home_brume").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Brume").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Brume_up").SetVisible(true)');
							
				TNTDoCommand('Objects("Roof_Home_garance").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Garance").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Garance_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_acajou").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Acajou_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Acajou").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Left_White").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_White_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_minuit").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Minuit").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Minuit_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_rustique").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Rustique").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Rustique_up").SetVisible(false)');
			}
			
		if(final_state == STATE4){	
			
				TNTDoCommand('Objects("Walls_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Left_Ivoire").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_Ivoire_up").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Home_rustique").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Rustique").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Rustique_up").SetVisible(true)');
							
				TNTDoCommand('Objects("Roof_Home_brume").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Brume_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Brume").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_garance").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Garance").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Garance_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_acajou").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Acajou_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Acajou").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Left_White").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_White_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_minuit").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Minuit").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Minuit_up").SetVisible(false)');
			}
			
		if(final_state == STATE3){		
			
				TNTDoCommand('Objects("Walls_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Left_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Home_minuit").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Minuit").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Minuit_up").SetVisible(true)');	
						
				TNTDoCommand('Objects("Roof_Home_brume").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_rustique").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Brume_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Rustique_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Brume").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Rustique").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Left_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_garance").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Garance").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Garance_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_acajou").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Acajou_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Acajou").SetVisible(false)');
			}
			
			if(final_state == STATE2){	
				
				TNTDoCommand('Objects("Walls_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Left_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_White_up").SetVisible(true)');				
				TNTDoCommand('Objects("Roof_Home_acajou").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Acajou_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Acajou").SetVisible(true)');
							
				TNTDoCommand('Objects("Roof_Home_brume").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_minuit").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_rustique").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Brume_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Minuit_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Rustique_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Brume").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Minuit").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Rustique").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Left_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_garance").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Garance").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Garance_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Ivoire_up").SetVisible(false)');
			}
			
			if(final_state == STATE1){	
				TNTDoCommand('Objects("Walls_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Left_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_White_up").SetVisible(true)');				
				TNTDoCommand('Objects("Roof_Home_ivoire").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Ivoire").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Ivoire_up").SetVisible(true)');
							
				TNTDoCommand('Objects("Roof_Home_acajou").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_brume").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_minuit").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_rustique").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Acajou_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Brume_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Minuit_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Rustique_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Acajou").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Brume").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Minuit").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Rustique").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Left_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_garance").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Garance").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Garance_up").SetVisible(false)');
			}
			
			if(final_state == INITIAL){
				TNTDoCommand('Objects("Walls_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_White_up").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Left_White").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_White_up").SetVisible(true)');				
				TNTDoCommand('Objects("Roof_Home_garance").SetVisible(true)');
				TNTDoCommand('Objects("Walls_Bardage_Garance").SetVisible(true)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Garance_up").SetVisible(true)');
				
				TNTDoCommand('Objects("Roof_Home_acajou").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_brume").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_minuit").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Home_rustique").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Acajou_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Brume_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Left_Ivoire_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Minuit_up").SetVisible(false)');
				TNTDoCommand('Objects("Roof_Walls_Bardage_Rustique_up").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Acajou").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Brume").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Ivoire").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Minuit").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Rustique").SetVisible(false)');
				TNTDoCommand('Objects("Walls_Bardage_Left_Ivoire").SetVisible(false)');
			}
			ext_wall_state = final_state;
			if(roof_state == STATE1)
				setRoofOff();
			break;	
			
		case "floor":
			if(final_state == STATE1){
				TNTDoCommand('Objects("*Floor2_ardoise").SetVisible(true)');
				TNTDoCommand('Objects("*Floor_claire").SetVisible(false)');
			}
			if(final_state == INITIAL){
				TNTDoCommand('Objects("*Floor_claire").SetVisible(true)');
				TNTDoCommand('Objects("*Floor2_ardoise").SetVisible(false)');
			}
			break;
				
		default: alert("Illegal function call");	
	}
	
}

function setfloor(revetement)
{
	if (revetement == 'claire')
	{
		TNTDoCommand('Objects("*Floor_claire").SetVisible(true)');
		TNTDoCommand('Objects("*Floor2_ardoise").SetVisible(false)');
	}
	if (revetement == 'ardoise')
	{
		TNTDoCommand('Objects("*Floor2_ardoise").SetVisible(true)');
		TNTDoCommand('Objects("*Floor_claire").SetVisible(false)');
	}
}

///////ROOF///////
function setRoofOn(){
	//setMeasuresOff();
	element("toit").checked = false;
	TNTDoCommand('Objects("Roof_Comp").SetVisible(true)');
	TNTDoCommand('Objects("Roof_tiles").SetVisible(true)');
	TNTDoCommand('Objects("Roof_Cheminee").SetVisible(true)');
	TNTDoCommand('Objects("Roof_Cheminee_Hat").SetVisible(true)');
		
	roof_state = INITIAL;	
	setState("ext", ext_wall_state);
}

function toggleRoof(){
	if(roof_state == STATE1)
		setRoofOn();
	else
		setRoofOff();
}

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

///////MEASURES//////

function setMeasuresOff(){
	element("measures").checked = false;
	TNTDoCommand('Objects("measures").SetVisible(false)');
	measures_state = INITIAL;
}

function setMeasuresOn(){
	setRoofOff();
	element("measures").checked = true;
	TNTDoCommand('Objects("measures").SetVisible(true)');
	measures_state = STATE1;
}

function toggleMeasures(){
	if(measures_state == INITIAL)
		setMeasuresOn();
	else
		setMeasuresOff();
}

////////SKY SPHERE///////
function setSkyOn(){
	TNTDoCommand('Objects("GeoSphere01").SetVisible(true)');
}

function setSkyOff(){
	TNTDoCommand('Objects("GeoSphere01").SetVisible(false)');
}

//////////////////////////////
////// CYCLIC SWITCHES ///////
//////////////////////////////

var TEST_LIMIT = 9

var names = new Array();
var sizes = new Array();
var indexes = new Array();
var items = new Array();

function addSwitch(name){
	names.push(name);
}

function getFullIndex(ind){
	if(ind > 0){
		if(ind < 10)
			return "0" + ind;
		else return ind;
	}
	else{
		ind = abs(ind);
		if(ind < 10)
			return "-0" + ind;
		else return "-" + ind;
	}
}

function loadGraphicSwitches(){
	for(h=0 ; h<names.length ; h++){
		sizes[h] = 0;
		indexes[h] = 0;
		items[h] = new Array();
	}	

	for(i=0 ; i<names.length ; i++)
		for(j=0 ; j<TEST_LIMIT ; j++)
			if(TNTDoCommand('Objects(*' + names[i] + getFullIndex(j+1) + '*).GetOcclusion()') == 1){
				items[i].push(names[i] + getFullIndex(j+1));
				sizes[i]++;
			}
}

function initGraphicSwitches(){
	for(i=0 ; i<names.length ; i++){
		TNTDoCommand('Objects(*' + names[i] + '*).SetEnable(true)');			
		TNTDoCommand('Objects(*' + names[i] + '*).SetOcclusion(1)');
		TNTDoCommand('Objects(*' + names[i] + '*).SetMouseClickEvent(1)');
	}	
	
	loadGraphicSwitches();
}

function cyclicIndex(newIndex, size){
	if(newIndex < 0){
		newIndex = size + newIndex;
		newIndex = cyclicIndex(newIndex, size);
	}
	return newIndex%size;
}

function nextSwitchState(pos){
	if( (pos>=0) && (pos<names.length)){
		oldPos = indexes[pos];
		
		indexes[pos] = cyclicIndex(indexes[pos] + 1, sizes[pos]);
		TNTDoCommand('Objects("' + items[pos][indexes[pos]] + '").SetVisible(true)');
		
		if(oldPos != indexes[pos])
			TNTDoCommand('Objects("' + items[pos][oldPos] + '").SetVisible(false)');
	}
}

function OnClick(obj){
	//gestion des switch
	pos = -1;
	trouve = false;
	
	for(i=0; (i<names.length) && !trouve ; i++)
		if(obj.indexOf(names[i]) != -1){
			pos = i;
			trouve = true;
		}
	if(trouve)
		nextSwitchState(pos);
}
