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 is_majeur(annee, mois, jour) {
	datecourante = new Date();
	if(datecourante.getFullYear() - 18 < annee) return false;
	else if(datecourante.getFullYear() - 18 == annee){
		if(datecourante.getMonth() < mois) {
			if(datecourante.getDate() < jour)return false;
			else return true;
			}
		else return true;
		}
	else return true;
	}

function chkbx(formu,champ,comb,op) {
	with(eval("document."+formu)) {
		var ok=0;
		
		for (var j=0; j<elements.length; j++) {
			if(elements[j].name==champ && elements[j].checked==true){
				// console.log(elements[j]);
				ok++;
				// console.log(ok);
			}
		}
		
		if(eval(ok+op+comb)) {
			// console.log(ok, ok+op+comb);
			return false;
		}
		else
			return true;
	}
}
	
function verifie(formu) {
	text_err= {"nom":"Nom","prenom":"Prénom","nom_2":"Nom","prenom_2":"Prénom","email_2":"E-mail","titre_2":"Titre","rue":"Numéro, rue, voie, lieu-dit","adresse1":"Numéro, rue, voie, lieu-dit","telephone":"Téléphone","dep_de_naiss":"Département de naissance","societe":"Société","expemail":"Votre adresse E-mail","destimail":"L'adresse E-mail du(des) destinataire(s)","naiss":"Date de naissance (vous devez être majeur)"};
	var nom_div="alerte-"+formu.substr(4);
	//var btferm="<br /><br /><input type='button' value='Fermer' onclick=\" boujY('alerte',-500)\" />"; //lobj('alerte').style.display='none'	
	var btferm=""; // POUR FERMER LE BLOC ERREUR : var btferm="<br /><br /><a href='javascript:;' onclick=\"lobj('"+nom_div+"').style.display='none'\">Fermer</a>";
	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]{2,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)) {
		var err="";
		var alertTexte="";
		tbno = new Array("naiss","avantages","regul_achat","next_pac","critere_avis","qualitprod_avis","attractemb_avis","rapportqp_avis","ideesrec_avis","secualim_avis", "magasin_achat", "ville_achat", "message", "recommander");
		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" || champ=="nom_2" || champ=="prenom_2" || champ=="nom_de_jeune_fille" || champ=="ville_de_naissance" || champ=="ville") && !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=="dep_de_naiss" && !expNum.test(eval(champ+".value"))) tberr.push(champ);
			else if(champ=="code_postal" && !expCP.test(eval(champ+".value"))) tberr.push(champ);
			else if(champ=="telephone" && !expTel.test(eval(champ+".value"))) tberr.push(champ);
			else if(champ=="naiss" && !is_majeur(eval('A'+champ+".value"),eval('M'+champ+".value"),eval('J'+champ+".value"))) tberr.push(champ);
			else if((champ=="email"||champ=="email_2"||champ=="expemail"||champ=="destimail") && (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=="magasin_achat" && (!eval(champ+".value") || eval(champ+".value")==0)) {
				alertTexte = "Veuillez indiquer le magasin d'achat";
				tberr.push(champ);
				break;
			}
			else if(champ=="ville_achat" && (!eval(champ+".value") || eval(champ+".value")==0)) {
				alertTexte = "Veuillez indiquer la ville d'achat";
				tberr.push(champ);
				break;
			}
			else if(champ=="message" && (!eval(champ+".value") || eval(champ+".value")==0)) {
				alertTexte = "Veuillez indiquer les points à améliorer concernant les produits LE PAC";
				tberr.push(champ);
				break;
			}
			else if(champ=="recommander" && !chkbx(formu,champ,1,"<")) {
				alertTexte = "Veuillez indiquer si vous conseilleriez notre site internet à vos proches";
				tberr.push(champ);
				break;
			}
			else if(champ=="regul_achat" && !chkbx(formu,champ+'[]',1,"<")) {
				alertTexte = "Veuillez indiquer au moins un produit le PAC que vous avez acheté récemment";
				tberr.push(champ);
				break;
			}
			else if(champ=="avantages" && !chkbx(formu,champ+'[]',3,"!=")) {
				alertTexte = "Veuillez indiquer quels sont, d'après vous, les 3 principaux avantages des produits le PAC";
				tberr.push(champ);
				break;
			}
			else if(champ=="next_pac" && !chkbx(formu,champ+'[]',2,"!=")) {
				alertTexte = "Veuillez indiquer les 2 produits que vous souhaiteriez trouver prochainement dans la gamme le PAC";
				tberr.push(champ);
				break;
			}
			else if(champ=="critere_avis" && !chkbx(formu,champ,1,"<")) {
				alertTexte = "Veuillez indiquer le critère le plus important d'après vous";
				tberr.push(champ);
				break;
			}
			else if((champ=="qualitprod_avis" || champ=="attractemb_avis" || champ=="rapportqp_avis" || champ=="ideesrec_avis" || champ=="secualim_avis") && !chkbx(formu,champ,1,"<")) {
				alertTexte = "Veuillez donner une note à tous les différents critères";
				tberr.push(champ);
				tberr.push('avis');
				break;
			}
			else {
				document.getElementById("TD"+champ).className="line";
			}
		}
		if(tberr.length>0) {
			if(alertTexte!="")alert(alertTexte);
			else alert("Veuillez remplir tous les champs obligatoires (champs indiqués par une étoile *)");
			
			if($j('#TD'+tberr[0]).is(':hidden')) {
				var etape = $j('#TD'+tberr[0]).parents('.contact_etape');
				var openclose = $j('.open_close', etape.prev());
				
				openclose.text('-');
				$j('.open_close').not(openclose).text('+');
								
				etape.siblings('.contact_etape:visible').slideUp(700);
				etape.slideDown(700, function(){
					var haut = $j('#TD'+tberr[0]).position().top-10;
					$j('html').animate({scrollTop : haut},'fast');
				});
			}
			else{
				var haut = $j('#TD'+tberr[0]).position().top-10;
				$j('html').animate({scrollTop : haut},'fast');				
			}
			
			for(i=0; i < tberr.length; i++) {
				//alert(lobj("TD"+tberr[i]).className);
				document.getElementById("TD"+tberr[i]).className="error";
				//listerr+="<br /><b>"+formate(tberr[i])+"</b>";
				//alert(tberr[i]);
				//lerr=(array_key_exists(tberr[i], text_err))? text_err[tberr[i]]:formate(tberr[i]);
				//listerr+="<li>"+lerr+"</li>";
			}
			//listerr+="</ul>";
			//lobj(nom_div).innerHTML="Veuillez renseigner correctement le(s) champ(s) suivant(s)<br />"+listerr+btferm;
			//lobj(nom_div).style.display='block';
			//lurl=(document.URL.indexOf("#")>0)? document.URL.substring(0,document.URL.indexOf("#")):document.URL;
			//document.location=lurl+'#a-'+formu.substr(4);
			//lobj('alerte').innerHTML="Veuillez renseigner les champs obligatoires<br />"+listerr+btferm;
			//cal('alerte',250);
			//alert('Veuillez renseigner les champs obligatoires');
			//return false;
		}
		else{
			$j('.site_avis_checkbox:checked').each(function(){
				if($j(this).next().val()=='votre commentaire')
					$j(this).next().val('coché');
			});
		
			submit();
			//return true;
		}
	}
}
