// verifie la validite d'un email pour le générateur de formulaire
function validemailgenForm(champ) {
 test = document.forms['formulaire'].elements[""+champ+""].value;
 if (test!="") {
	 valeur = test.indexOf("@");
	 valeur2 = test.lastIndexOf(".");
	 valeur3 = valeur2 + 1;
	 longueur = test.length;
	 ext = test.substring(valeur3,longueur);
	 ok=0;
	 temp = ext.length;
	 if ( temp==2 || temp==3 ) 
	    { ok=1; }
	 else
	    { ok=0; }
	 if ( valeur2 == (valeur + 1) )
	     { ok=0; }
	 if (valeur==0)
	     { ok=0; }
	 if (valeur==-1 || valeur2==-1 || ok==0)
	    { alert("Votre email comporte des erreurs.\nVeuillez la ressaisir.");
	      return false; }
	 else
	    { return true; }
 }else{
	 return true;
 }
}
// verifie la validite d'un email
function validemail(champ)
{
	
 test = document.forms['formulaire'].elements[""+champ+""].value;
 valeur = test.indexOf("@");
 valeur2 = test.lastIndexOf(".");
 valeur3 = valeur2 + 1;
 longueur = test.length;
 ext = test.substring(valeur3,longueur);
 ok=0;
 temp = ext.length;
 if ( temp==2 || temp==3 ) 
    { ok=1; }
 else
    { ok=0; }
 if ( valeur2 == (valeur + 1) )
     { ok=0; }
 if (valeur==0)
     { ok=0; }
 if (valeur==-1 || valeur2==-1 || ok==0)
    { alert(get_trad_champ("email"));
      return false; }
 else
    { return true; }   
    
}

function valider_formulaire(objForm){
	if(verif_and_color_formulaire(objForm))
		document.forms['formulaire'].submit();
	else
		alert(lib_js_champs_incorrects);
}
// verifie les champs obligatoire d'un formulaire
valider_formulaire_auto = function () {
	var tab = valider_formulaire_auto.arguments;

	taille = tab.length;

	for (i=0;i<taille;i++) {
		if (tab[i]=="email") {
			if (!validemail(tab[i])) {
				return 0; 
			}
		}else{
			if ((document.forms['formulaire'].elements[tab[i]].value=="") || (document.forms['formulaire'].elements[tab[i]].value==" ")) {
				str_temp = tab[i].replace(/_/g," ");
				alert(get_trad_champ(str_temp));
				return 0; 
			}
		}
	}
	
	document.forms['formulaire'].submit();
}
function empechechar()
{
	if( event.keyCode < 48 || event.keyCode > 57 )
 	{ 
 		alert(get_trad_champ("numeric") );
   		event.returnValue = false;
   	}
}

// fonction qui fait apparaitre le sablier sur soumission de formulaire un peu long..

// Variable témoin de la validation effectuée ou pas
var deja = 0;

function valider(nom_form) {
	// Si on n'a pas déjà validé
	if ( deja == 0 ) {

		// On marque qu'on valide
		deja = 1;
					
		// On affecte le style 'sablier' au corps de la page
		document.body.className = 'sablier';
		
		// On lance la soumission du formulaire
		eval('document.'+nom_form+'.submit()');
	} /*else {
		alert('Le formulaire est déjà validé, veuillez patienter.'); */
}

function show_sablier()
{
	document.body.className = 'sablier';
}

function verif_and_color_formulaire(objForm){
	
	// except = except.split(",");
	var all_right = true;
	var fields_wrong = "";
	var alertcolor="#5a5a5a";
	// les tableaux de contrôles
	radios_controlled = new Array();
	checkboxes_controlled = new Array();
	for (i=0;i<objForm.elements.length;i++)
	{
				if(objForm.elements[i] == null)
				{
					popup_alert("information de déboguage : "+i + " n'existe pas");
				}
				else
				{
					
										
					if(objForm.elements[i].type!="radio")
					{
						objForm.elements[i].style.border="0px solid";
						objForm.elements[i].style.background="#d9dbdd";
					}

					// si c'est un champ date on colorise le div caché
					if(objForm.elements[i].name.indexOf("date") > -1 && objForm.elements[i].name.indexOf("*") == -1)
					{
						if (objForm.elements[i].value == "")
						{
							document.getElementById(objForm.elements[i].name+"_display").innerHTML="<img src='images/divers/alerte.gif'>";
							all_right = false;
							fields_wrong = fields_wrong+" "+objForm.elements[i].name+" "+objForm.elements[i].type;
						}

					}
					// si c'est un champ téléphone
					/*if((objForm.elements[i].name.indexOf("tel") > -1 || objForm.elements[i].name.indexOf("mobile") > -1)  && objForm.elements[i].name.indexOf("*") == -1)
					{
						var tmpval = objForm.elements[i].value;
						tmpval = replace_all(tmpval," ","");

						if (( ! /^[0-9]{5}/g.test(tmpval)) && ( ! /^\+[0-9]{6}/g.test(tmpval)) && ( ! /^\+\([0-9]{2}\)[0-9]{4}/g.test(tmpval)))
						{
							objForm.elements[i].style.border="2px solid "+alertcolor;
							all_right = false;
						}

					}
					*/
					if(objForm.elements[i].name.indexOf("email") > -1 && objForm.elements[i].name.indexOf("*") == -1)
					{
						if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(objForm.elements[i].value)))
						{
							objForm.elements[i].style.border="2px solid "+alertcolor;
							all_right = false;
							fields_wrong = fields_wrong+" "+objForm.elements[i].name+" "+objForm.elements[i].type;
						}
					}
					if(objForm.elements[i].type=="select-one" && objForm.elements[i].name.indexOf("*") == -1)
					{
						// spec pour les hotels
						if(objForm.elements[i].name=="hotel")
						{
								
							if(objForm.lieu[1].checked){
								
							
								if(objForm.elements[i].selectedIndex==0){
									objForm.elements[i].style.border="2px solid "+alertcolor;
									objForm.elements[i].style.background= alertcolor;
									
									im = document.getElementById('lieu_error_display');
									im.setAttribute('src','images/divers/alerte.gif');
									im.setAttribute('width','18');
									im.setAttribute('height','18');
									all_right = false;
									fields_wrong = fields_wrong+" "+objForm.elements[i].name+"spec hotel"+" "+objForm.elements[i].type;
								}
								else{
									im = document.getElementById('lieu_error_display');
									im.setAttribute('width','0');
									im.setAttribute('height','0');
								}
							}
						}
						// spec pour les hotels dans le form collectifs
						else if(objForm.elements[i].name=="hotel_ticket")
						{
							if(objForm.lieu_ticket[2].checked){
								if(objForm.elements[i].selectedIndex==0){
									objForm.elements[i].style.border="2px solid "+alertcolor;
									objForm.elements[i].style.background= alertcolor;
									
									im = document.getElementById('lieu_ticket_error_display');
									im.setAttribute('src','images/divers/alerte.gif');
									im.setAttribute('width','18');
									im.setAttribute('height','18');
									all_right = false;
									fields_wrong = fields_wrong+" "+objForm.elements[i].name+"spec hotel_ticket"+" "+objForm.elements[i].type;
								}
								else{
									im = document.getElementById('lieu_ticket_error_display');
									im.setAttribute('width','0');
									im.setAttribute('height','0');
								}
							}
						}
						else{
							if(objForm.elements[i].selectedIndex==0)
							{
									
								objForm.elements[i].style.border="2px solid "+alertcolor;
								objForm.elements[i].style.background= alertcolor;
								all_right = false;
								fields_wrong = fields_wrong+" "+objForm.elements[i].name+" "+objForm.elements[i].type;
							}
						}

					}
					
					
					if(objForm.elements[i].type=="radio" && objForm.elements[i].name.indexOf("*") == -1)
					{
						if(objForm.elements[i].name != ""){
							if(! check_radios_group(objForm,objForm.elements[i].name)){
								all_right = false;
								fields_wrong = fields_wrong+" "+objForm.elements[i].name;
								if(document.getElementById(objForm.elements[i].name+'_error_display')){
									im = document.getElementById(objForm.elements[i].name+'_error_display');
									im.setAttribute('src','images/divers/alerte.gif');
									im.setAttribute('width','18');
									im.setAttribute('height','18');
								}
								
								/*
								if(! document.getElementById(objForm.elements[i].name+'dyn')){
									
									
									noeud_element = document.createElement("img");
									noeud_element.setAttribute('src','images/divers/alerte.gif');
									noeud_element.setAttribute('id',objForm.elements[i].name+'dyn');
								    objForm.elements[i].parentNode.appendChild(noeud_element);
								   
								    
								}
								*/
							}
							else{
								if(document.getElementById(objForm.elements[i].name+'_error_display')){
									im = document.getElementById(objForm.elements[i].name+'_error_display');
									im.setAttribute('width','0');
									im.setAttribute('height','0');
								}
							}
		
						}
					}
					if(objForm.elements[i].type=="checkbox" && objForm.elements[i].name.indexOf("*") == -1)
					{
						tmpName = objForm.elements[i].name.split("_");
						if(! check_checkboxes_group(objForm,tmpName[0])){
							im = document.getElementById(tmpName[0]+'_error_display');
							im.setAttribute('src','images/divers/alerte.gif');
							im.setAttribute('width','18');
							im.setAttribute('height','18');
							all_right = false;
							fields_wrong = fields_wrong+" "+objForm.elements[i].name+" "+objForm.elements[i].type;
						}
						else{
							im = document.getElementById(tmpName[0]+'_error_display');
							im.setAttribute('width','0');
							im.setAttribute('height','0');
						}
					}	
					
					if (((objForm.elements[i].value=="") || (objForm.elements[i].value==" "))
					&& objForm.elements[i].name.indexOf("*") == -1 
					&& radios_controlled[objForm.elements[i].name.replace("_autre","")] != "true"
					&& checkboxes_controlled[objForm.elements[i].name.replace("_autre","")] != "true"
					)
					{
						// alert(objForm.elements[i].name.replace("_autre",""));
						objForm.elements[i].style.border="2px solid "+alertcolor;
						all_right = false;
						fields_wrong = fields_wrong+" "+objForm.elements[i].name+" "+objForm.elements[i].type;
					}
					if (objForm.elements[i].name.indexOf("nb") > -1 
					&& isNaN(objForm.elements[i].value)
					&& radios_controlled[objForm.elements[i].name.replace("_autre","")] != "true"
					&& checkboxes_controlled[objForm.elements[i].name.replace("_autre","")] != "true"
					)
					{
						// alert(objForm.elements[i].name.replace("_autre",""));
						objForm.elements[i].style.border="2px solid "+alertcolor;
						all_right = false;
						fields_wrong = fields_wrong+" "+objForm.elements[i].name+" "+objForm.elements[i].type;
					}
					
					
					
				}
		}
		/*
		if(!all_right)
			alert(fields_wrong);
		*/
		return all_right;
}

function check_radios_group(objForm,NameRadio){
	
	if(document.getElementById(NameRadio+"_autre")){
		var Expression = new RegExp("([a-z]|[0-9])","g");
		if(document.getElementById(NameRadio+"_autre").value.search(Expression) > -1){
			// alert(document.getElementById(NameRadio+"_autre").innerHTML.length);
			radios_controlled[NameRadio] = "true";
			document.getElementById(NameRadio+"_autre").style.border="";
		}
	}
	if(NameRadio != ""){
		if(! in_assoc_array(NameRadio,radios_controlled)){
				radios_controlled[NameRadio]="false";
					rads = document.getElementsByName(NameRadio);
					// alert("hh"+NameRadio+"kk"+rads.length);
					for(var i=0;i<rads.length;i++)
					{
							if(rads[i].checked){
								radios_controlled[NameRadio] = "true";
								
							}
							// alert(rads[i].name);
					}
					
				
		}
	}
	
	if(radios_controlled[NameRadio] == "true"){
		return true;
	}
	else
		return false;
}
function check_checkboxes_group(objForm,NameBox){
	
	if(document.getElementById(NameBox+"_autre")){
		if(document.getElementById(NameBox+"_autre").value!=""){
			checkboxes_controlled[NameBox] = "true";
			document.getElementById(NameBox+"_autre").style.border="";
		}
	}
	if(NameBox != ""){
		if(! in_assoc_array(NameBox,checkboxes_controlled)){
				checkboxes_controlled[NameBox]="false";
					rads = getElementsBySuffix(objForm,NameBox);
					
					for(var i=0;i<rads.length;i++)
					{
							if(rads[i].checked){
								checkboxes_controlled[NameBox] = "true";
								
							}
					}
					
		}
	}
	
	if(checkboxes_controlled[NameBox] == "true"){
		return true;
	}
	else
		return false;
}
function uncheck_radio_group(objForm,NameRadio){
	rads = document.getElementsByName(NameRadio);
	for(var i=0;i<rads.length;i++)
	{
		rads[i].checked = false;
	}
	
}
function getElementsBySuffix(objForm,suffix){
	var res = new Array();
	for (var i=0;i<objForm.elements.length;i++)
	{
		
		if(objForm.elements[i] != null){
			if(objForm.elements[i].name.indexOf(suffix) > -1){
				res.push(objForm.elements[i]);
			}
		}
		
		
	}
	return res;
}
function replace_all(str,chr,chr2){
	var str = str.replace(chr,chr2);
	while(/ /g.test(str))
		str = str.replace(chr,chr2); 
	str = str.replace(chr,chr2); 
	return str;
	
}
function in_array(val,tab){
	
	var res = false;
	for(var i=0;i<tab.length;i++)
	{
		if(tab[i] == val)
			res = true;
	}
	return res;
}
function in_assoc_array(val,tab){
	var res = false;
	for (var cle in tab){
		if(cle == val){
			res = true;
		}
	}
	return res;
}

/* ----------- getElementsByClassName -----------*/
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|s)" + className + "(s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i ];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}