// Tableau d'élements du DEVIS "champs des saisies"
var arrayElementsDevis = [ "dateMiseEnCirculation", "typeVehicule", "marque",
		"gamme", "carrosserie", "energie", "version", "postal", "postalAuto",
		"postalCampingCar", "postalContact", "commune", "communeAuto", "communeCampingCar",
		"usage", "qualite", "logement", "dateMiseEnCirculationCampingCar",
		"typeVehiculeCampingCar", "energieCampingCar", "usageCampingCar",
		"montantcontenuaccessoires" ];

// Tableau des élements des champs de saisies non visible à l'écran
// condition dans la fonction javascript : loadSelectAJAX()
// Auto :Tableau d'affichage des valeurs dans le textarea "Autre"
var arrayAutreVehicule = [ "typeVehicule", "marque", "gamme", "carrosserie",
		"energie", "version", "typeVehiculeCampingCar", "energieCampingCar" ];
// Camping-Car : Tableau d'affichage des valeurs dans le textarea "Autre"
var arrayAutreVehiculeCamping = [ "typeVehiculeCampingCar", "marque",
    "energieCampingCar","gamme", "version" ];
    
var arrayIdSelect = new Array();                  

// Action d'éxécution du formulaire du devis
$.formulaireDevis = function() {
	var blocDevis = this;

	// on cache les div qui ont la classe "hidden"
	$("div.hidden", this).each(function() {
		this.parentNode.style.display = "none";
	});

	// SI on envoi le formulaire du devis
	$("form").bind("submit", function() {
		verificationDevisAjax("", "", "1");
		document.location = "#";
		return false;
	});

	// Action lors d'appui de la touche entrée
	this.onkeypress = function(e) {
		var oTrg = (window.event) ? window.event.srcElement : e.target;
		if (/^(textarea)$/i.test(oTrg.tagName))
			return true;
		if (window.event) {
			if (window.event.type == "keypress" & window.event.keyCode == 13)
				return !(window.event.type == "keypress" & window.event.keyCode == 13);
		}
		if (e) {
			if (e.type == "keypress" & e.keyCode == 13)
				return !e;
		}
	};

	/**
	 * on charge ou on nettoie tous les élements des formulaires OK Attention
	 * quand le tableau est trop grand (Modification RD avec jquery 27/09/2010)
	 */
	// var id = "";
	// on boucle sur tous les élements
	for ( var i = 0; i < arrayElementsDevis.length; i++) {
		$("div#" + arrayElementsDevis[i], this)
				.each(function() {
					// récupération de l'identifiant en jquery pour éviter les
						// erreurs
						var id = ($(":first-child", this).attr("id") != null) ? $(
								":first-child", this).attr("id")
								: (($(":first-child :first-child", this).attr(
										"id") != null) ? ($(
										":first-child :first-child", this)
										.attr("id")) : "");
						if (id != "" && id != null) {
							arrayIdSelect[arrayElementsDevis[i]] = id;
							if (this.firstChild.value)
								loadSelectAJAX(arrayElementsDevis[i],
										this.firstChild.value);
							else
								viderSelect(arrayElementsDevis[i]);
						}
					});
	}

	// L'affichage du calendrier et la vérification du format de la date
	$("input.date-picker")
			.bind(
					"blur",
					function() {
						if (!checkDate(this.value))
							showError(this.id,
									"Mauvais format de date. Format requis : JJ/MM/AAAA.");
						else
							removeError(this.id);
					});
	$("input.num").bind("blur", function() {
		if ($(this).attr("value"))
			$(this).attr("value", $(this).attr("value").replace(',', '.'));
	});
	$("input.monnaie").bind("blur", function() {
		if ($(this).attr("value"))
			$(this).attr("value", $(this).attr("value").replace(',', '.'));
	});
	$("#postalAuto").parent().show();
	$("#postalContact").parent().show();
	$("input.code_postal").bind("blur", function() {

		var auto = "";
		if (this.parentNode.id == "postalAuto") {
			auto = "Auto";
		} else if (this.parentNode.id == "postalCampingCar") {
			auto = "CampingCar";
		} else if (this.parentNode.id == "postalContact") {
			auto = "";
		}

		if (checkCodePostal(this.value)) {
			loadSelectAJAX("commune" + auto);
		} else
			viderSelect("commune" + auto);
	});

	$("input.code_postal").bind("keyup", function() {
		var auto = "";
		if (this.parentNode.id == "postalAuto") {
			auto = "Auto";
		} else if (this.parentNode.id == "postalCampingCar") {
			auto = "CampingCar";
		} else if (this.parentNode.id == "postalContact") {
			auto = "";
		}

		if (checkCodePostal(this.value)) {
			// recuperation de l'identifiant du formulaire (ajout_reponse)
			var idForm = $("input[@name='ajout_reponse']").attr("value");

			// Seulement en fonction de la demande de document
			if (idForm == "11" || idForm == "7") {
				var url = 'spip.php?page=vehicule&id_form=' + idForm
						+ '&categorie=emailcommercial&postal=' + this.value;
				jQuery.ajax( {
					url : url,
					type : "get",
					complete : function(res, status) {
						var json = eval(res.responseText);
						if (json) {
							if (json[0]) {
								for ( var i = 0; i < json.length; i++) {
									// alert(json[i].value);
					$("input", "div#emailCommercial").attr("value",
							json[i].value);
					// $("#input-11-email_2").attr('value', json[i].value);
				}
			}
		}
	}
				});
			}
			loadSelectAJAX("commune" + auto);
		} else
			viderSelect("commune" + auto);
	});

	$("input", "div#societaire").click(
			function() {
				if ($("label[@for='" + this.id + "']", "div#societaire").attr(
						"innerHTML") == "Oui") {
					$("div#numerosocietaire").parent().show();
					$("input", "div#numerosocietaire").focus();
				} else
					$("div#numerosocietaire").parent().hide();
			});

	// Au chargement de la page
	// ////////////////////
	// SI DEVIS AUTOMOBILE
	// comme le formulaire habitation comprend un champ de saisie
	// dateMiseEnCirculation
	// En rapport avec le champ de saisie "dateMiseEnCirculation"
	if (getSelect("dateMiseEnCirculation")) {

		// var arrayElementsDevisAuto = [ "dateMiseEnCirculation",
		// "typeVehicule", "marque",
		// "gamme", "carrosserie", "energie", "version", "postal", "postalAuto",
		// "commune", "communeAuto", "usage", "qualite", "logement",
		// "dateMiseEnCirculationCaravane","typeVehiculeCaravane"];
		//		
		// var id = "";
		// // on boucle sur tous les élements
		// for ( var i = 0; i < arrayElementsDevis.length; i++) {
		// $("div#" + arrayElementsDevis[i], this).each(
		// function(){
		// var id = (this.firstChild.id) ? this.firstChild.id :
		// ((this.firstChild.firstChild.id)?this.firstChild.firstChild.id:"");
		// if(id!="")
		// {
		// arrayIdSelect[arrayElementsDevis[i]] = id;
		// if (this.firstChild.value)
		// loadSelectAJAX(arrayElementsDevis[i],
		// this.firstChild.value);
		// else
		// viderSelect(arrayElementsDevis[i]);
		// }
		// });
		// }

		$("fieldset.separateur_3").hide();
		$("input[@name='Valider']").attr("value", "Devis");
		$("#dateMiseEnCirculation").parent().show();
		autreVehicule(false);
		// Execution d'une première requête vers le serveur @param "usage"
		loadSelectAJAX("usage");

		// alert('(getSelect("dateMiseEnCirculation"))'); // DEBUG

		// Action sur le changement de données du champ de saisie
		$("input.date-picker", "div#dateMiseEnCirculation").change(function() {
			// alert('1. (getSelect("dateMiseEnCirculation")) change'); // DEBUG
				autreVehicule(false);

				/*
				 * TODO : Vidage des listes déroulante
				 */
				// On vide les liste déroulante
				viderSelect("carrosserie");
				viderSelect("energie");
				viderSelect("gamme");
				viderSelect("version");
				viderSelect("marque");

				// Execution d'une première requête vers le serveur @param
				// "typeVehicule"
				loadSelectAJAX("typeVehicule");
			});
		/*
		 * $("input.date-picker","div#datePermis").each( function(){
		 * popUpCal.reconfigureFor(this, { onSelect: function(dateSaisie) {
		 * verificationDevisAjax("datePermis", ["dateNaissance"]); } } ); } )
		 */
		$("div#bonus", this).each(
				function() {
					testBonus();
					this.firstChild.onkeyup = function() {
						if ($("input", "div#bonus").attr("value"))
							$("input", "div#bonus").attr(
									"value",
									$("input", "div#bonus").attr("value")
											.replace(',', '.'));
						testBonus();
					};
					this.firstChild.onblur = function() {
						if ($("input", "div#bonus").attr("value"))
							$("input", "div#bonus").attr(
									"value",
									$("input", "div#bonus").attr("value")
											.replace(',', '.'));
						verificationDevisAjax("bonus", [ "bonus50",
								"datePermis" ]);
					};
				});
		$("select", "div#bonus50").change(function() {
			testSinistresResponsables();
		});
		$("div#nbSinistresResp", this).each(function() {
			testSinistresResponsables();
			this.firstChild.onkeyup = function() {
				testSinistresResponsables();
			};
		});
		$("select", "div#anciennete").change(function() {
			verificationDevisAjax("anciennete", [ "datePermis" ]);
		});
	}

	// ////////////////////////
	// SI DEVIS HABITATION
	// comme le formulaire habitation comprend un champ de saisie logement
	else if (getSelect("logement")) {
		$("fieldset.separateur_2").hide();
		$("input[@name='Valider']").attr("value", "Devis");
		loadSelectAJAX("logement");
		loadSelectAJAX("qualite");
		loadSelectAJAX("usage");
		$("input", "div#dependances").change(
				function() {
					var selVal = this.value.substr(
							this.value.lastIndexOf("_") + 1, this.value
									.lastIndexOf("_") + 1);
					if (selVal == "1")
						$("div#surfaceDependances").parent().show();
					else
						$("div#surfaceDependances").parent().hide();
				});
		$("input", "div#capital").bind("blur", function() {
			if (this.value)
				verificationDevisAjax("capital", [ "nbPieces" ]);
		});
		$("input", "div#surfaceDependances").bind("blur", function() {
			verificationDevisAjax("surfaceDependances", []);
		});
	}

	// /////////////////
	// SI DEVIS CAMPING-CAR
	// comme le formulaire habitation comprend un champ de saisie logement
	else if (getSelect("dateMiseEnCirculationCampingCar")) {
		$("fieldset.separateur_4").hide();

		$("input[@name='Valider']").attr("value", "Devis");
		$("#dateMiseEnCirculationCampingCar").parent().show();
		autreVehicule(false);

		// alert('getSelect("dateMiseEnCirculationCaravane")');

		// on cache l'énergie
		$("#energieCampingCar").parent().hide();
		// on cache la puissance fiscale
		$("#puissancefiscale").parent().hide();
		// on cache la valeur du montant neuve
		$("#valeurneuve").parent().hide();
		// on cache la valeur du montant du contenu et accessoires
		$("#montantcontenuaccessoires").parent().hide();

		// on affiche le code postal
		$("#postalCampingCar").parent().show();
		$("#usageCampingCar").parent().hide();

		loadSelectAJAX("usageCampingCar");

		// Execution d'une première requête vers le serveur @param "usage"
		// loadSelectAJAX("usage");

		// Action sur le changement de données du champ de saisie
		$("input.date-picker", "div#dateMiseEnCirculationCampingCar").change(
				function() {
					// alert('1. (getSelect("dateMiseEnCirculation")) change');
					// // DEBUG

					// Execution d'une première requête vers le serveur @param
					// "typeVehiculeCaravane"
					loadSelectAJAX("typeVehiculeCampingCar");
					// selectVehiculeOnChange("typeVehiculeCampingCar");
					// affichage de la marque
					// $("#marque").parent().show();
					// loadSelectAJAX("marque"); // Pas de marque Camping-Car
					// dans la base de données
					// affichage de l'énergie
					// $("#energieCampingCar").parent().show();
					// liste déroulante de l'énergie
					//loadSelectAJAX("energieCampingCar");
					// on affiche la valeur du montant neuve
					// $("#valeurneuve").parent().show();
					// recherche des valeur neuve en base de données
					// loadSelectAJAX("gammeCampingCar");
					// on affiche la valeur du montant du contenu et accessoires
					// $("#montantcontenuaccessoires").parent().show();
					// recherche les montants des plafonds en base de données
					// loadSelectAJAX("montantcontenuaccessoires");
					// on affiche la puissancefiscale

				});

		$("div#bonus", this).each(
				function() {
					testBonus();
					this.firstChild.onkeyup = function() {
						if ($("input", "div#bonus").attr("value"))
							$("input", "div#bonus").attr(
									"value",
									$("input", "div#bonus").attr("value")
											.replace(',', '.'));
						testBonus();
					};
					this.firstChild.onblur = function() {
						if ($("input", "div#bonus").attr("value"))
							$("input", "div#bonus").attr(
									"value",
									$("input", "div#bonus").attr("value")
											.replace(',', '.'));
						verificationDevisAjax("bonus", [ "bonus50",
								"datePermis" ]);
					};
				});
	}
	// SI FORMULAIRE DU DOCUMENT
	else {
		$("select", "div#typeDocument").change(
				function() {
					var val = this.options[this.selectedIndex].value;
					switch (val.substr(val.lastIndexOf("_") + 1, val
							.lastIndexOf("_") + 1)) {
					case "6":
						$("div#typeLogement").parent().hide();
						$("div#adresseLieu").parent().show();
						$("div#dateDebut").parent().show();
						$("div#dateFin").parent().show();
						$("div#immatriculation").parent().hide();
						break;
					case "8":
						$("div#typeLogement").parent().show();
						$("div#adresseLieu").parent().show();
						$("div#dateDebut").parent().show();
						$("div#dateFin").parent().show();
						$("div#immatriculation").parent().hide();
						break;
					case "11":
						$("div#typeLogement").parent().hide();
						$("div#adresseLieu").parent().hide();
						$("div#dateDebut").parent().hide();
						$("div#dateFin").parent().hide();
						$("div#immatriculation").parent().show();
						break;
					default:
						$("div#typeLogement").parent().hide();
						$("div#adresseLieu").parent().hide();
						$("div#dateDebut").parent().hide();
						$("div#dateFin").parent().hide();
						$("div#immatriculation").parent().hide();
						break;
					}
				});
		$("select", "div#embarcation").change(
				function() {
					var val = this.options[this.selectedIndex].value;
					switch (val.substr(val.lastIndexOf("_") + 1, val
							.lastIndexOf("_") + 1)) {
					case "1":
						$("div#energieBateau").parent().hide();
						$("div#longueur").parent().hide();
						$("div#puissance").parent().hide();
						$("div#immatriculation").parent().hide();
						break;
					case "2":
						$("div#energieBateau").parent().show();
						$("div#longueur").parent().show();
						$("div#puissance").parent().show();
						$("div#immatriculation").parent().show();
						break;
					case "3":
						$("div#energieBateau").parent().hide();
						$("div#longueur").parent().show();
						$("div#puissance").parent().hide();
						$("div#immatriculation").parent().show();
						break;
					case "4":
						$("div#energieBateau").parent().hide();
						$("div#longueur").parent().hide();
						$("div#puissance").parent().show();
						$("div#immatriculation").parent().hide();
						break;
					}
				});
		$("select", "div#nbEnfants").change(function() {
			if (this.value != "select_6_1")
				$("div#anneesNaissance").parent().show();
			else
				$("div#anneesNaissance").parent().hide();
		});
	}
	$("select", "div#modeReponse").change(
			function() {
				var val = this.options[this.selectedIndex].value;
				switch (val.substr(val.lastIndexOf("_") + 1, val
						.lastIndexOf("_") + 1)) {
				case "1":
					$("div#adresse").parent().show();
					$("div#complement").parent().show();
					$("div#postal").parent().show();
					$("div#commune").parent().hide();
					$("div#mail").parent("div").hide();
					$("div#telephonecontact").parent().hide();
					$("div#horaire").parent().hide();
					$("input", "div#adresse").focus();
					break;
				case "2":
					$("div#adresse").parent().hide();
					$("div#complement").parent().hide();
					$("div#postal").parent().hide();
					$("div#commune").parent().hide();
					$("div#mail").parent("div").show();
					$("div#telephonecontact").parent().hide();
					$("div#horaire").parent().hide();
					$("input", "div#mail").focus();
					break;
				case "3":
					$("div#adresse").parent().hide();
					$("div#complement").parent().hide();
					$("div#postal").parent().hide();
					$("div#commune").parent().hide();
					$("div#mail").parent("div").hide();
					$("div#telephonecontact").parent().show();
					$("div#horaire").parent().show();
					$("input", "div#telephonecontact").focus();
					break;
				}
			});
	$("select", "div#choixAppel").change(function() {
		if (this.options[this.selectedIndex].value == "select_4_11") {
			$("div#autre").parent().show();
			$("input", "div#autre").focus();
		} else
			$("div#autre").parent().hide();
	});
};

/**
 * Fonction selectVehiculeOnChange
 * 
 * @param categorie
 * @return
 */
function selectVehiculeOnChange(categorie) {
	var sel = getSelect(categorie).selectedIndex;
	autreVehicule(false);
	// en fonction du type de champs
	switch (categorie) {
	case "typeVehicule":
		viderSelect("carrosserie");
		viderSelect("energie");
		viderSelect("gamme");
		viderSelect("version");
		if (sel > 1)
			loadSelectAJAX("marque");
		else {
			viderSelect("marque");
		}
		break;
	case "marque":

		// Si c'est camping Car alors
		if($("input[@name='ajout_reponse']").attr("value")=="15")
		{			
			if (sel > 1) {
        loadSelectAJAX("energieCampingCar");
      }else{
				viderSelect("montantcontenuaccessoires");
				viderSelect("gamme");
				viderSelect("version");
        $("#puissancefiscale").parent().hide();
        viderSelect("energieCampingCar");
      }
		}else{
			viderSelect("carrosserie");
			viderSelect("energie");
			viderSelect("version");
			if (sel > 1) {
				loadSelectAJAX("gamme");
			} else {
				viderSelect("gamme");
			}
		}
		break;
	case "gamme":
		// Si c'est camping Car alors
		if($("input[@name='ajout_reponse']").attr("value")=="15")
		{
			if (sel > 1){
        loadSelectAJAX("version");
        loadSelectAJAX("montantcontenuaccessoires");
      }else {
				viderSelect("version");
        viderSelect("montantcontenuaccessoires");
			}
		} // Si non c'est AUTO
		else{
			viderSelect("energie");
			viderSelect("version");
			if (sel > 1){
				loadSelectAJAX("carrosserie");
			}else {
				viderSelect("carrosserie");
			}
		}
		break;
	case "carrosserie":
		viderSelect("version");
		if (sel > 1)
			loadSelectAJAX("energie");
		else {
			viderSelect("energie");
		}
		break;
	case "energie":
		// Si c'est camping Car alors
		if($("input[@name='ajout_reponse']").attr("value")=="15")
		{
				viderSelect("version");
			if (sel > 1)
      {
        loadSelectAJAX("montantcontenuaccessoires");
        loadSelectAJAX("gamme");
				loadSelectAJAX("version");
			}else {
        viderSelect("montantcontenuaccessoires");
				viderSelect("version");
        viderSelect("gamme");
			}
		}else{
			if (sel > 1)
				loadSelectAJAX("version");
			else {
				viderSelect("version");
			}
		}
		break;
  case "energieCampingCar":
		if($("input[@name='ajout_reponse']").attr("value")=="15")
		{
				viderSelect("version");
			if (sel > 1){
        loadSelectAJAX("montantcontenuaccessoires");
        loadSelectAJAX("gamme");
				viderSelect("version");
        $("#puissancefiscale").parent().show();
			}else {
				viderSelect("montantcontenuaccessoires");
				viderSelect("gamme");
				viderSelect("version");
        $("#puissancefiscale").parent().hide();
			}
		}
		break;
  case "typeVehiculeCampingCar":
		if($("input[@name='ajout_reponse']").attr("value")=="15")
		{
      if (sel > 1){
        loadSelectAJAX("marque");
      }else {
        viderSelect("marque");
				viderSelect("montantcontenuaccessoires");
				viderSelect("gamme");
				viderSelect("version");
        viderSelect("energieCampingCar");
        $("#puissancefiscale").parent().hide();
      }
		}
		break;
	case "montantcontenuaccessoires":
/* 		if (sel > 1)
			loadSelectAJAX("version");
		else {
			viderSelect("version");
		} */
		break;
	case "version":
		break;
	}
	if ((sel == 1) && (arrayAutreVehicule.indexOf(categorie) >= 0))
		autreVehicule(true, categorie);
}

/**
 * Fonction viderSelect vidage de la liste déroulante
 * 
 * @param categorie
 * @return
 */
function viderSelect(categorie) {
	if ($("#" + categorie).size() > 0) {
		$("#" + categorie).parent().hide();
		for ( var i = getSelect(categorie).length - 1; i >= 0; i--) {
			getSelect(categorie).options[i] = null;
		}
	}
}

/**
 * Fonction getSelect récupération de l'élement sélectionné de la liste
 * déroulante
 * 
 * @param categorie
 * @return
 */
function getSelect(categorie) {
	return document.getElementById(arrayIdSelect[categorie]);
}

/**
 * Fonction idChamp
 * 
 * @param idDiv
 * @return
 */
function idChamp(idDiv) {
	return ($("input", "#" + idDiv).attr("id") != "") ? $("input", "#" + idDiv)
			.attr("id") : $("select", "#" + idDiv).attr("id");
}

/**
 * Fonction nameChamp
 * 
 * @param idDiv
 * @return
 */
function nameChamp(idDiv) {
	return ($("input", "#" + idDiv).attr("name") != undefined) ? $("input",
			"#" + idDiv).attr("name") : $("select", "#" + idDiv).attr("name");
}

/**
 * Fonction valChamp
 * 
 * @param idDiv
 * @return
 */
function valChamp(idDiv) {
	if ($("input", "#" + idDiv).attr("type") == "radio") {
		var valChecked = "";
		$("[@type=radio][@checked]", "#" + idDiv).each(function() {
			valChecked = this.value;
		});
		return valChecked;
	} else
		return ($("input", "#" + idDiv).attr("name") != undefined) ? $("input",
				"#" + idDiv).attr("value") : $("select", "#" + idDiv).attr(
				"value");
}

/**
 * Fonction loadSelectAJAX récupération des données en base en fonction des
 * champs de saisies du formulaire
 * 
 * @param categorie :
 *            exemple de connées "usage"
 * @param selectedValue
 *            on interroge la page /squelettes/vehicule.html avec le paramètre
 *            de l'identifiant du formulaire + la catégorie (ex: usage)
 */
function loadSelectAJAX(categorie, selectedValue) {
//	alert('1. function loadSelectAJAX'); // DEBUG
	var idForm = $("input[@name='ajout_reponse']").attr("value");
	var currSelect = getSelect(categorie);
	// on prépare l'URL ver la page du serveur à intérroger
	var url = "spip.php?page=vehicule&id_form=" + idForm + "&categorie="
			+ categorie;
	for (nomListe in arrayIdSelect) {
		elt = getSelect(nomListe);
		if (elt)
			if (elt.selectedIndex != null) {
				if (elt.selectedIndex >= 0)
					url += "&" + nomListe + "="
							+ elt.options[elt.selectedIndex].value;
			} else
				url += "&" + nomListe + "=" + elt.value;
	}
	// alert('2. function loadSelectAJAX'); // DEBUG
	// une requête envoyé au serveur pour afficher la liste déroulante des types
	// des véhicules
	// cette requête envoi des paramètres en GET
	jQuery
			.ajax( {
				url : url,
				type : "get",
				complete : function(res, status) {

					// alert('3. function loadSelectAJAX'+res.responseText); //
				// DEBUG
				// on récupère les données du serveur
				json = eval(res.responseText);
				// si les données de réponse existe alors
				if (json) {
					if (json[0]) {
						// on récupère la valeur de la date de mise en
						// circulaltions
						if (getSelect("dateMiseEnCirculation"))
							removeError(getSelect("dateMiseEnCirculation").id);

						if ($(currSelect).attr("type") == "text") {
							var liste = "<select id='"
									+ currSelect.id
									+ "' name='"
									+ currSelect.name
									+ "' class='fondl' style='width:320px'></select>";
							$(currSelect).remove();
							$("div#" + categorie).attr("innerHTML", liste);
						} else {

							/**
							 * TODO : Vider select non opérationnel : retourne
							 * une erreur pourquoi? remplacement des données de
							 * la liste déroulante
							 */
							viderSelect(categorie);
						}
						// alert("#" + categorie+".parent().show() visible");
						// on rend visible le conteneur du champ de saisie
						$("#" + categorie).parent().show();

						// on récupère les valeurs du select
						combo = getSelect(categorie);
						// Attention on ne veut pas la valeur autre pour certain champs 
						// dans le devis camping-car
						//alert(categorie);
						if(idForm==15 && (categorie=="typeVehiculeCampingCar"))
						{
							combo.options[combo.length] = new Option("", "");
							combo.options[combo.length] = new Option("- Autre","Autre");
							combo.onchange = function() {
								selectVehiculeOnChange(categorie);
							};
						}else
						if(idForm==15 && (categorie=="version"))
						{
							combo.options[combo.length] = new Option("", "");
							selectVehiculeOnChange(categorie);
						}else
						if(idForm==15 && (categorie=="marque" || categorie=="gamme"))
						{
							combo.options[combo.length] = new Option("", "");
							combo.options[combo.length] = new Option("- Autre","Autre");
							combo.onchange = function() {
								selectVehiculeOnChange(categorie);
							};
            }else
						if(idForm==15 && (categorie=="montantcontenuaccessoires"))
						{
							combo.options[combo.length] = new Option("", "");
							combo.onchange = function() {
								selectVehiculeOnChange(categorie);
							};
						}else
						if (arrayAutreVehicule.indexOf(categorie) >= 0) {
							combo.options[combo.length] = new Option("", "-1");
							combo.options[combo.length] = new Option("- Autre","Autre");
							combo.onchange = function() {
								selectVehiculeOnChange(categorie);
							};
						} else if (categorie == "usage") {
							combo.options[combo.length] = new Option("", "");
							combo.onchange = function() {
							};
						} else {
							combo.options[combo.length] = new Option("", "");
						}
						
						for ( var i = 0; i < json.length; i++) {
							combo.options[combo.length] = new Option(
									json[i].name, "(" + json[i].value + ") "
											+ json[i].name);
						}
						if (selectedValue)
							combo.value = selectedValue;
						if ((combo.length == 3 || combo.length == 2)
								&& !selectedValue && categorie != "usage") {
							combo.selectedIndex = combo.length - 1;
							if (combo.onchange)
								combo.onchange();
						}
					}
				}
			}
			});
}

/**
 * Fonction autreVehicule
 *  On affiche le textarea en fonction du tableau 
 *    arrayAutreVehicule pour auto
 *    arrayAutreVehiculeCamping-Car pour le Camping-Car
 * @param boolean
 *            show : variable booléenne pour la visibilité des champs de saisies
 * @param String
 *            categorie : idendifiant du champ de saisie
 */
function autreVehicule(show, categorie) {
	$("textarea", "div#autreVehicule").val("");
	if (show) {
    var idForm = $("input[@name='ajout_reponse']").attr("value");
    
    // Devis Camping-Car
    if(idForm==15)
    {
      var i = 0;
      // Boucle sur le tableau des identifiant
      // des champs de saisie à faire apparaître
      while (i < arrayAutreVehiculeCamping.length
          && arrayAutreVehiculeCamping[i] != categorie) {

        $("textarea", "div#autreVehicule").val(
            $("textarea", "div#autreVehicule").val()
                + $("select option:selected",
                    "div#" + arrayAutreVehiculeCamping[i] + "").text()
                + "\n");
        i++;
      }
      // rend visible le champs de saisie autreVehicule
      $("#autreVehicule").parent().show();
    }// Devis automobile
    else{
      var i = 0;
      // Boucle sur le tableau des identifiant
      // des champs de saisie à faire apparaître
      while (i < arrayAutreVehicule.length
          && arrayAutreVehicule[i] != categorie) {

        $("textarea", "div#autreVehicule").val(
            $("textarea", "div#autreVehicule").val()
                + $("select option:selected",
                    "div#" + arrayAutreVehicule[i] + "").text()
                + "\n");
        i++;
      }
      // rend visible le champs de saisie autreVehicule
      $("#autreVehicule").parent().show();
    }
	} else {
		// cache le champs de saisie autreVehicule
		$("#autreVehicule").parent().hide();
	}
}

/**
 * Fonction testBonus Vérification du bonus
 * 
 * @return
 */
function testBonus() {
	var inputBonus = $("input", "div#bonus");
	if ((inputBonus.attr("value") == "0.5")
			|| (inputBonus.attr("value") == "0.50"))
		$("#bonus50").parent().show();
	else
		$("#bonus50").parent().hide();
}

/**
 * Fonction testSinistresResponsables On vérifie la sélection du nombre de
 * sinistres responsables
 * 
 * @return
 */
function testSinistresResponsables() {
	if (($("input", "div#nbSinistresResp").attr("value") > 0)
			&& ($("select", "div#bonus50").attr("value") != "select_11_3"))
		$("#dateSinistreResp").parent().show();
	else
		$("#dateSinistreResp").parent().hide();
}

/**
 * Fonction testUsage On vérifie la sélection de l'usage
 * 
 * @return
 */
function testUsage() {
	if ($("select", "div#usage").attr("value")) {
		var usage = $("select", "div#usage").attr("value").substr(0,
				$("select", "div#usage").attr("value").lastIndexOf(")") + 1);
		if (usage == '(1/0)' || usage == '(1/6)' || usage == '(Autre)') {
			$("fieldset.separateur_3").show();
			$("input[@name='Valider']").attr("value", "Valider");
		} else {
			$("fieldset.separateur_3").hide();
			$("input[@name='Valider']").attr("value", "Devis");
		}
	}
}

/**
 * Fonction verificationDevisAjax Vérification des champs du Devis FONCTION
 * IMPORTANTE : elle retourne les résultats
 * 
 * @param test
 * @param champs
 * @param submit
 * @return
 */
function verificationDevisAjax(test, champs, submit) {
	var idForm = $("input[@name='ajout_reponse']").attr("value");
	var url = "spip.php?page=devis&id_form=" + idForm + "&test=" + test;
	if (submit) {
		url += "&valid=1";
		$("input", ".form_" + idForm).each(
				function() {
					if (this.type != "radio")
						url += "&" + this.name + "=" + escape(this.value);
					else {
						var valChecked = "";
						$("[@name='" + this.name + "'][@type=radio][@checked]")
								.each(function() {
									valChecked = this.value;
								});
						url += "&" + this.name + "=" + valChecked;
					}
				});
		$("textarea", ".form_" + idForm).each(function() {
			url += "&" + this.name + "=" + escape(this.value);
		});
		$("select", ".form_" + idForm).each(function() {
			url += "&" + this.name + "=" + this.value;
		});
	} else {
		url += "&" + nameChamp(test) + "=" + valChamp(test);
		for ( var i = 0; i < champs.length; i++) {
			url += "&" + nameChamp(champs[i]) + "="
					+ escape(valChamp(champs[i]));
		}
	}
	jQuery.ajax( {
		url : url,
		type : "get",
		complete : function(res, status) {
			json = eval(res.responseText);
		}
	});
}

/**
 * Fonction getDate récupération de la date d'aujourd'hui en javascript
 * 
 * @param strDate
 * @return
 */
function getDate(strDate) {
	day = strDate.substring(0, 2);
	month = strDate.substring(3, 5);
	year = strDate.substring(6, 10);
	d = new Date();
	d.setDate(day);
	d.setMonth(month - 1);
	d.setFullYear(year);
	return d;
}

/**
 * Fonction getDiff récupération de la période entre 2 dates
 * 
 * @param date_1
 * @param date_2
 * @return
 */
function getDiff(date_1, date_2) {
	diff = date_1.getTime() - date_2.getTime();
	return diff;
}

/**
 * Focntion checkDate Vérification du format de la date
 * 
 * @param strDate
 * @return
 */
function checkDate(strDate) {
	if (strDate != "") {
		var regexDate = /^(\d{1,2}\/){2}\d{4}$/;
		if (regexDate.test(strDate)) {
			var regex = new RegExp("[/-]");
			var date = strDate.split(regex);
			var nbJours = new Array("", 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
					30, 31);
			var result = true;
			if (date["2"] % 4 == 0 && date["2"] % 100 > 0
					|| date["2"] % 400 == 0)
				nbJours["2"] = 29;
			if (isNaN(date["2"]))
				result = false;
			if (isNaN(date["1"]) || date["1"] > 12 || date["1"] < 1)
				result = false;
			if (isNaN(date["0"]) || date["0"] > nbJours[Math.round(date["1"])]
					|| date["0"] < 1)
				result = false;
			return result;
		} else
			return false;
	} else
		return true;
}

/**
 * Fonction checkCodePostal Vérification du code postal
 * 
 * @param strCP
 * @return
 */
function checkCodePostal(strCP) {
	if (strCP != "") {
		var regexCP = /^[0-9]{5}$/;
		return regexCP.test(strCP);
	} else
		return true;
}

/**
 * Fonction showError Affichage des erreurs
 * 
 * @param idField
 * @param txt
 * @return
 */
function showError(idField, txt) {
	if (!$("#error" + idField).attr("id")) {
		var divErreur = "<div id='error" + idField
				+ "' class='error'><span style='color:red;font-weight:bold;'>"
				+ txt + "</span></div>";
		if ($("#" + idField).attr("type") != "radio")
			$("#" + idField).before(divErreur);
		else
			$("#" + idField).parent().before(divErreur);
	} else
		$("#error" + idField).attr("innerHTML",
				"<span style='color:red;font-weight:bold;'>" + txt + "</span>");
}

/**
 * Fonction removeError Suppression de l'affichage des erreurs
 * 
 * @param idField
 * @return
 */
function removeError(idField) {
	$("#error" + idField).remove();
}

/**
 * Au chargement de la page
 */
$(document).ready(function() {
	$("div#form").each($.formulaireDevis);
	$("div#form").show();

	if (!Array.indexOf) {
		Array.prototype.indexOf = function(obj) {
			for ( var i = 0; i < this.length; i++) {
				if (this[i] == obj) {
					return i;
				}
			}
			return -1;
		};
	}
});

