/* JavaScript Document

Filename: 		ajwells.js (french)
Version:		1.2 - 24th June 2008
Author:			Geoff Coope
Company:		True2Life Ltd
Contact:		(www.true2life.co.uk) (geoff.coope@true2life.co.uk)

Description:	Contains specific functionality for the AJ Wells French Stove Application.	

Copyright:		Script source is copyright(C) 2008, True2Life Ltd.  All rights reserved.
				Do not modify, edit or copy this file or its contents without True2Life Ltd permission

History:		1.0 (19th March 2008) - Initial Creation
History:		1.1 (15th May 2008) - Final Creation
History:		1.1f(16th May 2008) - French Conversion
History: 		1.2	(24th June 2008) - Added Screenshot save feature.

\xE9

*/

// Initial and globals vars.
var fireOn = false;  	 		// off
var DialogOpen = false; 		// Used to open / close dialogs.
var DebugMode = true;  		// Used to help Debug IE
var activeStoveFile = "";  		// Used to keep track of required Stove;
var oldStoveFile = "";     		// Used to keep track of last stove loaded.
var paintColour = "#4B2B38";	// Global wall paint colour
var OKToPaint = false;			// Stops the paint colour affecting the brick when brick is selected.
var BrickMap = true;			// Used to toggle between brick and stone maps.
var wallMap = 'paint';			// Used for restoring the walls between stoves
var StoveColour = '#000001';	// Black
var surround = '';				// 
var floorTexture = '';			//
var savedHearthTile = '';		//
var savedHearthShape = 'oval';
var Layout = 3; 				// 1=Flat, 2=Recessed, 3=Protruding
var WallOutPos = 0;
var wallHeight = 0.0;
var flueStyle = '';

var VaseVisible = false;
var MirrorVisible = false;
var PictureVisible = false;
var RugVisible = false;
var BooksVisible = false;
var ChairClassicVisible = false;
var ChairModernVisible = false;


// Camera
var camZoomMin = 50.0;
var camZoomMax = 200;
var camMinVAngle = 0.5;
var camMaxVAngle = 1.75;
var camMinHAngle = -1.1;
var camMaxHAngle = 1.2;

var OnReadyTick = 0;			// Tracks Mini3D progress

// Web3DOnReady gets called when the "web3d" control has loaded and is ready for dans la pieceion.
function Web3DOnReady(obj) {
	OnReadyTick += 1;
    Web3D('Objects(Stove).SetTextureFactor(0.0)');						
    Web3D('Objects(FacePlate).SetTextureFactor(0.0)');							
    Web3D('Objects(Door).SetTextureFactor(0.0)');						   
	Web3D('Objects(Hood).SetTextureFactor(0.0)');	
	Web3D('Objects(fluePipe).SetTextureFactor(0.0)');			
	Web3D('Objects(flueCollar).SetTextureFactor(0.0)');			
	Web3D('Objects(flue45).SetTextureFactor(0.0)');				

	// If StoveColour has not been set then make stove black
	if(StoveColour == '#000001'){
	    Web3D('Objects(Stove).SetDiffuseColor(#000000)');	
	    Web3D('Objects(FacePlate).SetDiffuseColor(#000000)');		
	    Web3D('Objects(Door).SetDiffuseColor(#000000)');
	    Web3D('Objects(Hood).SetDiffuseColor(#000000)');	
		Web3D('Objects(fluePipe).SetDiffuseColor(#000000)');	
		Web3D('Objects(flueCollar).SetDiffuseColor(#000000)');		
		Web3D('Objects(flue45).SetDiffuseColor(#000000)');	
	}

	// Setup Camera limits
	Web3D('CameraCtrl.SetMinTargetDistance('+camZoomMin+')'); // Zoom in
	Web3D('CameraCtrl.SetMaxTargetDistance('+camZoomMax+')'); // Zoom Out
	
	Web3D('CameraCtrl.SetMinVerticalAngle('+camMinHAngle+')');
	Web3D('CameraCtrl.SetMaxVerticalAngle('+camMaxHAngle+')');
	
	Web3D('CameraCtrl.SetMinHorizontalAngle('+camMinVAngle+')');
	Web3D('CameraCtrl.SetMaxHorizontalAngle('+camMaxVAngle+')');
	
	// Set light intensity
	Web3D('Objects(Omni01).SetDiffuseColor(#1E1E1E)'); 
	
	// Set ceiling colour
	Web3D('Objects(Ceiling).SetEmissiveColor(#FFFFFF)');
	
	// Hide fire object
	Web3D('Objects(Fire).SetVisible(0)');
	
	// Load mini view (Use same TNT but hide all objects bar stove)  This should speed up downloads as the file is already in the cache.
    // as this will trigger another Web3DOnReady() call, make sure we dont keep loading in an endless loop.    	
	if(activeStoveFile != oldStoveFile){
	   element('window2').innerHTML = 'Déballage Poêle ...';  	
       loadMini3D(activeStoveFile);
	   oldStoveFile = activeStoveFile;
	}
	
// OnReadyTick will be 1 when Web3D is getting called otherwise it will be 2
	if(OnReadyTick==1){ 
		OKToPaint = true;	
		restoreLayout();   		// Load previous custom settings, if they exist from a different stove.				
	}
	
	if(OnReadyTick == 2){	// This is a secondary call, Mini3D is Ready()
		Mini3DOnReady();	// Takes care of both IE and FF	
	}


	
}

// Mini3D OnReady()
function Mini3DOnReady(obj) {
 OnReadyTick = 0;	// Reset back to 0 so can check again if user loads new Stove. 
 Mini3D('CameraCtrl.SetCurrent("MiniCamera")');
	   
		Mini3D('Objects(HearthOval).SetVisible(0)');
		Mini3D('Objects(HearthSquare).SetVisible(0)');
		Mini3D('Objects(Floor).SetVisible(0)');
		Mini3D('Objects(Rug).SetVisible(0)');		
		Mini3D('Objects(Chair1).SetVisible(0)');				
		Mini3D('Objects(Mirror).SetVisible(0)');						
		Mini3D('Objects(MiddleProtrudingWallSection).SetVisible(0)');
	    Mini3D('ObjectTree(NotStove).SetVisible(0)');	   
		
		// Move light source so can see back part of stove better.
		Mini3D('Objects(Omni02).SetPositionWorld(786.648,1640.734,-1284.604)');

	if(StoveColour == '#000001'){
	    Mini3D('Objects(Stove).SetTextureFactor(0.0)');						
    	Mini3D('Objects(Door).SetTextureFactor(0.0)');						   
    	Mini3D('Objects(FacePlate).SetTextureFactor(0.0)');
    	Mini3D('Objects(Hood).SetTextureFactor(0.0)');		
        Mini3D('Objects(Door).SetDiffuseColor(#000000)');			   		   
        Mini3D('Objects(FacePlate).SetDiffuseColor(#000000)');			   		   	   
	    Mini3D('Objects(Stove).SetDiffuseColor(#000000)');			   		   		   
	    Mini3D('Objects(Hood).SetDiffuseColor(#000000)');	
	} else {	
	 stoveSetColour(StoveColour); 
	}
}

// Populates the room with general furniture
function furnish(obj){
	switch(obj){
		case 'vase' : 			Web3D('Objects(Vase).SetVisible('+(Web3D('ObjectTree(Vase).GetVisible()') == '1' ? '0' : '1' )+')');
								break;
		case 'mirror': 			Web3D('Objects(Mirror).SetVisible('+(Web3D('ObjectTree(Mirror).GetVisible()') == '1' ? '0' : '1' )+')');
								break;						
		case 'painting':		Web3D('Objects(Picture).SetVisible('+(Web3D('Objects(Picture).GetVisible()') == '1' ? '0' : '1' )+')');
								break;						
		case 'rug':				Web3D('Objects(Rug).SetVisible('+(Web3D('ObjectTree(Rug).GetVisible()') == '1' ? '0' : '1' )+')');
								break;						
		case 'books':			Web3D('Objects(Books).SetVisible('+(Web3D('ObjectTree(Books).GetVisible()') == '1' ? '0' : '1' )+')');
								break;						
		case 'classic':			Web3D('Objects(ChairClassic).SetVisible('+(Web3D('ObjectTree(ChairClassic).GetVisible()') == '1' ? '0' : '1' )+')');
								break;						
		case 'modern':			Web3D('Objects(ChairModern).SetVisible('+(Web3D('ObjectTree(ChairModern).GetVisible()') == '1' ? '0' : '1' )+')');
								break;						
		default :   			T2LCreateDialog(642, 125, "./html/room_furnish.html");
	}
}

function setup(){
	removeAllOptions(element('stovemodel'));
	addOption(element('stovemodel'), "", "Stove", "");
	addOption(element('stovemodel'),"Cove1", "Cove 1");
	addOption(element('stovemodel'),"Cove2", "Cove 2");	
	addOption(element('stovemodel'),"Cove3", "Cove 3");	
	addOption(element('stovemodel'),"Island1", "Island 1");	
	addOption(element('stovemodel'),"Island2", "Island 2");	
	addOption(element('stovemodel'),"Island3", "Island 3");	
	addOption(element('stovemodel'),"Country4", "Country 4");		
	addOption(element('stovemodel'),"Country6", "Country 6");		
	addOption(element('stovemodel'),"Country8", "Country 8");		
	addOption(element('stovemodel'),"Country12", "Country 12");		
	addOption(element('stovemodel'),"Country16", "Country 16");		
	element('stovemodel').options[1].selected = true;

	// Update Base or Hood options.  Default to preloaded Cove 1
	removeAllOptions(element('stovebasehood'));
	addOption(element('stovebasehood'), "", "Base", "");
	addOption(element('stovebasehood'),"low", "Bas");
	addOption(element('stovebasehood'),"center", "Colonne");
	addOption(element('stovebasehood'),"store", "Bûcher");
	element('stovebasehood').options[1].selected = true;
	element('stovebasehood').disabled = false;


	// Update Colours allowed for this stove
	removeAllOptions(element('stovecolour'));
	addOption(element('stovecolour'), "", "Couleur", "");
	addOption(element('stovecolour'),"black", "Noir");
	addOption(element('stovecolour'),"blue", "Bleu");
	addOption(element('stovecolour'),"brown", "Marron");
	addOption(element('stovecolour'),"green", "Vert");
	addOption(element('stovecolour'),"gunmetal", "Gris fusil");
	addOption(element('stovecolour'),"pewter", "Étain");
	addOption(element('stovecolour'),"almond", "Amande");	
	addOption(element('stovecolour'),"bronze", "Bronze");		
	element('stovecolour').options[1].selected = true;			
	element('stovecolour').disabled = false;

	// load the starting model
		setTimeout('loadWeb3D("3d/cove1.tnt")', 50);
		activeStoveFile = "3d/cove1.tnt";
}

function changeLayout(){
	T2LCreateDialog(273, 123, "./html/room_layout.html");
}

function flatWall(){
	
	// If surrounds are visible then do not allow flue
	var shouldBeZero = 0;
	
		shouldBeZero += Number( Web3D('objects(SurroundBeam).GetVisible()') );
		shouldBeZero += Number( Web3D('objects(SurroundWood).GetVisible()') );
		shouldBeZero += Number( Web3D('objects(SurroundShelf).GetVisible()') );
		shouldBeZero += Number( Web3D('objects(SurroundMarble).GetVisible()') );	
		hasFlue =  Number( Web3D('objects(flueCollar).GetVisible()') );	
		
		if(shouldBeZero >0 && hasFlue == 1){ 
			Web3D('objects(SurroundBeam).SetVisible(0)');
			Web3D('objects(SurroundWood).SetVisible(0)');
			Web3D('objects(SurroundShelf).SetVisible(0)');
			Web3D('objects(SurroundMarble).SetVisible(0)');
		}
	
		Layout = 1;
		Web3D('Objects(LeftWallSection).SetVisible(false)');
		Web3D('Objects(RightWallSection).SetVisible(false)');
		Web3D('Objects(LeftProtrudingWallSection).SetVisible(false)');					
		Web3D('Objects(RightProtrudingWallSection).SetVisible(false)');
		Web3D('Objects(MiddleProtrudingWallSection).SetVisible(false)');
		
		// Position Furnish Items to new wall setting
		Web3D('ObjectTree(Picture).SetFrame(0)');
		Web3D('ObjectTree(Mirror).SetFrame(0)');		
		Web3D('ObjectTree(Books).SetFrame(0)');			
		
		//Move all surrounds to back wall
		Web3D('Objects(DummyFlatWallPos).SetFrame(51)');  // Moves all fire surrounds to back wall
	}
	
function recessedWall(){
		Layout = 2;
		Web3D('Objects(LeftProtrudingWallSection).SetVisible(false)');					
		Web3D('Objects(RightProtrudingWallSection).SetVisible(false)');
		Web3D('Objects(MiddleProtrudingWallSection).SetVisible(false)');
		Web3D('Objects(LeftWallSection).SetVisible(true)');		
		Web3D('Objects(RightWallSection).SetVisible(true)');				
		//Surrounds not allowed, hide any visible ones
		Web3D('objects(SurroundBeam).SetVisible(flase)');
		Web3D('objects(SurroundWood).SetVisible(false)');
		Web3D('objects(SurroundShelf).SetVisible(false)');					
		Web3D('objects(SurroundMarble).SetVisible(false)');					

		// Show Walls
		Web3D('Objects(LeftWallSection).SetVisible(true)');
		Web3D('Objects(RightWallSection).SetVisible(true)');	
		
		// Position Furnish Items to new wall setting
		Web3D('ObjectTree(Picture).SetFrame(1)');
		Web3D('ObjectTree(Mirror).SetFrame(1)');		
		Web3D('ObjectTree(Books).SetFrame(1)');		
	}
	
function protrudingWall(){
		Layout = 3;
		Web3D('Objects(LeftWallSection).SetVisible(false)');
		Web3D('Objects(RightWallSection).SetVisible(false)');		

		Web3D('Objects(LeftProtrudingWallSection).SetVisible(true)');					
		Web3D('Objects(RightProtrudingWallSection).SetVisible(true)');
		Web3D('Objects(MiddleProtrudingWallSection).SetVisible(true)');		
		
		//Move all surrounds forwards
		Web3D('Objects(DummyFlatWallPos).SetFrame(1)');

		// Position Furnish Items to new wall setting
		Web3D('ObjectTree(Picture).SetFrame(0)');
		Web3D('ObjectTree(Mirror).SetFrame(0)');		
		Web3D('ObjectTree(Books).SetFrame(0)');				
	}

function resize(){
	if(Layout==2){
		T2LCreateDialog(164, 89, "./html/resize_rec.html");
	} else { 
	 	T2LCreateDialog(318, 86, "./html/resize_pro.html");
	}
}

function sizeOut(){
	var LPos = 0;

	LPos = parseFloat( Web3D('Objects(LeftProtrudingWallSection).GetFrame()') );
		if(LPos <= 40){ 
		   LPos = parseFloat(LPos + 10); 
		}
		Web3D('Objects(LeftWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(RightWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(HearthOval).PlayAnimation(,'+LPos+',false,30)');		
		Web3D('Objects(HearthSquare).PlayAnimation(,'+LPos+',false,30)');				

		// Also move protruding walls
		Web3D('Objects(LeftProtrudingWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(RightProtrudingWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(MiddleProtrudingWallSection).PlayAnimation(,'+LPos+',false,30)');
		// Scale Surrounds to match
		Web3D('Objects(SurroundMarble).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(SurroundWood).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(SurroundBeam).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(SurroundShelf).PlayAnimation(,'+LPos+',false,30)');
}

function sizeIn(){
	var LPos = 0;
	LPos = parseFloat( Web3D('Objects(LeftWallSection).GetFrame()') );
		if(LPos >= 10){ 
		   LPos = parseFloat(LPos - 10); 
		}
		Web3D('Objects(LeftWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(RightWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(HearthOval).PlayAnimation(,'+LPos+',false,30)');		
		Web3D('Objects(HearthSquare).PlayAnimation(,'+LPos+',false,30)');				
		// Also move protruding walls
		Web3D('Objects(LeftProtrudingWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(RightProtrudingWallSection).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(MiddleProtrudingWallSection).PlayAnimation(,'+LPos+',false,30)');
		// Scale Surrounds to match
		Web3D('Objects(SurroundMarble).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(SurroundWood).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(SurroundBeam).PlayAnimation(,'+LPos+',false,30)');
		Web3D('Objects(SurroundShelf).PlayAnimation(,'+LPos+',false,30)');
}

function moveUp(){
	var HPos = 0;
	HPos = parseFloat( Web3D('Objects(MiddleWallDummy).GetFrame()') );
	switch(HPos){
		case 0:		Web3D('Objects(MiddleWallDummy).PlayAnimation(,10,false,30)');break;
		case 10:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,20,false,30)');break;
		case 20:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,30,false,30)');break;
		case 30:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,40,false,30)');break;		
		case 40:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,50,false,30)');break;				
	}
}

function moveDown(){
	var HPos = 0;
	HPos = parseFloat( Web3D('Objects(MiddleWallDummy).GetFrame()') );
	switch(HPos){
		case 50:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,40,false,30)');break;
		case 40:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,30,false,30)');break;
		case 30:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,20,false,30)');break;
		case 20:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,10,false,30)');break;		
		case 10:	Web3D('Objects(MiddleWallDummy).PlayAnimation(,0,false,30)');break;				
	}
}

function roomDecor(){
	T2LCreateDialog(320, 279, "./html/room_decor.html");
}

function switchSurrounds(){
	if(Layout == 2){ 	
	alert('D\xE9sol\xE9, chemin\xE9e ne sont disponibles qu\' n plat mur et Protruding chambre mises en page.');
	} else {
			T2LCreateDialog(358, 125, "./html/switch_surrounds.html");    
	};
}

function switchHearths(){
	T2LCreateDialog(465, 125, "./html/switch_hearths.html");    	
}

function switchFlue(){
	T2LCreateDialog(274, 125, "./html/switch_flue.html");    	
}

function flue(style){
	flueStyle = style; // used for saved scene
	
	// If surrounds are visible then do not allow flue
	var shouldBeZero = 0;
	
		shouldBeZero += Number( Web3D('objects(SurroundBeam).GetVisible()') );
		shouldBeZero += Number( Web3D('objects(SurroundWood).GetVisible()') );
		shouldBeZero += Number( Web3D('objects(SurroundShelf).GetVisible()') );
		shouldBeZero += Number( Web3D('objects(SurroundMarble).GetVisible()') );	
		
		if(Layout ==1 && shouldBeZero >0 && style !== 'rear'){ 
			alert('Arri\xE9re Chemin\xE9e de seulement avec les entourent.'); 
			return;
			}
	
	if( element('stovebasehood').value != 'i'){  // if slx_i is selected then do not show flue
	
		switch(style){
			case 'rear':		Web3D('Objects(flue*).SetVisible(0)'); 
								break;
			case 'angled':		Web3D('Objects(fluePipe).SetVisible(0)');
								Web3D('Objects(flue45).SetVisible(1)'); 
								Web3D('Objects(flueCollar).SetVisible(1)'); 														
								break;
			case 'straight':	Web3D('Objects(flue45).SetVisible(0)'); 
								Web3D('Objects(flueCollar).SetVisible(1)'); 																	
								Web3D('Objects(fluePipe).SetVisible(1)');
								break;
		}
  } //if
		
}

function hearth(tile, shape){
	savedHearthTile = tile;
	switch (tile){
		case 'bodj': 
			Web3D('SceneGraph.Bitmap("tile_beige").Load("./3d/tile_cambodian.jpg")');
			Web3D('Objects(HearthSquare).SetTextureFactor(0.0)');		
			Web3D('Objects(HearthOval).SetTextureFactor(0.0)');									
			break;
		case 'grey': 	
			Web3D('SceneGraph.Bitmap("tile_beige").Load("./3d/tile_grey.jpg")');
			Web3D('Objects(HearthSquare).SetTextureFactor(0.0)');		
			Web3D('Objects(HearthOval).SetTextureFactor(0.0)');									
			break;
		case 'black': 	
			Web3D('SceneGraph.Bitmap("tile_beige").Load("./3d/tile_black.jpg")');
			Web3D('Objects(HearthSquare).SetTextureFactor(0.6)');		
			Web3D('Objects(HearthOval).SetTextureFactor(0.6)');									
			break;
		case 'beige': 	
			Web3D('SceneGraph.Bitmap("tile_beige").Load("./3d/tile_beige.jpg")');					
			Web3D('Objects(HearthSquare).SetTextureFactor(0.4)');		
			Web3D('Objects(HearthOval).SetTextureFactor(0.4)');									
		default:
	}

	
	switch (shape) {
		case 'square':
			Web3D('objects(HearthOval).SetVisible(false)');									
			Web3D('objects(HearthSquare).SetVisible(true)');						
			break
		case 'oval':
			Web3D('objects(HearthSquare).SetVisible(false)');									
			Web3D('objects(HearthOval).SetVisible(true)');						
			break
	}
}

function showSurround(sName){
	surround = sName
	// Dont allow surrounds if flue visible.
	if( Layout==1 && Web3D('objects(flueCollar).GetVisible()') =="1" )
	{
			alert('Impossible d\'ajouter une surround alors que cette Chemin\xE9e est visible.'); 
			return;
			}	
	
	
	;
		if(Layout !=2){
			switch (sName){
				case 'marble':
						Web3D('objects(SurroundBeam).SetVisible(flase)');
						Web3D('objects(SurroundWood).SetVisible(false)');
						Web3D('objects(SurroundShelf).SetVisible(false)');					
						Web3D('Objects(SurroundMarble).SetVisible('+(Web3D('Objects(SurroundMarble).GetVisible()') == '1' ? '0' : '1' )+')');
						break;
				case 'wood':
						Web3D('objects(SurroundBeam).SetVisible(flase)');
						Web3D('objects(SurroundShelf).SetVisible(false)');					
						Web3D('objects(SurroundMarble).SetVisible(false)');					
						Web3D('Objects(SurroundWood).SetVisible('+(Web3D('Objects(SurroundWood).GetVisible()') == '1' ? '0' : '1' )+')');
						break;
				case 'beam':
						Web3D('objects(SurroundShelf).SetVisible(false)');					
						Web3D('objects(SurroundMarble).SetVisible(false)');					
						Web3D('objects(SurroundWood).SetVisible(false)');									
						Web3D('Objects(SurroundBeam).SetVisible('+(Web3D('Objects(SurroundBeam).GetVisible()') == '1' ? '0' : '1' )+')');
						break;
				case 'shelf':
						Web3D('objects(SurroundMarble).SetVisible(false)');					
						Web3D('objects(SurroundWood).SetVisible(false)');									
						Web3D('objects(SurroundBeam).SetVisible(false)');						
						Web3D('Objects(SurroundShelf).SetVisible('+(Web3D('Objects(SurroundShelf).GetVisible()') == '1' ? '0' : '1' )+')');
						break;
			}
		}
	}
	
function floorMat(id){
	//	id  1=wood, 2=tile, 3=carpet.
	floorTexture = id;
	switch (id){
		case 1: 	Web3D('SceneGraph.Bitmap("carpet").Load("./3d/wood.jpg")');
					break;
		case 2: 	Web3D('SceneGraph.Bitmap("carpet").Load("./3d/tile.jpg")');	
					break;
		case 3: 	Web3D('SceneGraph.Bitmap("carpet").Load("./3d/carpet.jpg")');	
					break;
		default:
	}
}

// Choose Wall type, paint or bricks.
function brickWalls(){
	OKToPaint = false;
	wallMap = 'brick';
	   Web3D('SceneGraph.Bitmap("paint").Load("./3d/brick.jpg")');
	   Web3D('Objects(RoomWalls).ResetDiffuseColor()');
	   Web3D('Objects(MiddleProtrudingWallSection).ResetDiffuseColor()');
	   Web3D('Objects(RightProtrudingWallSection).ResetDiffuseColor()');
	   Web3D('Objects(LeftProtrudingWallSection).ResetDiffuseColor()');
	   Web3D('Objects(LeftWallSection).ResetDiffuseColor()');
	   Web3D('Objects(RightWallSection).ResetDiffuseColor()');
}

function stoneWalls(){
	OKToPaint = false;
	wallMap = 'stone';
	   Web3D('SceneGraph.Bitmap("paint").Load("./3d/stone.jpg")');
	   Web3D('Objects(RoomWalls).ResetDiffuseColor()');
	   Web3D('Objects(MiddleProtrudingWallSection).ResetDiffuseColor()');
	   Web3D('Objects(RightProtrudingWallSection).ResetDiffuseColor()');
	   Web3D('Objects(LeftProtrudingWallSection).ResetDiffuseColor()');
	   Web3D('Objects(LeftWallSection).ResetDiffuseColor()');
	   Web3D('Objects(RightWallSection).ResetDiffuseColor()');
}

function paintedWalls(){
	OKToPaint = true;
	wallMap = 'paint';
	updatePaint(paintColour);
	Web3D('SceneGraph.Bitmap("paint").Load("./3d/paint.jpg")');
}

// Update the wall colour with selected paint.
function updatePaint(col){
	if(OKToPaint){
		   paintColour = col;	 
		   Web3D('ObjectTree(NotStove).SetDiffuseColor(' + paintColour + ')');
		   Web3D('Objects(RoomWalls).SetDiffuseColor(' + paintColour + ')');
		   Web3D('Objects(MiddleProtrudingWallSection).SetDiffuseColor(' + paintColour + ')'); 
		   Web3D('Objects(RightProtrudingWallSection).SetDiffuseColor(' + paintColour + ')');  
		   Web3D('Objects(LeftProtrudingWallSection).SetDiffuseColor(' + paintColour + ')');  
		   Web3D('Objects(LeftWallSection).SetDiffuseColor(' + paintColour + ')');     
		   Web3D('Objects(RightWallSection).SetDiffuseColor(' + paintColour + ')');        
		
		}
}

function stoveSetColour(sValue){
	StoveColour = sValue;
	
   // Reset Reflection to default.
   Web3D('Objects(Stove).SetTextureFactor(0.0)');						
   Web3D('Objects(FacePlate).SetTextureFactor(0.0)');						
   Web3D('Objects(Door).SetTextureFactor(0.0)');
   Web3D('ObjectTree(flue*).SetTextureFactor(0.0)');
   Mini3D('Objects(Stove).SetTextureFactor(0.0)');						
   Mini3D('Objects(Door).SetTextureFactor(0.0)');						   
   Mini3D('Objects(FacePlate).SetTextureFactor(0.0)');						      

	// Change Material colour and reflection
	switch(sValue) {	
		case 'black':
		   Web3D('Objects(Stove).SetDiffuseColor(#000000)');	
		   Web3D('Objects(Door).SetDiffuseColor(#000000)');			   
   		   Web3D('Objects(FacePlate).SetDiffuseColor(#000000)');			   
   		   Web3D('Objects(Hood).SetDiffuseColor(#000000)');	
		   Web3D('Objects(flue*).SetDiffuseColor(#000000)');		   
   		   Mini3D('Objects(Stove).SetDiffuseColor(#000000)');
		   Mini3D('Objects(Door).SetDiffuseColor(#000000)');			   		   
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#000000)');			   		   		   
		   Mini3D('Objects(Hood).SetDiffuseColor(#000000)');		   
		   	element('web3d').focus();
			break;
		case 'blue':
		   Web3D('Objects(Stove).SetDiffuseColor(#274653)');	
		   Web3D('Objects(Door).SetDiffuseColor(#274653)');			   
		   Web3D('Objects(FacePlate).SetDiffuseColor(#274653)');			   		   
		   Web3D('Objects(Hood).SetDiffuseColor(#274653)');			   		   		   
		   Web3D('ObjectTree(flue*).SetDiffuseColor(#274653)');		   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#274653)');				
			Mini3D('Objects(Door).SetDiffuseColor(#274653)');			   		   
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#274653)');		
		   Mini3D('Objects(Hood).SetDiffuseColor(#274653)');				   
			element('web3d').focus();		   
			break;
		case 'brown':
		   Web3D('Objects(Stove).SetDiffuseColor(#534527)');	
		   Web3D('Objects(Door).SetDiffuseColor(#534527)');		
		   Web3D('Objects(FacePlate).SetDiffuseColor(#534527)');			   
		   Web3D('Objects(Hood).SetDiffuseColor(#534527)');			   		   
		   Web3D('ObjectTree(flue*).SetDiffuseColor(#534527)');		   		   
		   Mini3D('Objects(Door).SetDiffuseColor(#534527)');			   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#534527)');				
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#534527)');						   
		   Mini3D('Objects(Hood).SetDiffuseColor(#534527)');						   		   
			element('web3d').focus();			   
			break;
		case 'green':
		   Web3D('Objects(Stove).SetDiffuseColor(#15281B)');	
		   Web3D('Objects(Door).SetDiffuseColor(#15281B)');			   
		   Web3D('Objects(FacePlate).SetDiffuseColor(#15281B)');			   		   
		   Web3D('Objects(Hood).SetDiffuseColor(#15281B)');
		   Web3D('ObjectTree(flue*).SetDiffuseColor(#15281B)');		   		   
		   Mini3D('Objects(Door).SetDiffuseColor(#15281B)');			   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#15281B)');				
		   Mini3D('Objects(Hood).SetDiffuseColor(#15281B)');						   
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#15281B)');						   
			element('web3d').focus();		   
			break;
		case 'gunmetal':
		   Web3D('Objects(Stove).SetDiffuseColor(#565656)');	
		   Web3D('Objects(Door).SetDiffuseColor(#565656)');			   
		   Web3D('Objects(FacePlate).SetDiffuseColor(#565656)');			   		   
		   Web3D('Objects(Hood).SetDiffuseColor(#565656)');			   		   		   
		   Web3D('ObjectTree(flue*).SetDiffuseColor(#565656)');		   		   		   
		   Mini3D('Objects(Door).SetDiffuseColor(#565656)');			   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#565656)');				
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#565656)');						   
		   Mini3D('Objects(Hood).SetDiffuseColor(#565656)');						   		   
			element('web3d').focus();		   
			break;
		case 'pewter':
		   Web3D('Objects(Stove).SetDiffuseColor(#98A29F)');	
		   Web3D('Objects(FacePlate).SetDiffuseColor(#98A29F)');			   
		   Web3D('Objects(Door).SetDiffuseColor(#98A29F)');			   
		   Web3D('Objects(Hood).SetDiffuseColor(#98A29F)');			   		   
		   Web3D('ObjectTree(flue*).SetDiffuseColor(#98A29F)');		   		   		   
		   Mini3D('Objects(Door).SetDiffuseColor(#98A29F)');			   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#98A29F)');			
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#98A29F)');					   
		   Mini3D('Objects(Hood).SetDiffuseColor(#98A29F)');					   		   
		   	element('web3d').focus();
			break;
		case 'almond':
		   Web3D('Objects(Stove).SetDiffuseColor(#A09C8B)');	
		   Web3D('Objects(Door).SetDiffuseColor(#A09C8B)');			   
		   Web3D('Objects(FacePlate).SetDiffuseColor(#A09C8B)');			   		   
		   Web3D('Objects(Hood).SetDiffuseColor(#A09C8B)');			   		   		   
		   Web3D('ObjectTree(flue*).SetDiffuseColor(#A09C8B)');		   		   		   
		   Mini3D('Objects(Door).SetDiffuseColor(#A09C8B)');			   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#A09C8B)');			
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#A09C8B)');					   
		   Mini3D('Objects(Hood).SetDiffuseColor(#A09C8B)');					   		   
		   	element('web3d').focus();
			break;
		case 'bronze':
		   Web3D('Objects(Stove).SetDiffuseColor(#826F4B)');	
		   Web3D('Objects(Door).SetDiffuseColor(#826F4B)');			   
		   Web3D('Objects(FacePlate).SetDiffuseColor(#826F4B)');			   		   
		   Web3D('Objects(Hood).SetDiffuseColor(#826F4B)');
   		   Web3D('ObjectTree(flue*).SetDiffuseColor(#826F4B)');		   		   
		   Mini3D('Objects(Door).SetDiffuseColor(#826F4B)');			   		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#826F4B)');			
		   Mini3D('Objects(FacePlate).SetDiffuseColor(#826F4B)');			   		   		   
		   Mini3D('Objects(Hood).SetDiffuseColor(#826F4B)');			   		   		   		   
		   	element('web3d').focus();
			break;
		case 'glossblack':
		   Web3D('Objects(Stove).SetDiffuseColor(#000000)');	
		   Web3D('Objects(Stove).SetTextureFactor(0.3)');					

		   Web3D('Objects(Hood).SetDiffuseColor(#000000)');	
		   Web3D('Objects(Hood).SetTextureFactor(0.3)');					

		   Web3D('Objects(FacePlate).SetDiffuseColor(#000000)');	
		   Web3D('Objects(FacePlate).SetTextureFactor(0.3)');					

		   Web3D('Objects(Door).SetDiffuseColor(#000000)');			   
		   Web3D('Objects(Door).SetTextureFactor(0.3)');				   		   

		   Web3D('Objects(flue*).SetDiffuseColor(#000000)');			   
		   Web3D('Objects(flue*).SetTextureFactor(0.3)');				   		   

		   Mini3D('Objects(Door).SetDiffuseColor(#000000)');			   		   
		   Mini3D('Objects(Door).SetTextureFactor(0.3)');				   		   		   

		   Mini3D('Objects(Hood).SetDiffuseColor(#000000)');			   		   
		   Mini3D('Objects(Hood).SetTextureFactor(0.3)');				   		   		     
		   
		   Mini3D('Objects(Stove).SetDiffuseColor(#000000)');			   		   		   
		   Mini3D('Objects(Stove).SetTextureFactor(0.3)');				   		   		   				   

		   Mini3D('Objects(FacePlate).SetDiffuseColor(#000000)');			   		   		   
		   Mini3D('Objects(FacePlate).SetTextureFactor(0.3)');				   		   		   				   
			
			element('web3d').focus();
  		    break;
	}
}

function lightUp(v){	
	switch(v){
		case '1':  Web3D('Objects(Omni01).SetDiffuseColor(#1E1E1E)'); 
					break;  
		case '2':  	Web3D('Objects(Omni01).SetDiffuseColor(#3C3C3C)'); 
					break;
		case '3':  Web3D('Objects(Omni01).SetDiffuseColor(#5A5A5A)'); 
					break;
		case '4':  Web3D('Objects(Omni01).SetDiffuseColor(#787878)'); 
					break;
		case '5':  Web3D('Objects(Omni01).SetDiffuseColor(#969696)'); 
					break;
		case '5':  Web3D('Objects(Omni01).SetDiffuseColor(#969696)'); 
					break;
		case '6':  Web3D('Objects(Omni01).SetDiffuseColor(#B4B4B4)'); 
					break;
		case '7':  Web3D('Objects(Omni01).SetDiffuseColor(#D2D2D2)'); 
					break;		
		case '8':  Web3D('Objects(Omni01).SetDiffuseColor(#F0F0F0)'); 
					break;		
		case '9':  Web3D('Objects(Omni01).SetDiffuseColor(#FFFFFF)'); 
					break;				
	}
}

function closeDialog(obj){
	var el = document.all ? document.all['guiContainer'] : document.getElementById('guiContainer'); 
	window.document.body.removeChild(el);
}

function T2LCreateDialog(width, height, src){
	flashMsg('Loading...');	
	var elWeb3d = document.all ? document.all['web3d'] : document.getElementById('web3d');
	var DialogLeft =  findPosX(elWeb3d)
//	var DialogLeft = (682 /2) + (findPosX(elWeb3d)) - (width /2)	
//    var DialogTop = 507 - height;
    var DialogTop = 6;
	
	// Check to see if a dialog already exists, if it does delete it and create a new one.
	var el = document.all ? document.all['guiContainer'] : document.getElementById('guiContainer'); 
	if(el){
		closeDialog(el)
	}
	
    var iframe = document.createElement("iframe");

	iframe.setAttribute("id","guiContainer");
	iframe.setAttribute("name","guiContainer");
	iframe.setAttribute("height", height);
	iframe.setAttribute("width", width);
	iframe.setAttribute("frameBorder","#");
	iframe.setAttribute("border","0");
	iframe.setAttribute("z-index","100");
	iframe.setAttribute("overflow","hidden");
	iframe.setAttribute("visibility","visible");	
	iframe.setAttribute("scrolling","no");	

	iframe.style.position = "absolute";
	iframe.style.display = "block";
	iframe.style.top = DialogTop + 'px';
	iframe.style.left = DialogLeft + 'px';
	
	iframe.src = src;

	window.document.body.appendChild(iframe);
	setTimeout("frames['guiContainer'].focus()",1000);
	flashMsg('');		
}

function over(el){
  el.style.backgroundColor='#CCCCCC';
}

function out(el){
  el.style.backgroundColor='#FFFFFF';
}

function loadStove( value ) {
 element('window2').innerHTML = ' Déballage Poêle ...';
 saveLayout();   // Save changes to room so can restore them after loading new stove.
 
 switch (value){
	case 'Cove1':
			element('stovebasehood').disabled = false;	
			element('web3d').focus();
			// Update Information for this stove
			stoveInfo('4kW dans la piece (13,600 Btu/hr)', '76.5%', 'Haut ou arrière 125mm (5") diamètre', '300mm (12")', 'Bûcher - 96kg<br>Colonne - 104kg<br>Bas - 89kg');
			
			// load the Main model
			setTimeout('loadWeb3D("3d/cove1.tnt")', 50);
			activeStoveFile = '3d/cove1.tnt';  // trigers loading of the mini model after main model has loaded.
			
			// Setup sub stove options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Base", "");
			addOption(element('stovebasehood'),"low", "Bas");
			addOption(element('stovebasehood'),"center", "Colonne");
			addOption(element('stovebasehood'),"store", "Bûcher");
			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");		
			
	       break
	case 'Cove2':
			element('stovebasehood').disabled = false;		
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('8kW dans la piece (27,300 Btu/hr)', '74.7%', 'Haut ou arrière 150mm (6") diamètre', '370mm (14.5")', 'Bûcher - 133kg<br>Colonne - 146kg<br>Bas - 127kg');	
			// load the Main model
			setTimeout('loadWeb3D("3d/cove2.tnt")', 50);
			activeStoveFile = '3d/cove2.tnt';  

			element('web3d').innerHTML = ' Déballage Poêle ...';  	
			
			// Setup sub stove options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Base", "");
			addOption(element('stovebasehood'),"low", "Bas");
			addOption(element('stovebasehood'),"center", "Colonne");
			addOption(element('stovebasehood'),"store", "Bûcher");

			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");			
	       break
case 'Cove3':
			element('stovebasehood').disabled = false;	
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('12kW dans la piece (40,900 Btu/hr)', '78.4%', 'Haut ou arrière 178mm (7") diamètre', '500mm (20")', 'Bûcher - 171kg<br>Colonne - 187kg<br>Bas - 159kg');	
			// load the Main model
			setTimeout('loadWeb3D("3d/cove3.tnt")', 50);
			activeStoveFile = '3d/cove3.tnt';  // trigers loading of the mini model after main model has loaded.			
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			
			// Setup sub stove options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Base", "");
			addOption(element('stovebasehood'),"low", "Bas");
			addOption(element('stovebasehood'),"center", "Colonne");
			addOption(element('stovebasehood'),"store", "Bûcher");			
			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");			
			break;
case 'Island1':
			// Update Base or Hood options.  Default to preloaded Cove 1
			element('stovebasehood').options[2].selected = true;			
			element('stovebasehood').disabled = true;

			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('6kW dans la piece (20,500 Btu/hr)', '78%', 'Haut ou arrière 150mm (6") diamètre', '370mm (14.5")', '130kg');	
			// load the Main model
			setTimeout('loadWeb3D("3d/island1.tnt")', 50);
			activeStoveFile = '3d/island1.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			removeOption(element('stovecolour'),"glossblack");
	
	       break		   
case 'Island2':
			element('stovebasehood').options[1].selected = true;
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('8kW dans la piece (27,300 Btu/hr)', '78%', 'Haut ou arrière 150mm (6") diamètre', '440mm (17")', '140kg');	
			// load the Main model
			setTimeout('loadWeb3D("3d/island2.tnt")', 50);
			activeStoveFile = '3d/island2.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			removeOption(element('stovecolour'),"glossblack");
	       break		   
case 'Island3':
	element('stovebasehood').options[1].selected = true;
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('12kW dans la piece (40,900 Btu/hr)', '76.4%', 'Haut ou arrière 178mm (7") diamètre', '550mm (21.5")', '180kg');	
			// load the Main model
			setTimeout('loadWeb3D("3d/island3.tnt")', 50);
			activeStoveFile = '3d/island3.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			removeOption(element('stovecolour'),"glossblack");			
	       break		   
case 'Country4':
			element('stovebasehood').options[1].selected = true;
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('4kW dans la piece (13,600 Btu/hr)<br>Facultatif boiler 2.2kW (7,500 Btu/hr)', '81%', 'Haut ou arrière 125mm (5") diamètre', '330mm (13")', 'Bûcher - 171kg,  Colonne - 187kg,  Bas - 62kg');	
			// load the Main model
			setTimeout('loadWeb3D("3d/country4.tnt")', 50);
			activeStoveFile = '3d/country4.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			
			removeOption(element('stovecolour'),"glossblack");
	       break		   		   
case 'Country6':
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('6kW dans la piece (20,500 Btu/hr)<br>Facultatif boiler 2.9kW (10,000 Btu/hr)', '80%', 'Haut ou arrière 150mm (6") diamètre', '380mm (15")', '90kg<br>Facultatif Canopy: Global - H:734 W:552 D:413mm');	
			// load the Main model
			setTimeout('loadWeb3D("3d/country6.tnt")', 50);
			activeStoveFile = '3d/country6.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			// Update Base or Hood options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Hood", "");
			addOption(element('stovebasehood'),"nohood", "-Hood");  
			addOption(element('stovebasehood'),"hood", "+Hood");  				
			element('stovebasehood').disabled = false;	
			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");			
	       break		   		   
case 'Country8':
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('8kW dans la piece (27,300 Btu/hr)<br>Facultatif boiler 2.9kW (10,000 Btu/hr)', '79%', 'Haut ou arrière 150mm (6") diamètre', '380mm (15")', '105kg<br>Facultatif Canopy: Global - H:749 W:552 D:486mm');	
			// load the Main model
			setTimeout('loadWeb3D("3d/country8.tnt")', 50);
			activeStoveFile = '3d/country8.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			// Update Base or Hood options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Hood", "");
			addOption(element('stovebasehood'),"nohood", "-Hood");  
			addOption(element('stovebasehood'),"hood", "+Hood");  				
			element('stovebasehood').disabled = false;	
			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");			
	       break		   		   
case 'Country12':
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('12kW dans la piece (40,900 Btu/hr)<br>Facultatif Chauffe-eau 2.9kW (10,000 Btu/hr)', '74%', 'Haut ou arrière 150mm (6") diamètre', '430mm (17")', '121kg<br>Facultatif Canopy: Global - H:793 W:633 D:472mm');	
			// load the Main model
			setTimeout('loadWeb3D("3d/country12.tnt")', 50);
			activeStoveFile = '3d/country12.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			// Update Base or Hood options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Hood", "");
			addOption(element('stovebasehood'),"nohood", "-Hood");  
			addOption(element('stovebasehood'),"hood", "+Hood");  				
			element('stovebasehood').disabled = false;	
			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");			
	       break
case 'Country16':
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('8kW dans la piece (27,300 Btu/hr)<br>To int. Chau 8kW (27,300 Btu/hr)', 'Capacit?de chauffage: DHW & Env. 7 radiateurs, convient également pour chauffage par le sol', 'Haut ou arrière 150mm (6") diamètre', '400mm (16")', '180kg. Facultatif Canopy: H:928 W:633 D:472mm');
			// load the Main model
			setTimeout('loadWeb3D("3d/country16.tnt")', 50);
			activeStoveFile = '3d/country16.tnt';  // trigers loading of the mini model after main model has loaded.
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			// Update Base or Hood options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Hood", "");
			addOption(element('stovebasehood'),"nohood", "-Hood");  
			addOption(element('stovebasehood'),"hood", "+Hood");  				
			element('stovebasehood').disabled = false;	
			element('stovebasehood').options[1].selected = true;
			removeOption(element('stovecolour'),"glossblack");
	       break			   
case 'SLX20':
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('5.4kW dans la piece (18,500 Btu/hr)<br>To Facultatif chaudière 2.3kW (8,000 Btu/hr)', 'Salle Capacit? Approx 108m3, 6.3 x 6.3m', '150mm (6") diamètre', '280mm (11")', '130kg.<br>Thermostat: température corporelle de détection.');
			// load the Main model
			setTimeout('loadWeb3D("3d/slx20.tnt")', 50);
			activeStoveFile = '3d/slx20.tnt';  // trigers loading of the mini model after main model has loaded.			
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			// Update Base or Hood options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Type", "");
			addOption(element('stovebasehood'),"fs", "FS");  
			addOption(element('stovebasehood'),"i", "I");  				
			element('stovebasehood').disabled = false;	
			element('stovebasehood').options[1].selected = true;
			// SLX range have Gloss Black option
			removeAllOptions(element('stovecolour'));
			addOption(element('stovecolour'), "", "Couleur", "");
			addOption(element('stovecolour'),"black", "Noir");
			addOption(element('stovecolour'),"blue", "Bleu");
			addOption(element('stovecolour'),"brown", "Marron");
			addOption(element('stovecolour'),"green", "Vert");
			addOption(element('stovecolour'),"gunmetal", "Gris fusil");
			addOption(element('stovecolour'),"pewter", "Étain");
			addOption(element('stovecolour'),"almond", "Amande");	
			addOption(element('stovecolour'),"bronze", "Bronze");		
			addOption(element('stovecolour'),"glossblack", "Noir brillant");					
			element('stovecolour').options[1].selected = true;			
			element('stovecolour').disabled = false;			
	       break			   
case 'SLX45':
			element('stovebasehood').disabled = true;
			element('web3d').focus();	
			// Update Information for this stove
			stoveInfo('To chambre 3.7kW (12,600 Btu/hr)<br>	?l\'eau 9.2kW (31,400 Btu/hr)', 'Capacit?de chauffage: DHW & approx. 8-9 radiateurs<br>Convient également pour chauffage par le sol', '150mm (6") dia.', '370mm (14.5")', '140kg. Thermostat: chaudière temperature sensing.');
			// load the Main model
			setTimeout('loadWeb3D("3d/slx45.tnt")', 50);
			activeStoveFile = '3d/slx45.tnt';  // trigers loading of the mini model after main model has loaded.			
			
	   		element('web3d').innerHTML = ' Déballage Poêle ...';  	
			element('window2').innerHTML = ' Déballage Poêle ...';  	
			// Update Base or Hood options
			removeAllOptions(element('stovebasehood'));
			addOption(element('stovebasehood'), "", "Type", "");
			addOption(element('stovebasehood'),"fs", "FS");  
			addOption(element('stovebasehood'),"i", "I");  				
			element('stovebasehood').disabled = false;	
			element('stovebasehood').options[1].selected = true;
			// SLX range have Gloss Black option
			removeAllOptions(element('stovecolour'));
			addOption(element('stovecolour'), "", "Couleur", "");
			addOption(element('stovecolour'),"black", "Noir");
			addOption(element('stovecolour'),"blue", "Bleu");
			addOption(element('stovecolour'),"brown", "Marron");
			addOption(element('stovecolour'),"green", "Vert");
			addOption(element('stovecolour'),"gunmetal", "Gris fusil");
			addOption(element('stovecolour'),"pewter", "Étain");
			addOption(element('stovecolour'),"almond", "Amande");	
			addOption(element('stovecolour'),"bronze", "Bronze");		
			addOption(element('stovecolour'),"glossblack", "Noir brillant");					
			element('stovecolour').options[1].selected = true;			
			element('stovecolour').disabled = false;			
	       break			   
default: 
			element('web3d').focus();	
				// Clear dropdowns and remove control if under construction.
		   		element('web3d').innerHTML = 'En construction ...';  	
				element('window2').innerHTML = 'En construction ...';  	
				removeAllOptions(element('stovebasehood'));
					addOption(element('stovebasehood'), "", "Base", "");
					addOption(element('stovebasehood'),"center", "Colonne");  // Add largest option so GUI doesnt change size when not disabled.
					element('stovebasehood').disabled = true;					
				removeAllOptions(element('stovecolour'));
					addOption(element('stovecolour'), "", "Couleur", "");
					addOption(element('stovecolour'),"gunmetal", "Gris fusil");
					element('stovecolour').disabled = true;
	       break
 }
 
 // Restore layout from last stove
 
}

function saveLayout(){
	WallOutPos = parseFloat( Web3D('Objects(LeftWallSection).GetFrame()') );
	VaseVisible = Web3D('Objects(Vase).GetVisible()');
	MirrorVisible = Web3D('Objects(Mirror).GetVisible()');
	PictureVisible = Web3D('Objects(Picture).GetVisible()');
	RugVisible = Web3D('Objects(Rug).GetVisible()');
	BooksVisible = Web3D('Objects(Books).GetVisible()');
	ChairClassicVisible = Web3D('Objects(ChairClassic).GetVisible()');
	ChairModernVisible = Web3D('Objects(ChairModern).GetVisible()');
	wallHeight = parseFloat( Web3D('Objects(MiddleWallDummy).GetFrame()') );
	savedHearthShape = Web3D('Objects(HearthOval).GetVisible()');
}

function restoreLayout(win){
	// Layout
	switch(Layout){
		case 1: flatWall(); break;
		case 2: recessedWall(); break; 
		case 3: protrudingWall(); break;
	}

  // Wall Colour
     updatePaint(paintColour);
	
	// Wall positions
	// Width
	Web3D('Objects(LeftWallSection).PlayAnimation(,'+WallOutPos+',false,30)');
	Web3D('Objects(RightWallSection).PlayAnimation(,'+WallOutPos+',false,30)');
	Web3D('Objects(LeftProtrudingWallSection).PlayAnimation(,'+WallOutPos+',false,30)');
	Web3D('Objects(RightProtrudingWallSection).PlayAnimation(,'+WallOutPos+',false,30)');
	// Surrounds	
	Web3D('Objects(SurroundMarble).PlayAnimation(,'+WallOutPos+',false,30)');
	Web3D('Objects(SurroundWood).PlayAnimation(,'+WallOutPos+',false,30)');
	Web3D('Objects(SurroundBeam).PlayAnimation(,'+WallOutPos+',false,30)');
	Web3D('Objects(SurroundShelf).PlayAnimation(,'+WallOutPos+',false,30)');	
	//Height
	Web3D('Objects(MiddleWallDummy).PlayAnimation(,'+wallHeight+',false,30)');

	// Hearth
	Web3D('Objects(HearthOval).PlayAnimation(,'+WallOutPos+',false,30)');		
	Web3D('Objects(HearthSquare).PlayAnimation(,'+WallOutPos+',false,30)');
	
	if(savedHearthShape == '1'){
		savedHearthShape = 'oval';
	} else {
		savedHearthShape = 'square';
	}
    hearth(savedHearthTile, savedHearthShape);

  //  Brick Stone or paint
  	  switch(wallMap){
		  case 'stone': OKToPaint = false;	stoneWalls(); break;
		  case 'brick': OKToPaint = false;	brickWalls(); break;
		  case 'paint': OKToPaint = true;	paintedWalls();  
	  }

   // Surround selection
      showSurround(surround)
	  
  // Option items visible
	  Web3D('Objects(Vase).SetVisible('+VaseVisible+')');
	  Web3D('Objects(Mirror).SetVisible('+MirrorVisible+')');	  
	  Web3D('Objects(Picture).SetVisible('+PictureVisible+')');	  	  
	  Web3D('Objects(Rug).SetVisible('+RugVisible+')');	  	  
	  Web3D('Objects(Books).SetVisible('+BooksVisible+')');	  	  
	  Web3D('Objects(ChairClassic).SetVisible('+ChairClassicVisible+')');	  	  
	  Web3D('Objects(ChairModern).SetVisible('+ChairModernVisible+')');
  
  // Stove Colour
   if(StoveColour == 'glossblack'){ StoveColour = 'black' };
   stoveSetColour(StoveColour);  
   Web3D('Objects(Stove).SetTextureFactor(0.0)');						
   Web3D('Objects(FacePlate).SetTextureFactor(0.0)');						
   Web3D('Objects(Door).SetTextureFactor(0.0)');
   Web3D('ObjectTree(flue*).SetTextureFactor(0.0)');


  // Chimney Off or On if available
	 flue(flueStyle);
  
  
  // floor texture
     floorMat(floorTexture);
	 

}

function stoveInfo(s_nominal, s_net, s_flue, s_logsize, s_weight){
	element('nominal').innerHTML = s_nominal;
	element('net').innerHTML = s_net;	
	element('flue').innerHTML = s_flue;	
	element('logsize').innerHTML = s_logsize;		
	element('weight').innerHTML = s_weight;		
}

function removeAllOptions(selectbox)
{
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		selectbox.remove(i);
	}
}

function removeOption(selectbox, cname)
{
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		if (selectbox.options[i].value == cname){
			selectbox.remove(i);
			break;
		}
	}
}

function addOption(selectbox, value, text )
{
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}

function loadMini3D( strFile){
   initT2L(270, 255, strFile, '#FFFFFF', '0', 'window2');	
}

function loadWeb3D( strFile){
  initT2L(682, 507, strFile, '#CCFFFF', '0', 'web3d');
}

function Web3DMouseEnter(obj) {
}

function Web3DMouseExit(obj) {
}

function WebOnClick(obj) {
}

function Mini3DMouseEnter(obj) {
}

function Mini3DMouseExit(obj) {
}

function MiniOnClick(obj) {
}


// FF Browser Event...pass to global.
// -------------------------------------
function OnReady() {
	Web3DOnReady();
 }

 function lightFire(){
	if( fireOn == false ) {
		Web3D('Objects(Fire).SetVisible(1)');	
		Web3D('Objects(Fire).PlayAnimation(0,8,true,20)');		
		fireOn = true;
	} else {
		Web3D('Objects(Fire).SetVisible(0)');			
		Web3D('Objects(Fire).StopAnimation()');		
		fireOn = false;		
	}
  }
  
  function stoveSetbaseHood(value) {
  	switch (value){
		 case 'low': lowstand(); break
		 case 'center': centerstand(); break
		 case 'store': storestand(); break
		 case 'hood': hood(); break
 		 case 'nohood': nohood(); break
		 case 'i': slx_i(); break
		 case 'fs': slx_fs(); break;
	 default: break
	}	  
  }
  
  function slx_fs(){
	Web3D('ObjectTree(slx_i).SetVisible(0)');  
	Web3D('ObjectTree(slx_fs).SetVisible(1)');	  
	Mini3D('ObjectTree(slx_i).SetVisible(0)');  
	Mini3D('ObjectTree(slx_fs).SetVisible(1)');	  	
	Web3D('Objects(PointFirePositioner).SetFrame(0)');		// Moves fire out to normal position	
	}

  function slx_i(){
	Web3D('ObjectTree(slx_fs).SetVisible(0)');	  
	Web3D('ObjectTree(slx_i).SetVisible(1)'); 
	Web3D('Objects(PointFirePositioner).SetFrame(1)');		// Moves fire deeper into fireplace
	Web3D('Objects(Flue*).SetVisible(0)');

	Mini3D('ObjectTree(slx_fs).SetVisible(0)');	  
	Mini3D('ObjectTree(slx_i).SetVisible(1)');  
	}

  function hood(){
	Web3D('Objects(Hood).SetVisible(1)');
	Mini3D('Objects("Hood").SetVisible(1)');
	element('web3d').focus();	
	}
 
  function nohood(){
	Web3D('Objects(Hood).SetVisible(0)');
	Mini3D('Objects("Hood").SetVisible(0)');
	element('web3d').focus();	
	}
  
  function centerstand(){
	Web3D('ObjectTree(StoreStand).SetVisible(0)');
	Web3D('ObjectTree(LowStand).SetVisible(0)');
	Web3D('ObjectTree(CenterStand).SetVisible(1)');

	Mini3D('ObjectTree("StoreStand").SetVisible(0)');
	Mini3D('ObjectTree("LowStand").SetVisible(0)');
	Mini3D('ObjectTree("CenterStand").SetVisible(1)');
	
	Web3D('Objects(PointFirePositioner).SetFrame(2)');	  	
	Web3D('Objects(DummyFluePositioner).SetFrame(2)');			
	element('web3d').focus();	
}
  
  function storestand(){
	Web3D('ObjectTree(LowStand).SetVisible(0)');
	Web3D('ObjectTree(CenterStand).SetVisible(0)');  
	Web3D('ObjectTree(StoreStand).SetVisible(1)');	

	Mini3D('ObjectTree(LowStand).SetVisible(0)');
	Mini3D('ObjectTree(CenterStand).SetVisible(0)');  
	Mini3D('ObjectTree(StoreStand).SetVisible(1)');	

	Web3D('Objects(PointFirePositioner).SetFrame(1)');	  	
	Web3D('Objects(DummyFluePositioner).SetFrame(1)');
	
	// This stove is huge, need to move the wall up.
	if(activeStoveFile == '3d/cove3.tnt'){
		if(Web3D('Objects(MiddleWallDummy).GetFrame()') <=10){  // Only move wall up if it is to low
			Web3D('Objects(MiddleWallDummy).PlayAnimation(,20,false,30)');
		}
	}
	element('web3d').focus();
}

  function lowstand(){
	Web3D('ObjectTree(StoreStand).SetVisible(0)');
	Web3D('ObjectTree(CenterStand).SetVisible(0)');  
	Web3D('ObjectTree(LowStand).SetVisible(1)');	

	Mini3D('ObjectTree(StoreStand).SetVisible(0)');
	Mini3D('ObjectTree(CenterStand).SetVisible(0)');  
	Mini3D('ObjectTree(LowStand).SetVisible(1)');	

	Web3D('Objects(PointFirePositioner).SetFrame(0)');	
	Web3D('Objects(DummyFluePositioner).SetFrame(0)');		
	element('web3d').focus();	
}

  function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

function logit(string){
 if(DebugMode) {
	var div = document.all ? document.all['window3'] : document.getElementById('window3'); 
         div.innerHTML += string + '<br>';
 }
}

function flashMsg(msg){
//	element('loadText').innerHTML = msg
}

function instructions(){
	T2LCreateDialog(675, 495, "./html/instructions.html");    		
}

function screenshot(){
	Web3D('Renderer.SaveImage("c:\\charnwoon.bmp",0)');
	alert('OK  -  c:\\charnwood.bmp');
}

// End ajwells.js
// ________________________________________________________________________

