// FILE		configurateur.js
// DATE		2005/08/19 20:17:16
//
// DESCRIPTION
//	Ecmascript configurator's dedicated functions.

/* Application configuration
 *
 * These parameters are intended for a fine tuning of the application. They 
 * should usually not be changed.
 */
// number of pixels the vignettes move each second 
var global_vignette_animation_step = 10;

// height of the grid (in pixels)
var grid_height = 465;

// filenames of the differents steps
var url_page_TechSpec = "TechSpecStep.aspx";
var url_page_deux = "mechanicalStep.aspx";
var url_page_trois = "versionStep.aspx";
var url_page_sauvegardes = "savesList.aspx";

var url_assistantChoix = "choiceAssistant.aspx";

// url of the finance service response
// will have to be changed, since distant xmlhttp connections are not 
// supported by the XMLHttpRequest object 
// (see http://www.mozilla.org/xmlextras/)
var global_financing = "tunnel.aspx";

/* Application variables
 * 
 * These variables are not intended to be changed by the user.
 */
// drapeau d'effacement de rollover (1ere page)
var flag_rollover = false;

// duration before removing the rollover on the 1st page
// in milliseconds
var rollover_duration = 300;

// tableau stockant les inductions
var tab_induction = new Array();


// variables globales pour la gestion des finitions (etapes 3)
var finition_configuration = "";	

// step between two indexes of the scale, in pixels
var global_grid_step = 97;

// grid width
var global_grid_width = 500;

// left position of the repere in the page
var global_repere_left;

// y position variation under IE
var global_repere_top_delta = 15;

// position variation under IE
// Le positionnement de la vignette se base par rapport a son centre
var global_repere_left_ie_delta = 22;

// position variation for not IE (test with Firefox)
// Le positionnement de la vignette se base par rapport a son centre
var global_repere_left_not_ie_delta = 22;

// are some cars actually moving ?
// semaphore useable by handle_windowresize and move_vignettes
var global_movement = false;

// url page 4
var global_step4 = "";

// is the system being initialized ?
var global_initialization = true;

// modification made ?
var global_modification_made = false;

// displayable rollover (step 2)
var global_displayable_rollover = "";

// displayable engine image (step 2)
var global_displayable_engine = "";

// tableau de configuration (enregistre les choix courants)
var tab_configuration = new Array();

// SFGACFR variables globales du service de financement
var global_apport = "";
var global_mensualite = "";

// vignette survolee
var global_rollover_model = "";
var global_rollover_grBodyStyle = "";

// labels employes pour la requete SOAP de financement
var global_brand = "";
var global_country = "";
var global_language = "";
var global_currency = "";
var global_taxincluded = "true";

// contenu de la note indicative de la premiere page
var global_indication_label = {"tab1":"&nbsp;","tab2":"&nbsp;","tab3":"&nbsp;","tab4":"&nbsp;"};

// Id de l'onglet perf dans l'etape 1
var global_tab_perf_id = -1;

// id du dernier rollover non moteur affiche (etape 2)
var global_rollover_displayed = "";

//ID du span contenant le recapitulatif de l'etape 2
var global_recap2_name = "RecapZone_recapitulatif_mecanique";
//ID du span contenant le recapitulatif de l'etape 3
var global_recap3_name = "RecapZone_recapitulatif_finition";

// prefixe au debut des id des cases a  cocher dans le code html
var global_checkboxes_prefix = "h";

// hauteur minimale du tableau de comparaison sur la page de comparaison
var global_comparaison_table_min_height = 200;

// hauteur des autres elements sur la page de comparaison
var global_comparaison_table_increment = 420;

var global_minimum_price;

//contient l'action a effectuer au niveau de la page lorsque l'utilisateur 
//appuie sur la touche Entree et qu'un popup est affcihee
var global_action_enter_pressed = "";

// Indique si a l'etape 1, l'option "recommencer" a ete selectionne
var global_step1_init = false;

//TCC ou HT a mettre apres le prix
var ttc_or_ht = "";



/* Attache des evenements aux inputs radio (premiere page) et masque les 
 * radios html
 */
function attach_events()
{
	var myFieldset = getObject("criteres");

	var labels = myFieldset.getElementsByTagName("label");
	var i = 0;
	while ( i < labels.length )
	{
		var label = labels[i];
		
		// adds an event listener for safari
		if ( safari || opera )
		{
			labelParent = label.parentNode;
			labelParent.onclick = function () { call_check(this); };
		}

		// gets element the label is for
		var elem = getObject(label.htmlFor);

		// adds the label tag
		elem.label = label;
		i++;
	}

	var inputs = myFieldset.getElementsByTagName("input");
	var i = 0;
	while ( i < inputs.length )
	{
		if ( inputs[i].type == "radio" )
		{
			//enable keyboard navigation
			inputs[i].onclick = function () { check(tab_criteres[id2lcldv(this.id)]["criterium_type"], id2lcldv(this.id)); };
			
			// some styles considerations...
			removeObject(inputs[i].id);

			if ( ie )
			{
				inputs[i].label.onclick = function () { check(tab_criteres[id2lcldv(this.htmlFor)]["criterium_type"], id2lcldv(this.htmlFor)); };
			}
		}
		
		if ( inputs[i].type == "checkbox" )
		{
			//enable keyboard navigation
			inputs[i].onclick = function () { check(tab_criteres[id2lcldv(this.id)]["criterium_type"], id2lcldv(this.id)); };
			
			// some styles considerations...
			//removeObject(inputs[i].id);

			//if ( ie )
			//{
			//	inputs[i].label.onclick = function () { check(tab_criteres[id2lcldv(this.htmlFor)]["criterium_type"], id2lcldv(this.htmlFor)); };
			//}
		}

		i++;
	}
}




/* Attache des evenements aux inputs radio (seconde page) et masque les 
 * radios html
 */
function attach_events_second()
{
	var myForm = getObject("data_form");

	var labels = myForm.getElementsByTagName("label");
	var i = 0;
	while ( i < labels.length )
	{
		var label = labels[i];
		
		// adds an event listener for opera ( sans doute plus utile)
		if (opera)//( safari || opera )
		{
			labelParent = label.parentNode;
			labelParent.onclick = function () { call_check_second(this); };
		}
		
		// gets element the label is for
		var elem = getObject(label.htmlFor);

		// adds the label tag
		elem.label = label;
		i++;
	}

	var inputs = myForm.getElementsByTagName("input");
	var i = 0;
	while ( i < inputs.length )
	{
		if ( inputs[i].type == "radio" )
		{
			//enable keyboard navigation
			inputs[i].onclick = function () { check2WithUpdateTechPanel(tab_criteres[id2lcldv(this.id)]["criterium_type"], id2lcldv(this.id)); };
	/*		inputs[i].onmouseover = function () { r_show_rollover(id2lcldv(this.id)); };
			inputs[i].onmouseout = function () { r_hide_rollover(id2lcldv(this.id)); };
	*/		
			// some styles considerations...
			removeObject(inputs[i].id);
			inputs[i].label.style.padding = "0 0 0 10px";
	/*		inputs[i].label.onmouseover = function () { r_show_rollover(id2lcldv(this.htmlFor)); };
			inputs[i].label.onmouseout = function () { r_hide_rollover(id2lcldv(this.htmlFor)); };
	*/
			if ( ie )
			{
				inputs[i].label.onclick = function () { check2WithUpdateTechPanel(tab_criteres[id2lcldv(this.htmlFor)]["criterium_type"], id2lcldv(this.htmlFor)); };
				inputs[i].label.style.padding = "0 0 0 0";
				inputs[i].label.innerHTML = "&nbsp;&nbsp;&nbsp;" + inputs[i].label.innerHTML;
			}
		}

		i++;
	}

	// attache des id aux spans de la liste des silhouettes
/*	var rolloverBodyStyle = getObject("rolloverBodyStyle");
	var aBodyStyle = rolloverBodyStyle.getElementsByTagName("li");
	var i = 0;
	while ( i < aBodyStyle.length )
	{
		var checkbox_id = aBodyStyle[i].getAttribute("id");
		var payload_label = aBodyStyle[i].getElementsByTagName("span");
		//payload_label[0].setAttribute("id", checkbox_id + "_payload");
		i++;
	}
*/
}

/* Effectue un appel a  check()
 * (utilise uniquement pour la definition de gestionnaires d'evenements sur 
 * les <li> des cases a  cocher)
 *
 * @param	string		tag auquel l'evenement est attache
 */
function call_check(tag)
{
	var id = tag.id.substr(9);
	check(tab_criteres[id]["criterium_type"], id);
}


/* Effectue un appel a  check()
 * (utilise uniquement pour la definition de gestionnaires d'evenements sur 
 * les <li> des cases a  cocher)
 *
 * @param	string		tag auquel l'evenement est attache
 */
function call_check_second(tag)
{
	var id = tag.id.substr(9);
	check2WithUpdateTechPanel(tab_criteres[id]["criterium_type"], id);
}




/* Gere le cochage des cases a  cocher en fonction des dependances entre 
 * criteres de configuration
 *
 * @param	string		nom de la colonne affectee
 * @param	string		code du critere choisi par l'utilisateur
 */
function check(criterium_type, code)
{

	//Ajout hicham
	if(tab_criteres[code]["checked"] == -1)
	{
		form = document.getElementById("data_form");
		global_mensualite = "";
		global_apport == "";
		// nettoyage du formulaire
		if (form.elements["apport"] != null )
		{
			form.elements["apport"].value = "";
			form.elements["mensualite"].value = "";
			financing_reset();
		}
		
		set_model("");
	}
	
	// Permettre de reinitialiser le choix du modele
	/*if ( tab_configuration["model"] != "" )
	{
		set_model("");
	}*/

	if ( ( (criterium_type == "ecoLabel") || !checkbox_is_unique(code) ) && (tab_induction[criterium_type] != code) )
	{
		flag_modification_step1(true);
		
		// this criterium isn't inducted anymore
		tab_induction[criterium_type] = "";
		
		for ( var key in tab_criteres )
		{
			// reinitialisation de toutes les checkbox
			switch_criterium(key, 0);
		}

		// en cas de changement, suppression des inductions
		if ( (tab_configuration[criterium_type] != "") && !global_initialization )
		{
			// decochage des criteres induits
			for ( var key in tab_induction )
			{
				if ( tab_induction[key] != "" )
				{
					tab_configuration[key] = "";
					tab_induction[key] = "";
				}
			}
		}

		// cochage ou decochage ?
		if ( (tab_configuration[criterium_type] == code) && !global_initialization )
		{
			tab_configuration[criterium_type] = "";
		}
		else
		{
			tab_configuration[criterium_type] = code;
			switch_criterium(code, 1);
		}
	
		// retrait des criteres incompatibles de tab_configuration
		var conditions = new Array("&&");
		request_add(conditions, criterium_type, "==", code)
				
//GLN: 20080321
		var criteres;
		if(tab_criteres["airdream_yes"]!=null)
		{
			var criteres = {"grBodyStyle":"", "grTT":"", "energy":"", "ecoLabel":""};
		}
		else
		{
			var criteres = {"grBodyStyle":"", "grTT":"", "energy":""};
		}		
		
		for ( var key in criteres )
		{
			if ( (tab_configuration[key] != "") && (key != criterium_type) )
			{
				// critere affecte : est-il compatible ?
				request_add(conditions, key, "==", tab_configuration[key])
				resultat = select("", conditions, "", "", false);
	
				if ( resultat.length == 0 )
				{
					// aucun enregistrement trouve : critere "key" 
					// incompatible => effacement du critere
					tab_configuration[key] = "";
					tab_induction[key] = "";
					request_remove(conditions, key, "==");
				}
				else
				{
					// au moins une solution -> cocher la case
					if ( tab_induction[key] != tab_configuration[key] )
					{
						// case non induite mais cochee par utilisateur
						switch_criterium(tab_configuration[key], 1);
					}
					else
					{
						// case induite (recemment ou precedemment)
						switch_criterium(tab_configuration[key], 2);
					}
				}
			}
		}

		// cochage-grise des criteres uniques
		check_unicity_step1();
	
		// maximisation des criteres
		var conditions = request_create();		
		
//GLN: 20080321
		var criteres;
		if(tab_criteres["airdream_yes"]!=null)
		{
			var criteres = {"grBodyStyle":"", "grTT":"", "energy":"", "ecoLabel":""};
		}
		else
		{
			var criteres = {"grBodyStyle":"", "grTT":"", "energy":""};
		}
				
		for ( var key in criteres )
		{
			if ( (key != criterium_type) && (tab_configuration[key] == "") )
			{
				resultat = select(Array(key), conditions, "", "", true);
	
				if ( resultat.length == 1 )
				{
					// un seul enregistrement trouve => ce critere est induit
					tab_configuration[key] = resultat[0][key];
					tab_induction[key] =  resultat[0][key];
	
					// cochage de la case
					switch_criterium(resultat[0][key], 2);
				}
			}
		}
	
		// grisage des criteres incompatibles
		for ( var key in tab_criteres )
		{
			if ( !is_checked(key) )
			{
				// les cases deja  cochees sont bonnes
		
				// la requete est basee sur les criteres choisis par
				// l'utilisateur, et y ajoute le critere examine
				conditions = request_create();
				request_add(conditions, tab_criteres[key]["criterium_type"], "==", key);
				resultat = select("", conditions, "", "", false);
	
				if ( resultat.length == 0 )
				{
					// aucun enregistrement => critere incompatible
					// case grisee
					switch_criterium(key, -1);
				}
			}
		}
	
		// deplacement et grisage eventuel des vignettes
		move_vignettes();
	}
	return false;
}


/**
Mise a jour des vehicules disponibles
@Param bool : indique si la mise a jour s'effectue suite a la validation des saisies des criteres de financement
**/
function updateDisplay(financingValidated)
{
	var list1 = new Array();
	var list2 = new Array();
	
	// nouveau calcul des vehicules disponibles
	for ( var key in tab_criteres )
	{
		// reinitialisation de toutes les checkbox
		if (financingValidated)
		{
			if (is_checked_1(key))
			{
				list1.push(key); // Code des checkbox coches
			}
			else if (is_checked_2(key))
			{
				list2.push(key); // Code des checkbox coches et induits
			}
		}
		
		switch_criterium(key, 0);
	}
	
	// cochage-grise des criteres uniques
	check_unicity_step1();

	// maximisation des criteres
	var conditions = request_create();
	var criteres = {"grBodyStyle":"", "grTT":"", "energy":""};
	for ( var key in criteres )
	{
		if ( (tab_configuration[key] == "") )
		{
			resultat = select(Array(key), conditions, "", "", true);

			if ( resultat.length == 1 )
			{
				// un seul enregistrement trouve => ce critere est induit
				tab_configuration[key] = resultat[0][key];
				tab_induction[key] =  resultat[0][key];

				// cochage de la case
				switch_criterium(resultat[0][key], 2);
			}
		}
	}

	// grisage des criteres incompatibles
	for ( var key in tab_criteres )
	{
		if ( !is_checked(key) )
		{
			// les cases deja  cochees sont bonnes
	
			// la requete est basee sur les criteres choisis par
			// l'utilisateur, et y ajoute le critere examine
			conditions = request_create();
			request_add(conditions, tab_criteres[key]["criterium_type"], "==", key);
			resultat = select("", conditions, "", "", false);

			if ( resultat.length == 0 )
			{
				// aucun enregistrement => critere incompatible
				// case grisee
				switch_criterium(key, -1);
			}
		}
	}
	
	if (!financingValidated)
	{
		return;
	}
	
	// Coche les checkbox deja selectionnees dont le critere n'est pas incompatible
	for (var idx in list1)
	{
		var key = list1[idx];
		if (!is_disabled(key) && (!is_checked_2(key)))
		{
			switch_criterium(key,1);
		}
	}
	
	// Checkbox induit
	for (var idx in list2)
	{
		var key = list2[idx];
		if (!is_disabled(key) && (!is_checked_1(key)))
		{
			switch_criterium(key,2);
		}
	}
}		

function check2WithUpdateTechPanel(criterium_type, code)
{
	if(criterium_type != "", code != "")
	{
		if (currentConfigurationPrice != "")
		{
			setObjectContent(global_recap3_name, "");
			setObjectContent("RecapZone_recapitulatif_couleurs", "");
			
			// On vire les ([1-9]) à la fin du texte
			var optionLabel = document.getElementById("RecapZone_recapitulatif_options");
			var endOptions = optionLabel.innerHTML.lastIndexOf('(');
			if (endOptions > 1 && endOptions != optionLabel.innerHTML.Length)
			{
				setObjectContent("RecapZone_recapitulatif_options", optionLabel.innerHTML.substring(0,endOptions));
			}
			
			var optionAccessories = document.getElementById("RecapZone_recapitulatif_accessories");
			var endAccessories = optionAccessories.innerHTML.lastIndexOf('(');
			if (endAccessories > 1 && endAccessories != optionAccessories.innerHTML.Length)
			{
				setObjectContent("RecapZone_recapitulatif_accessories", optionAccessories.innerHTML.substring(0,endAccessories));
			}
			
			var optionServices = document.getElementById("RecapZone_recapitulatif_services");
			var endServices = optionServices.innerHTML.lastIndexOf('(');
			if (endServices > 1 && endServices != optionServices.innerHTML.Length)
			{
				setObjectContent("RecapZone_recapitulatif_services", optionServices.innerHTML.substring(0,endServices));
			}
			
			var smenu2 = document.getElementById("smenu2");
			if (smenu2.childNodes[0] != null)
			{
				smenu2.childNodes[0].innerHTML = "";
			}
			var smenu3 = document.getElementById("smenu3");
			if (smenu3.childNodes[0] != null)
			{
				smenu3.childNodes[0].innerHTML = "";
			}
			var smenu4 = document.getElementById("smenu4");
			if (smenu4.childNodes[0] != null)
			{
				smenu4.childNodes[0].innerHTML = "";
			}
			
			//recapitulatif_prixAcsServ
			var recapitulatif_prixAcsServ = document.getElementById("recapitulatif_prixAcsServ");
			if (recapitulatif_prixAcsServ != null)
			{
				recapitulatif_prixAcsServ.style.display = "none";
			}
			
			//Reinit Financement (en fait on cache juste un éventuel picto Hors Acc et Serv)
			var sfgRecap_infoPictoFZ = document.getElementById("sfgRecap_infoPictoFZ");
			if (sfgRecap_infoPictoFZ != null)
			{
				sfgRecap_infoPictoFZ.style.display = "none";
			}
			
			currentConfigurationPrice = "";
		}
	}
	check2(criterium_type, code);
	
	UpdateTechPanel();
	
}


/* Gere le cochage des cases a  cocher en fonction des dependances entre 
 * criteres de configuration
 *
 * @param	string		nom de la colonne affectee
 * @param	string		code du critere choisi par l'utilisateur
 */
function check2(criterium_type, code)
{
	if (criterium_type != '' && code != "")
	{	
		if ( !checkbox_is_unique(code) && (tab_induction[criterium_type] != code) )
		{
			//SFGACFR
			if ((typeof global_BA_Used != "undefined") && global_BA_Used)
			{
				if(tab_criteres[code]["HB"] == "true")
				{
					displayAlertHB(criterium_type, code);
					return false;
				}
				
			}
			//SFGACFR
			
			flag_modification_step2(true);
			
			// this criterium isn't inducted anymore
			tab_induction[criterium_type] = "";

			for ( var key in tab_criteres )
			{
				// reinitialisation de toutes les checkbox
				switch_criterium(key, 0);
			}

			// nettoyage des rollovers
		//	r_rollover_clean();

			// en cas de changement, suppression des inductions
			//if ( (tab_configuration[criterium_type] != "") && !global_initialization)
			//{
			// decochage des criteres induits
			for ( var key in tab_induction )
			{
				if ( tab_induction[key] != "" )
				{
					tab_configuration[key] = "";
					tab_induction[key] = "";
				}
			}
			//}
			
			var form = document.getElementById("data_form");
			form.elements["start"].value = "true";
			
			// cochage ou decochage ?
			if ( (tab_configuration[criterium_type] == code) && !global_initialization )
			{
				// L'utilisateur a decoché une case
				tab_configuration[criterium_type] = "";
				global_displayable_engine = "";
				global_displayable_rollover = "";
			}
			else
			{
				// L'utilisateur a coché une case
				tab_configuration[criterium_type] = code;
				switch_criterium(code, 1);
	//			r_rollover_set_code(code);
			}		
			// retrait des criteres incompatibles de tab_configuration
			var conditions = new Array("&&");
			request_add(conditions, criterium_type, "==", code);

			var criteres = {"energy":"", "transmissionType":"", "engine":"", "bodyStyle":""};
			for ( var key in criteres )
			{
				if ( (tab_configuration[key] != "") && (key != criterium_type) )
				{
					// critere affecte : est-il compatible ?
					request_add(conditions, key, "==", tab_configuration[key]);
					resultat = select("", conditions, "", "", false);

					if ( resultat.length == 0 )
					{
						// aucun enregistrement trouve : critere "key" 
						// incompatible => effacement du critere
						tab_configuration[key] = "";
						tab_induction[key] = "";
						request_remove(conditions, key, "==");
					}
					else
					{
						// au moins une solution -> cocher la case
						if ( tab_induction[key] != tab_configuration[key] )
						{
							// case non induite mais cochee par utilisateur
							switch_criterium(tab_configuration[key], 1);
						}
						else
						{
							// case induite (recemment ou precedemment)
							switch_criterium(tab_configuration[key], 2);
						}

						// enregistrement pour rollover
		//				r_rollover_set_code(tab_configuration[key]);
					}
				}
			}
			
			check_unicity_step2();
			
			// maximisation des criteres
			var conditions = request_create_bis();
			var requete = {"energy":"", "transmissionType":"", "engine":"", "bodyStyle":""};
			for ( var key in requete )
			{
				if ( (key != criterium_type) && (tab_configuration[key] == "") )
				{
					// critere non determine : est-il induit ?
					resultat = select(Array(key), conditions, "", "", true);
		
					if ( resultat.length == 1 )
					{
						// un seul enregistrement trouve => ce critere est induit
						tab_configuration[key] = resultat[0][key];
						tab_induction[key] =  resultat[0][key];

						// enregistrement pour rollover
		//				r_rollover_set_code(resultat[0][key]);

						// cochage de la case
						switch_criterium(resultat[0][key], 2);
					}
				}
			}
		
			// grisage des criteres incompatibles
			for ( var key in tab_criteres )
			{
				if ( !is_checked(key) )
				{
					// les cases deja  cochees sont bonnes
			
					// la requete est basee sur les criteres choisis par
					// l'utilisateur, et y ajoute le critere examine
					conditions = request_create_bis();
					request_add(conditions, tab_criteres[key]["criterium_type"], "==", key);
					resultat = select("", conditions, "", "", false);
		
					if ( resultat.length == 0 )
					{
						// aucun enregistrement => critere incompatible
						// case grisee
						switch_criterium(key, -1);
					}
				}
			}
			//si on est pas dans l'initialisation de la page, on met a jour le recapitulatif
			if (!global_initialization)
			{
				recapitulatif_update();
			}
			
			//SFGACFR
			//si on doit gerer une approche budgetaire, mise a jour des criteres hors budget
			if ((typeof global_BA_Used != "undefined") && global_BA_Used)
			{
				updateHBCriteria();
			}
			//SFGACFR
			
			// ARA 20060928 EVO_CFG_AC_008
			UpdatePriceTooltip();
		}
		// induction de la case
		if (checkbox_is_unique(code))
			switch_criterium(code, 2);
	}
	else
	{
		// ARA 20060928 EVO_CFG_AC_008
		UpdatePriceTooltip();
	}



	return false;
}

// ARA 20070529
// Met à jour le bloc technique sur le CO2 et
// les specs de façon asynchrone via AJAX
function UpdateTechPanel()
{
	var lcdv = "";
	var energy = "";
	var engine = "";
	
	if (IsChoiceMissing() == false)
	{
		var version = GetVersion(tab_configuration);
		if (version != null)
		{
			lcdv = version["LCDV"];
			energy = version["energy"];
			engine = GetCriteria(version["engine"]);
		}
	}
	
	var params = new Array();
	params["lcdv"] = lcdv;
	params["energy"] = energy;
	params["engine"] = engine;

	Ajax_Execute(location.pathname, "GetTechDatas", params, UpdateTechPanel_Callback);

	UpdateCarPicture();
}

function UpdateTechPanel_Callback(response)
{
	var title = document.getElementById("techTitle");
	if (title != null)
		title.innerHTML = response["title"];
	var text = document.getElementById("techText");
	if (text != null)
		text.innerHTML = response["text"];
	UpdateStyle();
}

function UpdateStyle()
{
	var styleModifier = document.getElementById("styleModifier");
	var silhouette = document.getElementById("silhouette");
	if (styleModifier != null && silhouette != null)
	{
		var items = silhouette.getElementsByTagName("li");
		var countModifier = (items.length > 1) ? "Many" : "One";
		var image = document.getElementById("co2Image");
		var imageModifier = (image != null) ? "WithImage" : "WithoutImage";
		var airdreamImage = document.getElementById("airdreamImage");
		if (image == null && airdreamImage != null)
		{
			imageModifier = "WithoutImageButAirdream";
		}
		styleModifier.className = countModifier + " " + imageModifier
		if (image != null && airdreamImage != null)
		{
			placeMacaronAirdream();
		}
	}
}

function placeMacaronAirdream()
{
	var image = document.getElementById("co2Image");
	var macaron = document.getElementById("airdreamImage");
	if (image != null && macaron != null )
		{
			// Le macaron airdream sera en absolute, il faut donc le placer au bon endroit.
			//var techTextHeight = getObjectHeight("techText");
			//var techTextWidth = getObjectWidth("techText");

			var macaronHeight = getObjectHeight("airdreamImage");
			var macaronWidth = getObjectWidth("airdreamImage");
			
			var techText = document.getElementById("techText");
			
			var position = getObjectPosition(techText);
			
			// position du coin en haut à droite de l'image CO2
			var x = position[0] + techText.offsetWidth;
			var y = position[1];
			
			// on decale du macaron
			x = x - (5*macaronWidth / 8);
			y = y - (macaronHeight / 3);
			
			moveObject("airdreamImage", x, y);
			
		}
}

function placeMacaronAirdream_VUTechSpec()
{
	var image = document.getElementById("pictureVU");
	var macaron = document.getElementById("airdreamImage");
	if (image != null && macaron != null)
		{
			// Le macaron airdream sera en absolute, il faut donc le placer au bon endroit.
			//var techTextHeight = getObjectHeight("techText");
			//var techTextWidth = getObjectWidth("techText");

			var macaronHeight = getObjectHeight("airdreamImage");
			var macaronWidth = getObjectWidth("airdreamImage");
			
			var pictureVU = document.getElementById("pictureVU");
			
			var position = getObjectPosition(pictureVU);
			
			// position du coin en haut à droite de l'image CO2
			var x = position[0] + pictureVU.offsetWidth;
			var y = position[1];
			
			// on decale du macaron
			x = x - (5*macaronWidth / 8);
			y = y - (macaronHeight / 3);
			
			moveObject("airdreamImage", x, y);
			
		}
}

function placeMacaronAirdream_RecapZone()
{
	var image = document.getElementById("RecapZone_imgCarImage");
	var airdreamImage = document.getElementById("airdreamImage");
	if (image != null && airdreamImage != null)
		{
			// Le macaron airdream sera en absolute, il faut donc le placer au bon endroit.
			//var techTextHeight = getObjectHeight("techText");
			//var techTextWidth = getObjectWidth("techText");

			var macaronHeight = getObjectHeight("airdreamImage");
			var macaronWidth = getObjectWidth("airdreamImage");
			
			
			var position = getObjectPosition(image);
			
			// position du coin en haut à droite de l'image CO2
			var x = position[0] + image.offsetWidth;
			var y = position[1];
			
			// on decale du macaron
			x = x - (27*macaronWidth / 32) - 20;
			y = y - (macaronHeight / 3);
			
			moveObject("airdreamImage", x, y);
			
		}
}

function placeMacaronAirdream_Recap()
{
	var image = document.getElementById("linkSummary_summary_imgExterieur");
	var airdreamImage = document.getElementById("airdreamImage");
	if (image != null && airdreamImage != null)
	if (image != null)
		{
			// Le macaron airdream sera en absolute, il faut donc le placer au bon endroit.
			//var techTextHeight = getObjectHeight("techText");
			//var techTextWidth = getObjectWidth("techText");

			var macaronHeight = getObjectHeight("airdreamImage");
			var macaronWidth = getObjectWidth("airdreamImage");
			
			
			var position = getObjectPosition(image);
			
			// position du coin en haut à droite de l'image CO2
			var x = position[0] + image.offsetWidth;
			var y = position[1];
			
			// on decale du macaron
			x = x - (27*macaronWidth / 32);
			y = y - (macaronHeight / 3);
			
			moveObject("airdreamImage", x, y);
			
		}
}
function UpdateCarPicture()
{

	var body = "";
	
	body = tab_configuration["bodyStyle"];
	

	// Met à jour le bodyLabel du RecapZone
	var recapBody = document.getElementById("recapBodyChoice");
	if (recapBody != null)
		recapBody.innerHTML = GetCriteria(tab_configuration["bodyStyle"]);
	if(typeof (tab_bodystyleVU) != 'undefined')
		UpdateCarPictureForVU();
	else
	{		
		var picture = document.getElementById("RecapZone_imgCarImage");
		if (typeof (tab_bodystyle) != "undefined" && tab_bodystyle != null)
		{
			for (var i = 0; i < tab_bodystyle.length; i++)
			{
				var item = tab_bodystyle[i];
				if (item["bodyStyle"]==body)
				{
					picture.src = item["picture"];
				}
			}
		}
	}
}

function UpdateCarPictureForVU()
{
	var pictureZone = document.getElementById("RecapZone_imgCarImage");
	conditions = request_create_Conditions();
	resultat = select("", conditions, "", "", false);

	var picture;
	if ( resultat.length > 0 )	
	{
		var lcdv = "";
		lcdv += resultat[0]["LCDV"];
		//var picture = tab_BodyStylePicture[]
		for ( var key in tab_bodystyleVU)
		{
			if(tab_bodystyleVU[key]["LCDV"] == lcdv)
			{
			 picture = tab_bodystyleVU[key]["picture"];
			}			
		}
		
		pictureZone.src =  picture ;
	}
	
}

/* Cree une requete par defaut pour l'etape Dimension VU de la configuration, a 
 * partir des donnees qui se trouvent dans le tableau tab_configuration
 *
 * @return Array contrainte correspondant aux criteres choisis
 * par l'utilisateur
 */
function request_create_Conditions()
{
	var conditions = new Array("&&");
	for ( var key in tab_configuration)
	{
	  conditions[conditions.length] = new Array("==", key, tab_configuration[key]);
	}
	
	return conditions;
}

// ARA 20060928 EVO_CFG_AC_008
// Affiche un tooltip sur le prix si au moins 1 version ayant
// la même configuration mécanique possède une promotion.
function UpdatePriceTooltip()
{
	if (DiscountExists() == false)
		return ;
	
	// Affiche le bloc 
	var legal = document.getElementById("mechanical_legal");
	if (legal != null)
		legal.style.display = "block";
		
	var hasDiscount = HasDiscount(tab_configuration);
	var version = GetVersionWithMaxDiscount(tab_configuration);
	if (version != null)
	{
		if (version["promo"] == "0")
		{
			hasDiscount = false;
		}
	}
	// Message promotion KO
	var promo = document.getElementById("detail_promo");
	if (promo != null)
		promo.style.display = hasDiscount ? "block" : "none";
		
	// Message promotion OK
	var noPromo = document.getElementById("noPromo");
	if (noPromo != null)
		noPromo.style.display = hasDiscount ? "none" : "block";
	
	var picto = document.getElementById("legalPicto");
	if (picto != null)
	{
		var root = "/ImagesCentral/Images/site/media/";
		picto.src = root + (hasDiscount ? "sun.png" : "warning.png");
	}
	
	if (hasDiscount)
	{
		// Insère la valeur de la promotion dans le texte
		var promoValue = document.getElementById("detail_promo_value");
		if (promoValue != null)
		{
			if (version != null)
				promoValue.innerHTML = version["promo"];
		}
	}
}

function DiscountExists()
{
	for (var i = 0; i < tab_versions.length; i++)
	{
		var p = tab_versions[i]["promo"];
		if ((IsNullOrEmpty(p) == false) && (p != 0))
			return true;
	}
	return false;
}

// ARA 20060928 EVO_CFG_AC_008
// Vérifie qu'il existe au moins 1 version avec
// une promotion ayant une configuration donnée.
function HasDiscount(config)
{
	var version = GetVersion(config);
	if (version != null)
	{
		var promo = version["hasPromo"];
		return ((IsNullOrEmpty(promo) == false) && (promo != 0));
	}
	return false;
}

function GetVersion(config)
{
	if (typeof (tab_versions) != "undefined" && tab_versions != null)
		for (var i = 0; i < tab_versions.length; i++)
		{
			var item = tab_versions[i];
			if (ConfigEquals(config, item))
				return item;
		}
	return null;
}

function GetVersionWithMaxDiscount(config)
{
	if (typeof (tab_versions) != "undefined" && tab_versions != null)
	{
		var item = null;
		var maxdiscount = 0;
		var maxdiscountindex = 0;
		var currentdiscount = 0;
		for (var i = 0; i < tab_versions.length; i++)
		{
			item = tab_versions[i];
			if (ConfigEquals(config, item))
			{
				currentdiscount = item["promo"];
				if (currentdiscount > maxdiscount)
				{
					maxdiscount = currentdiscount;
					maxdiscountindex = i;
				}
			}
		}
		item = tab_versions[maxdiscountindex];
		return item;
	}
	return null;
}

function GetCriteria(code)
{
	for (var key in tab_criteres)
		if (key == code)
			return tab_criteres[key]["name"];
	return "";
}

// ARA 20060928 EVO_CFG_AC_008
// Deux configurations mécaniques sont égales si tous leurs
// critères pertinents (i.e. ayant une valeur) sont égaux.
function ConfigEquals(a, b)
{
	var items = new Array("transmissionType", "energy", "engine", "grTT", "bodyStyle");
	for (var i = 0; i < items.length; i++)
	{
		var item = items[i];
		if (!IsNullOrEmpty(a[item]) &&
			!IsNullOrEmpty(b[item]) &&
			a[item] != b[item])
			return false;
	}	
	return true;
}

function VersionStepCheck(button)
{	
	if (button.checked)
	{
		if (nbVersionIdSelected == 2)
		{
			button.checked = false;
			var findElt = false;
			var LayerInfos = document.getElementById("LayerInfos");
			for (i=0 ; i<LayerInfos.childNodes.length ;i++)
			{
				var child = LayerInfos.childNodes[i];
				if (child.className == "LayerText")
				{
					for(j = 0 ;j<child.childNodes.length ;j++)
					{
						var superchild = child.childNodes[j];
						if (superchild.id == "lblContentInfo")
						{
							superchild.innerHTML = global_finition_label_Too_many_versions;
			
							showLayerPopup("LayerInfos");
							findElt = true;
							break;
						}
					}
				}
				if(findElt == true)
					break;
			}
			
			var LayerInfos_hlOk_link = document.getElementById("LayerInfos_hlOk_link");
			LayerInfos_hlOk_link.innerHTML = global_finition_label_LayerInfo_Ok;
			
		}
		else
		{		
		
			VersionStepSubmit();
		}
	}
	else
	{
		VersionStepSubmit();
	}

} 

function VersionStepCheckHB(code, button)
{	
	if (button.checked)
	{
		SelectedCheck = button;
		if(tab_finitions[code]["HB"] == "true")
		{			
			button.checked = false;
			displayAlertHB("", code, 1);			
		}
		else
		{
			VersionStepSubmit();
		}
	}
	else
	{
		VersionStepSubmit();
	}
} 
 
function VersionStepSubmit()
{		
	document.getElementById('versionsStepForm').submit();		
} 

function VersionStepCheckHBOK()
{
	validatePendingRequest();
	closeLayerPopup('BA_alertHB');
	SelectedCheck.checked = true;
	
	//Pour régler le problème de désynchronisation entre le submit et la mise  à jour du budget
	setTimeout('VersionStepSubmit()',250);
}



/* Gere les actions a  effectuer suite a  cochage d'options sur la 3eme page
 *
 * @param	string	code du critere choisi par l'utilisateur
 */
function check3(code, initialize)
{
	check3(code,initialize,'0');
} 
 
function check3(code, initialize, hb)
{	
	//SFGACFR
	if ((typeof global_BA_Used != "undefined") && global_BA_Used)
	{
	/*	if(tab_finitions[code]["HB"] == "true" && hb == '1')
		{
			displayAlertHB("", code, initialize);
			return false;
		}*/

	}
	//SFGACFR
	
	if (initialize == '1')
	{
		start_egal_true_3 = "&start=true";
	}
	
	if (!global_initialization && global_nb_finition != 1) 
	{
		flag_modification_step3(true);
	}
	
	// cochage ou decochage ?
	if (finition_configuration == code )
	{
		//Decochage		
		
		// Pas de decochage si une seule finition
		if (global_nb_finition == 1) 
		{
			return false;
		}
		
		// Gestion affichage apport initial
		if (global_apport_initial)
		{
			displayObject("ph_recapitulatif_apport");
		}		
				
//		//Remise de l'image par defaut
//		setObjectSrc("image_finition", global_default_finition_image);
		
		// decochage de la case actuellement cochee
		finition_configuration = "";
//		switch_checkbox(code, 0);
		removeObject(global_recap3_name);
		
		//cacher le titre de la section equip super significatifs
//		hideObject("titreEquipements");
		
//		hide_equipement();
		
		// maj libelle
		setObjectContent("recapitulatif_prix_label",global_finition_label_price_from);

		// maj du prix dans la zone de recapitulatif
		
		// ARA EVO_CFG_AC_003
		var currentPrice = "" + global_minimum_price;
		if (tab_finitions[code]["hasNova"] == "True")
			currentPrice += novaSymbol;
		setObjectContent("recapitulatif_prix_value", currentPrice);
		if (currentConfigurationPrice != null && currentConfigurationPrice != "")
		{
			setObjectContent("recapitulatif_prix_value", currentConfigurationPrice);
		}
		
		// gestion affichage promo
		removeObject("recapitulatif_promo_label");
		removeObject("recapitulatif_promo_value");
		removeObject("recapitulatif_promo_img");
		removeObject("recapitulatif_promoPrice_img");
		
		// gestion affichage mensualite
		//SFGACFR
		if (typeof global_financing_type == "undefined" || global_financing_type != "PSA_SFG")
		{
			setObjectContent("recapitulatif_monthly_label",global_monthly_label_finition);
		}
		
		if (typeof global_financing_type != "undefined" && global_financing_type == "PSA_SFG")
		{
			//mise a jour de l'encart de financement au besoin
			update_recap_finance(global_min_version_code, global_min_version_price_numeric, global_min_version_label);
		}
		
		// Mensualite
		removeObject("recapitulatif_monthly_label");		
		removeObject("recapitulatif_monthly_value");
		removeObject("recapitulatif_monthly_img");
		
		// Description prix
		removeObject("recapitulatif_priceDescription");
	}
	else
	{
		//Cochage
		
		// Gestion affichage apport initial
		if (global_apport_initial)
		{
			//ANO 073
			//removeObject("ph_recapitulatif_apport");
		}
		
		// decochage de l'eventuelle ancienne case cochee
//		switch_checkbox(finition_configuration, 0);
		
		//Affichage de l'image correspondant a  la finition
//		setObjectSrc("image_finition", tab_finitions[code]["graphic"]);
		
		// affichage des equipements associes a  la finition
//		show_equipement(code);

		// cochage de la case
		finition_configuration = code;
		
		// Si 1 seule finition => choix induit		
//		if (global_nb_finition == 1)
//		{		
//			switch_checkbox(code, 2);			
//		}
//		else
//		{
//			switch_checkbox(code, 1);
//		}		

		// maj libelle
		setObjectContent("recapitulatif_prix_label",global_finition_label_price_total);

		// maj du nom dans la zone de recapitulatif				
		removeObject(global_recap3_name);
		setObjectContent(global_recap3_name, tab_finitions[code]["name"]);
			if ( tab_finitions[code]["name"] != "" )
			{
				var liclass = document.getElementById(global_recap3_name).parentNode.className;
				var start = liclass.indexOf(" ", 0);
				if (start != -1)
				{
					document.getElementById(global_recap3_name).parentNode.className = liclass.substr(0, start);
				}
			}
			else
			{
				var liclass = document.getElementById(global_recap3_name).parentNode.className;
				var start = liclass.indexOf(" ", 0);
				if (start == -1)
				{
					document.getElementById(global_recap3_name).parentNode.className += " hidden";
				}
			}
		displayObject(global_recap3_name);

		// maj du prix dans la zone de recapitulatif
		
		// ARA EVO_CFG_AC_003
		var currentPrice = "" + tab_finitions[code]["textprice"] + (ie ? "&nbsp;" : "");
		if (tab_finitions[code]["hasNova"] == "True")
			currentPrice += novaSymbol;	
		setObjectContent("recapitulatif_prix_value", currentPrice);
		if (currentConfigurationPrice != null && currentConfigurationPrice != "")
		{
			setObjectContent("recapitulatif_prix_value", currentConfigurationPrice);
		}
				
		// Description prix
		if (tab_finitions[code]["priceDescription"] != "")
		{		
			ToolTipDesc = tab_finitions[code]["priceDescription"];
			displayObject("recapitulatif_priceDescription");
		}
		else
		{
			removeObject("recapitulatif_priceDescription");
		}

		// SFGACFR 
		// Gestion affichage mensualite SFG		
		if (typeof global_financing_type != "undefined" && global_financing_type == "PSA_SFG")
		{
			//mise a jour de l'encart de financement au besoin
			update_recap_finance(tab_finitions[code]["VersionCode"], tab_finitions[code]["numericPrice"], tab_finitions[code]["commercialLabel"]);
			
		}
		// Gestion affichage mensualite FUJITSU
		else if (global_display_month_payment)
		{
			displayObject("recapitulatif_monthly_label");
			displayObject("recapitulatif_monthly_value");
			
			if (ie)
			{
				setObjectContent("recapitulatif_monthly_label",global_monthly_label_finition  + "&nbsp;");
				setObjectContent("recapitulatif_monthly_value",tab_finitions[code]["textMensualite"] + "&nbsp;" );
			}
			else
			{
				setObjectContent("recapitulatif_monthly_label",global_monthly_label_finition);
				setObjectContent("recapitulatif_monthly_value",tab_finitions[code]["textMensualite"]);
			}	
			// SFGACFR	
			
			
			
			// Affichage du picto pour le financement si presence de mensualite
			if (tab_finitions[code]["textMensualite"] == global_monthly_label_unavailable ||
				tab_finitions[code]["textMensualite"] == global_monthly_label_notevaluated )
			{
				removeObject("recapitulatif_monthly_img");
			}
			else
			{
				displayObject("recapitulatif_monthly_img");
			}			
		}		
		
		// Gestion affichage promo
		if (tab_finitions[code]["discountPrice"] != "0")
		{
			displayObject("recapitulatif_promo_label");			
			displayObject("recapitulatif_promo_value");
			if (ie)
			{
				setObjectContent("recapitulatif_promo_value",tab_finitions[code]["textDiscountPrice"] + "&nbsp;&nbsp;&nbsp;");
			}
			else
			{
				setObjectContent("recapitulatif_promo_value",tab_finitions[code]["textDiscountPrice"] + "&nbsp;&nbsp;");
			}
			
			
			// Si description affichage picto pour le rollover
			if (tab_finitions[code]["descDiscount"] != "")
			{
				displayObject("recapitulatif_promo_img");
				displayObject("recapitulatif_promoPrice_img");
			}			
			else
			{
				removeObject("recapitulatif_promo_img");
				removeObject("recapitulatif_promoPrice_img");
			}
		}
		else
		{
			removeObject("recapitulatif_promo_label");
			removeObject("recapitulatif_promo_value");
			removeObject("recapitulatif_promo_img");
			removeObject("recapitulatif_promoPrice_img");
		}
		
		// Gestion affichage promo super significative
		if (tab_finitions[code]["flagPromo"] != "0")
		{
			displayObject("RecapZone_pictoPromoPrice");	
		}
		else
		{
			removeObject("RecapZone_pictoPromoPrice");
		}
		
	}	
	
	return false;
}

function DisplayPromo(isVisible)
{
	if (isVisible=="True")
	{
		displayObject("recapitulatif_promo_label");			
		displayObject("recapitulatif_promo_value");
		displayObject("recapitulatif_promo_img");
		displayObject("recapitulatif_promoPrice_img");
	}
}

/* Grise les cases seules dans leur groupe
 *
 * @param	string		nom du groupe de cases a  examiner
 */
function check_unicity(criterium_type)
{
	resultat = select(Array(criterium_type), "", "", "", true);

	if ( resultat.length == 1 ) 
	{
		var code = resultat[0][criterium_type];

		// un seul enregistrement trouve => ce critere est induit
		tab_configuration[criterium_type] = code;

		// cochage de la case
		// change l'etat du critere
		tab_criteres[code]["checked"] = "2";
		
		// change l'etat de la checkbox asociee.
		switch_criterium(code, "2");

		// enregistrement du rollover par defaut
		rollover_set_code(code);

		return code;
	}
	else
	{
		return false;
	}
}


/* Verifie les unicites de criteres pour l'etape 1
 */
function check_unicity_step1()
{
	var criteres = {"grBodyStyle":"", "grTT":"", "energy":""};
	for ( var key in criteres )
	{
		check_unicity(key);
	} 
}


/* Verifie les unicites de criteres pour l'etape 2, coche les cases appropiees,
 * et affiche les bons rollovers
 */
function check_unicity_step2()
{
	var criteres = {"bodyStyle":"", "transmissionType":"", "energy":"", "engine":""};
	for ( var key in criteres )
	{
		check_unicity(key);
	} 

	// affichage du rollover correspondant
	if ( global_initialization )
	{
		rollover_show();
	}
}


/* Indique si une case a  cocher est seule dans son groupe
 *
 * @param	string		nom du groupe de cases a  examiner
 * @return	boolean		case a  cocher seule ?
 */
function checkbox_is_unique(code)
{
	var criterium_type = tab_criteres[code]["criterium_type"];
	resultat = select(Array(criterium_type), "", "", "", true);

	return (resultat.length == 1);
}

/* Sur la page de comparaison, redimensionne le tableau de comparaison pour 
 * qu'il s'adapte a  la hauteur de la fenaªtre
 * Redimensionne les colonnes des 2 tables en dessous du titre (table du milieu et pied de page)
 */
function comparaison_table_resize()
{
	var window_height = getWindowHeight();
	var height;

	if ( window_height - global_comparaison_table_increment < global_comparaison_table_min_height )
	{
		height = global_comparaison_table_min_height;
	}
	else
	{
		height = window_height - global_comparaison_table_increment;
		if (!ie)
		{
			height -= 20;
		}
	}

	setObjectHeight("comparaison_table", height);
	
	// Redimensionnement des colonnes
	comparaison_column_resize();
}

/*
Redimensionnement des colonnes des 2 tables (milieu et footer) par rapport a la
table de titre
*/
function comparaison_column_resize()
{	
	var col_titre = document.getElementById("comp_t_col2");	// Title
	var col_f = document.getElementById("foot_col2"); // Footer
	var d;
	var e;
	
	var valeur;
	
	// Maj colonne 1
	if (ie)
	{
		d = 25;
		e = 9;		
	}
	else
	{
		d = 25;
		e = 9;
	}
			
	col_f.style.width = (col_titre.offsetWidth - e) + "px";	
	
	valeur = (col_titre.offsetWidth - d) + "px";
	setElementStyleByClassName("present col2","width",valeur);
	setElementStyleByClassName("prix col2","width",valeur);
	setElementStyleByClassName("absent col2","width",valeur);
	
	// Maj colonne 2
	if (ie)
	{
		d = 10;
		e = 10;
	}
	else
	{
		d = 9;
		e = 9;
	}
		
	col_titre = document.getElementById("comp_t_col1");	
	col_f = document.getElementById("foot_col1");
	
	col_f.style.width = (col_titre.offsetWidth - e) + "px";		
	
	valeur = (col_titre.offsetWidth - d) + "px";
	setElementStyleByClassName("present col1","width",valeur);
	setElementStyleByClassName("prix col1","width",valeur);
	setElementStyleByClassName("absent col1","width",valeur);
}

/* ferme le layer et cache le masque
 */
function closeLayerPopup(idLayer)
{
	document.onkeypress = "";
	
	removeObject(idLayer);
	removeObject("gli_mask");
	return false;
}

function closeLayerPopupBis(idLayer)
{
	document.onkeypress = "";
	
	removeObject(idLayer);

	var gli_mask = document.getElementById('gli_mask');
	gli_mask.style.zIndex = "";
	return false;
}
/*
 * Ferme la popup de comparaison
 */
function closePopupCompare()
{
	popupCompare = window.open('','popupCompare','height=100,width=100,resizable=no,scrollbars=no,status=no,location=no,toolbar=no,menubar=no');
	self.focus();
	if (popupCompare && popupCompare.open && !popupCompare.closed)
	{
		popupCompare.close();
	}
}

/* Transmet les parametres a  la page des donnees techniques (uniquement dans le cas VU)
 */
function etape_TechSpec()
{
	var url = url_page_TechSpec + "?";

	if (!global_rollover_model || !global_rollover_grBodyStyle)
		return false;
		
		
		
	url += "Model" + "=" + global_rollover_model + "&";
	url += "GrBodyStyle" + "=" + global_rollover_grBodyStyle + "&";

	if ( tab_configuration["energy"] )
	{
		url += "Energy" + "=" + tab_configuration["energy"] + "&";
	}

	if ( tab_configuration["grTT"] )
	{
		url += "grTransmissionType" + "=" + tab_configuration["grTT"] + "&";
	}
	
	if ( tab_configuration["ecoLabel"] && tab_configuration["ecoLabel"] == "airdream_yes")
	{
		url += "EcoLabel" + "=true&";
	}
	
	if ( (global_apport != "") && (global_mensualite != "") )
	{
		url += "Apport=" + global_apport + "&Mensualite=" + global_mensualite + "&";
	}
	
	if (global_step1_init)
	{
		url += "email=''&";
	}
	
	//Ajout hic
	var minPrice = tab_configuration["minimalPrice"];
	var maxPrice = tab_configuration["maximalPrice"];
	
	if(minPrice !="" && maxPrice !="" )
	{
		url +="minPrice="+minPrice+"&maxPrice="+maxPrice+"&";
	}
	
	url+= "start=true&";
	
	window.location = url.substr(0, url.length - 1);
	return true;
}

/* Transmet les parametres a  la deuxieme page
 */
function etape_deux()
{
	var url = url_page_deux + "?";

	if (!global_rollover_model || !global_rollover_grBodyStyle)
		return false;
		
	url += "Model" + "=" + global_rollover_model + "&";
	url += "GrBodyStyle" + "=" + global_rollover_grBodyStyle + "&";

	if ( tab_configuration["energy"] )
	{
		url += "Energy" + "=" + tab_configuration["energy"] + "&";
	}

	if ( tab_configuration["grTT"] )
	{
		url += "grTransmissionType" + "=" + tab_configuration["grTT"] + "&";
	}
	
	if ( tab_configuration["ecoLabel"] && tab_configuration["ecoLabel"] == "airdream_yes")
	{
		url += "EcoLabel" + "=true&";
	}
	
	if ( (global_apport != "") && (global_mensualite != "") )
	{
		url += "Apport=" + global_apport + "&Mensualite=" + global_mensualite + "&";
	}
	
	if (global_step1_init)
	{
		url += "email=''&";
	}
	
	//Ajout hic
	var minPrice = tab_configuration["minimalPrice"];
	var maxPrice = tab_configuration["maximalPrice"];
	
	if(minPrice !="" && maxPrice !="" )
	{
		url +="minPrice="+minPrice+"&maxPrice="+maxPrice+"&";
	}
	
	url+= "start=true&";
	
	window.location = url.substr(0, url.length - 1);
	return true;
}

function etape_quatre()
{
	/*
	if ( finition_configuration == "" )
	{
		showLayerPopup('LayerInfos');
		return false;
	}
	else
	{*/
		var url = url_page_quatre + "?versionId=";
		//url += tab_finitions[finition_configuration]["VersionCode"] + start_egal_true_3;
		url +=  VersionIdSelected + start_egal_true_3;
		
		
		window.location = url;
		return true;
	/*}*/
}

/* Changes to the following page
 */
function etape_suivante()
{
	var result = true;
	switch (global_step_number)
	{
		// pour passer à l'etape 2
		case "1" :
			if (model_VPVU == "VU")
			{
				result = etape_TechSpec();
			}
			else
			{
				result = etape_deux();
			}
			break ;
		case "1.5" :
			result = etape_deux_FromTechSpec();
			break ;						
		// pour passer à l'etape 3
		case "2" :
			result = etape_trois();
			break ;

		// pour passer à l'etape 4
		case "3" : 
			result = etape_quatre();
			break ;
	}

	// ARA - EVO_CFG_AC_024
	if (result)
		DisplayWaitLayer();
		
	return (global_step_number == 1) ? false : result;
}


/* Transmet les parametres a  la deuxieme page
 */
function etape_AssistantChoix()
{
	var url = url_assistantChoix + "?";
	if (global_step_number == 1)
	{
		if (!global_rollover_model || !global_rollover_grBodyStyle)
			return false;
			
		url += "Model" + "=" + global_rollover_model + "&";
		url += "GrBodyStyle" + "=" + global_rollover_grBodyStyle + "&";

		if ( tab_configuration["energy"] )
		{
			url += "Energy" + "=" + tab_configuration["energy"] + "&";
		}

		if ( tab_configuration["grTT"] )
		{
			url += "grTransmissionType" + "=" + tab_configuration["grTT"] + "&";
		}
		
		if ( (global_apport != "") && (global_mensualite != "") )
		{
			url += "Apport=" + global_apport + "&Mensualite=" + global_mensualite + "&";
		}
		
		if (global_step1_init)
		{
			url += "email=''&";
		}
		
		//Ajout hic
		var minPrice = tab_configuration["minimalPrice"];
		var maxPrice = tab_configuration["maximalPrice"];
		
		if(minPrice !="" && maxPrice !="" )
		{
			url +="minPrice="+minPrice+"&maxPrice="+maxPrice+"&";
		}
		
		url+= "start=true&";
	
		window.location = url.substr(0, url.length - 1);
		return true;
	
	}
	else if (global_step_number == 2)
	{
		if (!tab_configuration_static["model"] || !tab_configuration_static["grBodyStyle"])
			return false;
			
		url += "Model" + "=" + tab_configuration_static["model"] + "&";
		url += "GrBodyStyle" + "=" + tab_configuration_static["grBodyStyle"] + "&";
	
		if ( tab_configuration["transmissionType"] )
		{
			url += "transmissionType" + "=" + tab_configuration["transmissionType"] + "&";
		}
		if ( tab_configuration["grTT"] )
		{
			url += "grTransmissionType" + "=" + tab_configuration["grTT"] + "&";
		}
		if ( tab_configuration["energy"] )
		{
			url += "Energy" + "=" + tab_configuration["energy"] + "&";
		}
		if ( tab_configuration["bodyStyle"] )
		{
			url += "bodyStyle" + "=" + tab_configuration["bodyStyle"] + "&";
		}
		
		url+= "start=true&";
		window.location = url.substr(0, url.length - 1);
		return true;
		
	}
	else if (global_step_number == 3)
	{
		if (!tab_configuration_static["model"] || !tab_configuration_static["grBodyStyle"])
			return false;
			
		url += "Model" + "=" + tab_configuration_static["model"] + "&";
		url += "GrBodyStyle" + "=" + tab_configuration_static["grBodyStyle"] + "&";
		
		if ( tab_configuration_static["bodyStyle"] )
		{
			url += "bodyStyle" + "=" + tab_configuration_static["bodyStyle"] + "&";
		}
	/*
		if ( tab_configuration["transmissionType"] )
		{
			url += "transmissionType" + "=" + tab_configuration["transmissionType"] + "&";
		}
		if ( tab_configuration["grTT"] )
		{
			url += "grTransmissionType" + "=" + tab_configuration["grTT"] + "&";
		}
		if ( tab_configuration["energy"] )
		{
			url += "Energy" + "=" + tab_configuration["energy"] + "&";
		}
		*/
		
		
		if ( VersionIdSelected )
		{
			url += "lcdv" + "=" + VersionIdSelected + "&";
		}
		
		
		url+= "start=true&";
		window.location = url.substr(0, url.length - 1);
		return true;
		
	}
	
	return true;
}




// ARA - EVO_CFG_AC_024
// On va afficher et redimensionner automatiquement
// le layer d'attente en fonction du contenu...
function DisplayWaitLayer()
{
	var ws = document.getElementById("wait_step1");
	if (ws == null)
		return ;
	
	// La variable conteneurId est déclarée dans chaque page
	var c = document.getElementById(conteneurId);
	if (c == null)
		return ;
	
	var autoTop = 0;
	var obj = document.getElementById("commentaire");
	if (obj != null)
		autoTop = obj.offsetTop;
	
	
	// La couleur de fond est fixe, identique à celle de l'image
	ws.style.backgroundColor = "#C1C4C9";
	ws.style.backgroundImage = "url(/ImagesCentral/Images/site/media/wait_step1.gif)";
	if (ie)
	{
		ws.style.top = autoTop;
		ws.style.height = (c.offsetHeight - autoTop);
	}
	else
	{
		ws.style.height = (c.offsetHeight) + "px";
		ws.style.left = c.offsetLeft + "px";
	}
//	var posImgX = 459;
//	var posImgY = (ws.style.pixelHeight/2)-66;
//	var posImg = posImgX + "px "+ posImgY + "px"; 
	ws.style.backgroundPosition = "center center";
	ws.style.display = "";
}

function etape_deux_FromTechSpec()
{
	var form = document.getElementById("data_form");
	var layer = document.getElementById("LayerCheckSelectAll");
	var text = null;
	if (layer.childNodes[0] != null)
	{
		if (layer.childNodes[0].childNodes[1] != null)
		{
			text = layer.childNodes[0].childNodes[1];
		}
	}


	
	var url = url_page_deux + "?";

	if (!global_model || !global_grBodyStyle)
		return false;
	
	//Vérification que tout a été sélectionné	
	var caracEmpty = 0;
	
	for (var key in tab_configuration)
	{

	  if (tab_configuration[key]!="")
			caracEmpty++;
	}
	
	if(caracEmpty < caracCheckedMin)
	{
		showLayerPopup("LayerCheckSelectAll");
		return false;
	}
	
		
	url += "Model" + "=" + global_model + "&";
	url += "GrBodyStyle" + "=" + global_grBodyStyle + "&";



/*	if ( tab_configuration["energy"] )
	{
		url += "Energy" + "=" + tab_configuration["energy"] + "&";
	}

	if ( tab_configuration["grTT"] )
	{
		url += "grTransmissionType" + "=" + tab_configuration["grTT"] + "&";
	}
	
	if ( (global_apport != "") && (global_mensualite != "") )
	{
		url += "Apport=" + global_apport + "&Mensualite=" + global_mensualite + "&";
	}
*/	
	if (global_step1_init)
	{
		url += "email=''&";
	}
	
	//Gestion des BodyStyles restants
	var bodyStyle = "bodyStyle=";
	conditions = request_create_Conditions();
	resultat = select("", conditions, "", "", false);
	for(i =0 ; i< resultat.length; i++)
	{
		 bodyStyle += resultat[i]["bodyStyle"]+",";
	}
	
	bodyStyle = bodyStyle.substr(0, bodyStyle.length - 1) + "&"; 	
	url += bodyStyle;
	
	url+= "start=true";
		
	form.action =  url;

	form.submit()
	return true;
}

/* Transmet les parametres a  la troisieme page
 */
function etape_trois()
{
	var form = document.getElementById("data_form");
	var layer = document.getElementById("LayerCheckSelectAll");
	var text = null;
	if (layer.childNodes[0] != null)
	{
		if (layer.childNodes[0].childNodes[1] != null)
		{
			text = layer.childNodes[0].childNodes[1];
		}
	}
	
	for (var key in tab_configuration)
	{
		// grTransmissionType
		if (key == "grTT")
			key = "grTransmissionType";
		form.elements[key].value = tab_configuration[key];
	}
	form.elements["recapitulatifMecanique"].value = getObjectContent(global_recap2_name);

	if ((tab_configuration["engine"] == "") &&
		(tab_configuration["transmissionType"] == "") &&
		(tab_configuration["bodyStyle"] == ""))
	{
		//set text default
		if (text != null)
		{
			text.innerText = messages["default"];
		}
		showLayerPopup("LayerCheckSelectAll");
		return false;
	}
	else if (((tab_configuration["engine"] != "") ||
			  (tab_configuration["transmissionType"] != "")) &&
			 (tab_configuration["bodyStyle"] == ""))
	{
		//set text WithoutGrCommercial
		if (text != null)
		{
			text.innerText = messages["WithoutGrCommercial"];
		}
		showLayerPopup("LayerCheckSelectAll");
		return false;
	}
	else if (((tab_configuration["engine"] == "") ||
			  (tab_configuration["transmissionType"] == "")) &&
			 (tab_configuration["bodyStyle"] != ""))
	{
		//set text WithGrCommercial
		if (text != null)
		{
			text.innerText = messages["WithGrCommercial"];
		}
		showLayerPopup("LayerCheckSelectAll");
		return false;
	}
	
	//if (IsChoiceMissing())
	//{
	//	showLayerPopup("LayerCheckSelectAll");
	//	return false;
	//}
	
	form.submit();
	return true;
}

function IsChoiceMissing()
{
	return ((tab_configuration["engine"] == "") ||
			(tab_configuration["transmissionType"] == "") ||
			(tab_configuration["bodyStyle"] == ""));
}


/* handles a financing XMLhttp response
 *
 * @param	string		response delivered after the XMLhttprequest
 */
function financing_handleResponse(xmlhttp)
{
	var results = xmlhttp.responseText;

	// parsing the minimal price
	var minimumPrice;
	var maximumPrice;
	
	var downPaymentAmount;
	var paymentAmount;
	
	var status;
	var start = results.indexOf("<cc:MinimumPrice>", 0);
	var end = results.indexOf("</cc:MinimumPrice>", 0);
	if ( (start != -1) && (end != -1) && (start < end) )
	{
		minimumPrice = parseFloat(results.substr(start + 17, end - start - 17));
	}

	// parsing the maximal price
	start = results.indexOf("<cc:MaximumPrice>", 0);
	end = results.indexOf("</cc:MaximumPrice>", 0);
	if ( (start != -1) && (end != -1) && (start < end) )
	{
		maximumPrice = parseFloat(results.substr(start + 17, end - start - 17));
	}
	
	// parsing the maximal price
	start = results.indexOf("<cc:DownPaymentAmount>", 0);
	end = results.indexOf("</cc:DownPaymentAmount>", 0);
	if ( (start != -1) && (end != -1) && (start < end) )
	{
		downPaymentAmount = parseFloat(results.substr(start + 22, end - start - 22));
	}
	
	// parsing the maximal price
	start = results.indexOf("<cc:PaymentAmount>", 0);
	end = results.indexOf("</cc:PaymentAmount>", 0);
	if ( (start != -1) && (end != -1) && (start < end) )
	{
		paymentAmount = parseFloat(results.substr(start + 18, end - start - 18));
	}
		
	// FinancingStatus
	start = results.indexOf("<str:Status>",0);
	end = results.indexOf("</str:Status>",0);
	
	if ( (start != -1) && (end != -1) && (start < end) )
	{
		status = parseFloat(results.substr(start + 12, end - start - 12));
	}
	
	
	if (status != "0")
	{
		// Pb lie au status
		financing_reset();
		showLayerPopup("FinancingLayerStatusErr");
		return false;
	}	

	if ( maximumPrice > minimumPrice )
	{
		
		tab_configuration["minimalPrice"] = parseFloat(minimumPrice);
		tab_configuration["maximalPrice"] = parseFloat(maximumPrice);
		
		var conditions = request_create();
		resultat = select("", conditions, "", "", false);

		if ( resultat.length > 0 )
		{
			updateDisplay(true);
				var financingButton_Fuji = document.getElementById("FinancingButtonFuji");
				financingButton_Fuji.style.display = "none";
				var block_Fuji = document.getElementById("Fuji_BA_Zone");
				block_Fuji.style.display = "none";
				var gli_mask_Fuji = document.getElementById("gli_mask");
				gli_mask_Fuji.style.display = "none";
				var block_Fuji_recap = document.getElementById("Fuji_Recap");
				block_Fuji_recap.style.display = "";
				
				if (downPaymentAmount != 0 && paymentAmount != 0)
				{
					var apportText = document.getElementById("Fuji_recap_value1_value");
					var mensualiteText = document.getElementById("Fuji_recap_value2_value");
					if (ie)
					{
						apportText.innerText = downPaymentAmount;
						mensualiteText.innerText = paymentAmount;
					}
					else
					{
						apportText.textContent = downPaymentAmount;
						mensualiteText.textContent = paymentAmount;
					}

				}
				
			move_vignettes();			
			return true;
		}
	}

	financing_reset();
	showLayerPopup("FinancingLayerIncoherence"); // Popup of modelStep page		
	return false;
}


/* resets the financing form
 */
function financing_reset()
{	
	form = document.getElementById("form_Fuji");
	
	//nettoyage du formulaire
	form.elements["apport"].valueD= "";
	form.elements["mensualite"].value = "";
	
	var block_Fuji = document.getElementById("Fuji_BA_Zone");
	block_Fuji.style.display = "none";
	var gli_mask_Fuji = document.getElementById("gli_mask");
	gli_mask_Fuji.style.display = "none";
	var financingButton_Fuji = document.getElementById("FinancingButtonFuji");
	if (financingButton_Fuji.style.display == "none")
	{
		var block_Fuji_recap = document.getElementById("Fuji_Recap");
		block_Fuji_recap.style.display = "";
	}
	
	if(global_mensualite == "" && global_apport == "")
	{
		return false;
	}
	else
	{	
		global_apport = ""; // 'apport' and 'mensualite' initialized to ""
		global_mensualite = "";

		// nettoyage des criteres de selection
		tab_configuration["minimalPrice"] = "";
		tab_configuration["maximalPrice"] = "";

		tab_configuration["grBodyStyle"] = "";
		tab_configuration["energy"] = "";
		tab_configuration["grTT"] = "";
		
		updateDisplay(false);
		move_vignettes();
		
		return false;
	}
}


/* sends from the formular a request to the financing service
 */
function financing_sendForm(form)
{
	flag_modification_step1(true);

	// Check validity of each field
	// Field must be numeric
	var apport = form.elements["apport"].value;
	var mensualite = form.elements["mensualite"].value;
	var pattern = "^\\d+$";
	var reg = new RegExp(pattern);
		
	var checkA = reg.test(apport);
	reg = new RegExp(pattern);	
	var checkM = reg.test(mensualite);
	
	if (!checkA || !checkM)
	{
		financing_reset();
		// After reset, keep correct value 
		if (checkA) form.elements["apport"].value = apport;
		if (checkM) form.elements["mensualite"].value = mensualite;
		showLayerPopup("FinancingLayerValueNumeric");
		return false;
	}
	
	global_apport = apport;
	global_mensualite = mensualite;

	financing_sendRequest(global_apport, global_mensualite);
	return false;
}


/* sends a request to the financing service
 */
function financing_sendRequest(apport, mensualite)
{
	flag_modification_step1(true);

	// cherche tous les modeles disponibles pour les criteres actuellement 
	// choisis, tries par nom et sans doublon
	var conditions = request_create();
	var result = select(Array("model"), conditions, Array(Array("model", "asc")), "", true);

	var data = "param=<str:Action id=\"1\"><str:Do> financing approach </str:Do><str:Paramaters>";
	data += "<cc:Make>"+global_brand+"</cc:Make>";
	data += "<cc:Country>"+global_country+"</cc:Country>";
	data += "<cc:Language>"+global_language+"</cc:Language><cc:Currency>"+global_currency+"</cc:Currency>";
	data += "<cc:TaxIncluded>"+global_taxincluded+"</cc:TaxIncluded>";
	data += "<cc:DownPaymentAmount>" + apport + "</cc:DownPaymentAmount>";
	data += "<cc:PaymentAmount>" + mensualite + "</cc:PaymentAmount><cc:Models>";
	
	var i = 0;
	while ( i < result.length )
	{
		data += "<cc:Model>" + result[i]["model"] + "</cc:Model>";
		i++;
	}

	data += "</cc:Models></str:Paramaters>";
	data += "</str:Action>";

	sendData("POST", global_financing, data);

	return false;
}


/* Retourne le description de l'equipement
 *
 * @param	string		code lcdv de l'equipement
 * @return	string		descriptif de l'equipement
 */
function finition_equipement_description(equipement)
{
	if ( typeof(tab_criteres[equipement]) != "undefined" )
	{
		return tab_criteres[equipement]["text"];
	}
	else 
	{
		return "";
	}
}


/* Indique s'il existe une exclusion pour une finition et un equipement donne
 *
 * @param	string		code lcdv de la finition
 * @param	string		code lcdv de l'equipement
 *
 * @return	string		texte d'exclusion de l'equipement dans la finition ?
 */
function finition_exclusion(finition, equipement)
{
	var conditions = new Array("&&", 
			Array("==", "finition", finition), 
			Array("==", "equipement", equipement)
			);
	resultat = select(Array("exclusion"), conditions, "", "", true);

	if ( (typeof(resultat[0]) != "undefined") && (typeof(resultat[0]["exclusion"]) != "undefined") )
	{
		return resultat[0]["exclusion"];
	}
	else
	{
		return "";
	}
}


/* Indique s'il existe une inclusion pour une finition et un equipement donne
 *
 * @param	string		code lcdv de la finition
 * @param	string		code lcdv de l'equipement
 *
 * @return	string		texte d'inclusion de l'equipement dans la finition ?
 */
function finition_inclusion(finition, equipement)
{
	var conditions = new Array("&&", 
			Array("==", "finition", finition), 
			Array("==", "equipement", equipement)
			);
	resultat = select(Array("inclusion"), conditions, "", "", true);

	if ( (typeof(resultat[0]) != "undefined") && (typeof(resultat[0]["inclusion"]) != "undefined") )
	{
		return resultat[0]["inclusion"];
	}
	else
	{
		return "";
	}
}


/* Gere l'affichage des categories des equipements 
Si presence au moins d'une categorie, affichage du titre equipement
*/
function finition_show_cat_equip()
{
	// tab_cat_equip => liste cle=id categorie / val=list des code equipement;	
	var i;
	var c;
	var nbcat = 0;	
	for (var cle in tab_cat_equip)
	{
		c = 0;
		var tab = tab_cat_equip[cle];
		// List equipement
		for (var i in tab)
		{
			var obj = getObject("equipement_" + tab[i]);
			if (obj.className == "equipement_selected")
			{
				c++;
				break;
			}
		}
		// Nb d'equipements selectionnes
		if (c > 0)
		{
			showObject(cle);
			nbcat++;			
		}
		else
		{
			hideObject(cle);
		}
		
		// Titre equipement
		if (nbcat > 0)
		{
			showObject("titreEquipements");
		}
		else
		{
			hideObject("titreEquipements");
		}
	}	
}

/* Permet l'affichage du picto apres chaque equipement dans le cas
 * ou il aurait une description
 */
function finition_show_picto()
{
	//Requete pour avoir les codes lcdv des equipements
	var resultat = select(Array("equipement"), "", "", "", true);
		
	for ( var key in resultat )
	{
		var equipement = resultat[key]["equipement"];
		var description = finition_equipement_description(equipement);

		/*var show = ((finition_configuration != "")
						&& finition_inclusion(finition_configuration,equipement) != "") 
					|| ((finition_configuration != "")
						&& finition_exclusion(finition_configuration,equipement) != "") 
					|| (description != ""); */
					
		var idobj = "equipement_" + equipement;
		var obj = getObject(idobj);
		var show = (description != "" && obj.className == "equipement_selected" );
	   		
		if ( show )
		{
			showObject("img" + equipement);
		}
		else
		{
			hideObject("img" + equipement);
		}
	}
}

/* Affiche un rollover dans l'etape 3 contenant une description
* @param string
*/
function finition_show_tip_description(description)
{
	var tipname = "tip_rollover_step3";
	// sets tipbox content
	setObjectContent(tipname, description);

	// moves the tipbox where the mouse is
	moveObject(tipname, getMouseX() + 10, getMouseY());

	// displays the tipbox
	displayObject(tipname);
}

/* Affiche un rollover contenant des details sur l'equipement survole
 *
 * @param	string		code LCDV associe a  l'equipement survole
 */
function finition_show_tip(code)
{
	var description = finition_equipement_description(code);
	
	if ( description != "" )
	{
		description += "<br />";
	}

	if ( finition_configuration != "" )
	{
		var inclusion = finition_inclusion(finition_configuration, code);
		var exclusion = finition_exclusion(finition_configuration, code);

		if ( (exclusion.length == 0) || (inclusion.length <= exclusion.length) )
		{
			description += inclusion;
		}
		else
		{
			description += exclusion;
		}
	}

	if ( description != "" )
	{
		var idobj = "tip_rollover";
		var y = getMouseY();
		var x = getMouseX() + 10;
		var pos_y_limit = getWindowHeight();
		var pos_x_limit = getWindowWidth();
		
		// displays the tipbox
		displayObject(idobj);
		
		var height = getObjectHeight(idobj);
		var width = getObjectWidth(idobj);
			
		// sets tipbox content
		setObjectContent(idobj, description);

		// moves the tipbox where the mouse is		
		if (y + height > pos_y_limit)
		{
			y = pos_y_limit - height - 5;
		}
		
		moveObject(idobj, x, y);
		
	}
}


/* enregistre le fait qu'une modification a ete faite ou non
 *
 * @param	bool		indicates wheather a modif has been made or not
 */
function flag_modification(state)
{
	global_modification_made = state;
}





/* effectue les operations necessaires sur la 2e page lorsqu'on 
 * a effectue une action
 *
 * @param	bool		indicates wheather a modif has been made or not
 */
function flag_modification_step2(state)
{
	flag_modification(state);
	navigationbar_deactivate_links();
}

/* effectue les operations necessaires sur la 3e page lorsqu'on
 * a effectue une action
 *
 * @param	bool		indicates wheather a modif has been made or not
 */
function flag_modification_step3(state)
{
	flag_modification(state);
	navigationbar_deactivate_links();
}

/* indique le nom de la colonne de tab_versions qui correspond a  l'onglet 
 * courant
 *
 * @return	string		nom de la colonne
 */
function get_onglet_name()
{
	if ( current_onglet == 0 )
	{
		// onglet "price" : un nom de colonne special
		return "price";
	}
	else
	{	
		// colonnes car1, car2, car3...
		return "car" + current_onglet;
	}
}


/* Traite les redimensionnements de la fenaªtre.
 */
function handle_windowresize()
{
	var repereLeft = getObjectLeft("repere");
	if ( repereLeft != global_repere_left )
	{
		if ( global_movement )
		{
			// vignettes are moving -> do not handle window 
			// resizing now, but handle it later.
			setTimeout("handle_windowresize()", 200);
		}
		else
		{
			// free to move the vignettes
			// parcourt le tableau des textes associes aux vignettes
			var i = 0;
			while ( i < tab_textes.length )
			{
				var myVignette = "vignette_" + tab_textes[i]["model"] + "_" + tab_textes[i]["grBodyStyle"];
				var dest_x = getObjectLeft(myVignette) + repereLeft - global_repere_left;
				setObjectX(myVignette, dest_x);
				
				var myRibbon = "ribbon_" + tab_textes[i]["model"] + "_" + tab_textes[i]["grBodyStyle"];
				setObjectX(myRibbon, dest_x);
				
				i++;
			}
			global_repere_left = repereLeft;
		}
	}
}


/* Cache le rollover
 *
 * @param	string		id du descriptif de promo
 */
function hide_descPromo(idMarkup)
{
	removeObject(idMarkup);
}


/* Masque la liste des equipements associes a  une finition donnee
 */
function hide_equipement()
{
	if ( finition_configuration == "" )
	{
		//Cacher le titre de la section equip super significatifs
		hideObject("titreEquipements");
		
		//Remise de l'image par defaut
		setObjectSrc("image_finition", global_default_finition_image);
		
		// tous les equipements sont a  nouveau disponibles
		resultat = select(Array("equipement"), "", "", "", true);
		for ( var key in resultat )
		{
			var equipement = resultat[key]["equipement"];
			switch_equipement(equipement, 0);
		}
	}
	else
	{
		show_equipement(finition_configuration);	
	}
	
	finition_show_picto();
	finition_show_cat_equip();
}

/* Masque le rollover
 */
function hide_info()
{
	flag_rollover = false;

	// will effectively hide the rollover 
	// in a certain amount of seconds
	setTimeout("hide_info_effective()", rollover_duration);
}


/* Effectively hides the rollover if there has been no onmouseover event on it
 */
function hide_info_effective()
{
	if ( !flag_rollover )
	{
		// masquage de la zone de promotion et du rollover
		removeObject("rollover_promotion");
		removeObject("rollover");
	}
}


/* Masque le rollover et reaffiche le texte par defaut
 *
 * @param	string		code LCDV associe au critere a  masquer
 */
function hide_rollover(code)
{
	removeObject("rollover");
	displayObject("rollover_default");

	
}


function hide_rolloverOptions(code)
{
	// autres types de criteres
	if ( code != global_displayable_rollover )
	{
		if ( !removeObject("rollover_" + code) )
		{
			removeObject("rollover_default");
		}

		if ( global_displayable_rollover != "" )
		{
			if ( !displayObject("rollover_" + global_displayable_rollover) )
			{
				displayObject("rollover_default");
			}
		}
		else
		{
			displayObject("rollover_default");
		}
	}
}


/* Masque le rollover contenant des details sur le critere survole
 */
function hide_tip()
{
	removeObject("tip_rollover");
}

/* Masque le rollover des finitions 
 */
function hide_tip_finition()
{
	removeObject("tip_rollover_step3");
}

function hide_tipPacks()
{
	removeObject("tip_rolloverPacks");
}

function hide_tipEcolo()
{
	removeObject("tip_rolloverEcolo");
}

function hide_tipEcolo_Recap()
{
	removeObject("tip_rolloverEcoloRecap");
}
/* permet d'obtenir un code lcdv a  partir de l'id d'une case a  cocher 
 * correspondante
 *
 * @param	string		id de la case a  cocher
 * @return	string		code lcdv associe a  cette case
 */
function id2lcldv(id)
{
	var prefixLength = global_checkboxes_prefix.length;
	return id.substr(prefixLength);
}

function init_TechSpec()
{	
	tab_induction =  GetTabCriteres();

	
	check_unicity_TechSpecStep();
	UpdatePriceVU();
	UpdateBodyStyleVUPicture();
	
}

/* Effectue l'initialisation de la 2e page en fonction des donnees en en-tete
 */
function init_second()
{	
	tab_induction = {"transmissionType":"", "engine":"", "grTT":"", "energy":""};

	// attaches the events to the checkboxes
	attach_events_second();

	// cochage des criteres uniques
	check_unicity_step2();

	// update des libelles en bas de la seconde page...
	recapitulatif_update()

	// recherche du prix minimal
	conditions = request_create_bis();
	resultat = select("", conditions, Array(Array("price", "asc")), 1, false);

	setObjectContent("recapitulatif_prix_value", resultat[0]["textprice"]);
		if (currentConfigurationPrice != null && currentConfigurationPrice != "")
		{
			setObjectContent("recapitulatif_prix_value", currentConfigurationPrice);
		}
	
	//SFGACFR
	if ((typeof global_BA_Used != "undefined") && global_BA_Used)
	{
		updateHBCriteria();
	}
	//SFGACFR
	
	if(byBodyStyle == "True")
	{
		
		var pictureZone = document.getElementById("RecapZone_imgCarImage");
	
		var picture = tab_bodystyle[0].picture;
		if ( pictureZone != null )	
		{
			pictureZone.src =  picture ;
		}
	}
	
}


// Effectue l'initialisation de la 3e page en fonction des donnees en en-tete
function init_third()
{	
	// Objets non affiches par defaut
	removeObject("recapitulatif_promo_img");
	removeObject("recapitulatif_promo_label");
	removeObject("recapitulatif_promo_value");
	removeObject(global_recap3_name);
	
	removeObject("recapitulatif_priceDescription");
	
	removeObject("recapitulatif_monthly_img");
	
	if (global_monthly_value_initial == "")
	{
		removeObject("recapitulatif_monthly_label");
		removeObject("recapitulatif_monthly_value");	
	}
	
	// liste les criteres choisis par l'utilisateur	
			
	// designe l'etape actuelle
	global_step_number = "3";
	
	//SFGACFR
	if ((typeof global_BA_Used != "undefined") && global_BA_Used)
	{
		updateHBFinition();
	}
	//SFGACFR
}

/* Indique si la case associee a  un code LCDV est cochee
 *
 * @param	string		code LCDV associe a  la case a  cocher a  verifier
 */
function is_checked(code)
{
	return (tab_criteres[code]["checked"] >= 1);
}

/* Indique si la case associee a un code LCDV est cochee mais non induit
* @param string		code LCDV associe a la case a cocher a verifier
*/
function is_checked_1(code)
{
	return (tab_criteres[code]["checked"] == 1);
}

/* Indique si la case associee a un code LCDV est cochee et induit
* @param string		code LCDV associe a la case a cocher a verifier
*/
function is_checked_2(code)
{
	return (tab_criteres[code]["checked"] == 2);
}

/* Indique si la case associe a un code LCDV est grise et non induit 
 * @Param string	code LCDV associe a la case a cocher a verifier  
*/
function is_disabled(code)
{
	return (tab_criteres[code]["checked"] == -1);
}

/* correctly sets the flag in order to keep the rollover opened
 */
function keep_rollover()
{
	flag_rollover = true;
}


/* masque la boite de choix de silhouette
 */
function modifier_choix()
{
	for ( var key in tab_criteres )
	{
		// reinitialisation de toutes les checkbox
		if ( tab_criteres[key]["criterium_type"] == "bodyStyle" )
		{
			removeObject("checkbox_" + key);
			switch_criterium(key, 0);
		}
	}

	tab_configuration["bodyStyle"] = "";
	removeObject("mask_body");
	removeObject("rolloverBodyStyle");

	return false;
}


/* deactivates the links of elements of the navigation bar for steps after the 
 * current one
 */
function navigationbar_deactivate_links()
{
	// Operations à ne pas effectuer pendant la phase d'initialisation
	if (global_modification_made && !global_initialization)
	{
		var maxSteps = 16;
		var begin = parseInt(global_step_number) + 1;
		for (var i = begin; i <= maxSteps; i++)
		{
			var id = "NavBar_Etape_" + i;

			// Removes the href attribute
			var navigation_object = getObject(id);
			if (navigation_object != null && navigation_object != false)
			{
				var navigation_link = navigation_object.getElementsByTagName("a");
				navigation_link.item(0).removeAttribute("href");

				// Changes the style of the navigation element
				//setObjectClassName(id, "NA");
			}
		}
	}
}


/*
 * Permet de preparer un layer avec des IDs de controles dynamiques pour un postBack
*/
function prepareFormForDynamicID(idServerForm, titre, idTitre,message, idMessage, idbutton)
{
	setObjectContent(idTitre, titre);
	setObjectContent(idMessage, message);
	
	var leForm = document.getElementById(idServerForm);
	leForm.__EVENTTARGET.value = idbutton;
}


/** 
 * Handler de l'evenement document.onkeypress
 * dans le cas des popup sous forme de layer 
 */
function process_keypress(evt)
{
	evt = (evt) ? evt : (window.event) ? window.event : "";
	
	if (evt.keyCode == 13)
	{
		//on stocke l'action a effectuer en local
		var local_action = global_action_enter_pressed;
		
		//on reinitialise l'actino globale
		//global_action_enter_pressed = "";
		
		//on effectue l'action
		eval(local_action);
		
		//dans le cas ou l'action ne fait pas changer de page
		return false;
	}
}

/* updates the "recapitulatif" on the bottom of the second page
 */
function recapitulatif_update()
{
	// mise a  jour du prix en bas de page
	conditions = request_create_bis();
	request_add(conditions, "bodyStyle", "==", tab_configuration["bodyStyle"]);
	resultat = select("", conditions, Array(Array("price", "asc")), 1, false);
	
	var textPrice = resultat[0]["textprice"];
	var numericPrice = resultat[0]["price"];
	var versionLabel = resultat[0]["versionLabel"];
	var lcdv = resultat[0]["LCDV"];
	
	setObjectContent("recapitulatif_prix_value", textPrice);
		if (currentConfigurationPrice != null && currentConfigurationPrice != "")
		{
			setObjectContent("recapitulatif_prix_value", currentConfigurationPrice);
		}
	
	//SFGACFR - mise a jour de l'encart de financement au besoin
	update_recap_finance(lcdv, numericPrice, versionLabel);
				
	showObject("recapitulatif_prix");

	// examen des eventuelles promotions
	request_add(conditions, "promo", "!=", 0);
	resultat = select("", conditions, Array(Array("promo", "desc")), 1, false);
	if ( resultat.length > 0 )
	{
		// au moins une promo
		setObjectContent("detail_promo_value", resultat[0]["textpromo"] + " "+ ttc_or_ht);
		displayObject("detail_promo");
	}
	else
	{
		removeObject("detail_promo");
	}

	// mise a  jour du label technique en bas de page
	var label = "";
	for ( var key in tab_configuration )
	{
		if ( (key != "bodyStyle" ) && (tab_configuration[key] != "") )
		{
			label = tab_criteres[tab_configuration[key]]["name"] + ", " + label;
		}
	}

	if ( label != "" )
	{
		label = label.substr(0, label.length - 2);
		setObjectContent(global_recap2_name, label);
		showObject(global_recap2_name);
		var liclass = document.getElementById(global_recap2_name).parentNode.className;
		var start = liclass.indexOf(" ", 0);
		if (start != -1)
		{
			document.getElementById(global_recap2_name).parentNode.className = liclass.substr(0, start);
		}
	}
	else
	{
		hideObject(global_recap2_name);
		var liclass = document.getElementById(global_recap2_name).parentNode.className;
		var start = liclass.indexOf(" ", 0);
		if (start == -1)
		{
			document.getElementById(global_recap2_name).parentNode.className += " hidden";
		}
	}
}




/* Ajoute une nouvelle condition a  une contrainte. Si un critere d'egalite 
 * portant sur le critere de cette condition existe, il est supprime.
 *
 * @param	Array		contrainte pre-existante
 * @param	string		critere touche par cette nouvelle contrainte
 * @param	string		type de contrainte : egalite, superiorite, 
 *				inferiorite, difference, etc.
 * @param	value		valeur a  laquelle comparer le critere
 */
function request_add(myRequest, myCriterium, operation, value)
{
	// equality has a greater level than any other rule
	request_remove(myRequest, myCriterium, "==");

	// adds the new criterium
	myRequest.push(Array(operation, myCriterium, value));
}


/* Cree une requete par defaut, a  partir des donnees qui se trouvent dans le 
 * tableau tab_configuration
 *
 * @return	Array		contrainte correspondant aux criteres choisis 
 *						par l'utilisateur
 */
function request_create()
{
	/*var conditions = new Array("&&", 
			Array("==", "model", tab_configuration["model"]), 
			Array("==", "grBodyStyle", tab_configuration["grBodyStyle"]), 
			Array("==", "energy", tab_configuration["energy"]), 
			Array("==", "grTT", tab_configuration["grTT"]), 
			Array(">=", "price", tab_configuration["minimalPrice"]), 
			Array("<=", "price", tab_configuration["maximalPrice"])
			);
	*/
	var conditions = new Array("&&", 
			Array("==", "model", tab_configuration["model"]), 
			Array("==", "grBodyStyle", tab_configuration["grBodyStyle"]), 
			Array("==", "energy", tab_configuration["energy"]), 
			Array("==", "grTT", tab_configuration["grTT"]), 
			Array("||",
				Array("&&",
					Array(">=", "price", tab_configuration["minimalPrice"]), 
					Array("<=", "price", tab_configuration["maximalPrice"])
					),
				Array("&&",
					Array(">=", "pricemax", tab_configuration["minimalPrice"]), 
					Array("<=", "pricemax", tab_configuration["maximalPrice"])
					)
				),
			Array("==", "ecoLabel", tab_configuration["ecoLabel"])
			);
	return conditions;
}


/** Ajout Hicham*/
function request_create_Max()
{
	var conditions = new Array("&&", 
			Array("==", "model", tab_configuration["model"]), 
			Array("==", "grBodyStyle", tab_configuration["grBodyStyle"]), 
			Array("==", "energy", tab_configuration["energy"]), 
			Array("==", "grTT", tab_configuration["grTT"]), 
			Array(">=", "priceMax", tab_configuration["minimalPrice"]), 
			Array("<=", "priceMax", tab_configuration["maximalPrice"])
			);
	return conditions;
}


/* Cree une requete par defaut pour la seconde etape de la configuration, a  
 * partir des donnees qui se trouvent dans le tableau tab_configuration
 *
 * @return	Array		contrainte correspondant aux criteres choisis 
 *				par l'utilisateur
 */
function request_create_bis()
{
	var conditions = new Array("&&", 
			Array("==", "energy", tab_configuration["energy"]), 
			Array("==", "transmissionType", tab_configuration["transmissionType"]), 
			Array("==", "engine", tab_configuration["engine"]), 
			Array("==", "bodyStyle", tab_configuration["bodyStyle"])
			);

	return conditions;
}


/* Supprime des conditions d'une contrainte.
 *
 * @param	Array		contrainte pre-existante
 * @param	string		critere touche par les conditions a  supprimer.
 * @param	value		operation effectuee par les conditions a  
 *				supprimer.
 */
function request_remove(myRequest, myCriterium, operation)
{
	// removes all occurences of criteriums about myCriterium
	for ( var key in myRequest )
	{
		if ( (myRequest[key][0] == operation)
			&& (myRequest[key][1] == myCriterium) )
		{
			myRequest.splice(key,1);
		}
	}
}


/* Resets the rollover state; called after checking a checkbox
 */
function rollover_clean()
{
	setObjectSrc("graphique", global_default_engine_graphic);
	if ( global_displayable_engine != "" )
	{
		rollover_remove_code(global_displayable_engine);
	}

	displayObject("rollover_default");
	removeObject("rollover_" + global_rollover_displayed);
	if ( global_displayable_rollover != "" )
	{
		removeObject("rollover_" + global_displayable_rollover);
		rollover_remove_code(global_displayable_rollover);
	}
}

			
/* Annule l'enregistrement du code lcdv du critere montre en rollover (2e page)
 */
function rollover_remove_code(code)
{
	if ( tab_criteres[code]["criterium_type"] == "engine" )
	{
		// le critere a  annuler est un moteur
		if ( global_displayable_engine == code )
		{
			global_displayable_engine = "";
		}
	}
	else
	{
		// autres types de criteres
		if ( global_displayable_rollover == code )
		{
			global_displayable_rollover = "";
		}
	}
}

			
/* Enregistre le code lcdv du critere a  montrer en rollover (2e page)
 */
function rollover_set_code(code)
{
	if ( tab_criteres[code]["criterium_type"] == "engine" )
	{
		// le critere est un moteur
		if ( (typeof(tab_criteres[code]["graphic"]) != "undefined") && (tab_criteres[code]["graphic"] != "") )
		{
			global_displayable_engine = code;
		}
	}
	else if ( tab_criteres[code]["criterium_type"] != "bodyStyle" )
	{
		// autres types de criteres
		if ( getObject("rollover_" + code) )
		{
			global_displayable_rollover = code;
		}
	}
}


/* Displays both actually selected rollovers
 */
function rollover_show()
{
	if ( global_displayable_engine != "" )
	{
		r_show_rollover(global_displayable_engine);
	}

	if ( global_displayable_rollover != "" )
	{
		r_show_rollover(global_displayable_rollover);
	}
}


/* Affiche le formulaire d'acces aux configurations enregistrees
 */
/*
function sauvegardes_acces()
{
	// displays the form
	displayObject("sauvegardes_load");
	return false;
}*/

function sauvegardes_acces(mail)
{	
	if (mail == undefined || global_step1_init)
	{
		displayObject("sauvegardes_load");
		displayObject("gli_mask");
		
		//gestion de l'action suite a l'appui sur la touche Entree
		var actionEnter = getObjectContent("sauvegardes_load_actionEnterPressed");
		global_action_enter_pressed = actionEnter;
		document.onkeypress = process_keypress;
	}
	else
	{
		var url = url_page_sauvegardes + "?&email=";
		url += mail;
		window.location = url;
	}
	return false;
}


/* Affiche le formulaire d'acces aux configurations enregistrees
 */
function sauvegardes_close()
{
	removeObject("gli_mask");
	removeObject("sauvegardes_load");
	return false;
}


/* redirige vers la page des configurations sauvegardees
 */
function sauvegardes_redirect(idForm)
{
	var form = document.getElementById(idForm);
		
	var reg = /^[\w\-.]+@[a-zA-Z0-9\-.]+$/;
	var mail1 = form.elements["email1"].value;
	var mail2 = form.elements["email2"].value;
	
	if (mail1 == "")
	{
		closeLayerPopup('sauvegardes_load');
		setObjectContent('lblCheckMail',form.elements["email_miss"].value);
		showLayerPopup('layerCheckMail');
		return false;
	}
	else if (mail1 != mail2)
	{
		closeLayerPopup('sauvegardes_load');
		setObjectContent('lblCheckMail',form.elements["email_diff"].value);
		showLayerPopup('layerCheckMail');
		return false;
	}
	else if (!reg.test(mail1))
	{
		closeLayerPopup('sauvegardes_load');
		setObjectContent('lblCheckMail',form.elements["email_invalid"].value);
		showLayerPopup('layerCheckMail');
		return false;
	}
	else
	{
		var url = url_page_sauvegardes + "?email=";
		url += mail1;

		window.location = url;
	}
	return false;
}


/* Fixe le modele
 */
function set_model(model)
{
	tab_configuration["model"] = model;
}

/* Affichage du ToolTip
 *
 * @param	string		texte du tooltip à afficher
 * @param	string		id du tooltip
 * @param	string		id du sender
 */
function show_ToolTip(desc, idMarkup, senderID)
{	
	
	var objHeight;
	var limit = getMouseY() - 8;
	var y;
	var x;
	setObjectContent(idMarkup+'_text', desc);
	
	var balise = getObject(idMarkup);
	
	displayObject(idMarkup);
	//displayObject('tip_rollover_arrow');
	//alert (balise.offsetHeight);		
		
	objHeight = getObjectHeight(idMarkup);
	objwidth = getObjectWidth(idMarkup);
	
	var object = document.getElementById(senderID);
	if (object != null)
	{
		var position = getObjectPosition(object);
		x = position[0] + object.offsetWidth + 3;
		y = position[1] - 31;		
	}
	else
	{
		y = getMouseY();
		if (objHeight + y > limit)
		{
			y = limit - objHeight;
		}
		y = y - 9;
		
		x = getMouseX() - 117;
	}
	
	
	// moves the tipbox where the mouse is
	moveObject(idMarkup, x, y);
	//moveObject(idMarkup+'_arrow', objwidth/2-4, objHeight-4);
}



function show_ToolTipLeftSide(desc, idMarkup, senderID)
{	
	
	var objHeight;
	var limit = getMouseY() - 8;
	var y;
	var x;
	setObjectContent(idMarkup+'_text', desc);
	
	var balise = getObject(idMarkup);
	
	displayObject(idMarkup);
	//displayObject('tip_rollover_arrow');
	//alert (balise.offsetHeight);		
		
	objHeight = getObjectHeight(idMarkup);
	objwidth = getObjectWidth(idMarkup);
	
	var object = document.getElementById(senderID);
	if (object != null)
	{
		var position = getObjectPosition(object);
		x = position[0] + object.offsetWidth - 160;
		y = position[1] - 22;		
	}
	else
	{
		y = getMouseY();
		if (objHeight + y > limit)
		{
			y = limit - objHeight;
		}
		y = y - 9;
		
		x = getMouseX() - 117;
	}
	
	
	// moves the tipbox where the mouse is
	moveObject(idMarkup, x, y);
	//moveObject(idMarkup+'_arrow', objwidth/2-4, objHeight-4);
}





/* Affichage du ToolTip
 *
 * @param	string		texte du tooltip à afficher
 * @param	string		id du tooltip
 * @param	string		id du sender
 */
function show_priceDesc(desc, idMarkup, senderID)
{
	
	var objHeight;
	var limit = getMouseY() - 8;
	var y;
	var x;
	setObjectContent(idMarkup+'_text', desc);
	
	var balise = getObject(idMarkup);
	
	displayObject(idMarkup);
	//displayObject('tip_rollover_arrow');
	//alert (balise.offsetHeight);		
		
	objHeight = getObjectHeight(idMarkup);
	objwidth = getObjectWidth(idMarkup);
	
	var object = document.getElementById(senderID);
	if (object != null)
	{
		var position = getObjectPosition(object);
		x = position[0] - objwidth;
		y = position[1] - objHeight + 35;		
	}
	else
	{
		y = getMouseY();
		if (objHeight + y > limit)
		{
			y = limit - objHeight;
		}
		y = y - 9;
		
		x = getMouseX() - 117;
	}
	
	
	// moves the tipbox where the mouse is
	moveObject(idMarkup, x, y);
	//moveObject(idMarkup+'_arrow', objwidth/2-4, objHeight-4);
}

/* Affichage du rollover sur la promotion (barre de recap.)
 *
 * @param	string		titre du rollover
 * @param	string		descriptif de la promotion
 * @param	string		id de la balise div devant etre affiche
 */
function show_descPromo(desc, idMarkup, senderID)
{	
	var objHeight;
	var limit = getMouseY() - 8;
	var y;
	var x;
	setObjectContent(idMarkup+'_text', desc);
	
	var balise = getObject(idMarkup);
	
	displayObject(idMarkup);
	//displayObject('tip_rollover_arrow');
	//alert (balise.offsetHeight);		
		
	objHeight = getObjectHeight(idMarkup);
	objwidth = getObjectWidth(idMarkup);
	
	var object = document.getElementById(senderID);
	if (object != null)
	{
		var position = getObjectPosition(object);
		x = position[0] - objwidth;
		y = position[1] - objHeight + 35;		
	}
	else
	{
	
	y = getMouseY();
		if (objHeight + y > limit)
		{
			y = limit - objHeight;
		}
		y = y - 9;
		x = getMouseX() - 117;
	}
	// moves the tipbox where the mouse is
	moveObject(idMarkup, x, y);
	//moveObject(idMarkup+'_arrow', objwidth/2-4, objHeight-4);
}





/* Affichage du rollover sur la recap Accessoire et Service
 *
 * @param	string		titre du rollover
 * @param	string		descriptif de la promotion
 * @param	string		id de la balise div devant etre affiche
 */
function show_descAcsServ(desc, idMarkup, senderID)
{	
	var objHeight;
	var limit = getMouseY() - 8;
	var y;
	var x;
	setObjectContent(idMarkup+'_text', desc);
	
	var balise = getObject(idMarkup);
	
	displayObject(idMarkup);
	//displayObject('tip_rollover_arrow');
	//alert (balise.offsetHeight);		
		
	objHeight = getObjectHeight(idMarkup);
	objwidth = getObjectWidth(idMarkup);
	
	var object = document.getElementById(senderID);
	if (object != null)
	{
		var position = getObjectPosition(object);
		x = position[0] - objwidth;
		y = position[1] - objHeight + 35;		
	}
	else
	{
		y = getMouseY();
		if (objHeight + y > limit)
		{
			y = limit - objHeight;
		}
		x = getMouseX() - objwidth -20;
		y = y+20;
	}
	// moves the tipbox where the mouse is
	moveObject(idMarkup, x, y);
	//moveObject(idMarkup+'_arrow', objwidth-4, objHeight/2-10);
}

/* Affiche quels sont les equipements associes a  une finition
 *
 * @param	string		code de la finition
 */
function show_equipement(code)
{	
	//Affichage de l'image correspondant a  la finition survolee
	setObjectSrc("image_finition", tab_finitions[code]["graphic"]);
		
	// grisage de tous les equipements
	resultat = select(Array("equipement"), "", "", "", true);

	for ( var key in resultat )
	{
		var equipement = resultat[key]["equipement"];
		switch_equipement(equipement, 0);
	}

	// activation des equipements de la finition choisie
	resultat = select(Array("equipement"), Array("==", "finition", code), "", "", true);
	for ( var key in resultat )
	{
		var equipement = resultat[key]["equipement"];
		switch_equipement(equipement, 1);
	}
	
	finition_show_picto();
	finition_show_cat_equip();
}

/* Affichage de description dans la zone recap de l'etape 3
*
* @param string		id element
*/
function show_finition_recap_desc(obj,senderId)
{	
	var code = finition_configuration;
	
	var string = obj;
	var len = string.length;
	var position = eval(len - 12);
	var tipType = string.substring(position, len)

	if(tipType == "tip_descPrix") 
	{
		desc = tab_finitions[code]["priceDescription"];
	}
	else 
	{
		desc = tab_finitions[code]["descDiscount"];
	}
		
	show_descPromo(desc,obj,senderId);	
}

/* Gestion affichage du popup de financement dans l'etape 3
*
* @param int	width
* @param int	height
* @param bool   scroll => 1 ou 0
*/
function show_finition_financial_popup(width,height,scroll)
{	
	var url = tab_finitions[finition_configuration]["financingInfo"];
	if (FinancialFrameType)
	{		
		openCustomPopup(url,"financialPopup",width,height,scroll);
	}
	else
	{
		window.location = url;
	}
	
}



/* A commenter
 */
function show_rolloverOptions(code)
{
	if ( global_displayable_rollover != "" )
	{
		if ( (code != global_displayable_rollover) && (displayObject("rollover_" + code)) )
		{
			removeObject("rollover_" + global_displayable_rollover);
		}
	}
	else
	{
		if ( displayObject("rollover_" + code) )
		{
			removeObject("rollover_default");
		}
	}
}



/* Affiche un rollover contenant des details sur le critere survole
 *
 * @param	string		code LCDV associe au critere survole
 */
function show_tip(code)
{
	if ( tab_criteres[code]['text'] != "" )
	{
		// sets tipbox content
		setObjectContent("tip_rollover", tab_criteres[code]['text']);

		var pos_y_limite = getWindowHeight();
		var objHeight;
		var y;
		var y2;
		var yMouse = getMouseY();
		
		// displays the tipbox
		displayObject("tip_rollover");
		
		objHeight = getObjectHeight("tip_rollover");
		y2 = yMouse + objHeight;
		
		if (y2 > pos_y_limite)
		{
			y = pos_y_limite - objHeight - 8;
		}
		else
		{
			y = yMouse;
		}
		
		// moves the tipbox (the tipbox must not exceed the bottom bord 
		// of the page)
		moveObject("tip_rollover", getMouseX() + 10, y);
		
	}
}
function show_tip(code, senderID)
{
	if ( tab_criteres[code]['text'] != "" )
	{
		// sets tipbox content
		setObjectContent("tip_rolloverPacks_text", tab_criteres[code]['text']);
	
		var pos_y_limite = getWindowHeight();
		var objHeight;
		var y;
		var x = 0;
		var y2;
		var yMouse = getMouseY();
		
		// displays the tipbox
		displayObject("tip_rolloverPacks");
		
		objHeight = getObjectHeight("tip_rolloverPacks");
		objWidth = getObjectWidth("tip_rolloverPacks");
		
		
		var object = document.getElementById(senderID);
		if (object != null)
		{
			var position = getObjectPosition(object);
			x = position[0] + object.offsetWidth + 8;
			y = position[1] -22;		
		}
		else
		{
			x = getMouseX() + 10;
			y2 = yMouse + objHeight;
			if (y2 > pos_y_limite)
			{
				y = pos_y_limite - objHeight - 8;
			}
			else
			{
				y = yMouse;
			}
		}
		
		// moves the tipbox (the tipbox must not exceed the bottom bord 
		// of the page)
		moveObject("tip_rolloverPacks", x, y);
		
	}
}

function show_tipEcolo_Meca_VU(text, senderID)
{
	if ( text != "" )
	{
		// sets tipbox content
		setObjectContent("tip_rolloverEcolo_text", text);
	
		var pos_y_limite = getWindowHeight();
		var objHeight;
		var y;
		var x = 0;
		var y2;
		var yMouse = getMouseY();
		
		// displays the tipbox
		displayObject("tip_rolloverEcolo");
		
		objHeight = getObjectHeight("tip_rolloverEcolo");
		objWidth = getObjectWidth("tip_rolloverEcolo");
		
		
		var object = document.getElementById(senderID);
		if (object != null)
		{
			var position = getObjectPosition(object);
			x = position[0] + object.offsetWidth;
			y = position[1] - 10;		
		}
		else
		{
			x = getMouseX() + 10;
			y2 = yMouse + objHeight;
			if (y2 > pos_y_limite)
			{
				y = pos_y_limite - objHeight - 8;
			}
			else
			{
				y = yMouse;
			}
		}
		
		// moves the tipbox (the tipbox must not exceed the bottom bord 
		// of the page)
		moveObject("tip_rolloverEcolo", x, y);
		
	}
}

function show_tipEcolo(text, senderID)
{
	if ( text != "" )
	{
		// sets tipbox content
		setObjectContent("tip_rolloverEcolo_text", text);
	
		var pos_y_limite = getWindowHeight();
		var objHeight;
		var y;
		var x = 0;
		var y2;
		var yMouse = getMouseY();
		
		// displays the tipbox
		displayObject("tip_rolloverEcolo");
		
		objHeight = getObjectHeight("tip_rolloverEcolo");
		objWidth = getObjectWidth("tip_rolloverEcolo");
		
		
		var object = document.getElementById(senderID);
		if (object != null)
		{
			var position = getObjectPosition(object);
			x = position[0] + object.offsetWidth + 8;
			y = position[1] -22;	
			if (global_step_number != 1)
			{
				y = y -8;	
			}
		}
		else
		{
			x = getMouseX() + 10;
			y2 = yMouse + objHeight;
			if (y2 > pos_y_limite)
			{
				y = pos_y_limite - objHeight - 8;
			}
			else
			{
				y = yMouse;
			}
		}
		
		// moves the tipbox (the tipbox must not exceed the bottom bord 
		// of the page)
		moveObject("tip_rolloverEcolo", x, y);
		
	}
}

function show_tipEcolo_Recap(text, senderID)
{
	if ( text != "" )
	{
		// sets tipbox content
		setObjectContent("tip_rolloverEcoloRecap_text", text);
	
		var pos_y_limite = getWindowHeight();
		var objHeight;
		var y;
		var x = 0;
		var y2;
		var yMouse = getMouseY();
		
		// displays the tipbox
		displayObject("tip_rolloverEcoloRecap");
		
		objHeight = getObjectHeight("tip_rolloverEcoloRecap");
		objWidth = getObjectWidth("tip_rolloverEcoloRecap");
		
		
		var object = document.getElementById(senderID);
		if (object != null)
		{
			var position = getObjectPosition(object);
			x = position[0] - objWidth;// +8;
			y = position[1] - 6;	

		}
		else
		{
			x = getMouseX() + 10;
			y2 = yMouse + objHeight;
			if (y2 > pos_y_limite)
			{
				y = pos_y_limite - objHeight - 8;
			}
			else
			{
				y = yMouse;
			}
		}
		
		// moves the tipbox (the tipbox must not exceed the bottom bord 
		// of the page)
		moveObject("tip_rolloverEcoloRecap", x, y);
		
	}
}


function show_tipEcolo_ChoiceAssistant(text, senderID)
{
	if ( text != "" )
	{
		// sets tipbox content
		setObjectContent("tip_rolloverEcoloRecap_text", text);
	
		var pos_y_limite = getWindowHeight();
		var objHeight;
		var y;
		var x = 0;
		var y2;
		var yMouse = getMouseY();
		
		// displays the tipbox
		displayObject("tip_rolloverEcoloRecap");
		
		objHeight = getObjectHeight("tip_rolloverEcoloRecap");
		objWidth = getObjectWidth("tip_rolloverEcoloRecap");
		
		
		var object = document.getElementById(senderID);
		if (object != null)
		{
			var position = getObjectPosition(object);
			x = position[0] - objWidth;
			y = position[1] - 30;	

		}
		else
		{
			x = getMouseX() + 10;
			y2 = yMouse + objHeight;
			if (y2 > pos_y_limite)
			{
				y = pos_y_limite - objHeight - 8;
			}
			else
			{
				y = yMouse;
			}
		}
		
		// moves the tipbox (the tipbox must not exceed the bottom bord 
		// of the page)
		moveObject("tip_rolloverEcoloRecap", x, y);
		
	}
}


/* Affichage description des packs
 */
function show_tipPacks(code, senderID)
{
	var packRow = tab_packs[code];
	if (packRow == null)
		return ;
	var packText = packRow['text'];
	if (packText == null || packText == "")
		return ;
	
	setObjectContent("tip_rolloverPacks_text", descriptionPack + "<br/>" + packText);
	displayObject("tip_rolloverPacks");
	
	objHeight = getObjectHeight("tip_rolloverPacks");
	objWidth = getObjectWidth("tip_rolloverPacks");
	
	var y = getMouseY();
	var x = 0;
	
	var object = document.getElementById(senderID);
	if (object != null)
	{
		var position = getObjectPosition(object);
		x = position[0] + object.offsetWidth + 3;
		y = position[1] - 31;		
	}
	else
	{
		var pos_y_limit = getWindowHeight();
		var objHeight;		
		var y2 = y + objHeight/2;
		if (y2 > pos_y_limit)
		{
			y = pos_y_limit - objHeight - 8; 
		}
		x =  getMouseX() + 20;
		y = y-objHeight/2;
	}
	
	moveObject("tip_rolloverPacks", x, y);
	//moveObject("tip_rolloverPacks"+'_arrow',-12, objHeight/2-13);		
}

/*
Ouverture d'une popup affichant les caracteristiques techniques d'un outil depuis l'assistant choix
*/
function ShowAllFeaturesAC(versionId)
{	
	var showSummary = "0";
	var showTotal = "0";
	var showFeatures = "1";
	
	// Financement
	var sfgRecap = document.getElementById("sfgRecap");
	var hasSfg = (sfgRecap != null && (sfgRecap.style.display == "block" || sfgRecap.style.display == ""));
	var fujitsuRecap = document.getElementById("fujitsuRecap");
	var hasFujitsu = (fujitsuRecap != null && (fujitsuRecap.style.display == "block" || fujitsuRecap.style.display == ""));
	var showFinancing = ((hasSfg || hasFujitsu) ? "1" : "0");
	
	var url = "showAllFeatures.aspx?versionid=" + versionId
		+ "&showFinancing=" + showFinancing
		+ "&showTotal=" + showTotal + "&showSummary=" + showSummary
		+ "&showTechFeatures=" + showFeatures + "&headerType=SmallestPrice";	
	
	versionId = versionId.replace(';','_');
	openCustomPopUp3(url,"showAllFeatures"+versionId,650,720,"0","0","0");
}

/*
Ouverture d'une popup affichant les caracteristiques techniques d'un outil
*/
function ShowAllFeatures(versionId)
{	
	var showSummary = (global_step_number < 0 || global_step_number > 3) ? "1" : "0";
	var showTotal = (global_step_number < 0 || global_step_number > 6) ? "1" : "0";
	var showFeatures = (global_step_number < 0 || global_step_number >= 3) ? "1" : "0";
	
	// Financement
	var sfgRecap = document.getElementById("sfgRecap");
	var hasSfg = (sfgRecap != null && (sfgRecap.style.display == "block" || sfgRecap.style.display == ""));
	var fujitsuRecap = document.getElementById("fujitsuRecap");
	var hasFujitsu = (fujitsuRecap != null && (fujitsuRecap.style.display == "block" || fujitsuRecap.style.display == ""));
	var showFinancing = ((hasSfg || hasFujitsu) ? "1" : "0");
	
	var url = "showAllFeatures.aspx?versionid=" + versionId
		+ "&showFinancing=" + showFinancing
		+ "&showTotal=" + showTotal + "&showSummary=" + showSummary
		+ "&showTechFeatures=" + showFeatures + "&headerType=SmallestPrice";	
	
	versionId = versionId.replace(';','_');
	openCustomPopUp3(url,"showAllFeatures"+versionId,650,720,"0","0","0");
}


/* affiche le layer contenant une information de type "alert" ou "confirm"
 * affiche le masque (calque) permettant d'empecher la modification des autres
 * elements de la page
 *
 * A commenter : parametres
 */
function showLayerPopup(idlayer)
{
	displayObject("gli_mask");
	displayObject(idlayer);
	
	//gestion de l'action a effectuer en cas d'appui sur la touche entree
	var idActionMarkup = idlayer + "_actionEnterPressed";
	
	//verification que la balise contenant l'action existe
	if (document.getElementById(idActionMarkup))
	{
		var actionEnter = getObjectContent(idActionMarkup);
		global_action_enter_pressed = actionEnter;
		document.onkeypress = process_keypress;
	}
	
	centerOnWindow(idlayer);	
	return false;
}	

function showLayerPopupBis(idlayer)
{
	var gli_mask = document.getElementById('gli_mask');
	gli_mask.style.zIndex = "15000";
	
	showLayerPopup(idlayer);
	
	
	return  displayObject(idlayer);
}

/* Ouverture et fermeture automatique du layer
 *
 * A commenter : parametres
 */
function showLayerPopupAutoClose(idlayer, timeout)
{
	showLayerPopup(idlayer);
	setTimeout('closeLayerPopup("' + idlayer + '")',timeout);
	return false;
}

/* Submit le formulaire passe en parametre 
 */
function submitThisForm(idForm, idSubmitBy)
{
	var form = document.getElementById(idForm);
	form.__EVENTTARGET.value = idSubmitBy;
	form.submit();
}


/* modifie l'apparence d'une case a  cocher
 *
 * @param	string		code LCDV du critere associe a  la checkbox
 * @param	{0|1|-1}	indique le type d'operation a  effectuer :
 *				  0 : normal (cochable)
 *				  1 : coche
 *				  2 : grise coche (ie., induit)
 *				 -1 : grise
 */
function switch_checkbox(code, state)
{
	if ( code != "" )
	{
		switch ( parseInt(state) )
		{
		case -1 :
			var className = "checkbox_disabled";
			break;
		case 0 :
			var className = "";
			break;
		case 1 :
			var className = "checkbox_checked";
			break;
		case 2 :
			var className = "checkbox_induced";
			break;
		default :
			var className = "";
			break;
		}
		setObjectClassName("checkbox_" + code, className);
	}
}


/* modifie l'etat d'un critere (selectionnable, selectionne ou non compatible)
 *
 * @param	string		code LCDV du critere
 * @param	{0|1|-1}	indique le type d'operation a  effectuer :
 *				  0 : normal (cochable)
 *				  1 : coche
 *				  2 : grise coche (ie., induit)
 *				 -1 : grise
 */
function switch_criterium(code, state)
{
	if ( code != "" )
	{
		// change l'etat du critere
		tab_criteres[code]["checked"] = state;
		
		// change l'etat de la checkbox asociee.
		switch_checkbox(code, state);

		// change l'etat du radio associe
		switch_radio(code, state);
	}
}


/* modifie l'apparence d'un equipement
 *
 * @param	string		code LCDV de l'equipement a  manipuler
 * @param	{0|1}		indique le type d'operation a  effectuer :
 *				  0 : grise
 *				  1 : actif
 */
function switch_equipement(code, state)
{	
	var className ="";
	if ( code != "" )
	{
		switch ( state )
		{
		case 0 :
			className = "equipement_no_selected";
			break;
		case 1 :
			className = "equipement_selected";
			break;
		}
		setObjectClassName("equipement_" + code, className);
	}
}

//-----------------------------------------------------------------------------

var toggleItems_initialized = false;
var toggleItems_Current = null;

/*function ToggleItems(obj)
{
	
	var maxHeight = 0;

	var item = GetNextTag(obj, "li");
	if (obj == null || item == null)
		return ;

	if (obj.className == "Open")
	{
		obj.className = "Close";
		item.style.display = "none";
		toggleItems_Current = null;
	}
	else
	{
		var summary = document.getElementById("summaryBox");
		if (summary != null)
		{
			if (toggleItems_initialized == false)
			{
				toggleItems_Current = document.getElementById("optionList");
				toggleItems_initialized = true;
			}
			if (toggleItems_Current != null && toggleItems_Current != obj)
				ToggleItems(toggleItems_Current);
		
			// A ce moment précis tout est 'Close'.
			// --> On retrouve la hauteur du summary
			maxHeight = summary.clientHeight;
					
			obj.className = "Open";
			item.style.display = "";
			toggleItems_Current = obj;
			
			CheckHeight(item, summary, maxHeight);
		}
	}
}
*/

function ToggleItems(obj)
{
	var location = top.location.href.substring(top.location.href.lastIndexOf('/')+1,top.location.href.indexOf('?',0));
	if(location == "showAllFeatures.aspx")
	{
		if (obj == null)
			return;
		
		var item = GetNextTag(obj, "li");
		if(obj.className == "Open")
		{
			obj.className = "Close";
			item.style.display = "none";
		}
		else
		{
			obj.className = "Open";
			item.style.display = "block";
		}
	}
	else
	{
		var maxHeight = 0;

		var item = GetNextTag(obj, "li");
		if (obj == null || item == null)
			return ;

		if (obj.className == "Open")
		{
			obj.className = "Close";
			item.style.display = "none";
			toggleItems_Current = null;
		}
		else
		{
			var summary = document.getElementById("summaryBox");
			if (summary != null)
			{
				if (toggleItems_initialized == false)
				{
					toggleItems_Current = document.getElementById("optionList");
					toggleItems_initialized = true;
				}
				if (toggleItems_Current != null && toggleItems_Current != obj)
					ToggleItems(toggleItems_Current);
			
				// A ce moment précis tout est 'Close'.
				// --> On retrouve la hauteur du summary
				maxHeight = summary.clientHeight;
						
				obj.className = "Open";
				item.style.display = "";
				toggleItems_Current = obj;
				
				CheckHeight(item, summary, maxHeight);
			}
		}
	}
}


function CheckHeight(item, summary, maxHeight)
{
	if (item != null && summary != null && maxHeight > 0)
	{
		var difference = summary.clientHeight - maxHeight;
		item.style.height = (item.clientHeight - difference) + "px";
		if (item.style.overflowY != 'scroll')
			item.style.overflowY = (difference > 0) ? 'scroll' : 'visible';
	}
}


//-----------------------------------------------------------------------------

/* modifie l'apparence d'un radio (etape 2)
 *
 * @param	string		code LCDV du critere associe a  la checkbox
 * @param	{0|1|-1}	indique le type d'operation a  effectuer :
 *				  0 : normal (cochable)
 *				  1 : coche
 *				  2 : grise coche (ie., induit)
 *				 -1 : grise
 */
function switch_radio(code, state)
{
	var form = document.getElementById("data_form");
	var type = tab_criteres[code]["criterium_type"];
	
	// grTT => grTransmissionType
	if (type == "grTT")
	{
		type = "grTransmissionType";
	}

	if ( code != "" )
	{
		if ( state >= 1 )
		{
			if ( form.elements[type].value != undefined && form.elements[type].value != "")
			{
				//radio unique
				form.elements[type].checked = true;
			}
			else
			{
				// groupe de radios
				var i = 0;
				while ( i < form.elements[type].length )
				{
					if ( form.elements[type][i].value == code )
					{
						form.elements[type][i].checked = true;
					}
					else
					{
						form.elements[type][i].checked = false;
					}
					i++;
				}
			}
		}
		else
		{	
			if ( form.elements[type].value != undefined )
			{
				// radio unique
				form.elements[type].checked = false;
			}
			else
			{
				// groupe de radios
				var i = 0;
				while ( i < form.elements[type].length )
				{
					if ( form.elements[type][i].value == code )
					{
						form.elements[type][i].checked = false;
					}
					i++;
				}
			}
		}
	}
}

/* Fonctions de debug
 */

// afficher dans un boite de notification le contenu d'un tableau (indexe ou 
// associatif)
function voirTableau(untexte, monTableau)
{
	var texte = untexte + "\n-------------------------------\n\n";
	for ( x in monTableau )
	{
		texte += x + " : " + monTableau[x] + "\n";
	}
	alert(texte);
}

// afficher dans un boite de notification le contenu d'un tableau a  deux dimensions 
// (indexe ou associatif)
function voirTableauTableau(untexte, monTableau)
{
	var texte = untexte + "\n-------------------------------\n\n";
	for ( x in monTableau )
	{
		texte += "-------" + x + "-------\n";
		for ( y in monTableau[x] )
		{
			texte += y + " : " + monTableau[x][y] + "\n";
		}
	}
	alert(texte);
}

var dates = new Array();

// enregistre une date
function date_set_marker(label)
{
	var myDate = new Date();
	dates.push({"label":label, "date":myDate.getTime()});
}

// affiche les differents releves de dates
function date_summary()
{
	var myString = "";
	var date_initiale = dates[0]["date"];
	var key_old = 0;
	for ( var key in dates )
	{
		var norm = dates[key]["date"] - dates[0]["date"];
		var gap = dates[key]["date"] - dates[key_old]["date"];
		myString += "\n" + dates[key]["label"] + "     " + dates[key]["date"] + "     " + norm + "      " + gap;
		key_old = key;
	}
	alert(myString);
}

function debug_rollover_dump(titre)
{
//	alert(titre + "\n ------------------\n global_rollover_displayed = " + global_rollover_displayed + "\n global_displayable_rollover = " + global_displayable_rollover + "\n global_displayable_engine = " + global_displayable_engine);
}

/* Masque le rollover et reaffiche le texte par defaut
 *
 * @param	string		code LCDV associe au critere a  masquer
 */
function r_hide_rollover(code)
{
	r_rollover_show();
}



/* Resets the rollover state; called after checking a checkbox
 */
function r_rollover_clean()
{
	// moteur
	/////////////////////////////////
	removeObject("engineDesc");
	displayObject("graphique");
	/////////////////////////////////
	
	setObjectSrc("graphique", global_default_engine_graphic);
	global_engine_displayed = "";

	// rollover energie/boite de vitesses
	if(global_rollover_displayed.length == 1)
	{	
		removeObject("rollover_" + global_rollover_displayed);
		global_rollover_displayed = "";

		displayObject("rollover_default");
	}
}

			
/* Enregistre le code lcdv du critere a  montrer en rollover (2e page)
 */
function r_rollover_set_code(code)
{
	if ( tab_criteres[code]["criterium_type"] == "engine" )
	{
		// le critere est un moteur
		if ( (typeof(tab_criteres[code]["graphic"]) != "undefined") && (tab_criteres[code]["graphic"] != "") )
		{
			global_displayable_engine = code;
		}
	}
	else if ( tab_criteres[code]["criterium_type"] != "bodyStyle" &&  tab_criteres[code]["criterium_type"] != "energy")
	{
		// autres types de criteres
		if ( getObject("rollover_" + code) )
		{
			global_displayable_rollover = code;
		}
	}
}


/* Displays both actually selected rollovers
 */
function r_rollover_show()
{
	if ( global_displayable_engine != "" )
	{
		r_show_rollover(global_displayable_engine);
	}
	else
	{
	////////////////////////////////////
		removeObject("engineDesc");
		displayObject("graphique");
	/////////////////////////////////////
	
		setObjectSrc("graphique", global_default_engine_graphic);
		global_engine_displayed = "";
	}
	
	if ( global_displayable_rollover != "" )
	{
		r_show_rollover(global_displayable_rollover);
	}
	
	else
	{
		r_show_rollover("rollover_default");
	}
}


/* Affiche le rollover avec les infos adaptees
 *
 * @param	string		code LCDV associe au critere survole
 */
function r_show_rollover(code)
{
	if ( code == "rollover_default")
	{
		// effacement des precedents rollovers
		removeObject("rollover_" + global_rollover_displayed);

		// affichage du nouveau rollover
		displayObject("rollover_default");
		global_rollover_displayed = "";
	}
	else
	{
		var criterium = tab_criteres[code]["criterium_type"];
		if (criterium == "engine")
		{
			///////////ARA//////////////////////////////////
			
			// On regarde d'abord s'il y a une description
			if ((typeof (tab_criteres[code]["text"]) != "undefined")
				&& (tab_criteres[code]["text"] != "") )
			{
				var description = tab_criteres[code]["text"];
				setObjectContent("engineDesc", description);
				displayObject("engineDesc");
				
				global_engine_displayed = "";
				removeObject("graphique");
								
				return ;
			}
			// Ensuite on regarde s'il y a une image personnalisée
			else if ((typeof (tab_criteres[code]["graphic"]) != "undefined")
				&& (tab_criteres[code]["graphic"] != "") )
			{
				setObjectSrc("graphique", tab_criteres[code]["graphic"]);
				global_engine_displayed = code;
				displayObject("graphique");
								
				setObjectContent("engineDesc", "");
				removeObject("engineDesc");
			}
		}
		else
		{
			// autres types de criteres
			if (criterium != "bodyStyle" && criterium != "energy")
			{
				// effacement des precedents rollovers
				removeObject("rollover_default");
				removeObject("rollover_" + global_rollover_displayed);

				// affichage du nouveau rollover
				displayObject("rollover_" + code);
				global_rollover_displayed = code;
			}
		}
	}
}



var xmlhttp;
function Ajax_Execute(url, method, params, responseCallback)
{
	if (xmlhttp == null)
	{
		if (window.XMLHttpRequest)
			xmlhttp = new XMLHttpRequest();
		else if (window.ActiveXObject)
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
    
	url += "?AjaxRequest=" + method;
    if (params != null)
		for (var key in params)
			url += "&" + key + "=" + params[key];

	// On fait ça pour éviter la mise en cache
	var d = new Date();
	var guid = "" + d.getHours() + d.getMinutes() + d.getSeconds() + d.getMilliseconds();
	url += "&guid=" + guid;

	try
	{
		xmlhttp.open("GET", url, true);
		xmlhttp.onreadystatechange = function()
		{
			if (xmlhttp.readyState == 4 || xmlhttp.readyState == "complete")
				if (xmlhttp.status == 200 || xmlhttp.status == 304)
				{
					var values = Ajax_ParseResponse(xmlhttp.responseText);
					responseCallback(values);
				}
		}
	
		xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
		xmlhttp.send(null);
	}
	catch (ex) { /* alert(ex);*/  }
}

function Ajax_ParseResponse(text)
{
	var values = new Array();
	var items = text.split(";;");
	for (var i = 0; i < items.length; i++)
	{
		var parts = items[i].split("::");
		values[parts[0]] = parts[1];	
	}
	return values;
}









/*	Javascript de la page assistant choix */
function assitantChoice_Select(fintionId, checkboxID,horsbudget,price)
{
	var checkbox = document.getElementById(checkboxID);
	if (checkbox.checked == false)
	{

		var where_is_finition = selectedFinition.indexOf(fintionId);
		if (where_is_finition != -1)
		{
			var selectedFinitionTemp = "";
			selectedFinitionTemp = selectedFinition.substr(0,where_is_finition);
			selectedFinitionTemp += selectedFinition.substr(where_is_finition + fintionId.length + 1,selectedFinition.length);
			selectedFinition = selectedFinitionTemp;
			checkbox.checked == false;
			return null;
		}
	}
	else
	{
	
		if (selectedFinition.split(";").length >= 4)
		{
			var checkbox = document.getElementById(checkboxID);
			checkbox.checked = false;
			ShowLayerMessage(choiceAssistant_label_TooMany_finition);
		}
		else
		{
			if (selectedFinition.split(";").length == 1)
			{
				var form  = document.getElementById("frmAssistantChoice");
				for (var i = 0; i < form.length; i++)
				{
					myInput = form[i];
					if (myInput.id != "")
					{
						if (myInput.id.substr(0,24) == "rptMotorisationFinition2")
						{
							myInput.checked = false;
						}
						if (myInput.id == checkboxID)
						{
							myInput.checked = true;
						}
					}
					
				}
			}
			
			currentCarPrice = price;
			
			selectedFinition += fintionId + ";";
		}
	}
	
}

function assitantChoice_ConfigureOK()
{
	hideAlertHB();
}


function assitantChoice_Configure()
{
	if (selectedFinition.split(";").length == 1)
	{
		var form  = document.getElementById("frmAssistantChoice");
		for (var i = 0; i < form.length; i++)
		{
			myInput = form[i];
			if (myInput.id != "" && myInput.id.substr(0,24) == "rptMotorisationFinition2")
			{
				myInput.checked = false;
			}
		}
	}

	if (selectedFinition.split(";").length == 2)
	{
		var lcdv_Input = document.getElementById("SelectedLcdvCode");
		
		if (lcdv_Input)
		{
			lcdv_Input.value = selectedFinition.substr(0,selectedFinition.length-1) ;
		}
		
		var form  = document.getElementById("frmAssistantChoice");
		for (var i = 0; i < form.length; i++)
		{
			myInput = form[i];
			if (myInput.id != "" && myInput.id.substr(0,24) == "rptMotorisationFinition2")
			{
				if (myInput.checked == true)
				{
					var deb = myInput.attributes['onclick'].value.lastIndexOf(',');
					var end = myInput.attributes['onclick'].value.length-2;
					var price = myInput.attributes['onclick'].value.substring(deb+1,end);
					var horsbudget = myInput.attributes['onclick'].value.substring(deb-1,deb);
				}
				
			}
		}
		
		
		//Si l'approche budgetaire est activée et que cette sélection est hors budget
		if ((typeof global_BA_Used != "undefined") && global_BA_Used && horsbudget == "1" )
		{
			displayObject("gli_mask");
			displayObject("BA_alertHB");
			
			global_BA_pending_js_exec = function () { assitantChoice_ConfigureOK(); };		
			
			//JFL : il faut avoir le prix du véhicule sélectionné
			//      et le budget mensuel (max) actuel
			_new_car_price = price.substring(1,price.length-1);

			
			displayObject("BA_alertHB_question");
			global_Alert_BA_Span_Id = 'BA_alertHB_value';
			var callUrl = cst_genericTunnelPage + "?requestAsks=overBudget2&new_car_price=" + _new_car_price + "&lcdv=" + selectedFinition.substr(0,selectedFinition.length-1);
	
			sendServerRequest(callUrl, overBudgetResponseHandler2);
			
			return false;
		}

	
		/*
		var url = url_page_quatre + "?versionId=";
		url +=  selectedFinition.substr(0,selectedFinition.length-1) + "&start=true";
	
		window.location = url;
		*/
		return true;
	}
	else
	{
		if (selectedFinition.split(";").length < 2)
		{
			ShowLayerMessage(choiceAssistant_label_No_finition);
		}
		else
		{
			ShowLayerMessage(choiceAssistant_label_NotOne);
		}
		return false;
	}
}
function assitantChoice_Test()
{
	alert('!!!');
}

function assitantChoice_Compare_Popup()
{
	if(assitantChoice_Compare())
		window.open('compareVersion.aspx?VersionsId='+selectedFinition.substr(0,selectedFinition.length-1),'popupCompare','height=640, width=630,resizable=yes,scrollbars=yes,status=no,location=no,toolbar=no,menubar=no',true);				
		
	return false;
}

function assitantChoice_Compare()
{
	if (selectedFinition.split(";").length == 1)
	{
		var form  = document.getElementById("frmAssistantChoice");
		for (var i = 0; i < form.length; i++)
		{
			myInput = form[i];
			if (myInput.id != "" && myInput.id.substr(0,24) == "rptMotorisationFinition2")
			{
				myInput.checked = false;
			}
		}
	}
	
	
	if (selectedFinition.split(";").length >= 3 && selectedFinition.split(";").length <= 4)
	{
		var lcdv_Input = document.getElementById("SelectedLcdvCode");
		
		if (lcdv_Input)
		{
			lcdv_Input.value = selectedFinition.substr(0,selectedFinition.length-1) ;
		}
		/*
		var url = url_page_compare + "?versionId=";
		url +=  selectedFinition + "&start=true";
	
		window.location = url;
		*/
		
		return true;
	}
	else
	{
		ShowLayerMessage(choiceAssistant_label_NotEnough_finition);
		return false;
	}
}

function ShowLayerMessage(message)
{
	var LayerInfos = document.getElementById("LayerMessage");
	var findElt = false;
	for (i=0 ; i<LayerInfos.childNodes.length ;i++)
		{
			var child = LayerInfos.childNodes[i];
			if (child.className == "LayerText")
			{
				for(j = 0 ;j<child.childNodes.length ;j++)
				{
					var superchild = child.childNodes[j];
					if (superchild.id == "lblContentInfo")
					{
						superchild.innerHTML = message;
		
						showLayerPopup("LayerMessage");
						findElt = true;
						break;
					}
				}
			}
			if(findElt == true)
				break;
		}
	
}



function stretchFinitionTable()
{
	var indexmaster = 0;
	
	var master = null;
	var slave = null;
	
	var biais = 0;
	if (ie)
	{
		biais = 1;
	}
	else
	{
		biais = 2;
	}
	
	/* Header part */
	master = document.getElementById("masterHeader" + indexmaster);
	slave = null;
	while(master != null)
	{
		slave = document.getElementById("slaveHeader" + indexmaster);
		if (slave != null)
		{
			setMaxHeightWithBiais(master,slave,biais);
		}
		
		indexmaster = indexmaster +1;
		master = document.getElementById("masterHeader" + indexmaster);
	}
	
	
	/* les données */
	indexmaster = 0;
	master = document.getElementById("masterItem" + indexmaster);
	slave = null;
	while(master != null)
	{
		slave = document.getElementById("slaveItem" + indexmaster);
		if (slave != null)
		{
			setMaxHeightWithBiais(master,slave,biais);
		}
		
		var master = document.getElementById("masterSeparator" + indexmaster);
		if (master != null)
		{
			slave = document.getElementById("slaveSeparator" + indexmaster);
			if (slave != null)
			{
				setMaxHeightWithBiais(master,slave,biais);
			}
		}
		
		
		indexmaster = indexmaster +1;
		master = document.getElementById("masterItem" + indexmaster);
	}
	
}

function setMaxHeight(obj1 , obj2)
{
	if (obj1.clientHeight > obj2.clientHeight)
	{
		obj2.style.height = obj1.clientHeight;
	}
	else
	{
		obj1.style.height = obj2.clientHeight;
	}
}

function setMaxHeightWithBiais(obj1 , obj2, biais)
{
	if (obj1.clientHeight > obj2.clientHeight)
	{
		obj2.style.height = obj1.clientHeight + biais + "px";
	}
	else
	{
		obj1.style.height = obj2.clientHeight + biais + "px";
	}
}
