// JavaScript Document
// **********   FORMULAIRE  **************
function verificationForm(numduform, listchamp, lang)
// numduform = nom du formulaire
// listchamp = chaine contenant les noms de champ obligatoires en majuscule
{
var compteur;
var formulaire;

var formulaire = document.forms[numduform];
var fo_compte;
var valeurtest;
var strLen;
var nomchamp; 


message=eval("traduction.langues.vide."+lang);
		
		


var form_ok = true;
fo_compte=0;

	while ( fo_compte < formulaire.elements.length)
	{
		if(formulaire.elements[fo_compte].nodeName!="FIELDSET")
		{
			valeurtest = formulaire.elements[fo_compte].value;
			strLen = valeurtest.length;
		
			if (strLen==0 || valeurtest==-1)
			{
				nomchamp = formulaire.elements[fo_compte].name;
				if(listchamp.search(nomchamp)!=-1)
				{
					var trad = eval("traduction.langues.formulaire."+nomchamp+"."+lang);
;
					message = message + "- " + trad + "\n";
					form_ok = false;
				}
			}
		}
		fo_compte ++;
	}
	if (form_ok==false) messtot=messtot+message;
	return form_ok;
}

function $(idobjet)
{
	return(document.getElementById(idobjet));
}



function envoyer(nomform, champoblig, lang) 
// IL FAUT IMERATIVEMENT QUE LE FORMULAIRE AIT LE MEME ID QUE SON NOM
// nomform = nom du formulaire
// champoblig = chaine contenant la liste de champ à saisie obligatoire en majuscule
{	
	messtot="";
	var envoi=true;
	var chainealerte;
	var chainealerte2;

	chainealerte=eval("traduction.langues.probleme.prob1."+lang);
	chainealerte2=eval("traduction.langues.probleme.prob2."+lang);
	


	for (var keyVar in tableau_message ) {
 					
		if(tableau_message[keyVar]!=undefined&&tableau_message[keyVar]!=""){
				envoi=false;
				chainealerte=chainealerte+" \n - "+eval("traduction.langues.formulaire."+keyVar+"."+lang);
				
					
			}
				
	}
	chainealerte=chainealerte+chainealerte2;


	if(!envoi){
		messtot= messtot+chainealerte;
	}
	if(envoi){
		if (verificationForm(nomform, champoblig, lang))
		{
			document.getElementById(nomform).submit();
		}else{
			
			alert(messtot);	

		}	
	}else{
		//reccuperation du message
		verificationForm(nomform, champoblig, lang);
		alert(messtot);	
	}
}
//**********************************



    // gestion de la touche entree
function handleKeyPress(evt) 
 {
  var nbr, chr;
  if (window.Event)
  	 var nbr = evt.which;
  else
  	var nbr = event.keyCode;
	
  if (nbr==13)
	  verif();   // ici on met ce qu'on doit doit faire le bouton submit
  return true;
 }
// document.onkeydown= handleKeyPress;
 

 // GetFormInputs 
 //radio
function getRadioVal(rb)
{var L=rb.length;var ret="";
 for (var i = 0 ; i< L ; i++)
 {if(rb[i].checked) {ret=rb[i].value;break;}}
 return(ret);
 }
  
 //text, password, hidden, textarea, file
 function getTextVal(tf)
 {var ret=tf.value;
 return(ret);
 }
  
 //checkbox
 function getCheckboxVal(cb)
 {var L=cb.length;var ret='';
 for (i = 0; i < L; i++)
 {if (cb[i].checked==true) {ret += cb[i].value + '\n';}}
 return(ret);
 }
  
 //select
 function getSelectVal(sel)
 {var ret='';
 ret=sel.options[sel.selectedIndex].text;
 return(ret);
 }
  
  //<!--
//<!-- Modified By:  Steve Robison, Jr. (stevejr@ce.net) -->
//<!-- This script and many more are available free online at -->
//<!-- The JavaScript Source!! http://javascript.internet.com -->

function check(nomcase, nomselect) {

var tab=document.getElementsByName(nomcase);
var tabsel = document.getElementsByName(nomselect);
//nbcas = field.length -2; // attention comme on envoie tout le formulaire, on enleve 2 objets qui sont ?la fin : 1 bouton et (1 bouton ou la case tout selectionner)

if (tabsel[0].checked == false) {
	for (i = 0; i < tab.length; i++) {
		tab[i].checked = false;
	}
	
	return "Uncheck All"; 
}
else {
	for (i = 0; i < tab.length; i++) {
		tab[i].checked = true; 
	}
	
	return "Check All"; 
}
}
//  End -->

  
 //
 // Control 
 //

function isCodePostal(cpStr){
	var resultat=true;
	if(cpStr.length!=5){
		resultat=false;
	}else{
		if(!isNumberString(cpStr)){
			resultat=false;
		
		}
	}

	return resultat;
}

function isTelephone(telStr){
	var resultat=true;
	if(telStr.length!=10){
		resultat=false;
	}else{
		if(!isNumberString(telStr)){
			resultat=false;
		
		}
	}

	return resultat;
}

 function isDate(JJ, MM, AAAA){
	if(JJ<1||JJ>31||MM<1||MM>12) return false;
	if(MM==2){
		if(JJ==30||JJ==31) return false;
   		if(JJ==29) return ((AAAA%4==0&&AAAA%100!=0)||AAAA%400==0);
 	}
 	else if(JJ==31) return !(MM==4||MM==6||MM==9||MM==11);
 	return true;
 }
 

 function isEmail(emailStr)
{
// si la chaine est vide, on retourne true quand meme
 
	var validDomain=false;
	var AtPos = emailStr.lastIndexOf("@");
	var DotPos= emailStr.lastIndexOf(".");
	if((AtPos>0)&&(DotPos>0)&&(AtPos<DotPos))
	{var domainExtList='ac.ad.ae.af.ag.ai.al.am.an.ao.aq.ar.as.at.au.aw.az.ba.bb.bd.be.bf.bg.bh.bi.bj.bm.bn.bo.br.bs.bt.bv.bw.by.bz.ca.cc.cd.cf.cg.ch.ci.ck.cl.cm.cn.co.cr.cs.cu.cv.cx.cy.cz.de.dj.dk.dm.do.dz.ec.ee.eg.eh.er.es.et.fi.fj.fk.fm.fo.fr.fx.ga.gb.gd.ge.gf.gg.gh.gi.gl.gm.gn.gp.gq.gr.gs.gt.gu.gw.gy.hk.hm.hn.hr.ht.hu.id.ie.il.im.in.io.iq.ir.is.it.je.jm.jo.jp.ke.kg.kh.ki.km.kn.kp.kr.kw.ky.kz.la.lb.lc.li.lk.lr.ls.lt.lu.lv.ly.ma.mc.md.mg.mh.mk.ml.mm.mn.mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.na.nc.ne.nf.ng.ni.nl.no.np.nr.nt.nu.nz.om.pa.pe.pf.pg.ph.pk.pl.pm.pn.pr.ps.pt.pw.py.qa.re.ro.ru.rw.sa.sb.sc.sd.se.sg.sh.si.sj.sk.sl.sm.sn.so.sr.st.su.sv.sy.sz.tc.td.tf.tg.th.tj.tk.tm.tn.to.tp.tr.tt.tv.tw.tz.ua.ug.uk.um.us.uy.uz.va.vc.ve.vg.vi.vn.vu.wf.ws.ye.yt.yu.za.zm.zr.zw.com.edu.gov.int.mil.net.org .biz.pro.info.aero.name.coop.arpa.nato.museum.EoF';
	var domainExt=domainExtList.split(".");
	var emailExt=emailStr.substr(DotPos+1);
	emailExt=emailExt.toLowerCase();
	for(i=0;domainExt.length;i++)
	{if (domainExt[i]=='EoF') break; //infinite loop else
	if (emailExt==domainExt[i]) {validDomain=true;break;}
	}
  
return(validDomain);
}
  
}

 function isUrl(urlStr)
{
// si la chaine est vide, on retourne true quand meme
 
	var res=false;
	var validDomain=false;
	var HttpPos = urlStr.substr(0,7);
	if(HttpPos=="http://")
	{
		
		var DotPos= urlStr.lastIndexOf(".");
	
		var domainExtList='ac.ad.ae.af.ag.ai.al.am.an.ao.aq.ar.as.at.au.aw.az.ba.bb.bd.be.bf.bg.bh.bi.bj.bm.bn.bo.br.bs.bt.bv.bw.by.bz.ca.cc.cd.cf.cg.ch.ci.ck.cl.cm.cn.co.cr.cs.cu.cv.cx.cy.cz.de.dj.dk.dm.do.dz.ec.ee.eg.eh.er.es.et.fi.fj.fk.fm.fo.fr.fx.ga.gb.gd.ge.gf.gg.gh.gi.gl.gm.gn.gp.gq.gr.gs.gt.gu.gw.gy.hk.hm.hn.hr.ht.hu.id.ie.il.im.in.io.iq.ir.is.it.je.jm.jo.jp.ke.kg.kh.ki.km.kn.kp.kr.kw.ky.kz.la.lb.lc.li.lk.lr.ls.lt.lu.lv.ly.ma.mc.md.mg.mh.mk.ml.mm.mn.mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.na.nc.ne.nf.ng.ni.nl.no.np.nr.nt.nu.nz.om.pa.pe.pf.pg.ph.pk.pl.pm.pn.pr.ps.pt.pw.py.qa.re.ro.ru.rw.sa.sb.sc.sd.se.sg.sh.si.sj.sk.sl.sm.sn.so.sr.st.su.sv.sy.sz.tc.td.tf.tg.th.tj.tk.tm.tn.to.tp.tr.tt.tv.tw.tz.ua.ug.uk.um.us.uy.uz.va.vc.ve.vg.vi.vn.vu.wf.ws.ye.yt.yu.za.zm.zr.zw.com.edu.gov.int.mil.net.org .biz.pro.info.aero.name.coop.arpa.nato.museum.EoF';
		var domainExt=domainExtList.split(".");
		var urlExt=urlStr.substr(DotPos+1);
		urlExt=urlExt.toLowerCase();
		i=-1;
		
		while(i<domainExt.length && urlExt!=domainExt[i]){
			i++;
		
			if (urlExt==domainExt[i]) {
				validDomain=true;
				urlExt=domainExt[i];
				}
			
		}
		if(validDomain){
			
			urlStr=urlStr.substring(7, DotPos);
			var trois = urlStr.split(".");
			if((trois[trois.length-1]).length >= 3 ){

				res=true;
			}
		}
	
  }
  else {res=false};

return(res);
}


  
 function isNumberString(NumStr)
 {var regEx=/^[0-9]+$/;
 var ret=false;
 if (regEx.test(NumStr)) ret=true;
 return ret;
 }
  
 function isAlphaNumString(NumStr)
 {var regEx=/^[A-Za-z0-9]+$/;
 var ret=false;
 if (regEx.test(NumStr)) ret=true;
 return ret;
 }
  
 function isAlphaString(NumStr)
 {var regEx=/^[A-Za-z]+$/;
 var ret=false;
 if (regEx.test(NumStr)) ret=true;
 return ret;
 }
  
//***************************** FONCTIONS ajoutées **************************************

function ConfirmSup(EnrASupprimer) {
if (confirm("Confirmez-vous la suppression ?")) {
	document.location = EnrASupprimer;
	}  
}

function formVide()
{
var cpt=0;
 // La première boucle parcourt les formulaires
   for(var i = 0; i < document.forms.length; i++)
     // La deuxième boucle parcourt les champs de formulaire
     for(var j = 0; j < document.forms[i].elements.length; j++)
       // compteur de champs non vides sauf pour les boutons radio
	   if(document.forms[i].elements[j].type!="radio" && document.forms[i].elements[j].type!="button" )
		   if(document.forms[i].elements[j].value!="") cpt++; 
	if(cpt==0) return true; else return false;
}

function verifAnnee(valeur) {
	if (valeur!="") {
		if(!IsNumberString(valeur)) alert("Saisissez une année sur 4 chiffres");
		else if (valeur.length!=4) alert("Saisissez une année sur 4 chiffres"); 
	}
}

function afficheTelAvecSep(numtel,sep) {
	if (numtel.length < 10) {
		alert("Numéro incorrect");
		return "";
	}
	else
		if(numtel.length == 10)  {
			var re = /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$/;
			if(re.test(numtel)) {
				var tableau = re.exec(numtel);
				var tel = tableau.join(sep);
				return tel.substring(numtel.length+1,tel.length);
			}
			else
				return numtel;
		}
}

//Fonction qui remet à 0 le champ url si aucune adresse n'a été rentrée
function remiseChampUrl(elt){

	if(elt.value=="http://"){
		elt.value="";
	}

}

//Fonction qui met "http://" dans le champ de lien que si celui ci n'a pas encore été tapé
function miseChampUrl(elt){

	if(elt.value==""){
		elt.value="http://";
	}

}

//Fonction qui ajoute une ligne pour l'envoi à plusieurs destinataires
var mail_nb_lignes = 0;
function ajouterLigne(idzoneajouter){
//idzoneajouter: id de la zone ou le champs doit être ajouter
	mail_nb_lignes++;
	var obj=$(idzoneajouter);
	var retour=document.createElement('BR');
	var texte=document.createTextNode(mail_nb_lignes+1+'ème destinataire ');
	var champ=document.createElement('INPUT');
	champ.type="text";
	champ.name="maildestinataire"+(mail_nb_lignes+1);
//champ.onBlur = "obj=new testChamp(champ.value,'mail','formMessage'); obj.verifType();";
	champ.setAttribute("onBlur","obj=new testChamp(this.value,'mail','formMessage',this.name); obj.verifType();");
	obj.appendChild(retour);
	obj.appendChild(texte);
	obj.appendChild(champ);

	//obj.innerHTML+='<BR>Autre destinataire <input type="text" name="maildestinataire'+mail_nb_lignes+'" onblur="obj=new testChamp(this.value,\'mail\',\'formMessage\'); obj.verifType();">';
	

}
	
//Fonction qui retourne un tableau associatif représentant les différents paramètre passés par l'url et leur valeur
function getParametres()
{

 if (window.location.search != "") {
	var longueur = window.location.search.length - 1;
	var data = window.location.search.substr(1,longueur);
	var donnees = data.split("&");
	var urlvar = new Array();
	var urlvarnum = new Array();
		for (var i=0; i < donnees.length; i++) {
			position = donnees[i].indexOf("=");
			variable = donnees[i].substr(0,position);
			pos = position + 1;
			valeur = decodeURI(donnees[i].substr(pos,donnees[i].length));
			while (valeur.search(/\+/) != -1)
				valeur = valeur.replace(/\+/," ");
			urlvar[variable] = valeur;
			urlvarnum[i] = valeur;
			
		}
	} 

return urlvar;

} 




//***************************** FONCTIONS C-STAN **************************************

//****************************Classe testChamp**************************************

tableau_message=new Object();
function testChamp(nomchamp, typage, idzonemessage, lang)
/*
objet: objet représentant le formulaire
typage: type attendu dans le champ. Ex: mail, text, etc...
idzonemessage (optionel): id de la zone où apparaitra le message derreur
lang: langage des messages d'erreur: fr, en ou de


*/
{
	
		var obj=window.document.getElementsByName(nomchamp);
		
		this.nom = nomchamp;
		this.valeur=obj[0].value;
		this.typage=typage;
		this.langue=lang;
		if(idzonemessage!=undefined){
			this.idzonemessage=idzonemessage;
		}
		this.message="";
		res=true; // globale car utilisé dans la fonction de vérif avant envoi
		//Methode qui vérifie que le contenu du champ est correct
	
		this.verifType=function(){
		/*
		Fonction qui vérifie que la valeur entrée dans le champ correspond au type demandé
		valeur retournée : si pas d'idzonemessage, le message d'erreur est retourné
		*/
			if(this.valeur != ""){
			
				switch (this.typage)
				{
					case 'int':
						res=isNumberString(this.valeur);
						break;
					case 'mail':
						res=isEmail(this.valeur);
						break;
					case 'text':
						res=isAlphaString(this.valeur);
						break;
					case 'textnum':
						res=isAlphaNumString(this.valeur);
						break;
					case 'date':
						res=isDate(this.valeur);
						break;
					case 'url':	
						res=isUrl(this.valeur);
						break;
					case 'cp':
						res=isCodePostal(this.valeur);
						break;
					case 'tel':
						res=isTelephone(this.valeur);
						break;
					default:
						res=false;
						break;
				}
				
			
				
								
				if(!res){
					var prempartie=eval("traduction.langues.div.alert1."+this.langue);
					var deuxpartie=eval("traduction.langues.div.alert2."+this.langue);
					var troispartie=eval("traduction.langues.div.alert3."+this.langue);
					var nomchamp = eval("traduction.langues.formulaire."+this.nom+"."+this.langue);
									
					this.message = prempartie+nomchamp+",  "+deuxpartie+"<b>"+this.valeur+"</b>"+troispartie;
	
					if(this.idzonemessage!=undefined)
					// si la zone d'affichage des messages est définie on la met a jour
					{
						var temp=false;
						for(var key in tableau_message){
							if(this.message==tableau_message[key]){
								
								temp=true;
								
							}
						}
						tableau_message[this.nom]=this.message;
						this.afficherMessages();
						

						if(!temp){
							Effect.SlideDown(this.idzonemessage);
						}
					}
					else
					// sinon on renvoie le message
					{
					
						return this.message;
					}
				}
				else
				{
					if(this.idzonemessage!=undefined)
					{
						// pas d'erreur donc on efface le message s'il y en avai un
						tableau_message[this.nom]="";
						this.afficherMessages();
					}
				}
			}else
			{
				if(this.idzonemessage!=undefined){
						// le champ est vide donc on efface le message s'il y en avai un
						tableau_message[this.nom]="";
						this.afficherMessages();
				}
			}
		}

		this.afficherMessages=function(){
		/*
		Fonction qui affiche les uns à la suite des autres les messages d'erreurs généré par la fonction verifType
		*/
			var obj1 = $(this.idzonemessage);
			var totalMessage="";
//			console.log("nb elt : "+tableau_message.length);

			for (var keyVar in tableau_message){
 				
					
				if(tableau_message[keyVar]!="")
				{	
					totalMessage += "<br />" + tableau_message[keyVar];
				}
				
			}
			obj1.innerHTML = totalMessage;
		}

}









	
	





