var NUM = '0123456789';
var ALPHA = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var ALPHABIS = 'âäàåéêëèïîìôöòüûùÿÄÅÉæÆÖÜÇç';
var SP = ' ';
var OTHER1 = '-\'&';
var OTHER2 = '_$&@"€';
var OTHER3 = '~{([|`\^)]}=+*/,?;.:!§%µ¨£¤<>²_$&@"-\'';
var OTHER4 = '#';
/****************************************************************************************************
																																					Librairie JAVASCRIPT

	Version 1.0 (05/10/2000) :
	function isComponentExist(pComponent)
	function isInputValueEmpty(pFieldName)

	Version 1.1 (13/10/2000) :
	function ckeckFieldsPriority()

	Version 1.2 (26/10/2000) :
	function isFieldValueAllowed(pFieldName, pSetCharAllowed)
	function isFieldValueValidWithMask(pFieldName, pMask)

****************************************************************************************************/

// réecriture de la fonction toFixed pour Safari 
if (!Number.prototype.toFixed)

Number.prototype.toFixed = function(precision) {
    var power = Math.pow(10, precision || 0);
    return String(Math.round(this * power)/power);
}



function giveFocusIfOk(o) {
	if (o && o.focus && typeof o.focus == 'function') o.focus();
}

/****************************************************************************************************
	function isComponentExist(pComponent)
	Cette fonction permet de tester l'existance d'un composant d'un formulaire.
	Elle renvoie un booléen "true" si le composant existe et "false" sinon
	En entrée : pComponent = le nom complet d'un comosant (ex: document.monForm.monChamp)
	En sortie : "true" si le composant existe et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isComponentExist(pComponent) {
	return (typeof(pComponent) != 'undefined');
}



/****************************************************************************************************
	function isInputValueEmpty(pFieldName)
	Cette fonction permet de tester si la valeur d'un champ de type INPUT est vide ou non
	Elle renvoie un booléen "true" si le champ n'a pas de valeur (vide) et "false" sinon
	En entrée : pFieldName = le nom complet d'un champ (ex: document.monForm.monChamp)
	En sortie : "true" si le champ n'a pas de valeur et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isInputValueEmpty(pFieldName) {
	if ((typeof(pFieldName) != 'undefined') && (typeof(pFieldName.value) != 'undefined'))
		return (pFieldName.value == '');
	else
		return null;
}



/****************************************************************************************************
	function ckeckFieldsPriority()
	Cette fonction permet de tester l'ordre de priorité de champs d'un formulaire
	Elle renvoie un booléen "true" si l'ordre de saisie des champs est respecté et "false" sinon
	En entrée : Un nombre de paramètres variable mais devant respecter la syntaxe suivante :
		- les paramètres d'indice pair doivent correspondre à un champ de saisie (ex: document.monForm.chp1)
		- les paramètres d'indice impair doivent correspondre à un entier qui définit la propriété du champ de saisie (ex: 1)
			La priorité la plus forte est 0, 1 étant moins prioritaire ...
			Si des champs ont la même priorité et que l'un d'entre eux est renseigné, les autres doivent l'être aussi
	En sortie : "true" si l'ordre de saisie des champs est respecté et "false" sinon

	Exemple d'appel : ckeckFieldsPriority(document.monForm.chp1,1,document.monForm.chp2,1,document.monForm.chp3,2)

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					13/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function ckeckFieldsPriority() {
	var vNbArgs = arguments.length;
	var vIsArgsCorrect = false;
	var vCheckOk = false;
	var vMessage = '';

	if ((vNbArgs > 0) && (vNbArgs % 2 == 0)) { // Il y a un nombre pair de paramètres passés à cette fonction
		var vIsArgsCorrect = true;
		for (var i = 0; i < vNbArgs; i = i + 2) { // vérification des types des paramètres
			if ((typeof(arguments[i]) != 'object') || (typeof(arguments[i].value) != 'string') || (typeof(arguments[i + 1]) != 'number'))
				vIsArgsCorrect = false;
		}

		if (vIsArgsCorrect) { // Vérification des propriétés de saisie des champs
			vCheckOk = true;
			var vCpt1 = 0;
			while ((vCpt1 < vNbArgs) && (vCheckOk)) {
				var vCpt2 = vCpt1 + 2;
				while ((vCpt2 < vNbArgs) && (vCheckOk)) {
					if ((arguments[vCpt1].value == '') && (arguments[vCpt2].value != '') && (arguments[vCpt2 + 1] >= arguments[vCpt1 + 1])) {
						vMessage = 'Le champ ' + arguments[vCpt1].name + ' doit être saisi';
						vCheckOk = false;
					}
					else
					if ((arguments[vCpt1].value != '') && (arguments[vCpt2].value == '') && (arguments[vCpt2 + 1] <= arguments[vCpt1 + 1])) {
						vMessage = 'Le champ ' + arguments[vCpt2].name + ' doit être saisi';
						vCheckOk = false;
					}
					vCpt2 = vCpt2 + 2;
				}
				vCpt1 = vCpt1 + 2;
			}
		}
	}

	if (!vIsArgsCorrect) alert('Définition incorrecte de la fonction \'ckeckFieldsPriority()\'');
	if (vMessage != '') alert(vMessage);

	return vCheckOk;
}



/****************************************************************************************************
	function isFieldValueAllowed(pFieldName, pSetCharAllowed)
	Cette fonction permet de tester que la valeur d'un champ pFieldName ne contient bien que des caractères définis
	dans pSetCharAllowed.
	Elle renvoie un booléen "true" si la valeur du champ ne contient que des caractères contenu dans pSetCharAllowed et "false" sinon
	En entrée : pFieldName = le nom complet d'un champ (ex: document.monForm.monChamp)
									 pSetCharAllowed = une chaine de caractères qui définit les caractères autorisés pour la valeur du champ
									 (ex: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$&#@')
	En sortie : "true" si le champ ne contient que des caractères définis dans pSetCharAllowed et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					26/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isFieldValueAllowed(pFieldName, pSetCharAllowed) {
	var vCheckOk = false;

	if ((typeof(pFieldName) != 'undefined') && (typeof(pFieldName.value) != 'undefined')) {
		vCheckOk = true;

		if (typeof(pSetCharAllowed) == 'string') {
			var vCpt = 0;
			while ((vCheckOk) && (vCpt < pFieldName.value.length)) {
				vCheckOk = (pSetCharAllowed.indexOf(pFieldName.value.charAt(vCpt)) > -1);
				vCpt++;
			}
		}
	}

	return vCheckOk;
}



/****************************************************************************************************
	isFieldValueValidWithMask(pFieldName, pMask)
	Cette fonction permet de tester que la valeur d'un champ pFieldName est correctement formatée suivant le masque pMask
	Elle renvoie un booléen "true" si la valeur du champ est correctement formatée et "false" sinon
	En entrée : pFieldName = le nom complet d'un champ (ex: document.monForm.monChamp)
									 pMask = une chaine de caractères qui définit le formatage de la valeur du champ
									 (ex: '(###) ###-####')
	En sortie : "true" si la valeur du champ est correctement formatée et "false" sinon

	Les caractères de masque reconnus :
	# : le caractère doit être un nombre
	? : le caractère doit être une lettre
	! : le caractère doit être un nombre ou une lettre
	* : le caractère peut être n'importe quoi
	Il NE FAUT PAS que la valeur de votre champ pFieldName contiennent les caractères #?!

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					26/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isFieldValueValidWithMask(pFieldName, pMask) {
	if ((typeof(pFieldName) != 'undefined') && (typeof(pFieldName.value) != 'undefined') && (pFieldName.value.length > 0)
		&& (typeof(pMask) == 'string') && (pMask.length > 0) && (pFieldName.value.length == pMask.length)) {

		for (vCpt = 0; vCpt < pFieldName.value.length; vCpt++) {
			vFieldValueChar = pFieldName.value.charAt(vCpt);
			vMaskChar = pMask.charAt(vCpt);

			if (vMaskChar == '#') { // Cas d'un chiffre
				vRefString = '0123456789';
				if (vRefString.indexOf(vFieldValueChar.toLowerCase()) == -1)
					return false;
			}
			else
			if (vMaskChar == '?') { // Cas d'une lettre
				vRefString = 'abcdefghijklmnopqrstuvwxyz';
				if (vRefString.indexOf(vFieldValueChar.toLowerCase()) == -1)
					return false;
			}
			else
			if (vMaskChar == '!') { // Cas d'une lettre ou d'un chiffre
				vRefString = '0123456789abcdefghijklmnopqrstuvwxyz';
				if (vRefString.indexOf(vFieldValueChar.toLowerCase()) == -1)
					return false;
			}
			else
			if (vMaskChar == '*') { // Cas de n'importe quel caractère
			}
			else
			if (vMaskChar != vFieldValueChar) { // Cas d'un caractère imposé par le masque
				return false;
			}
		}
		return true;
	}
	else
		return false;
}

function isChampValid(pField, pFieldLabel, pSetCharAllowed, pFieldLengthMin, pFieldLengthMax, isFieldMandatory) {
	var vResult = true;
	var vMessage = '';
	var vFieldValue = pField.value;
	// Internet explorer == undefined to be of that ize but ize not (yes). Voir ci-dessous:
	var vFieldLength = vFieldValue == undefined || vFieldValue == null ? 0 : pField.value.length;
	// Cette dernière ligne bizarre est pour Internet explorer (yes to be ize of it)

	if (vFieldLength > 0) {
		// Verification des caracteres
		var vCpt = 0;
		while ((vResult) && (vCpt < vFieldLength)) {
			vResult = (pSetCharAllowed.indexOf(vFieldValue.charAt(vCpt)) > -1);

			// Gestion des caractères spéciaux
			if ((!vResult) && (escape(vFieldValue.charAt(vCpt)).indexOf('%') == 0)) {
				// Autorisation des retours chariots (nécessaire pour les TEXTAREA)
				if ((vFieldValue.charCodeAt(vCpt) == 10) || (vFieldValue.charCodeAt(vCpt) == 13)) {
					vResult = true;
				}
			}
			vCpt++;
		}

		if (!vResult) {
			vMessage += "La valeur du champ '" + pFieldLabel + "' est incorrecte.\n";
		}
		else {
			if (pFieldLengthMin > 0) { // Verification de nombre de caracteres minimum
				if (vFieldLength < pFieldLengthMin) {
					vMessage +="La taille minimum du champ '" + pFieldLabel + "' est de " + pFieldLengthMin + " caractères.\n";
					vResult = false;
				}
			}
			if (vFieldLength > pFieldLengthMax) { // Verification de nombre de caracteres maximum
				vMessage +="La taille maximum du champ '" + pFieldLabel + "' est de " + pFieldLengthMax + " caractères.\n";
				vResult = false;
			}
		}
	}
	else { // if (vFieldValue == 0)
		if (isFieldMandatory) { // Verification de la saisie obligatoire
			vMessage += "Le champ '" + pFieldLabel + "' est obligatoire.\n";
			vResult = false;
		}
	}

	if (!vResult) {
		alert(vMessage);
		//pField.focus();
		giveFocusIfOk(pField);
	}

	return vResult;
}

/**********************************************************************************************
	Gestion de l'envoi des formulaires
***********************************************************************************************/
function submitForm(pForm, pVerifOK) {
	if (pVerifOK)
		pForm.submit();
}

function s_marque(pParam){
			var v = "";
			var vm ="";
			switch(pParam)
			{
				case 1:
					vm = getSelectedItemValue(document.catalogue_lld.type_veh);
					break;
				case 2:
					vm = getSelectedItemValue(document.catalogue_loa.type_veh);
					break;
				case 3:
					vm = getSelectedItemValue(document.catalogue_loa_credit.type_veh);
					break;
			}

			if (vm.length == 0) {
				alert('Vous devez obligatoirement sélectionner une valeur dans la liste déroulante \'Marque\'');
			}else{
				switch(pParam)
				{
					case 1:
						document.catalogue_lld.submit();
						break;
					case 2:
						document.catalogue_loa.submit();
						break;
					case 3:
						document.catalogue_loa_credit.submit();
						break;
				}
			}
		}
/*
 * Fonction affichant les layers home pages
 */
function displayLayer(){
		//Visibilité
		document.getElementById("div_promo_offres_g").style.visibility = "visible";
		document.getElementById("div_promo_offres_marque_g").style.visibility = "visible";
		document.getElementById("div_promo_offres_modele_g").style.visibility = "visible";
		document.getElementById("div_promo_offres_photo_g").style.visibility = "visible";
		document.getElementById("div_promo_offres_txt_g").style.visibility = "visible";
		document.getElementById("div_promo_offres_GO_g").style.visibility = "visible";
}
/*
 * Fonction qui affecte les offres à afficher
 */
function affectOffre(classement,marque,modele,photo,txt,lien){
	gClassement = classement;
	document.getElementById("div_promo_offres_marque_g").innerHTML = marque;
	document.getElementById("div_promo_offres_modele_g").innerHTML = modele;
	document.getElementById("div_promo_offres_photo_g").innerHTML = photo;
	document.getElementById("div_promo_offres_txt_g").innerHTML = txt;
	document.getElementById("div_promo_offres_GO_g").innerHTML = lien;
	displayLayer();
}
/*
 * Fonction aiguillage sur les layers et gestion de time out
 */
function cacheOffre(){
	//Taille du tableau de données
	if(tab_data.length != 0 && !gArret){
		switch(tab_data.length){
			case 1:
				affectOffre(tab_data[0]["classement"],tab_data[0]["marque"],tab_data[0]["modele"],tab_data[0]["photo"],tab_data[0]["txt"],tab_data[0]["go"]);
				break;
			case 2:
				switch(gClassement){
		  			case 1:
						affectOffre(tab_data[1]["classement"],tab_data[1]["marque"],tab_data[1]["modele"],tab_data[1]["photo"],tab_data[1]["txt"],tab_data[1]["go"]);
						break;
					case 2:
						affectOffre(tab_data[0]["classement"],tab_data[0]["marque"],tab_data[0]["modele"],tab_data[0]["photo"],tab_data[0]["txt"],tab_data[0]["go"]);
						break;
					default:
						affectOffre(tab_data[0]["classement"],tab_data[0]["marque"],tab_data[0]["modele"],tab_data[0]["photo"],tab_data[0]["txt"],tab_data[0]["go"]);
						break;
				}
				break;
			case 3:
				switch(gClassement){
		  			case 1:
						affectOffre(tab_data[1]["classement"],tab_data[1]["marque"],tab_data[1]["modele"],tab_data[1]["photo"],tab_data[1]["txt"],tab_data[1]["go"]);
						break;
					case 2:
						affectOffre(tab_data[2]["classement"],tab_data[2]["marque"],tab_data[2]["modele"],tab_data[2]["photo"],tab_data[2]["txt"],tab_data[2]["go"]);
						break;
					case 3:
						affectOffre(tab_data[0]["classement"],tab_data[0]["marque"],tab_data[0]["modele"],tab_data[0]["photo"],tab_data[0]["txt"],tab_data[0]["go"]);
						break;
					default:
						affectOffre(tab_data[0]["classement"],tab_data[0]["marque"],tab_data[0]["modele"],tab_data[0]["photo"],tab_data[0]["txt"],tab_data[0]["go"]);
						break;
				}
				break;
		}
		if(tab_data.length > 1){
			timer = setTimeout("cacheOffre()", DELAY);
		}else if(tab_data.length != 0){
			affectOffre(tab_data[0]["classement"],tab_data[0]["marque"],tab_data[0]["modele"],tab_data[0]["photo"],tab_data[0]["txt"],tab_data[0]["go"]);
		}
	}
}


//formate les floats
function virgRep(elt)
{
	elt.value = elt.value.replace(',','.');
}

function maj(){
	if(document.form1.entreprise.value==""){
		document.form1.creation_soc[0].checked=false;
		document.form1.creation_soc[1].checked=false;
		if(!document.form1.creation_soc[0].checked) {
  			document.getElementById("creation").style.display='none';
		}else if(document.form1.creation_soc[1].checked){
  			document.getElementById("creation").style.display='none';
 		}
	}
}

function displayTxt(){
	if(document.form1.creation_soc[0].checked) {
  		document.getElementById("creation").style.display='';
	}else if(document.form1.creation_soc[1].checked){
  		document.getElementById("creation").style.display='none';
 	}

}

function displayFlotte(){
	if(document.form1.flotte[0].checked) {
  		document.getElementById("flotte").style.display='';
	}else if(document.form1.flotte[1].checked){
  		document.getElementById("flotte").style.display='none';
 	}

}

function display_bloc(){
	if(document.saisie.vousetes[0].checked || document.saisie.vousetes[2].checked){
		//*
  		document.getElementById("tab_parprof").style.display='';
		document.getElementById("tab_particulier_bas").style.display='';
		document.getElementById("tab_infos").style.display='';
		document.getElementById("tab_bancaire").style.display='';
		document.getElementById("tab_societe").style.display='none';
		document.getElementById("tab_societe_bas").style.display='none';
		document.getElementById("tab_projet_auto").style.display='';

		if(document.saisie.vousetes[0].checked){
			document.getElementById("prof_particulier").style.display='';
			document.getElementById("prof_liberale").style.display='none';
			document.getElementById("prof_particulier_siret").style.display='none';
			document.getElementById("pro_tel").style.display='none';
			document.getElementById("pro_adr").style.display='none';
			document.getElementById("par_tel").style.display='';
			document.getElementById("par_adr").style.display='';

		}else if(document.saisie.vousetes[2].checked){
			document.getElementById("prof_liberale").style.display='';
			document.getElementById("prof_particulier").style.display='none';
			document.getElementById("prof_particulier_siret").style.display='';
			document.getElementById("pro_tel").style.display='';
			document.getElementById("pro_adr").style.display='';
			document.getElementById("par_tel").style.display='none';
			document.getElementById("par_adr").style.display='none';
		}
		//*/
		/*
			document.getElementById('iframe_sofinco').style.display ='';
			document.getElementById("tab_societe").style.display='none';
			document.getElementById("tab_societe_bas").style.display='none';
		//*/
	}else if(document.saisie.vousetes[1].checked ){
  	document.getElementById("tab_societe").style.display='';
		document.getElementById("tab_societe_bas").style.display='';
		document.getElementById("tab_parprof").style.display='none';
		document.getElementById("tab_infos").style.display='none';
		document.getElementById("tab_bancaire").style.display='none';
		document.getElementById("tab_particulier_bas").style.display='none';
		document.getElementById("tab_projet_auto").style.display='none';
		//* SOFINCO {
 	  document.getElementById('iframe_sofinco').style.display ='none';
 	  // } SOFINCO  */
 	}
}
function rule(pForm){
	for(var i=0; i<pForm.length; i++) {
		var e = pForm.elements[i];
		switch(e.type){
				case 'text':
					e.value='';
					break;
				case 'select-one':
					e.name.selectedIndex= 0;
     				break;
				case 'radio':
					e.name.checked=false;
					break;
		}
	 }
}
function clearVar(){
	if(document.getElementById("tab_societe").style.display==''){
		//Activation de la société
		rule(document.formu);
	}else if(document.getElementById("tab_parprof").style.display==''){
		//Activation particulier
		rule(document.form1);
	}
}
//Formulaire contact client
function verifContactSoc(){
	var ALL = NUM + ALPHA + ALPHABIS + SP + OTHER1 + OTHER2 + OTHER3 + OTHER4;

	if (!isChampValid(document.form1.entreprise, 'Entreprise', ALL, 2, 100, true)) return false;

	if(!document.form1.creation_soc[0].checked && !document.form1.creation_soc[1].checked) {
	 	alert('Vous devez obligatoirement cocher une valeur pour le champ \'Entreprise crée depuis\'');
		return false;
	}

	 if (!isChampValid(document.form1.siren, 'N° de SIRET', NUM, 14, 14, true)) return false;
	 if (!isChampValid(document.form1.forme_juridique, 'Forme Juridique', ALL, 1, 10, true)) return false;
	 if (!isChampValid(document.form1.kilometrage_annuel, 'Kilometrage annuel', NUM, 1, 10, true)) return false;
	 if (!isChampValid(document.form1.delai_achat, 'Délai avant acquisition ', ALL, 1, 10, true)) return false;

	var pSit = getSelectedItemValue(document.form1.civilite);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Civilité\' du bloc "Vos coordonnées".');
		return false;
	}

	if (!isChampValid(document.form1.nom, 'Nom', ALL, 1, 50, true)) return false;
	else if (!isChampValid(document.form1.prenom, 'Prénom', ALL, 1, 50, true)) return false;

	var pSit = getSelectedItemValue(document.form1.profession);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Profession\' du bloc "Vos coordonnées".');
		return false;
	}

	var pSit = getSelectedItemValue(document.form1.service);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Service\' du bloc "Vos coordonnées".');
		return false;
	}

	var pSit = getSelectedItemValue(document.form1.effectif);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Effectif de votre entreprise\' du bloc "Vos coordonnées".');
		return false;
	}

	 if (!isOneRadioButtonChecked(document.form1.flotte)) {
		alert('Vous devez obligatoirement cocher une valeur pour le champ \'Votre entreprise a-t-elle une flotte automobile\'');
		return false;
	}

	if(document.form1.flotte[0].checked) {
		var pSit = getSelectedItemValue(document.form1.nb_flotte);
		if ((pSit.length == 0) || isNaN(pSit)) {
			alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Nombre de véhicules\' du bloc "Vos coordonnées".');
			return false;
		}
	}

	if (!isChampValid(document.form1.adresse, 'Adresse', ALL, 1, 75, true)) return false;
	else if (!isChampValid(document.form1.adresse_bis, 'Complément d\'adresse', ALL, 1, 75, false)) return false;
	else if (!isChampValid(document.form1.code_postal, 'Code postal', ALL, 2, 5, true)) return false;
	else if (!isChampValid(document.form1.ville, 'Ville', ALL, 1, 50, true)) return false;
	else if (!isChampValid(document.form1.telephone, 'Téléphone', NUM, 10, 10, true)) return false;
	else if (!isChampValid(document.form1.fax, 'Fax', NUM, 10, 10, false)) return false;
	else if (!isChampValid(document.form1.email, 'E-mail', NUM + ALPHA + '-_@.', 1, 100, true)) return false;
	else if (!isCorrectEmailString(document.form1.email.value)) {
		alert('L\'adresse E-mail saisie est incorrecte');
		giveFocusIfOk(document.form1.email);//.focus();
		return false;
	}
	if (!isChampValid(document.form1.budget_mensuel, 'Budget mensuel automobile maximum', NUM+',.> ', 1, 9999999, true)) return false;
	return true;
}
// Formulaire pop-in sur page v_remise.php
function verifFormVremise(){
	

	var ALL = NUM + ALPHA + ALPHABIS + SP + OTHER1 + OTHER2 + OTHER3 + OTHER4;
	var NOM = ALPHA + ALPHABIS + SP + "-'";
	var ADR = NOM + NUM;
	var ALNUM = ALPHA + NUM;



	/*
	var pSit = getSelectedItemValue(document.form_popin.civilite);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Civilité\'.');
		return false;
	}
	*/


	if (!isChampValid(document.form_popin.nom, 'Nom', NOM, 1, 30, true)) return false;
	else if (!isChampValid(document.form_popin.prenom, 'Prénom', NOM, 1, 30, true)) return false;
	else if (!isChampValid(document.form_popin.jours, 'Jour de naissance', NUM, 2, 2, true)) return false;
	else if (!isChampValid(document.form_popin.mois, 'Mois de naissance', NUM, 2, 2, true)) return false;
	else if (!isChampValid(document.form_popin.annee, 'Année de naissance', NUM, 4, 4, true)) return false;

	var date_n = document.form_popin.jours.value+"/"+document.form_popin.mois.value+"/"+document.form_popin.annee.value;

	if (!valideDate(date_n, 'naissance')) {
		 	 giveFocusIfOk(document.form_popin.jours);//.focus();
		 	 return false;
	}


	if (!isChampValid(document.form_popin.adresse, 'Adresse', ADR, 1, 32, true)) return false;
	else if (!isChampValid(document.form_popin.adresse_bis, 'Complément d\'adresse', ADR, 1, 32, false)) return false;
	else if (!isChampValid(document.form_popin.code_postal, 'Code postal', NUM, 5, 5, true)) return false;
	else if (!isChampValid(document.form_popin.ville, 'Ville', NOM, 1, 32, true)) return false;
	else if (!isChampValid(document.form_popin.telephone, 'Téléphone', NUM, 10, 10, true)) return false;
	else if (!isChampValid(document.form_popin.email, 'E-mail', NUM + ALPHA + '-_@.', 1, 50, true)) return false;
	else if (!isCorrectEmailString(document.form_popin.email.value)) {
		alert('L\'adresse E-mail saisie est incorrecte');
		giveFocusIfOk(document.form1.email);//.focus();
		return false;
	}
	else if (document.form_popin.conditions.checked == false){
	    alert ("Vous devez accepter les conditions générales d'utilisation");
	    return false;
	}

	document.form_popin.news.value = document.form_popin.news[0].checked || document.form_popin.news[1].checked;
	document.form_popin.news.value = document.form_popin.news.value ? '1' : '';

	//if (!isChampValid(document.form_popin.namePartner, 'Nom de votre conjoint(e)', ALPHA, 1, 1, true)) return false;
	if (!isChampValid(document.form_popin.delai_achat, 'Delai avant achat', ALPHA, 1, 20, true)) return false;
	if (!isOneRadioButtonChecked(document.form_popin.news)) {
		alert('Vous devez obligatoirement cocher une valeur pour le champ \'Obtenir des offres personnalisées\'');
		return false;
	}

	
	return true;
}

//Formulaire contact client
function verifContactPar(){
	var ALL = NUM + ALPHA + ALPHABIS + SP + OTHER1 + OTHER2 + OTHER3 + OTHER4;
	var NOM = ALPHA + ALPHABIS + SP + "-'";
	var ADR = NOM + NUM;
	var ALNUM = ALPHA + NUM;

	var pSit = getSelectedItemValue(document.formu.civilite);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Civilité\' du bloc "Vos coordonnées".');
		return false;
	}

	if (!isChampValid(document.formu.nom, 'Nom', NOM, 1, 30, true)) return false;
	else if (!isChampValid(document.formu.prenom, 'Prénom', NOM, 1, 30, true)) return false;
	else if (!isChampValid(document.formu.jours, 'Jour de naissance', NUM, 2, 2, true)) return false;
	else if (!isChampValid(document.formu.mois, 'Mois de naissance', NUM, 2, 2, true)) return false;
	else if (!isChampValid(document.formu.annee, 'Année de naissance', NUM, 4, 4, true)) return false;

	var date_n = document.formu.jours.value+"/"+document.formu.mois.value+"/"+document.formu.annee.value;

	if (!valideDate(date_n, 'naissance')) {
		 	 giveFocusIfOk(document.formu.jours);//.focus();
		 	 return false;
	}

	if (!isChampValid(document.formu.code_naissance, 'Département / Code postal de naissance', ALNUM, 2, 5, true)) return false;
	else if (!isChampValid(document.formu.ville_naissance, 'Ville de naissance', NOM, 1, 32, true)) return false;
	else if (!isChampValid(document.formu.adresse, 'Adresse', ADR, 1, 32, true)) return false;
	else if (!isChampValid(document.formu.adresse_bis, 'Complément d\'adresse', ADR, 1, 32, false)) return false;
	else if (!isChampValid(document.formu.code_postal, 'Code postal', NUM, 5, 5, true)) return false;
	else if (!isChampValid(document.formu.ville, 'Ville', NOM, 1, 32, true)) return false;
	else if (!isChampValid(document.formu.telephone, 'Téléphone', NUM, 10, 10, true)) return false;
	else if (!isChampValid(document.formu.email, 'E-mail', NUM + ALPHA + '-_@.', 1, 50, true)) return false;
	else if (!isCorrectEmailString(document.formu.email.value)) {
		alert('L\'adresse E-mail saisie est incorrecte');
		giveFocusIfOk(document.form1.email);//.focus();
		return false;
	}
	//Infos personnelles
	var pSit = getSelectedItemValue(document.formu.situation);
	if ((pSit.length == 0) || isNaN(pSit)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Vous êtes\' du bloc "Vos informations personnelles"');
		return false;
	}
	else if (!isChampValid(document.formu.nb_enfant, 'Nombre d\'enfants à charge', NUM, 1, 1, true)) return false;


	if(document.saisie.vousetes[0].checked){
			var pProf = getSelectedItemValue(document.formu.profession);
			if ((pProf.length == 0) || isNaN(pProf)) {
				alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Profession\'');
				return false;
			}
	}else if(document.saisie.vousetes[2].checked){
			var pProf = getSelectedItemValue(document.formu.profession_liberal);
			if ((pProf.length == 0) || isNaN(pProf)) {
				alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Profession\'');
				return false;
			}
	}
	if (!isChampValid(document.formu.mois_emploi, 'Date entrée dans l\'emploi', NUM, 2, 2, true)) return false;
	else if (!isChampValid(document.formu.annee_emploi, 'Date entrée dans l\'emploi', NUM, 4, 4, true)) return false;
	var date_n = "01/"+document.formu.mois_emploi.value+"/"+document.formu.annee_emploi.value;
	if (!valideDate(date_n, 'entrée dans l\'emploi')) {
		 	 giveFocusIfOk(document.formu.mois_emploi);//.focus();
		 	 return false;
	}

	if (!isChampValid(document.formu.revenue_mensuel, 'Revenus net mensuel du foyer', NUM/*+',.'*/, 1, 10, true)) return false;
	
	if ( !isChampValid(document.formu.nom_employeur, 'Nom de votre employeur', ALL, 1, 55, true) ) return false;
	
	var pLog = getSelectedItemValue(document.formu.logement);
	if ((pLog.length == 0) || isNaN(pLog)) {
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Logement\'');
		return false;
	}
	else if (!isChampValid(document.formu.charge_mensuel, 'Charges mensuelles', NUM/*+',.'*/, 1, 10, true)) return false;
	else if (!isChampValid(document.formu.amount, 'Montant de l\'emprunt', NUM, 1, 6, true)) return false;
	else if (!isChampValid(document.formu.type_logement, 'Type de logement', ALPHA, 1, 15, true)) return false;
	
	
	//budget mensuel  !
	if (document.formu.amount.value > 0) {
		if (isChampValid(document.formu.budget_mensuel, 'Budget mensuel automobile maximum', NUM, 1, 20, true)){
			budget = new Number(document.formu.budget_mensuel.value);
			if ( !budgetMensuelIsOk( budget ) ) {
				montant = document.formu.amount.value;
				range = getBudgetRange( montant );
				alert("Pour un emprunt de "+montant+" euros, la mensualité doit être comprise entre "+range[0]+" et "+range[1]+" euros." );
				giveFocusIfOk(document.formu.budget_mensuel);
				return false;
			}
			
		}
		else return false;
	}
	
	var pBanq = getSelectedItemValue(document.formu.banque);
	if ((pBanq.length == 0) || isNaN(pBanq)){
		alert('Vous devez obligatoirement sélectionner une valeur pour le champ \'Banque\'');
		return false;
	}
	else if (!isChampValid(document.formu.mois_banque, 'Depuis', NUM, 2, 2, true)) return false;
	else if (!isChampValid(document.formu.annee_banque, 'Depuis', NUM, 4, 4, true)) return false;
	var date_n = "01/"+document.formu.mois_banque.value+"/"+document.formu.annee_banque.value;
	if (!valideDate(date_n, 'Depuis')) {
		 	 giveFocusIfOk(document.formu.mois_banque);//.focus();
		 	 return false;
	}
	 if (!isOneRadioButtonChecked(document.formu.carte_bleue)) {
		alert('Vous devez obligatoirement cocher une valeur pour le champ \'Possedez-vous une carte bleue\'');
		return false;
	}

	/* ajout de vérifications pour les champs supplémentaires de CETELEM (Julien B) */
	var situation = document.getElementById('client_situation').options[document.getElementById('client_situation').selectedIndex].value;
	var madame = (document.getElementById('client_civilite').value == 2); // 1: monsieur; 2: madame

	if (madame && !isChampValid(document.formu.maidenNameCustomer, 'Nom de jeune fille', NOM, 1, 30, true)) return false;
	if ( situation == 2 || situation == 5) /* marié ou vit maritalement */
	{
		// si conjointe, nom de jeune fille de la conjointe
		var partnerMadame = (document.formu.titlePartner.value == 2); // 1: monsieur; 2: madame

		if (!isChampValid(document.formu.namePartner, 'Nom de votre conjoint(e)', NOM, 1, 30, true)) return false;
		else if (partnerMadame && !isChampValid(document.formu.maidenNamePartner, 'Nom de jeune fille de votre coinjointe', NOM, 1, 30, true)) return false;
		else if (!isChampValid(document.formu.firstNamePartner, 'Prénom de votre conjoint(e)', NOM, 1, 30, true)) return false;
		else if (!isChampValid(document.formu.birthLocationPartner, 'Département de naissance de votre conjoint(e)', ALNUM, 2, 3, true)) return false;
		else if (!isChampValid(document.formu.birthCityPartner, 'Ville de naissance de votre conjoint(e)', NOM, 1, 32, true)) return false;
		else if (!isChampValid(document.formu.birthDateDayPartner, 'Jour de naissance', NUM, 2, 2, true)) return false;
		else if (!isChampValid(document.formu.birthDateMonthPartner, 'Mois de naissance', NUM, 2, 2, true)) return false;
		else if (!isChampValid(document.formu.birthDateYearPartner, 'Année de naissance', NUM, 4, 4, true)) return false;
		else if (!valideDate(document.formu.birthDateDayPartner.value+'/'+document.formu.birthDateMonthPartner.value+'/'+document.formu.birthDateYearPartner.value, 'naissance de votre conjoint(e)')) {
		 	 giveFocusIfOk(document.formu.birthDateDayPartner);//.focus();
		 	 return false;
		}
		else if ( !isChampValid(document.formu.nom_employeur_cj, 'Nom de l\'mployeur de votre conjoint(e)', ALL, 1, 55, true) ) return false;
		else if ( !isChampValid(document.formu.revenus_mensuel_cj, 'Revenus de votre conjoint(e)', NUM, 1, 4, true) ) return false;
	}

	document.formu.news.value = document.formu.news[0].checked || document.formu.news[1].checked;
	document.formu.news.value = document.formu.news.value ? '1' : '';
	if(checkCetelem()){
		//if (!isChampValid(document.formu.namePartner, 'Nom de votre conjoint(e)', ALPHA, 1, 1, true)) return false;
		if (!isChampValid(document.formu.delai_achat, 'Delai avant achat', ALL, 1, 20, true)) return false;
		else if (!isChampValid(document.formu.nationalityCustomer, 'Nationalité', ALPHA, 1, 1, true)) return false;
		else if (!isChampValid(document.formu.housingSeniorityCustomer, 'Dans votre logement depuis', NUM, 4, 4, true)) return false;
		else if (!valideDate("01/01/"+document.formu.housingSeniorityCustomer.value, 'entrée dans le logement')) {
			giveFocusIfOk(document.formu.housingSeniorityCustomer);
			return false;
		}
		else if (!isChampValid(document.formu.contractTypeCustomer, 'Type de contrat', ALPHA, 1, 1, true)) return false;
		//else if (!isChampValid(document.formu.duree_contrat, 'Durée de l\'engagement', NUM, 2, 2, true)) return false;
		
		// TOD0: trouver pq ie buggue quand ce champs est testé
		// DONE: pasque l'attribut "value" d'un radio/checkbox marche pas sous IE
		/*if(typeOf(document.formu.financement) != 'undefined' ){
			var financeurs = document.formu.financement.value.split(',');
			if (financeurs.length > 2) {
				alert('Vous ne pouvez pas choisir plus de 2 de nos partenaires en financement.');
				return false;
			}
		}*/
		if (!isOneRadioButtonChecked(document.formu.news)) {
			alert('Vous devez obligatoirement cocher une valeur pour le champ \'Obtenir des offres personnalisées\'');
			return false;
		}
	}
	
	return true;
}

/* Affichage d'une animation flash avec focus direct (IE, Opera, Firefox) */
function InsertFlash(data, width, height, transparent){
    var swf = '<object'+
              ' type="application/x-shockwave-flash" data="'+data+
              '" width="'+width+
              '" height="'+height+
              '">\n';
        swf += '<param name="movie" value="'+data+'" />\n';
        if(transparent==true)
            swf += '<param name="wmode" value="transparent" />\n';
        swf += '<embed src="'+data+'" pluginspage="http://www.macromedia.com/go/getflashplayer'+
              '" width="'+width+
              '" height="'+height+
              '" type="application/x-shockwave-flash">'+
              '</embed>\n';
        swf += '</object>\n';
        document.write(swf);
        return;
}
function SendF(pComboType,pComboMarque,pComboGamme,pComboEnergie){
	var type_veh = '';
	var marque = '';
	var gamme = '';
	var energie = '';

	if(pComboType!=''){
		type_veh = getSelectedItemValue(pComboType);
		if(isNaN(document.forms["homep"].marque)){
			document.forms["homep"].marque.options[document.forms["homep"].marque.selectedIndex].value="";
		}
		if(isNaN(document.forms["homep"].gamme)){
			document.forms["homep"].gamme.options[document.forms["homep"].gamme.selectedIndex].value="";
		}
		if(isNaN(document.forms["homep"].energie)){
			document.forms["homep"].energie.options[document.forms["homep"].energie.selectedIndex].value="";
		}
	}
	if(pComboMarque!=''){
		marque = getSelectedItemValue(pComboMarque);
		document.homep.marque1.value = marque;

		if(isNaN(document.forms["homep"].gamme)){
			document.forms["homep"].gamme.options[document.forms["homep"].gamme.selectedIndex].value="";
		}
		if(isNaN(document.forms["homep"].energie)){
			document.forms["homep"].energie.options[document.forms["homep"].energie.selectedIndex].value="";
		}
	}
	if(pComboGamme!=''){
		gamme = getSelectedItemValue(pComboGamme);
		document.homep.gamme1.value = gamme;
		if(isNaN(document.forms["homep"].energie)){
			document.forms["homep"].energie.options[document.forms["homep"].energie.selectedIndex].value="";
		}
	}
	if(pComboEnergie!=''){
		energie = getSelectedItemValue(pComboEnergie);
		document.homep.energie1.value = energie;
	 }
	new Ajax.Request('/online/fr/ajax_scripts/moteur_recherche.php?type_veh='+type_veh+'&marque='+marque+'&gamme='+gamme+'&energie='+energie,
	{
		method: 'get',
		asynchronous: true,
		contentType: 'application/x-www-form-urlencoded',
		onSuccess: succes,
		onFailure: function(){}
	});

	function succes(reponse){
		var tab_div = [];
		sTemp = reponse.responseText;
		tab_div = sTemp.split('|');

		if(tab_div[1]!=''){
			$('div_0').innerHTML = tab_div[1];
		}
		if(tab_div[2]!=''){
			$('div_1').innerHTML = tab_div[2];
		}
		if(tab_div[3]!=''){
			$('div_2').innerHTML = tab_div[3];
		}
		if(tab_div[4]!=''){
			$('div_3').innerHTML = tab_div[4];
		}
	}
}
	function o_verification(){
		elements = getElementsByTagName('input');
		var i;
		for(i=0; i=elements.length; i++)
		{
			if(elements[i].checked == 'checked')
				return true;
		}
			alert('Vous devez cocher les voitures qui vous intéressent avant d\'envoyer.');
		return false;
	}
	function budgetMensuelIsOk( budget )
	{
		montant = document.formu.amount.value;
		max = calculBudgetMensuel( 8, 4, montant);
		min	= calculBudgetMensuel( 8, 84, montant);
		
		if( budget > min && budget < max )
			return true;
		else
			return false;
	}
	function calculBudgetMensuel(taux, mois, montant) {
		taux /= 1200;
		return (taux * - montant * Math.pow((1 + taux), mois) / (1 - Math.pow((1 + taux), mois))).toFixed();
	}
	function getBudgetRange( montant ){
		max = calculBudgetMensuel( 8, 4, montant);
		min = calculBudgetMensuel( 8, 84, montant);
		return [min, max];
	}
	
	
	
	

