function valeurVide(Valeur) {
	if (Valeur!=null) {
		return (Valeur.replace(/\s/gi,'')=='');
	} else {
		return false;
	}
}

function verificationsGenerales(formulaire) {
	var champIncorrect = -1;
	for (var i=1; i<champsOblig.length; i++) {
		if (champsOblig[i]) {
			if (valeurVide(formulaire[champsOblig[i][0]].value)) {
				formulaire[champsOblig[i][0]].value ='';
				champIncorrect = i;
				i=champsOblig.length;
			}
		}
	}
	if (champIncorrect>-1) {
		alert(champsOblig[champIncorrect][1]);
		formulaire[champsOblig[champIncorrect][0]].focus();
		return false;
	} else {
		return true;
	}
}

function verificationsNumeriques(formulaire) {
	var champIncorrect = -1;
	var valeur;
	for (var i=0; i<champsNum.length; i++) {
		if (champsNum[i]) {
			valeur=formulaire[champsNum[i]].value;
			if (valeur!='') {
				if(isNaN(valeur)) valeur=valeur.replace(",",".");
				if(isNaN(valeur)) valeur=valeur.replace(".",",");
				if (isNaN(valeur)) {
					formulaire[champsNum[i]].value ='';
					//alert("Valeur numérique attendu pour le champ sélectionné.");
					//formulaire[champsNum[i]].focus();
					champIncorrect = i;
					i=champsNum.length;
				}
			}
		}
	}
	if (champIncorrect>-1) {
		alert(messageNum[champIncorrect]);
		formulaire[champsNum[champIncorrect]].focus();
		return false;
	} else {
		return true;
	}
}

function verificationDesDates(formulaire) {
	var champIncorrect = -1;
	var resultat = '';
	for (var i=1; i<champsDates.length; i++) {
		if (champsDates[i]) {
			resultat = verificationDate(formulaire[champsDates[i]]);
			if (resultat!='') {
				champIncorrect = i;
				i=champsDates.length;
			}
		}
	}
	if (champIncorrect>-1) {
		alert(resultat);
		formulaire[champsDates[champIncorrect]].focus();
		return false;
	} else {
		return true;
	}
}

function verifierUneSeuleDate(champDate) {
	var resultat = '';
	resultat = verificationDate(champDate);
	if (resultat!='') {
		alert(resultat);
		champDate.focus();
		return false;
	} else {
		return true;
	}
}

function verificationDate(ChampDate) {
	var retour = "";
	var ValeurDate = new String(ChampDate.value);
	ValeurDate = ValeurDate.replace(" ","");
	if (ValeurDate.length!="") {
		if (ValeurDate.length!=8 && ValeurDate.length!=10) {
			retour = 'Format de date incorrect.';
		} else if ((ValeurDate.substring(2,3)!="/") || (ValeurDate.substring(5,6)!="/")) {
			retour = 'Séparateur de date incorrect.';
		} else if (ValeurDate.substring(3,5)>"12") {
			retour = 'format de date incorrect.';
		} else {
			var Annee = ValeurDate.substring(6,ValeurDate.length);
			if (Annee.length<3) {
				if (Number(Annee)<40) {
					Annee = "20"+Annee;
				} else {
					Annee = "19"+Annee;
				}
			}
			var Mois = ValeurDate.substring(3,5);
			var Jour = ValeurDate.substring(0,2);
			var JourErrone = false;
			switch (Mois) {
				case '01':
				case '03':
				case '05':
				case '07':
				case '08':
				case '10':
				case '12':
					if (Jour<"01" || Jour>"31") JourErrone = true;
					break;
				case '04':
				case '06':
				case '09':
				case '11':
					if (Jour<"01" || Jour>"30") JourErrone = true;
					break;
				case '02':
					if (Jour<"01" || Jour>"29") JourErrone = true;
					if (Jour==29 && ((Annee/4)!=parseInt(Annee/4))) JourErrone = true;
					break;
				default :
					JourErrone = true;
					break;
			}
			if (JourErrone) retour = 'Format de date incorrect';
		}
	} else {
		retour = 'Format de date incorrect';
	}
	return retour;
}


function verificationMotDePasse(formulaire, nomChamp) {
	var pwd = formulaire[nomChamp].value;
	var pwdOK = pwd!="";
	pwdOK = pwdOK && (formulaire[nomChamp].value==formulaire[nomChamp+'2'].value);
	var reg = new RegExp("[A-Za-z0-9&çàäâéèêëèìïîòöôùüû#%§=+@:_\\-]",'gi');
	var pwdOK = pwdOK && (pwd.replace(reg,'')=='');
	if (!pwdOK) {
		formulaire[nomChamp].value = '';
		formulaire[nomChamp+'2'].value = '';
		formulaire[nomChamp].focus();
		alert('Mot de passe et/ou confirmation erronés');
		return false;
	} else {
		return true;
	}
}

function verificationCheckbox(champ, messageErreur) {
	var ok = false;
	for(var i=0;i<champ.length;i++) {
		ok = (ok||champ[i].checked);
	}
	if(!ok) alert(messageErreur);
	return ok;
}

function verifierTelephone(champ, formatInter) {
	var valeur = champ.value;
	reg = new RegExp("[^\\+\\.0-9]",'gi');
	valeur = valeur.replace(reg,'');
	reg = new RegExp((formatInter?"^(\\+[0-9]+\\.)[0-9]{6,}$":"^[0-9]{6,12}$"),'gi');
	if(!reg.test(valeur)) {
		champ.focus();
		alert('Format de numéro de téléphone erroné.');
	} else {
		return true;
	}
}

function verificationEmail(champEmail) {
	var emailStr = champEmail.value;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {

			/* Too many/few @'s or something; basically, this address doesn't
			 even fit the general mould of a valid e-mail address. */
		alert("L'adresse email n'est pas valide");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
		// See if "user" is valid 
	if (user.match(userPat)==null) {

			// user is not valid
		alert("L'adresse email n'est pas valide");
		return false;
	}
	
		/* if the e-mail address is at an IP address (as opposed to a symbolic
		   host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
			// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("L'adresse email n'est pas valide");
				champEmail.focus();
			return false;
			}
		}
		return true;
	}
	
		// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("L'adresse email n'est pas valide")
		champEmail.focus();
		return false;
	}
	
		/* domain name seems valid, but now make sure that it ends in a
		   three-letter word (like com, edu, gov) or a two-letter word, ou 4 lettres .info...
		   representing country (uk, nl), and that there's a hostname preceding 
		   the domain or country. 
	
		   Now we need to break up the domain to get a count of how many atoms
		   it consists of. */
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>4) {

			// the address must end in a two letter or three letter word.
	   alert("L'adresse email n'est pas valide")
	   return false
	}
	
		// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="L'adresse email n'est pas valide";
	   alert(errStr);
	   champEmail.focus();
	   return false;
	}
	
	// If we've gotten this far, everything's valid!
	return true;
}

function verificationCodePostal(champCP) {
	if (champCP.value.length!=5) {
		alert('Le code postal doit contenir 5 chiffres');
		champCP.focus();
		return false;
	} else {
		if (isNaN(champCP.value)) {
			alert('Le code postal ne doit contenir que des chiffres');
			champCP.focus();
			return false;
		} else {
			return true;
		}
	}
}

function formater(valeur) {
	var resultat = Math.round(valeur*100)/100;
	resultat = resultat.toString();
	var apresVirgule = resultat.length-1 - resultat.indexOf('.');
	resultat+=(resultat.indexOf('.')==-1?".00":apresVirgule==1?"0":"");
	return resultat;			
}

function formaterEuro(valeur) {
	return formater(valeur) + "&nbsp;€";
}

function formatNumerique(valeur) {
	return valeur.replace(",",".");
}

function queDesChiffres(texte) {
		reg = new RegExp('\\D','gi');
		return texte.replace(reg,'');
}

function gestionTouches(numtouche) {
	switch(numtouche) {
		case 27 : window.close(); break;
		case 13 : verifier(); break;
	}
}

		
function patience(texte) {
	document.getElementById("divFormBoutons").innerHTML = texte;
}
