// 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="red";
	// 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");
				}
                            // IE 9 : cas d'un élément de type jquery, qui ne contient donc pas de propriété ad hoc
                            else if(objForm.elements[i].id == ""){
                                var voidTmp = "";
                            }
				else
				{
					
					// on rÃ©initialise les style
					if(objForm.elements[i].type!="radio" && objForm.elements[i].type!="fieldset" && objForm.elements[i].type!="button")
					{
						objForm.elements[i].style.border="0px solid";
						objForm.elements[i].style.background="#F0F0F0";
                        if(objForm.elements[i].type=="select-one"){
                            var next = objForm.elements[i].nextSibling;
                            // cas des select gÃ©nÃ©rÃ©s Ã  la volÃ©e pour le styling
                            if(next!= null && next.className.indexOf("newListSelected") > -1){
                                next.style.border="0px solid";
                            }
                        }
					}

					// 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;
							
							if(document.getElementById(objForm.elements[i].name + '_erreur'))
							{
								alert(document.getElementById(objForm.elements[i].name + '_erreur').value);
							}
						}

					}
					// 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(document.getElementById(objForm.elements[i].name + '_erreur'))
							{
								alert(document.getElementById(objForm.elements[i].name + '_erreur').value);
							}
						}
					}
					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;
									
									if(document.getElementById(objForm.elements[i].name + '_erreur'))
									{
										alert(document.getElementById(objForm.elements[i].name + '_erreur').value);
									}
								}
								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;
									
									if(document.getElementById(objForm.elements[i].name + '_erreur'))
									{
										alert(document.getElementById(objForm.elements[i].name + '_erreur').value);
									}
								}
								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;
                                var next = objForm.elements[i].nextSibling;
                                // cas des select gÃ©nÃ©rÃ©s Ã  la volÃ©e pour le styling
								if(next!= null && next.className.indexOf("newListSelected") > -1){
                                    next.style.border="2px solid "+alertcolor;
                                }
								if(document.getElementById(objForm.elements[i].name + '_erreur'))
								{
									alert(document.getElementById(objForm.elements[i].name + '_erreur').value);
								}
							}
						}

					}
					
					
					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"
					&& objForm.elements[i].id == ""
					)
					{
						// 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) || objForm.elements[i].value == '')
					)
					{
						// 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(document.getElementById(objForm.elements[i].name + '_erreur'))
						{
							alert(document.getElementById(objForm.elements[i].name + '_erreur').value);
						}
					}
					
					
					
				}
		}

    /*
		if(!all_right)
			alert(fields_wrong);
    */
		
		return all_right;
}

function check_radios_group(objForm,NameRadio){
	
	var alreadyTested = (radios_controlled[NameRadio] != null);
	
	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
	{	
		
		if(!alreadyTested)
		{
			if(document.getElementById(NameRadio + '_erreur'))
			{
				alert(document.getElementById(NameRadio + '_erreur').value);
			}
			
		}
		
		return false;
}
}
function check_checkboxes_group(objForm,NameBox){
	
	var alreadyTested = (checkboxes_controlled[NameBox] != null);
	
	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
	{
		if(!alreadyTested)
		{
			if(document.getElementById(NameBox + '_erreur'))
			{
				alert(document.getElementById(NameBox + '_erreur').value);
			}
			
		}
		
		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].id == ""){
				var voidTmp = "";
			}
			else 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;
}
