// PROD ::  v004.001 :: domain ajouter v002
// Avec commandite

/**
* @author Benoit Minotto :: bminotto@cyberpresse.ca
* 
* sujet :: VEHICULE
*/

// FIX_ME :: retirer cet FN
function loadWithoutStyle(colonne, annee, division, model){
		// ici on connait d.avance les id de annee, division, model
		var style = 0; // le selected !
		//flushColonne(colonne);	
		removeSelectOptions("style_"+colonne);
		removeSelectOptions("model_"+colonne);
		removeSelectOptions("annee_"+colonne);
		removeSelectOptions("division_"+colonne);
		
		// va loader les select
		vehiculeLoadByUrl_Ajax ('annee', colonne, annee, division, model, style);
		vehiculeLoadByUrl_Ajax ('division', colonne , annee, division, model, style);
		vehiculeLoadByUrl_Ajax ('model', colonne , annee, division, model, style);
		vehiculeLoadByUrl_Ajax ('style', colonne , annee, division, model, style);
		
		
}// FIN :: loadWithoutStyle

function isAnneeDivisionModelFinishedLoaded (colonne){
	
	var anneeIsLoaded = document.getElementById("annee_"+colonne+"_loaded").innerHTML;
	var divisionIsLoaded = document.getElementById("division_"+colonne+"_loaded").innerHTML;
	var modelIsLoaded = document.getElementById("model_"+colonne+"_loaded").innerHTML;
	var styleIsLoaded = document.getElementById("style_"+colonne+"_loaded").innerHTML;
	
	if ( anneeIsLoaded=="true" && divisionIsLoaded=="true" && modelIsLoaded=="true" && styleIsLoaded=="true"){
		vehiculeData_Ajax('infoTechnique',colonne,'compare');
	}	
}

function flushColonne(colonneToFlush){

var arrayOfTechnicalDataFields = ["id","createdAt","createdBy","modifiedAt","modifiedBy","checkedOutAt","checkedOutBy","xmlTags","properties"
,"semanticData","mustGenerate","workflowState","modelID","styleID","manufacturerID","manufacturerName","divisionID","divisionName","subdivisionID",
"subdivisionName","modelName","modelYear","styleName","trim","pricingMSRP","pricingInvoice","pricingDestination","warrantyAntiCorrosion",
"warrantyDriveTrain","warrantyBasicWarranty","warrantyRoadSideAssistance","vehiculeName","vehiculeEPAClassification","vehiculeBodyStyle",
"transmissionDriveTrain","transmissionOrderCode","transmissionType","transmissionDescriptionCont","transmissionFirstGearRatio",
"transmissionSecondGearRatio","engineOrderCode","engineType","engineDisplacement","engineFuelSystem","engineHorsepower","engineTorque",
"transmissionThirdGearRatio","transmissionFourthGearRatio","transmissionFithGearRatio","transmissionReverseRatio","transmissionFinalDriveAxleRatio",
"mileageCityEPA","mileageHwyEPA","electricalMaximumAlternatorCapa","coolingSystemTotalCapacity","weightBaseCurbWeight","traileringDeadWeightHitchMaxTra",
"traileringDeadWeightHitchMaxTon","suspenstionTypeFront","suspenstionTypeRear","suspenstionTypeFrontCont","suspenstionTypeRearCont","brakeType",
"brakeABSSystem","brakeFrontRotorDiam","brakeRearRotorDiam","brakeDiscFront","brakeDiscRear","brakeDrumRear","brakeRearDrumDiam","tireFrontOrderCode",
"tireRearOrderCode","tireFrontSize","tireRearSize","wheelFrontSize","wheelRearSize","wheelFrontMaterial","wheelRearMaterial","wheelSpareMaterial",
"exteriorDimensionsWheelBase","steeringRatio","steeringType","steeringCurbToCurb","fuelTankCapacity","exteriorDimensionsLength","exteriorDimensionsWidth",
"exteriorDimensionsHeight","exteriorDimensionsTreadWidthFro","exteriorDimensionsTreadWidthRea","exteriorDimensionsMinGroundClea",
"cargoAreaDimensionsVolumeWithRe","cargoAreaDimensionsTrunkVolume","interiorDimensionsPassengerCapa","interiorDimensionsPassengerVolu",
"interiorDimensionsFrontHeadRoom","interiorDimensionsFrontLegRoom","interiorDimensionsFrontShoulder","interiorDimensionsFrontHipRoom",
"interiorDimensionsSecondHeadRoo","interiorDimensionsSecondLegRoom","interiorDimensionsSecondShoulde","interiorDimensionsSecondHipRoom",
"vehiculeSpoilerRear","engine4Cyl","transmission5SpManual","transmissionManual","drivetrainFWD","fuelGasoline","brakes4WheelABS",
"brakesFrontDiscRearDrum","wheelsAluminium","wheelsSteel","wheelsCovers","roofPowerTiltSlidingSunRoof","roofSunMoon","tiresFrontPerformance",
"tiresFrontTouring","tiresRearPerformance","tiresRearTouring","airConditioning","audioAMFMStereo","audioCDChanger","audioCDPlayer","audioMP3Player",
"audioSatelliteRadio","convenienceAdjustableSteeringWh","convenienceAlarm","convenienceAuxPwrOutlet","convenienceCruiseControl",
"convenienceFrontReadingLamps","convenienceIntermitentWipers","floorMatsFront","floorMatsRear","locksKeylessEntry",
"mirrorsElectrochromicRearview","mirrorsPwrDriver","mirrorsPwrPassenger","telephoneOnboardHandsFreeComSys","windowPwr",
"seatsBucketQuad","seatsBucketFront","seatTrimCloth","airBagDriverFront","airBagPassengerFront","airBagPassengerFrontSwich",
"airBagSideHeadRear","airBagSideHeadFront","safetyDaytimeRunningLights","safetyTractionControl","crashTestDriverFrontImpact",
"crashTestDriverSideImpact","crashTestPassengerFrontImpact","crashTestPassengerSideImpact","crashTestRolloverRating","siteId","channelId",
"jpgName","steeringLockToLockTurn","warrantyAvailable","passengerDoors","passengerCapacity","modelId","priceMin","priceMax","maintenanceFees",
"insuranceFees","pros1","pros2","pros3","cons1","cons2","cons3"];

	for (i=0; i<arrayOfTechnicalDataFields.length; i++) {
		var divIdtoFlush = arrayOfTechnicalDataFields[i];
		divIdtoFlush = divIdtoFlush+"_"+colonneToFlush+"_div";
		if ( document.getElementById(divIdtoFlush) ){ 
			document.getElementById(divIdtoFlush).innerHTML = "";
		}
	}// FIN :: for
	
}// FIN :: flushColonne

function saveRecherche(){
	
	// Colonne 1
	var annee_c1 = selectedValueByControleId("annee_c1");
	var division_c1 = selectedValueByControleId("division_c1");
	var model_c1 = selectedValueByControleId("model_c1");
	var style_c1 = selectedValueByControleId("style_c1");
	var recherche_c1 = "annee_c1="+annee_c1+"&division_c1="+division_c1+"&model_c1="+model_c1+"&style_c1="+style_c1+"&";
	
	// Colonne 2
	var annee_c2 = selectedValueByControleId("annee_c2");
	var division_c2 = selectedValueByControleId("division_c2");
	var model_c2 = selectedValueByControleId("model_c2");
	var style_c2 = selectedValueByControleId("style_c2");
	var recherche_c2 = "annee_c2="+annee_c2+"&division_c2="+division_c2+"&model_c2="+model_c2+"&style_c2="+style_c2+"&";
	
	// Colonne 3
	var annee_c3 = selectedValueByControleId("annee_c3");
	var division_c3 = selectedValueByControleId("division_c3");
	var model_c3 = selectedValueByControleId("model_c3");
	var style_c3 = selectedValueByControleId("style_c3");
	var recherche_c3 = "annee_c3="+annee_c3+"&division_c3="+division_c3+"&model_c3="+model_c3+"&style_c3="+style_c3+"&";

	var newUrl = "http://www.monvolant.int/comparaison/page2.php?"+recherche_c1+recherche_c2+recherche_c3;	
	window.open(newUrl,'mywindow')
}// FIN :: saveRecherche

// Quand user clique sur le lien de la suggestion de comparaison
function loadCompareSuggestion(noComparaison){
	
	var annee = document.getElementById("modelYear_comparaison"+noComparaison).innerHTML;
	var division = document.getElementById("divisionID_comparaison"+noComparaison).innerHTML;
	var model = document.getElementById("modelID_comparaison"+noComparaison).innerHTML;
	var style = document.getElementById("defaultStyleId_comparaison"+noComparaison).innerHTML;
	var colonne = 0;
	var vehiculeToToggle = 0;
	if (noComparaison == 1) {
		colonne = "c2"; // on met la suggestion de comparaison 1 dans la colonne 2
		vehiculeToToggle = 'vehicule2';
	}
	if (noComparaison == 2) {
		colonne = "c3"; // on met la suggestion de comparaison 2 dans la colonne 3
		vehiculeToToggle = 'vehicule3';
	}
	
	flushColonne(colonne);	
	removeSelectOptions("style_"+colonne);
	removeSelectOptions("model_"+colonne);
	removeSelectOptions("annee_"+colonne);
	removeSelectOptions("division_"+colonne);
	
	// va loader les select
	vehiculeLoadByUrl_Ajax ('annee', colonne, annee, division, model, style);
	vehiculeLoadByUrl_Ajax ('division', colonne , annee, division, model, style);
	vehiculeLoadByUrl_Ajax ('model', colonne , annee, division, model, style);
	vehiculeLoadByUrl_Ajax ('style', colonne , annee, division, model, style);
	vehiculeLoadByUrl_Ajax ('infoTechnique', colonne , annee, division, model, style);
	
	toggleComparaison(vehiculeToToggle,0);
	toggleComparaisonSuggereeToRessources("comparaisonSuggeree_"+colonne,"ressources_"+colonne);
	vehiculeGetUrlEssai_Ajax (colonne);
}// FIN :: loadCompareSuggestion

function removeSelectOptions(idDuControle){
  var elSel = document.getElementById(idDuControle);
  var i ;
  // i>=1 pour garder le premeier element :: Selectionner une... 
  for (i = elSel.length - 1; i>=1; i--) {
  	elSel.remove(i);
  }
}// FIN :: removeSelectOptions

// donne le selected Value d.un select
function selectedValueByControleId(idDuControle){
  var unSelect = document.getElementById(idDuControle);
  var laValue = unSelect.options[unSelect.selectedIndex].value;
  return laValue;
}// FIN :: selectedValueByControleId

// Switch entre les drops box et l.image
function toggleComparaison(div,isChoix) {
	var divChoix = div+"_choix";
	if (isChoix == 0) {
		document.getElementById(div).style.display = "block";
		document.getElementById(divChoix).style.display = "none";
	}
	else{
		document.getElementById(div).style.display = "none";
		document.getElementById(divChoix).style.display = "block";
	}
}// FIN :: toggleComparaison

function toggleComparaisonSuggereeToRessources(hide,show) {
	document.getElementById(show).style.display = "inline";
	document.getElementById(hide).style.display = "none";
}// FIN :: toggleComparaisonSuggereeToRessources

function vehiculeData_AjaxAndToggleComparaison(controleToUpdate ,colonne , type,div ){
	
	toggleComparaison(div,0);
	
	vehiculeData_Ajax (controleToUpdate ,colonne , type);
	
	// Setter les titreVehiculeDivision_2 ...
	var unSelect_model = document.getElementById("model_"+colonne);
  	var leText_model = unSelect_model.options[unSelect_model.selectedIndex].text;
	document.getElementById("titreVehiculeModel_"+colonne).innerHTML = leText_model;
	document.getElementById("titreVehiculeModel_"+colonne+"_print").innerHTML = leText_model;
	
	var unSelect_division = document.getElementById("division_"+colonne);
  	var leText_division = unSelect_division.options[unSelect_division.selectedIndex].text;
	document.getElementById("titreVehiculeDivision_"+colonne).innerHTML = leText_division;
	document.getElementById("titreVehiculeDivision_"+colonne+"_print").innerHTML = leText_division;
	
	var unSelect_year = document.getElementById("annee_"+colonne);
  	var leText_year = unSelect_year.options[unSelect_year.selectedIndex].text;
	document.getElementById("titreVehiculeYear_"+colonne).innerHTML = leText_year;
	document.getElementById("titreVehiculeYear_"+colonne+"_print").innerHTML = leText_year;
	
	// 1- mettre les ressources visible
	if (colonne != "c1"){
		toggleComparaisonSuggereeToRessources("comparaisonSuggeree_"+colonne,"ressources_"+colonne);
	}
	// 2- setter le hreh pour la ressource consulter l.Essai du vehicule
	vehiculeGetUrlEssai_Ajax (colonne);
}// FIN :: vehiculeData_AjaxAndToggleComparaison<br>

// setVehiculeDisplay
function setVehiculeDisplay(annee_c1,division_c1,model_c1,style_c1,annee_c2,division_c2,model_c2,style_c2,annee_c3,division_c3,model_c3,style_c3){
	
	// NEW conditions
	// c1
	if ( (annee_c1 > 0) && (division_c1 > 0) && (model_c1 > 0) && (style_c1 > 0) ){
		// colonne 1
		vehiculeLoadByUrl_Ajax ('annee', 'c1', annee_c1, division_c1, model_c1, style_c1);  
		vehiculeLoadByUrl_Ajax ('division', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		vehiculeLoadByUrl_Ajax ('model', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		vehiculeLoadByUrl_Ajax ('style', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		vehiculeLoadByUrl_Ajax ('infoTechnique', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		toggleComparaison('vehicule1',0);
		vehiculeGetUrlEssai_Ajax ('c1'); // FIX_ME :: a placer dans isAnneeDivisionModelFinishedLoaded
	}
	else if ( (annee_c1 > 0) && (division_c1 > 0) && (model_c1 > 0) ){
		vehiculeLoadByUrl_Ajax ('annee', 'c1', annee_c1, division_c1, model_c1, style_c1);  
		vehiculeLoadByUrl_Ajax ('division', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		vehiculeLoadByUrl_Ajax ('model', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		vehiculeLoadByUrl_Ajax ('style', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		// FIX_ME :: juste une note : info tech setter par isAnneeDivisionModelFinishedLoaded
		toggleComparaison('vehicule1',0);
		vehiculeGetUrlEssai_Ajax ('c1'); // FIX_ME :: a placer dans isAnneeDivisionModelFinishedLoaded
	}
	else if ( (annee_c1 > 0) && (division_c1 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c1', annee_c1, division_c1, model_c1, style_c1);  
		vehiculeLoadByUrl_Ajax ('division', 'c1' , annee_c1, division_c1, model_c1, style_c1);
		vehiculeLoadByUrl_Ajax ('model', 'c1' , annee_c1, division_c1, model_c1, style_c1);
	}
	else if (annee_c1 > 0 ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c1', annee_c1, division_c1, model_c1, style_c1);  
		vehiculeLoadByUrl_Ajax ('division', 'c1' , annee_c1, division_c1, model_c1, style_c1);
	}
	else {
		vehiculeData_Ajax('annee' ,'c1', 0 ,"compare" );
	}
	// FIN :: c1
	
	// c2
	if ( (annee_c2 > 0) && (division_c2 > 0) && (model_c2 > 0) && (style_c2 > 0) ){
		// colonne 2
		
		vehiculeLoadByUrl_Ajax ('annee', 'c2', annee_c2, division_c2, model_c2, style_c2);  
		vehiculeLoadByUrl_Ajax ('division', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		vehiculeLoadByUrl_Ajax ('model', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		vehiculeLoadByUrl_Ajax ('style', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		vehiculeLoadByUrl_Ajax ('infoTechnique', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		toggleComparaison('vehicule2',0);
		toggleComparaisonSuggereeToRessources("comparaisonSuggeree_c2","ressources_c2");
		vehiculeGetUrlEssai_Ajax ('c2'); // FIX_ME :: a placer dans isAnneeDivisionModelFinishedLoaded
	}
	else if ( (annee_c2 > 0) && (division_c2 > 0) && (model_c2 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c2', annee_c2, division_c2, model_c2, style_c2);  
		vehiculeLoadByUrl_Ajax ('division', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		vehiculeLoadByUrl_Ajax ('model', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		vehiculeLoadByUrl_Ajax ('style', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		toggleComparaison('vehicule2',0);
	}
	else if ( (annee_c2 > 0) && (division_c2 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c2', annee_c2, division_c2, model_c2, style_c2);  
		vehiculeLoadByUrl_Ajax ('division', 'c2' , annee_c2, division_c2, model_c2, style_c2);
		vehiculeLoadByUrl_Ajax ('model', 'c2' , annee_c2, division_c2, model_c2, style_c2);
	}
	else if ( (annee_c2 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c2', annee_c2, division_c2, model_c2, style_c2);  
		vehiculeLoadByUrl_Ajax ('division', 'c2' , annee_c2, division_c2, model_c2, style_c2);
	}
	else {
		vehiculeData_Ajax('annee' ,'c2', 0 ,"compare" );
	}
	// FIN :: c2
	
	// c3
	if ( (annee_c3 > 0) && (division_c3 > 0) && (model_c3 > 0) && (style_c3 > 0) ){
		// colonne 2
		
		vehiculeLoadByUrl_Ajax ('annee', 'c3', annee_c3, division_c3, model_c3, style_c3);  
		vehiculeLoadByUrl_Ajax ('division', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		vehiculeLoadByUrl_Ajax ('model', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		vehiculeLoadByUrl_Ajax ('style', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		vehiculeLoadByUrl_Ajax ('infoTechnique', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		toggleComparaison('vehicule3',0);
		toggleComparaisonSuggereeToRessources("comparaisonSuggeree_c3","ressources_c3");
		vehiculeGetUrlEssai_Ajax ('c3');// FIX_ME :: a placer dans isAnneeDivisionModelFinishedLoaded
	}
	else if ( (annee_c3 > 0) && (division_c3 > 0) && (model_c3 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c3', annee_c3, division_c3, model_c3, style_c3);  
		vehiculeLoadByUrl_Ajax ('division', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		vehiculeLoadByUrl_Ajax ('model', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		vehiculeLoadByUrl_Ajax ('style', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		toggleComparaison('vehicule3',0);
	}
	else if ( (annee_c3 > 0) && (division_c3 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c3', annee_c3, division_c3, model_c3, style_c3);  
		vehiculeLoadByUrl_Ajax ('division', 'c3' , annee_c3, division_c3, model_c3, style_c3);
		vehiculeLoadByUrl_Ajax ('model', 'c3' , annee_c3, division_c3, model_c3, style_c3);
	}
	else if ( (annee_c3 > 0) ){
				
		vehiculeLoadByUrl_Ajax ('annee', 'c3', annee_c3, division_c3, model_c3, style_c3);  
		vehiculeLoadByUrl_Ajax ('division', 'c3' , annee_c3, division_c3, model_c3, style_c3);
	}
	else {
		vehiculeData_Ajax('annee' ,'c3', 0 ,"compare" );
	}
	// FIN :: c3
  		
	// FIN :: NEW conditions
}// FIN :: setVehiculeDisplay

// vehiculeGetUrlEssai_Ajax
function vehiculeGetUrlEssai_Ajax (colonne){
    var xhr=null;
    var isAsynchronous = false;
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
        isAsynchronous = true;
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on dÃƒÂ©finit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { 
    	// model Relier
		var modelRelated = selectedValueByControleId("model_"+colonne);
    	vehiculeGetUrlEssai (xhr, colonne, modelRelated); 
    };
        
    // annee Relier
	var anneeRelated = selectedValueByControleId("annee_"+colonne);
	
	// division Relier
	var divisionRelated = selectedValueByControleId("division_"+colonne);
	
    // Aller lire le bon fichier xml
    var fichier = "/xml/vehicules/"+anneeRelated+"/"+divisionRelated+"/"+divisionRelated+"_essaiByModelId.xml";
    xhr.open("GET", fichier, isAsynchronous);
    xhr.send(null);
}// FIN :: vehiculeGetUrlEssai_Ajax


// FN :: vehiculeLoadByUrl
// !!!! Les parametres division, model et style sont des id !!!!
function vehiculeGetUrlEssai(xhr, colonne, model){
	if (xhr.readyState==4) {
		// Gestion du 404 ici inevitable car par tout les vehicules ont des essais 
		if (xhr.status == 200) {

			var docXML= xhr.responseXML;			
			var donnee = "";
			var itemsLength = docXML.getElementsByTagName("item").length;
			document.getElementById("hrefEssai_"+colonne).innerHTML = "";
			var hasEssai = 0;
			for (i = 0 ; i<itemsLength ; i++){
				var itemCourrant = docXML.getElementsByTagName("item")[i];			
	    		var donnee = itemCourrant.getElementsByTagName("donnee")[0].firstChild.nodeValue;
	    		var id = itemCourrant.getElementsByTagName("id")[0].firstChild.nodeValue;
	    		// Trouver le bon modellId
				if ( id == model){
					// setter le href
					var theNewParagraph = document.createElement('a');
					theNewParagraph.innerHTML = "Consulter l'essai";
					theNewParagraph.setAttribute("href",donnee);
					document.getElementById("hrefEssai_"+colonne).appendChild(theNewParagraph);
					hasEssai = 1;
	    		}
	    	}// FIN :: boucle for 
	    	// si le fichier y est mais que ce modelId pas traiter
	    	if ( hasEssai == 0){
	    		document.getElementById("hrefEssai_"+colonne).innerHTML = "Non disponible";
	    	}
	    }
		else {
	        document.getElementById("hrefEssai_"+colonne).innerHTML = "Non disponible";
	   }
    }// FIN :: if (xhr.readyState==4)
} // FIN :: FN :: vehiculeGetUrlEssai

// vehiculeLoadedByCompare_Ajax :: load les zone de comparaison 1 et 2
function vehiculeLoadedByCompare_Ajax (annee, division, model){
    var xhr=null;
    var isAsynchronous = false;
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
        isAsynchronous = true;
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on dÃƒÂ©finit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { 
    	vehiculeLoadedByCompare (xhr, annee, division, model); 
    };
    
	// Lire bon fichier
	var fichier = "/xml/vehicules/"+annee+"/"+division+"/"+model+"/"+model+"_compar.xml";
    xhr.open("GET", fichier, isAsynchronous);
    xhr.send(null);
}// FIN :: vehiculeLoadedByCompare_Ajax

// FN :: isNull
function isNull(response){
	if ((response == "NULL") || (response == 0)) {
		return "";
    }
    else{
    	return response;
    }
} // FIN :: FN :: isNull

// FN :: vehiculeLoadByUrl
function vehiculeLoadedByCompare(xhr, annee, division, model){
	if (xhr.readyState==4) {
		var docXML= xhr.responseXML;
		
		// comparaison 1
		var modelID_comparaison1 = isNull(docXML.getElementsByTagName("modelID_comparaison1")[0].firstChild.nodeValue);
		document.getElementById("modelID_comparaison1").innerHTML = modelID_comparaison1;
		document.getElementById("modelName_comparaison1").innerHTML = isNull(docXML.getElementsByTagName("modelName_comparaison1")[0].firstChild.nodeValue);
		document.getElementById("divisionID_comparaison1").innerHTML = isNull(docXML.getElementsByTagName("divisionID_comparaison1")[0].firstChild.nodeValue);
		document.getElementById("divisionName_comparaison1").innerHTML = isNull(docXML.getElementsByTagName("divisionName_comparaison1")[0].firstChild.nodeValue);
		var modelYear_comparaison1 = isNull(docXML.getElementsByTagName("modelYear_comparaison1")[0].firstChild.nodeValue);
		document.getElementById("modelYear_comparaison1").innerHTML = modelYear_comparaison1;
		var jpgName_comparaison1 = isNull(docXML.getElementsByTagName("jpgName_comparaison1")[0].firstChild.nodeValue);
		document.getElementById("defaultStyleId_comparaison1").innerHTML = isNull(docXML.getElementsByTagName("defaultStyleId_comparaison1")[0].firstChild.nodeValue);
		// Updater la Photo comparaison 1
		document.getElementById("jpgName_comparaison1").setAttribute("src", "/photo/"+modelYear_comparaison1+"/"+jpgName_comparaison1);
		if (modelID_comparaison1 != ""){
			document.getElementById('jpgName_comparaison1').style.visibility = 'visible';
		}			
	    else{    
	        document.getElementById('jpgName_comparaison1').style.visibility = 'hidden';
	    }	    
	    
		// comparaison 2
		var modelID_comparaison2 = isNull(docXML.getElementsByTagName("modelID_comparaison2")[0].firstChild.nodeValue);
		document.getElementById("modelID_comparaison2").innerHTML = modelID_comparaison2;
		document.getElementById("modelName_comparaison2").innerHTML = isNull(docXML.getElementsByTagName("modelName_comparaison2")[0].firstChild.nodeValue);
		document.getElementById("divisionID_comparaison2").innerHTML = isNull(docXML.getElementsByTagName("divisionID_comparaison2")[0].firstChild.nodeValue);
		document.getElementById("divisionName_comparaison2").innerHTML = isNull(docXML.getElementsByTagName("divisionName_comparaison2")[0].firstChild.nodeValue);
		var modelYear_comparaison2 = isNull(docXML.getElementsByTagName("modelYear_comparaison2")[0].firstChild.nodeValue);
		document.getElementById("modelYear_comparaison2").innerHTML = modelYear_comparaison2;
		var jpgName_comparaison2 = isNull(docXML.getElementsByTagName("jpgName_comparaison2")[0].firstChild.nodeValue);
		document.getElementById("defaultStyleId_comparaison2").innerHTML = isNull(docXML.getElementsByTagName("defaultStyleId_comparaison2")[0].firstChild.nodeValue);
		// isCommandite_comparaison2
		var isCommandite_comparaison2 = docXML.getElementsByTagName("isCommandite_comparaison2")[0].firstChild.nodeValue;

		if (isCommandite_comparaison2 == "true"){
			
			loadCompareSuggestion(2);
		}
		// Updater la Photo comparaison 2
		document.getElementById("jpgName_comparaison2").setAttribute("src", "/photo/"+modelYear_comparaison2+"/"+jpgName_comparaison2);
		
		if (modelID_comparaison2 != ""){
			document.getElementById('jpgName_comparaison2').style.visibility = 'visible';
		}			
	    else{    
	        document.getElementById('jpgName_comparaison2').style.visibility = 'hidden';
	    }
	    
	}// FIN :: if (xhr.readyState==4)
} // FIN :: FN :: vehiculeLoadByUrl

function vehiculeLoadByUrl_Ajax (controleToUpdate, colonne , annee, division, model, style, domain){

	if (domain == undefined){
		domain = "";
	}
    var xhr=null;
    var isAsynchronous = false;
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
        isAsynchronous = true;
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on definit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { 
    	vehiculeLoadByUrl (xhr, controleToUpdate, colonne , annee, division, model, style); 
    };
    
    // Aller lire le bon fichier en fonction du controle qu'on veut updater
    if ( controleToUpdate == "division"){    	
    	// Lire bon fichier
    	var fichier = domain+"/xml/vehicules/"+annee+"/"+annee+".xml";
    }
    else if( controleToUpdate == "model"){    	
    	// Lire bon fichier
    	var fichier = domain+"/xml/vehicules/"+annee+"/"+division+"/"+division+".xml";
    }
    else if ( controleToUpdate == "style"){    	
    	// Lire le bon fichier
    	var fichier = domain+"/xml/vehicules/"+annee+"/"+division+"/"+model+"/"+model+".xml";
    	
    	// Vider les autre select
		//removeSelectOptions("style_"+colonne);
    }
    else if ( controleToUpdate == "annee"){
    	// Lire bon fichier
    	var fichier = domain+"/xml/annee.xml";
    }
     else if ( controleToUpdate == "infoTechnique"){
    	// Lire le bon fichier
    	var fichier = domain+"/xml/vehicules/"+annee+"/"+division+"/"+model+"/"+style+".xml";

    }
    
    xhr.open("GET", fichier, isAsynchronous);
    xhr.send(null);
} // FIN : FN : vehiculeLoadByUrl_Ajax

// Les parametres division, model et style sont des id
function vehiculeLoadByUrl(xhr, controleToUpdate, colonne , annee, division, model, style){
	
	if (xhr.readyState==4) {
		var docXML= xhr.responseXML;
		if (controleToUpdate == "infoTechnique"){
			
			var data = docXML.getElementsByTagName("data")[0];
			if (data.hasChildNodes()) {
			    // Now get all children of node	
			    var children = data.childNodes;               	
			    // Loop through the children
			    for(var i=0; i < children.length; i++) {
			    	var childrenName = children[i].nodeName;
			    	var childrenValue = children[i].firstChild.nodeValue;
			    	var divId = childrenName+"_"+colonne+"_div"; // insuranceFees_c2_div
			    	if (document.getElementById(divId))	{
			    		document.getElementById(divId).innerHTML = childrenValue;
			    	}
			    	if (childrenName == "jpgName"){
			    		jpgCourrant = childrenValue;	 		
			    	}
				} // FIN :: for ... children.length ...
			} // FIN :: hasChildNodes
			// Updater la Photo
			document.getElementById("jpgName_"+colonne).setAttribute("src", "/photo/"+annee+"/"+jpgCourrant);
			document.getElementById("jpgName_"+colonne+"_print").setAttribute("src", "/photo/"+annee+"/"+jpgCourrant);
		}// FIN :: if infoTechnique
		else{
			var idOfFirstStyle = 0;
			var setInfoTechnique = 0;
			var jpgCourrant = 0;
			
			var idDuControle = controleToUpdate+"_"+colonne;
			// le selected Id 
			var selectedId = "";
			var selectedDonnee = "";
			
			if ( controleToUpdate == "division"){   
				selectedId = division; 	
		    }
		    else if( controleToUpdate == "model"){  
		    	selectedId = model;  	
		    }
		    else if ( controleToUpdate == "style"){ 
		    	selectedId = style;   
		    }
		    else if ( controleToUpdate == "annee"){
		    	selectedId = annee;
		    }		
			// FIN :: le selected Id 
			
			var donnee = "";
			var unSelect = document.getElementById(idDuControle);
			var itemsLength = docXML.getElementsByTagName("item").length;
			for (i = 0 ; i<itemsLength ; i++){
				var itemCourrant = docXML.getElementsByTagName("item")[i];			
	    		var donnee = itemCourrant.getElementsByTagName("donnee")[0].firstChild.nodeValue;
	    		var id = itemCourrant.getElementsByTagName("id")[0].firstChild.nodeValue;
	    			
				// ** l'option selected **
				var opt = document.createElement("option");
				opt.setAttribute("value", id);
				opt.setAttribute("title", donnee);
				var x = id+" : "+donnee;
				// Ceci set les style si je connais pas !! (selectedId == 0)
				if ( (controleToUpdate == "style")  && (i == 0) && (selectedId == 0) ){
					// ceci va mettre selected au premier donc le id (value) sera recuperable
					opt.setAttribute("selected","selected");
					idOfFirstStyle = id;
					setInfoTechnique = 1;
	    		}
				else if (selectedId == id){
					opt.setAttribute("selected","selected");
					selectedDonnee = donnee;
				}
				// FIN :: ** l'option selected ** 
						
				var itmText = document.createTextNode(donnee); // PROD !
				opt.appendChild(itmText);
				unSelect.appendChild(opt);				
	    	}// FIN :: boucle for     
	    	
	    	// Pas besoin du style
	    	// ceci set les vehicules comparable, binder a la colonne 1
	    	// ! le  && ( controleToUpdate == "style") est juste pour pas le faire a chaque passe
	    	if ((colonne == "c1") && ( controleToUpdate == "style")){
    			vehiculeLoadedByCompare_Ajax (annee, division, model);
    		}
	    	// Setter les titreVehiculeDivision_2 ...
	    	if (controleToUpdate == "division"){
	    		document.getElementById("titreVehiculeDivision_"+colonne).innerHTML = selectedDonnee;
				document.getElementById("titreVehiculeDivision_"+colonne+"_print").innerHTML = selectedDonnee;
	    	}
	    	if (controleToUpdate == "model"){
	    		document.getElementById("titreVehiculeModel_"+colonne).innerHTML = selectedDonnee;
				document.getElementById("titreVehiculeModel_"+colonne+"_print").innerHTML = selectedDonnee;
	    	}
	    	if (controleToUpdate == "annee"){
	    		document.getElementById("titreVehiculeYear_"+colonne).innerHTML = selectedDonnee;
				document.getElementById("titreVehiculeYear_"+colonne+"_print").innerHTML = selectedDonnee;
	    	}
	    	// FIN :: Setter les titreVehiculeDivision_2 ...
	    	
	    	// Bug Asynchronous:
	    	// ICI on a fini de loader le drop box en question, donc l'indiquer dans le tag html
	    	var divIsLoaded = controleToUpdate+"_"+colonne+"_loaded";
	    	document.getElementById(divIsLoaded).innerHTML = "true";
	    	isAnneeDivisionModelFinishedLoaded(colonne);
	    	// FIN :: Bug Asynchronous:
    	}// FIN :: else
    }// FIN :: if (xhr.readyState==4)
} // FIN :: FN :: vehiculeLoadByUrl

function vehiculeData_Ajax(controleToUpdate ,colonne , type){
	
    var xhr=null;
    var isAsynchronous = false;
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
        isAsynchronous = true;
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on dÃƒÂ©finit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { 
    	//alert ("currentValue :vehiculeData_Ajax: "+currentValue);
    	setVehiculeData(xhr,controleToUpdate ,colonne); 
    };
    
    // Aller lire le bon fichier en fonction du controle qu'on veut updater
    if ( controleToUpdate == "division"){
    	
    	// annee Relier
		var anneeRelated = selectedValueByControleId("annee_"+colonne);
    	// Lire bon fichier
		if ("essai" == type)
		{
    		var fichier = "/xml/vehicules/"+anneeRelated+"/"+anneeRelated+"_essai.xml";
		}
		else
		{
			var fichier = "/xml/vehicules/"+anneeRelated+"/"+anneeRelated+".xml";	
		}    	
		
    	// Vider les autre select
		removeSelectOptions("division_"+colonne);
		removeSelectOptions("model_"+colonne);
		if ("compare" == type)
		{
			removeSelectOptions("style_"+colonne);
			flushColonne(colonne);
		}
    }
    else if( controleToUpdate == "model"){
    	
    	// annee Relier
		var anneeRelated = selectedValueByControleId("annee_"+colonne);
		
		// division Relier
		var divisionRelated = selectedValueByControleId("division_"+colonne);
    	
    	// Lire bon fichier
		if ("essai" == type)
		{
			var fichier = "/xml/vehicules/"+anneeRelated+"/"+divisionRelated+"/"+divisionRelated+"_essai.xml";	
		}
		else if ("mixte" == type)
		{
			var fichier = "/xml/vehicules/"+anneeRelated+"/"+divisionRelated+"/"+divisionRelated+"_mixte.xml";	
		}
		else
		{
    		var fichier = "/xml/vehicules/"+anneeRelated+"/"+divisionRelated+"/"+divisionRelated+".xml";
		}
		
    	// Vider les autre select
		removeSelectOptions("model_"+colonne);
		if ("compare" == type)
		{
			removeSelectOptions("style_"+colonne);
			flushColonne(colonne);
		}
    }
    else if ( controleToUpdate == "style"){
    	// annee Relier
		var anneeRelated = selectedValueByControleId("annee_"+colonne);
		
		// division Relier
		var divisionRelated = selectedValueByControleId("division_"+colonne);
		
		// model Relier
		var modelRelated = selectedValueByControleId("model_"+colonne);
    	
    	// Lire le bon fichier
    	var fichier = "/xml/vehicules/"+anneeRelated+"/"+divisionRelated+"/"+modelRelated+"/"+modelRelated+".xml";
    	
    	// Vider les autre select
		removeSelectOptions("style_"+colonne);
		flushColonne(colonne);
		
		if ( colonne == "c1"){// C.est la colonne 1 qui drive les comapraison suggerer
			vehiculeLoadedByCompare_Ajax (anneeRelated, divisionRelated, modelRelated);
		}
    }
    else if ( controleToUpdate == "infoTechnique"){
    	// annee Relier
		var anneeRelated = selectedValueByControleId("annee_"+colonne);
		
		// division Relier
		var divisionRelated = selectedValueByControleId("division_"+colonne);
		
		// model Relier
		var modelRelated = selectedValueByControleId("model_"+colonne);
		
		// style Relier
		var styleRelated = selectedValueByControleId("style_"+colonne);
    	
    	// Lire le bon fichier
    	var fichier = "/xml/vehicules/"+anneeRelated+"/"+divisionRelated+"/"+modelRelated+"/"+styleRelated+".xml";
    }
    else if ( controleToUpdate == "annee"){
    	// Lire bon fichier
    	if ("essai" == type)
    	{
    		var fichier = "/xml/annee_essai.xml";	
    	}
    	else
    	{
    		var fichier = "/xml/annee.xml";
    	}
    }

    xhr.open("GET", fichier, isAsynchronous);
    xhr.send(null);
}// FIN :: vehiculeData_Ajax

function setVehiculeData(xhr,controleToUpdate, colonne){
	if (xhr.readyState==4) {		
		var idDuControle = controleToUpdate+"_"+colonne;
		var donnee = "";
		var docXML= xhr.responseXML;
		
		// GESTION des responseXML
		if (controleToUpdate == "infoTechnique"){
			var data = docXML.getElementsByTagName("data")[0];
			if (data.hasChildNodes()) {
			    // Now get all children of node	
			    var children = data.childNodes;               	
			    // Loop through the children
			    var anneeCourrante = 0;
			    var jpgCourrant = 0;
			    var isCommandite = "false"; // du txt et non un bool ! je sais
			    for(var i=0; i < children.length; i++) {
			    	var childrenName = children[i].nodeName;
			    	var childrenValue = children[i].firstChild.nodeValue;
			    	
			    	var divId = childrenName+"_"+colonne+"_div"; // insuranceFees_c2_div
			    	if (document.getElementById(divId))	{
			    		document.getElementById(divId).innerHTML = childrenValue;
			    	}
			    	if (childrenName == "jpgName"){
			    		jpgCourrant = childrenValue;	 		
			    	}
			    	if (childrenName == "modelYear"){
			    		anneeCourrante = childrenValue;	 		
			    	}
			    	if (childrenName == "isCommandite"){
			    		isCommandite = childrenValue;
			    		if (isCommandite == "true"){
			    			ajustDisplayColonneCommandite(colonne, 'true');
			    		}
			    		else{
			    			ajustDisplayColonneCommandite(colonne, 'false');
			    		}
			    			 		
			    	}
				} // FIN :: for ... children.length ...
			} // FIN :: hasChildNodes
			// Updater la Photo
			document.getElementById("jpgName_"+colonne).setAttribute("src", "/photo/"+anneeCourrante+"/"+jpgCourrant);
			document.getElementById("jpgName_"+colonne+"_print").setAttribute("src", "/photo/"+anneeCourrante+"/"+jpgCourrant);
		}// FIN :: if infoTechnique
		else{
			
			var unSelect = document.getElementById(idDuControle);
			
			var itemsLength = docXML.getElementsByTagName("item").length;
			//alert (" itemsLength :setVehiculeData: "+itemsLength);
			for (i = 0 ; i<itemsLength ; i++){
				var itemCourrant = docXML.getElementsByTagName("item")[i];		
					
	    		var donnee = itemCourrant.getElementsByTagName("donnee")[0].firstChild.nodeValue;
	    		var id = itemCourrant.getElementsByTagName("id")[0].firstChild;
	    		var idNodeValue = id.nodeValue;
	    		var idNodeValue = id.nodeValue;
	    		//var x = id+" : "+donnee;
				
				// options
				var opt = document.createElement("option");
				opt.setAttribute("value", idNodeValue);
				opt.setAttribute("title", donnee);
				var itmText = document.createTextNode(donnee); // PROD !
				//var itmText = document.createTextNode(x);
				opt.appendChild(itmText);
				unSelect.appendChild(opt);				
	    	}
	    }// FIN :: else
    	
    }// FIN :: if (xhr.readyState==4)
} // FIN :: setVehiculeData


 function checkModel(model){
 

    // On récupere la valeur du champ de texte  
	 var make = model; // $ est une des méthode utile de prototype (elle signifie document.getElementById)  
	 //$('reponse').innerHTML = ''; // On enlève le contenu de l'élément reponse  
	 // On va instancier un objet de type Ajax.Request  
	 new Ajax.Updater('model','/php/ajax_evolio_model.php?make='+make,  
	     {
	    asynchronous:true,  
	    method: 'post'
	 });  
	 } 


