function verifcontact() {
	var exp = new RegExp("[a-zA-Z\s]{2,50}"); // pour les champs à texte
	var expTel = new RegExp("[ /\()+.0-9]{10,20}"); // champs tél
	with(document.contact) {
		if (!exp.test(nom.value)) {
			alert('Merci d\'indiquer votre nom.');
			nom.focus();
			return false;
			}
		else if (!exp.test(prenom.value)) {
			alert('Merci d\'indiquer votre prénom.');
			nom.focus();
			return false;
			}
		else if ((email.value.indexOf("@")<1)&&(email.value.indexOf(".")<3)) {
			alert('Merci d\'indiquer une adresse mail correcte.');
			email.focus();
			return false;
			}
		else if (!expTel.test(tel.value) && !expTel.test(portable.value)) {
			alert('Merci d\'indiquer un n° de téléphone correct.');
			tel.focus();
			return false;
			}
		else if (!message.value) {
			alert('Votre message est vide.');
			message.focus();
			return false;
			}
		else submit();
		}
	}

function in_array(needle, haystack, strict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    var found = false, key, strict = !!strict;
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
	        }
	    }
    return found;
	}

function array_key_exists ( key, search ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Felix Geisendoerfer (http://www.debuggable.com/felix)
    // *     example 1: array_key_exists('kevin', {'kevin': 'van Zonneveld'});
    // *     returns 1: true
    // input sanitation
    if( !search || (search.constructor !== Array && search.constructor !== Object) ){
        return false;
		}
    return key in search;
	}

function formate(champ) {
	joli=champ.substr(0, 1).toUpperCase()+champ.substr(1, champ.length-1);// mettre la 1° lettre en Majusc
	joli=joli.replace(/\_/g, " ");// remplacer les underscores par des espaces
	return joli;
	}
	
function chkbx(formu,champ,comb,op) {
	with(eval("document."+formu)) {
		var ok=0;
		for (var j=1; j<elements.length; j++) {
			if(elements[j].name==champ && elements[j].checked==true){ok++;}
			}
		if(eval(ok+op+comb)) {
			//alert(ok+op+comb);
			return false;
			}
		else return true;
		}
	}
	
function verifie(formu) {
	text_err= {"prenom":"Prénom","personnes":"Participants","email":"E-mail","telephones":"Téléphones"};
	var exp = new RegExp("[a-zA-Z\s]{2,50}"); // texte uniquement
	var expMix = new RegExp("[0-9a-zA-Z]{2,50}"); // texte et nombres (ex. adresses)
	var expNum = new RegExp("[0-9]{1,16}"); // chiffres et nombres uniquement
	var expTel = new RegExp("[ /\()+.0-9]{10,20}"); // N° tél
	var expLog = new RegExp("[a-zA-Z0-9]{6,16}"); // Login et pass
	var expCP = new RegExp("[0-9]{5,5}"); // code postal

	with(eval("document."+formu)) {
		tbno=new Array("telephones","personnes");
		tberr=new Array();
		for (var i=1; i < verifie.arguments.length; i++) {
			var champ=arguments[i];
			if((!in_array(champ,tbno))&&(!eval(champ+".value") || eval(champ+".value")==0))tberr.push(champ);
			else if((champ=="nom" || champ=="prenom") && !exp.test(eval(champ+".value")))tberr.push(champ);
			// else if((champ=="rue" || champ=="adresse1") && !expMix.test(eval(champ+".value")))tberr.push(champ);
			// else if((champ=="code_postal") && !expCP.test(eval(champ+".value")))tberr.push(champ);
			else if((champ=="personnes") && (!expNum.test(adulte.value) && !expNum.test(junior.value) && !expNum.test(enfant.value)))tberr.push(champ);
			else if((champ=="telephones") && (!expTel.test(portable.value) && !expTel.test(tel.value)))tberr.push(champ);
			else if((champ=="email") && (eval(champ+".value").indexOf("@")<1 || eval(champ+".value").lastIndexOf(".")<eval(champ+".value").indexOf("@")|| eval(champ+".value").lastIndexOf(".")>=(eval(champ+".value").length-2)))tberr.push(champ);
			else if(champ=="regul_achat[]" && !chkbx(formu,champ,1,"<")) {
				alert("Veuillez indiquer au moins un produit le PAC que vous achetez régulièrement");
				tberr.push(champ);
				break;
				}
			}
		if(tberr.length>0) {
			var listerr="Vos coordonnées sont incomplètes, \nveuillez correctement renseigner le(s) champ(s) suivant(s) : \n";
			for(i=0; i < tberr.length; i++) {					
				lerr=(array_key_exists(tberr[i], text_err))? text_err[tberr[i]]:formate(tberr[i]);
				listerr+=lerr+"\n";
				}
			alert(listerr);
			}
		else {
			if(formu=="resa") {
				var totP=(adulte.value*1)+(junior.value*1)+(enfant.value*1);
				var cbon=0;
				if(date.value) {
					for(i=0; i<heure.length; i++) {
						if(heure[i].checked==true) {
							cbon=1;
							break;
							}
						}
					}				
				if(!date.value)
					alert("Veuillez choisir une date à partir du calendrier");
				else if(cbon < 1)// !chkbx(formu,"heure",1,"<")
					alert("Veuillez choisir une heure");
				else if(totP > dispo.value)
					alert("Il n'y a pas assez de places disponibles sur cet horaire");
				else submit();
				}			
			else submit();
			}
		}
	}