
//-------------------------------------------------
// controle l'obligation de check sur une check box
//-------------------------------------------------
function IsChecked(objet){
	if (objet.checked){
		return true;
	}
	else {
		return false;
	}
}

//--------------------------------------------------------------
// controle l'obligation de check sur un groupe de radio buttons
//--------------------------------------------------------------
function AreChecked(objet){
	var i;
	var result = false;

	if (objet.type != 'select-one' && objet.type != 'select-multiple'){
	
		if (objet.length==null){
			if (objet.checked){
				return true;
			}
		}
		else {
			for (i=0; i<objet.length; i++) { 
				if (objet[i].checked){
					result = true;
				}
			}
			return result;
		}
	}
	else {
		return nonVideListe(objet);
	}
}
 
 
//--------------------------------------------------------------
// controle l'obligation de selectionner une ligne de liste
//-------------------------------------------------------------- 

function nonVideListe(champ) {

	if (champ == null || (champ.type != 'select-one' && champ.type != 'select-multiple')) return true;

	var i=champ.selectedIndex;
	if (i == null || i < 0)
	{
		//On est dans le cas ou la liste ne contient qu'un element
		return false;
	}
	else
	{
		var o=champ.options[i];
		var str=new String (o.value);
		var isEmpty = (str == '' );

		if (isEmpty) {
			return false;
		}
		else return true;
	}
}
      
//------------------------------------
// controle si l'entree est un chiffre
//------------------------------------
function IsChiffre(chiffre,ch1,ch2){
    var i;
    for (i=ch1;i<ch2+1;i++)
	{
		if (chiffre==i) 
		{
			return true;
		}
	}
	
	return false;
}      
      
//------------------------------------------------------------------
// controle si l'entree (String) est un numérique, utilise isChiffre
//------------------------------------------------------------------
function IsNumeric(nombre){
    for (i=0;i<(nombre.length);i++) {
		if (nombre.charAt(i)==' ') 
		{
			return false;
		}
		if (!IsChiffre(nombre.charAt(i),0,9)) 
		{
			return false;
		}
	}
	return true;
}
      
//-----------------------------------
// controle de la validite d'une date
// necessite IsChiffre()
//-----------------------------------     
function IsValidDate(date){   
    var result;
	result = true 
    //alert(date)
    if (date.value.length!=8) {result = false}
    if ((date.value.charAt(2)!='/') || (date.value.charAt(5)!='/')) {result = false}
	if (!IsChiffre(date.value.charAt(0),0,3)) {result = false}
	if (!IsChiffre(date.value.charAt(1),0,9)) {result = false}
	if (!IsChiffre(date.value.charAt(3),0,1)) {result = false}
	if (!IsChiffre(date.value.charAt(4),0,9)) {result = false}  
	if (!IsChiffre(date.value.charAt(6),0,9)) {result = false}
	if (!IsChiffre(date.value.charAt(7),0,9)) {result = false}
	//alert(result)        
	return result
}
	  
//-----------------------------------------------------
// ancien controle de la validite d'une date JJ/MM/AAAA
// sert de manière préalable à IsValidDate2000 
// necessite IsChiffre()
//-----------------------------------------------------     
function IsValidDate2000Format(date)
      {   
	var result;
	result = true 
      strdate = new String(date.value);
      strDebug ="";
	  if (strdate.length!=10) {result = false}
	  strDebug += 'lg '+result+"\n";
	  if ((strdate.charAt(2)!='/') || (strdate.charAt(5)!='/')) {result = false}
	  strDebug += '/ en 2 et 5 '+result+"\n";
	  if (!IsChiffre(strdate.charAt(0),0,3)) {result = false}
	  strDebug += 'char[0]=chifre entre 0 et 3 -> '+result+"\n";
	  if (!IsChiffre(strdate.charAt(1),0,9)) {result = false}
	  strDebug += 'char[1]=chifre entre 0 et 9 -> '+result+"\n";
	  if (!IsChiffre(strdate.charAt(3),0,3)) {result = false}
	  strDebug += 'char[3]=chifre entre 0 et 3 -> '+result+"\n";
	  if (!IsChiffre(strdate.charAt(4),0,9)) {result = false}  
	  strDebug += 'char[4]=chifre entre 0 et 9 -> '+result+"\n";
	  if (!IsChiffre(strdate.charAt(6),0,9)) {result = false}
	  strDebug += 'char[6]=chifre entre 0 et 9 -> '+result+"\n";
	  if (!IsChiffre(strdate.charAt(7),0,9)) {result = false}
	  strDebug += 'char[7]=chifre entre 0 et 9 ->  '+result+"\n";
	  if (!IsChiffre(strdate.charAt(8),0,9)) {result = false}
	  strDebug += 'char[8]=chifre entre 0 et 9 ->  '+result+"\n";
	  if (!IsChiffre(strdate.charAt(9),0,9)) {result = false}
	  strDebug += 'char[9]=chifre entre 0 et 9 -> '+result+"\n" ;       
	  //alert(strDebug);
	  //alert(strdate);
	  return result
}

//-----------------------------------------------------
// ancien controle de la validite d'une date XX/XX/AAAA et non JJ/MM/AAAA
// sert de manière préalable à IsValidDate2000 
// necessite IsChiffre()
//-----------------------------------------------------     
function IsValidDate2000FormatXX(date)
      {   
	var result;
	result = true 
      strdate = new String(date.value);
	  if (strdate.length!=10) {result = false}
	  if ((strdate.charAt(2)!='/') || (strdate.charAt(5)!='/')) {result = false}
	  if (!IsChiffre(strdate.charAt(0),0,3)) {result = false}
	  if (!IsChiffre(strdate.charAt(1),0,9)) {result = false}
	  if (!IsChiffre(strdate.charAt(3),0,3)) {result = false}
	  if (!IsChiffre(strdate.charAt(4),0,9)) {result = false}  
	  if (!IsChiffre(strdate.charAt(6),0,9)) {result = false}
	  if (!IsChiffre(strdate.charAt(7),0,9)) {result = false}
	  if (!IsChiffre(strdate.charAt(8),0,9)) {result = false}
	  if (!IsChiffre(strdate.charAt(9),0,9)) {result = false}
	  //alert(strdate);
	  //alert(result) ;       
	  return result
}

// indique si la date passee en parametre est bien au
// format jj/mm/aaaa et qu'elle est valide
 
function estBissextile(annee){
 return ( (annee%4==0) && (!( annee%100==0) || ( annee%400==0)));
}

// anciennement function formatDate(champ, defaultValue) 
function IsValidDate2000 (champ,lang){
	var s;
	var result;
	result = true;
	if (champ.value == '') {
		return;
	}

 // expression régulière correspondant à une date valide
 //var expReg = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/;
 
 //var matchArray = champ.value.match(expReg);
 // le format est-il correct ?
 
 //if (matchArray == null) {
  //alert("Format de date invalide. Format correct jj/mm/aaaa");
 // result = false;
 //}
  
 //jour = matchArray[1];
 //mois = matchArray[3];
 //annee = matchArray[4];
 
 if (!IsValidDate2000Format(champ)){
  result = false;
 }
 else {
	s=champ.value.split(/\//);
	//alert('lang -> '+lang);
	if(lang=='fr'){
	jour = s[0];
	mois = s[1];
	annee = s[2];
	}else{
	jour = s[1];
	mois = s[0];
	annee = s[2];
	}
//	alert('0='+s[0]+' 1='+s[1]+' 2='+s[2]);
	
//	alert('j='+jour+' m='+mois+' a='+annee);
	if (jour < 1 || jour > 31) {
//	 alert("le jour doit etre compris entre 1 et 31");
	 result = false;
	}
	
	if (mois < 1 || mois > 12) {
//	 alert("le mois doit etre compris entre 1 et 12");
	 result = false;
	}
 
	if ((mois==4 || mois==6 || mois==9 || mois==11) && jour==31) {
	// alert("mois "+mois+" n'a pas 31 jours")
	 result = false;
	}
	
	if (mois == 2) { // check for february 29th
	 var anBis = estBissextile(annee);
	 if (jour>29 || (jour==29 && !anBis)) {
//	 alert("Fevrier " + annee + " n'a pas " + jour + " jours!");
	 result = false;
	 }
	}
	
 }
 return result;
}


// verifie le format de date sur 3 champs YY MM DD
function IsValidDate2000Format_3(annee,mois,jour)
      {   
	var result;
	result = true 
      annee = new String(annee.value);
      mois = new String(mois.value);
      jour = new String(jour.value);
	  if (annee.length!=4) {result = false;}
	  if (mois.length!=2) {result = false;}
	  if (jour.length!=2) {result = false;}
	  if (!IsChiffre(jour.charAt(0),0,3)) {result = false;}
	  if (!IsChiffre(jour.charAt(1),0,9)) {result = false;}
	  if (!IsChiffre(mois.charAt(3),0,1)) {result = false;}
	  if (!IsChiffre(mois.charAt(4),0,9)) {result = false;}  
	  if (!IsChiffre(annee.charAt(6),0,9)) {result = false;}
	  if (!IsChiffre(annee.charAt(7),0,9)) {result = false;}
	  if (!IsChiffre(annee.charAt(8),0,9)) {result = false;}
	  if (!IsChiffre(annee.charAt(9),0,9)) {result = false;}      
	  return result
}
// verifie la validite de date sur 3 champs YY MM DD
function IsValidDate2000_3 (annee,mois,jour){
 var s;
 var result;
 result = true;
 if ((year.value == '')||(month.value == '')||(day.value == '')) {
  result = false;
  return result;
 }
 
 annee = year.value;
 mois = month.value;
 jour = day.value;
 
 if (!IsValidDate2000Format_3(year,month,day)){
  result = false;
 }
 else {
	if (jour < 1 || jour > 31) {
	 //alert("le jour doit etre compris entre 1 et 31");
	 result = false;
	}
	
	if (mois < 1 || mois > 12) {
	 //alert("le mois doit etre compris entre 1 et 12");
	 result = false;
	}
 
	if ((mois==4 || mois==6 || mois==9 || mois==11) && jour==31) {
	 //alert("mois "+mois+" n'a pas 31 jours")
	 result = false;
	}
	
	if (mois == 2) { // check for february 29th
	 var anBis = estBissextile(annee);
	 if (jour>29 || (jour==29 && !anBis)) {
	  //alert("Fevrier " + annee + " n'a pas " + jour + " jours!");
	 result = false;
	 }
	}
	
 }
 return result;
}

function IsValidDateNaissance(champ, anneeCourante) {
	var s;
	var result;
	var annee;
	result = true;
	if (!IsValidDate2000(champ)){
		result = false;
	}
	else {
		
		s=champ.value.split(/\//);
		annee = s[2];
		//alert (anneeCourante + ' ' + annee + ' ' + (annee>anneeCourante));
		//1900 : contrainte liée à : smalldatetime 
		if ((annee<1900)||(annee>anneeCourante)) {
			result = false;
		}
	}
	return result;
}

// controle de date en fonction de la langue
// si fr date au format fr
// sinon date au format us
function isNumber2(string) {
	var iChars = "0123456789";
	for (var i = 0; i < string.length; i++)
		if (iChars.indexOf(string.charAt(i)) == -1)
			return false;
	return true;
}
function checkDate(field){	
	var lang = "fr";		
	var string = field.value;
	if (string.length==10){
		if (string.charAt(2)=='/' && string.charAt(5)=='/'){
			var j = '';
			if (lang=='fr') j= string.substring(0,2);
			else j = string.substring(3,5);
			var jour = parseInt(j);
			if (j=='08') jour=8;
			if (j=='09') jour=9;
			var m = '';
			if (lang!='fr') m= string.substring(0,2);
			else m = string.substring(3,5);
			var mois = parseInt(m);
			if (m=='08') mois=8;
			if (m=='09') mois=9;
			var a = string.substring(6,10)
			var annee = parseInt(a);
			if (isNumber2(j) && isNumber2(m) && isNumber2(a)){
				var OK = true;
				if(mois==2 && jour>28) OK=false;
				if (jour >30 && (mois==4 || mois==6 || mois==9 || mois==11)) OK=false;
				if (mois>12) OK=false;
				if(OK)return true;
			}
		}
	}
	return false;
	}

// Contrôle la cohérence des dates de début et de fin des objets javascript envoyés
// Les datesdoivent avoir été contrôlées avec IsValidDate2000 avant
function IsPeriod(deb, fin) {   
    var result;
	var dateDeb;
	var dateFin;
	dateDeb = eval(deb.value.substr(6,4) + deb.value.substr(3,2) + deb.value.substr(0,2));
    dateFin = eval(fin.value.substr(6,4) + fin.value.substr(3,2) + fin.value.substr(0,2));
    //alert(dateDeb);alert(dateFin);
	if (dateDeb>dateFin) {
		result = false
	}
	else {
		result = true
	}
	return result
}

//------------------------------------	  
// controle de la validite d'une heure
// necessite IsChiffre()
//------------------------------------      
function IsValidHeure(heure)
      {   
    var result;
	  result = true 
      //alert(heure)
      if (heure.value.length!=5) {result = false}
      if (heure.value.charAt(2)!=':') {result = false}
	  if (!IsChiffre(heure.value.charAt(0),0,2)) {result = false}
	  if (!IsChiffre(heure.value.charAt(1),0,9)) {result = false}
	  if (!IsChiffre(heure.value.charAt(3),0,5)) {result = false}
	  if (!IsChiffre(heure.value.charAt(4),0,9)) {result = false}  
	  //alert(result)        
	  return result}

//------------------------------------
// controle de la validite d'un nombre
// necessite IsChiffre()
//------------------------------------    
function IsValidNombre(nombre)
      {   
    var result;
	  result = true 
      //alert(nombre)
	  if (!IsChiffre(nombre.value.charAt(0),0,9)) {result = false}
	  //alert(result)        
	  return result}
	  
//-----------------------------------------
// controle de la validite d'un code postal
// necessite IsChiffre()
//-----------------------------------------      
function IsValidCp(codepostal)
      {   
    var result;
	  result = true 
      //alert(codepostal)
      if (codepostal.value.length!=5) {result = false}
  	  if (!IsChiffre(codepostal.value.charAt(0),0,9)) {result = false}
	  if (!IsChiffre(codepostal.value.charAt(1),0,9)) {result = false}
	  if (!IsChiffre(codepostal.value.charAt(2),0,9)) {result = false}
	  if (!IsChiffre(codepostal.value.charAt(3),0,9)) {result = false}
	  if (!IsChiffre(codepostal.value.charAt(4),0,9)) {result = false}
	  if (!IsChiffre(codepostal.value.charAt(5),0,9)) {result = false}
	  //alert(result)        
	  return result}
	  
//-------------------------------------------------	  
// controle de la validite d'un numero de telephone
// necessite IsChiffre()
//--------------------------------------------------    
function IsValidTel(tel)
      {   
    var result;
	  result = true 
      //alert(tel)
      /*if (tel.value.length!=14) {result = false}
  	  if (!IsChiffre(tel.value.charAt(0),0,0)) {result = false}
	  if (!IsChiffre(tel.value.charAt(1),0,6)) {result = false}
	  if (!IsChiffre(tel.value.charAt(3),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(4),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(6),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(7),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(9),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(10),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(12),0,9)) {result = false}
	  if (!IsChiffre(tel.value.charAt(13),0,9)) {result = false}*/
	  //alert(result)        
	  return result}
	  
//------------------------------------
// controle de la validite d'un e-mail
//------------------------------------
function IsValidMail(email){
	return IsValidMailStr(email.value);
}

function IsValidMailStr(email){
	var s;
	var s1;
	var result;
	result = true;
	//alert(email)
	if (email!="") {
		s=email.split(/@/);
		if (s.length!=2 || s[0]=='' || s[1]=='') {
			result = false;
		}
		else {
			s1=s[1].split(/\./);
			if (s1.length<2 || s1[0]=='' || s1[1]=='') {
				result = false;
			}
		}
		//alert(email.indexOf(";"));
		if (email.indexOf(";")!=-1) {
			result = false;
		}
	}	
	if (email=="") {
		result = false;
	}
	
	//alert(result)
	return result
}

function IsValidMailNum(email){
	return IsValidMailStrNum(email.value);
}

function IsValidMailNum(email){
	var s;
	var s1;
	var result;
	result = 0
	//alert(email)
	if (email!="") {
		s=email.split(/@/);
		if (s.length!=2 || s[0]=='' || s[1]=='') {
			result = -2;
		}
		else {
			s1=s[1].split(/\./);
			if (s1.length<2 || s1[0]=='' || s1[1]=='') {
				result = -2;
			}
		}
		//alert(email.indexOf(";"));
		if (email.indexOf(";")!=-1) {
			result = -2;
		}
	}	
	if (email=="") {
		result = -1;
	}
	
	//alert(result)
	return result
}

function IsValidMailListStr(list){
	//la liste peut être vide. valide si toto@titi.com;toto@toto.com
	var s;
	var i;
	var result;
	result = true;
	if (list!=""){
		s=list.split(/;/);
		for (i=0;i<s.length;i++) {
			if (IsValidMailStr(s[i])==false) {
				result = false
			}
		}
	}
	return result;
}

function IsValidPartMailStr(email){
	var s;
	var result;
	result = true
	if (email.charAt(0)!='@') {
		result = false
	}
	else {
		s=email.split(/\./);
		if (s.length<2 || s[0]=='' || s[1]==''){
			result = false
		}
		if (email==""){
			result = false
		}
	}
	return result
}

function IsValidPartMailListStr(list){
	//la liste peut être vide. valide si @titi.com;@toto.com
	var s;
	var i;
	var result;
	result = true;
	if (list!=""){
		s=list.split(/;/);
		for (i=0;i<s.length;i++) {
			if (!IsValidPartMailStr(s[i])) {
				result = false;
			}
		}
	}
	return result;
}

//-------------------------------------------------
// controle si presence de caracteres non autorises
//-------------------------------------------------
function IsValid(objet)
	{
	 chaine=new String(objet.value)
	 if (chaine=="")
		 return false;
	 /*if (chaine.search("\"")!=-1)
		{
		 //alert("Le champs " + objet.name + " ne doit pas contenir le caractère \"");
		 return false;
		}	 
	*/
	return true;		
	}


//-------------------------------------------------
// Contrôle de la longueur max d'une textarea
//-------------------------------------------------
function IsValidTextarea(objet){
	chaine=new String(objet.value);
	longueurMax = objet.maxlength;
	/*alert (chaine);
	alert (longueurMax);
	alert (chaine.length);*/
	if (chaine.length > longueurMax){
		return false;
	}
	return true;		
}

//-------------------------------------------------
// Contrôle que le champ ne contienne pas de caractère spéciaux
//-------------------------------------------------

// jsene : limitation des caractères JAVA : a-z A-Z 0-9
//         vu sur http://www.laltruiste.com/document.php?rep=coursjava&page=structure_identificateur&compteur=4&precedent.x=7&precedent.y=11

function IsValidPwd(pwd){
    var i;
    for (i=0;i<pwd.length;i++){
		if (!(pwd.charAt(i)>='a' && pwd.charAt(i)<='z') &&
		    !(pwd.charAt(i)>='A' && pwd.charAt(i)<='Z') &&
		    !(pwd.charAt(i)>='0' && pwd.charAt(i)<='9')){
			return false;
		}		
	}
	return true;
}


//-------------------------------------------------
/* Vérification complète d'un formulaire quelconque :
   - objet formulaire reçu en paramètre
   - les éléments à "checker" ont :
     - un nom débutant par "frm_"
     - un attribut param_obligatoire 
     (à 'true' pour vérification que l'élément est renseigné)
     - un attribut param_type pour les objets de type texte libre
     ('Téléphone', 'E-mail', 'Date', 'Heure', 'Nombre' )
     - un attribut param_nom pour afficher le nom du champ dans un message d'erreur
   - renvoie 
     - true si le formulaire est OK, 
     - la liste des champs à corriger sinon
*/
//-------------------------------------------------

	function verif_form(form,lang) {
		var flag_erreur=false;
		var string_erreur=new String("");		
		var last_multi_object=new String("");
		//alert('lang vf -> '+lang);
		form.lang = lang;
		with (form){
			for (var i in elements) {		
				if (i.substring(0,4)=='frm_') {
					//DEBUG
					//multi-object => radio ou checkbox
					if (elements[i].length!=null){
						//pour éviter le re-contrôle et la réécriture de ces objets comme manquants dans le message d'erreur
						if (elements[i][0].param_name == last_multi_object) {}
						else {
							if (elements[i][1]==null){
								last_multi_object=elements[i].param_name;

								if (elements[i].param_obligatoire=='true') {	
									if (!AreChecked(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';	
									}
								}
							}
							else {
								last_multi_object=elements[i][1].param_name;

								if (elements[i][1].param_obligatoire=='true') {	
								
									if (!AreChecked(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i][1].param_name + '\n';	
									}
								}
							}
						}
					}			
					//objets texte
					else {
						
						if (elements[i].value!='') {
					
							//constTypeTexte, constTypeNombre, constTypeTel, constTypeEmail, constTypeDate, constTypeHeure
							if (elements[i].param_type=='Nombre') {
								if (!IsNumeric(elements[i].value)) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							if (elements[i].param_type=='Telephone') {
								if (!IsNumeric(elements[i].value)) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							if (elements[i].param_type=='E-mail') {
								if (!IsValidMail(elements[i])) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							if (elements[i].param_type=='Date') {
								//if (elements[i].value!='JJ/MM/AAAA') {
									//alert('lang avt if -> '+lang);
									if (!IsValidDate2000(elements[i],lang)) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								//}
							}
							if (elements[i].param_type=='Heure') {
								//if (elements[i].value!='HH:MM') {
									if (!IsValidHeure(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								//}
							}
							if (elements[i].param_type=='pwd') {
								if (!IsValidPwd(elements[i].value)) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
						}
						if (elements[i].param_obligatoire=='true'){
							if (elements[i].param_type=='Date') {
								if (!IsValid(elements[i])) { //||elements[i].value=='JJ/MM/AAAA') {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							else {
								if (elements[i].param_type=='Heure') {
									if (!IsValid(elements[i])) { //||elements[i].value=='HH:MM') {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								}
								else {
									if (!IsValid(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								}
							}
						}
					}
				}
			}//end for		
		
			
			
		}
		if (!flag_erreur) {
			return true;
		}
		else {
			return string_erreur;
		}
	}
	

	//-------------------------------------------------
/* Vérification complète d'un formulaire quelconque :
   - objet formulaire reçu en paramètre
   - les éléments à "checker" ont :
     - un nom débutant par "frm_"
     - un attribut param_obligatoire 
     (à 'true' pour vérification que l'élément est renseigné)
     - un attribut param_type pour les objets de type texte libre
     ('Téléphone', 'E-mail', 'Date', 'Heure', 'Nombre' )
     - un attribut param_nom pour afficher le nom du champ dans un message d'erreur
   - renvoie 
     - true si le formulaire est OK, 
     - la liste des champs à corriger sinon
*/
//-------------------------------------------------

	function verif_formBis(form,lang) {
		var flag_erreur=false;
		var flag_erreurbis=false;
		var string_erreur=new String("");		
		var last_multi_object=new String("");
		//alert('lang vf -> '+lang);
		form.lang = lang;
		with (form){
			for (var i in elements) {		
				if (i.substring(0,4)=='frm_') {
					//DEBUG
					//multi-object => radio ou checkbox
					if (elements[i].length!=null){
						//pour éviter le re-contrôle et la réécriture de ces objets comme manquants dans le message d'erreur
						if (elements[i][0].param_name == last_multi_object) {}
						else {
							if (elements[i][1]==null){
								last_multi_object=elements[i].param_name;

								if (elements[i].param_obligatoire=='true') {	
									if (!AreChecked(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';	
									}
								}
							}
							else {
								last_multi_object=elements[i][1].param_name;

								if (elements[i][1].param_obligatoire=='true') {	
								
									if (!AreChecked(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i][1].param_name + '\n';	
									}
								}
							}
						}
					}			
					//objets texte
					else {
						
						if (elements[i].value!='') {
					
							//constTypeTexte, constTypeNombre, constTypeTel, constTypeEmail, constTypeDate, constTypeHeure
							if (elements[i].param_type=='Nombre') {
								if (!IsNumeric(elements[i].value)) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							if (elements[i].param_type=='Telephone') {
								if (!IsNumeric(elements[i].value)) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							if (elements[i].param_type=='E-mail') {
								if (IsValidMailNum(elements[i])== -1) {// mail vide
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
								if (IsValidMailNum(elements[i])== -2) {// mail mal construit
									flag_erreurbis = true;
									string_erreur = string_erreur + elements[i].param_name + '\n';
								}
							}
							if (elements[i].param_type=='Date') {
								//if (elements[i].value!='JJ/MM/AAAA') {
									//alert('lang avt if -> '+lang);
									if (!IsValidDate2000(elements[i],lang)) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								//}
							}
							if (elements[i].param_type=='Heure') {
								//if (elements[i].value!='HH:MM') {
									if (!IsValidHeure(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								//}
							}
							if (elements[i].param_type=='pwd') {
								if (!IsValidPwd(elements[i].value)) {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
						}
						if (elements[i].param_obligatoire=='true'){
							if (elements[i].param_type=='Date') {
								if (!IsValid(elements[i])) { //||elements[i].value=='JJ/MM/AAAA') {
									flag_erreur=true;
									string_erreur=string_erreur + elements[i].param_name + '\n';
								}
							}
							else {
								if (elements[i].param_type=='Heure') {
									if (!IsValid(elements[i])) { //||elements[i].value=='HH:MM') {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								}
								else {
									if (!IsValid(elements[i])) {
										flag_erreur=true;
										string_erreur=string_erreur + elements[i].param_name + '\n';
									}
								}
							}
						}
					}
				}
			}//end for		
		
			
			
		}
		if (flag_erreur) {
			return string_erreur;
		}
		if (flag_erreurbis) {
			return string_erreur;
		}
		else {
			return true;
		}
	}