function SelectAll(obj)
{
  for (i =0 ; i < obj.options.length ;i++)
       obj.options(i).selected = true;

}

function GetLibelle(obj) {
	return obj.getAttribute('INOM');
}

function ValidationMail(obj) {
   var v_erreur = true;
   
   if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(obj.value)) v_erreur = true;
   else {
      alert('Le champ  '+ GetLibelle(obj) +' ne contient pas une adresse de messagerie valide ');
      v_erreur=false;
   }
   
   return v_erreur;
}

function ValidationDate(obj)
{
     var list;
    var annee;
     var myregDate1 = new RegExp('^[0-9]{2}[0-9]{2}[0-9]{2,4}');
     var myregDate2 = new RegExp('^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}');
     var Month;
     var Day;
     var Year;
     var v_erreur = true;
     var mydate;
     valeur = obj.value;
    	
    if (valeur == "") return v_erreur;
        
    if ((myregDate1.test(valeur) == false) && (myregDate2.test(valeur) == false)) {
        alert('La date est erronée');
        v_erreur = false;
        } else {
        list = valeur.split(/\//);
        if (list.length == 1) {
            annee = parseInt(valeur.substring(4,valeur.length), 10);
            if (annee == 0) annee = 1;
            if (annee < 50) annee = 2000 + annee;
            if ((annee >= 50) && (annee < 100)) annee = 1900 + annee;
            valeur = valeur.substring(0,2) + '/' + valeur.substring(2,4) + '/' + annee;
       } else {
            if (list[0].length == 1) list[0] = '0'+list[0];
            if (list[1].length == 1) list[1] = '0'+list[1];
           if (list[2].length == 1) list[2] = '0'+list[2];
               annee = parseInt(list[2], 10);
            if (annee == 0) annee = 1;
            if (annee < 50) annee = 2000 + annee;
            if ((annee >= 50) && (annee < 100)) annee = 1900 + annee;
            list[2] = annee;
            valeur = list[0] + '/' + list[1] + '/' + list[2] ;
        }
        if (isNaN(Date.parse(valeur))) {
           alert('La date du champ  '+ GetLibelle(obj) +' est invalide');
           v_erreur = false;
        }
        list = valeur.split(/\//);
        mydate = new Date(list[2],parseInt(list[1], 10)-1,list[0]);
       Month=mydate.getMonth()+1;
       Day=mydate.getDate();
       Year=mydate.getFullYear();
       Month = ''+Month;
       Day = ''+Day;
        Year = ''+Year;
       if (Month.length == 1) Month = '0'+Month;
       if (Day.length == 1) Day = '0'+Day;
        mydate = Day+'/'+Month+'/'+Year;
        if (mydate != valeur) {
            alert('La date du champ '+ GetLibelle(obj) +' est invalide');
            v_erreur = false;
       }
    }

	
     if (v_erreur) obj.value = valeur;
     else {
        obj.focus();
        obj.select();
     }
   return v_erreur;
}

function ValidationNumeric(obj)
{
	 var list;
	 var myregNum = new RegExp("^[\+-\.]?[0-9]*[\.]?[0-9]*$");
	 var v_erreur = true;
 	 var min   = parseInt(obj.getAttribute('imin'));
	 var max   = parseInt(obj.getAttribute('imax'));

 	 var valeur = obj.value;
 
	if (myregNum.test(valeur) == false)  {
		alert('Le format numerique du champ '+ GetLibelle(obj) +' est erroné');
		v_erreur = false;
	}

   if (v_erreur) {
      valeur = parseInt(valeur);
      
      if (valeur < min) {
		   alert('La valeur saisie doit être supérieure à '+ min);
		   v_erreur = false;      
      } else {
         if (valeur > max) {
            alert('La valeur saisie doit être inférieure à '+ max);
            v_erreur = false;                   
         }
      }

   }
   
  if (v_erreur) obj.value = valeur;
  else {
        obj.focus();
        obj.select();
  }
   
     
	return v_erreur;	
}

function ValidationTime(obj)
{
	var list;
	var myregTime = new RegExp("^[0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}$");
	var v_erreur = true;
 
 	 var valeur = obj.value;

	if (myregTime.test(valeur) == false)  {
		alert("L'heure du champ '+ GetLibelle(obj) +' est erronée.");
		v_erreur = false;
	}
	
	if (v_erreur) { 
		list = valeur.split(/:/);
		
		hour = list[0];
		minute = list[1];
		second = list[2];
	
		if (second=="") { second = null; }
	
		if (hour < 0  || hour > 23) {
			alert("L'heure du champ "+ GetLibelle(obj) +" doit être comprise entre 0 et 23.)");
			v_erreur = false;
		}
	
		if (minute<0 || minute > 59) {
			alert ("Les minutes du champ "+ GetLibelle(obj) +" doivent être comprises entre 0 et 59.");
			v_erreur = false;
		}
		
		if (second != null && (second < 0 || second > 59)) {
			alert ("Les secondes du champ "+ GetLibelle(obj) +" doivent être comprises entre 0 et 59.");
			v_erreur = false;
		}
	
  	if (v_erreur) obj.value = valeur;
  	else {
        obj.focus();
        obj.select();
  	}
	
	
	}
	
	return v_erreur;	
}

function ValidationBoolean(obj)
{
	var list;
	var myregNum = new RegExp("^[ONon]?$");
	var v_erreur = true;

  var valeur = obj.value;
 
	if (myregNum.test(valeur) == false)  {
		alert('Le format Booleen du champ '+ GetLibelle(obj) +' est erroné');
		v_erreur = false;
	}

   	FctValeur = valeur.toUpperCase();

  	if (v_erreur) obj.value = valeur;
  	else {
        obj.focus();
        obj.select();
  	}

	return v_erreur;	
}

function Validation(obj) {

	var attrib = obj.getAttribute('ISYNTAX');
 	var type   = obj.getAttribute('ITYPE');
	var libelle   = obj.getAttribute('INOM');
 	var list;
 	var reg = /;/;
 	var minmax;
 	var regnum = /\D/;
 	var valeur = obj.value;
 	var myreg;
 	var annee; 
 	var myregDate1 = new RegExp("^[0-9]{2}[0-9]{2}[0-9]{2,4}");
 	var myregDate2 = new RegExp("^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}");
 	var Month;
 	var Day;
 	var Year;
 	var libelle;
 	var v_erreur = true;
 	var mydate;
   var parent;
 	var tab_fonction;
 	var cur_child;
   
   if (obj.style.display =="none") return v_erreur;


   parent=obj.parentNode;
   while ((parent) && (parent.tagName != "BODY")) {
      if (parent.style.display =="none") return v_erreur;
      parent=parent.parentNode;
   }

	if (type != null)   {

		switch (type) {
			case 'DATE' :
						  
		  if (valeur != "") {
				v_erreur = ValidationDate(obj);
				
		  }	  	  			  	
		  break;

			case 'NUMERIC' :

		  if (valeur != "") {
				v_erreur = ValidationNumeric(obj,valeur);
		  }	  
        
		  break;

			case 'TIME' :
		  if (valeur != "") {
				v_erreur = ValidationTime(obj,valeur);
		  }	  	  			  	
		  break;

			case 'BOOLEAN' :
		  if (valeur != "") {
				v_erreur = ValidationBoolean(obj,valeur);
				if (v_erreur) valeur = FctValeur;
		  	}	  	  			  	
		  break;

			case 'MAIL' :
		  if (valeur != "") {
				v_erreur = ValidationMail(obj,valeur);
		  	}	  	  			  	
		  break;
        


			default :   	
			break;

		}
	}

 	if ((attrib != null) && (v_erreur)) {

		list = attrib.split(reg);
		
		for (i=0;i<list.length;i++) {
		
			if (v_erreur == false) return v_erreur;		
				
			switch (list[i].substr(0,3)) {
	
				case 'MAN' :
						
					if (obj.type == "checkbox") {						
						if (obj.checked == false) {
					  		alert('Veuillez cocher la case'+libelle);
					  		v_erreur = false;
						}
					} else {
				  		if (valeur == "") {			  				  	
				  		
				  			alert('Le champ '+libelle+' est obligatoire');
				  			v_erreur = false;
						}

				  		if ((valeur == "-1") && (obj.type == 'select-one')) {			  				  	
				  		
				  			alert('Le champ  est obligatoire');
				  			v_erreur = false;
						}
						
	        				if ((obj.type != 'hidden') && (v_erreur == false)) {
	        					obj.focus();
	        					
	        					if (obj.type != 'select-one') obj.select();
	        				}

				  	}
			  
			 	break;
				
				case 'UPC' :
			  	valeur = valeur.toUpperCase();
			  	obj.value = valeur;

				break;
	
				case 'LOW' :
			  	valeur = valeur.toLowerCase();
			  	obj.value = valeur;
				break;

				case 'ENT' :

			  	myreg = new RegExp(list[i].substring(4,list[i].length-1));
			  	
			  	if (valeur != "") {
			  		if (myreg.test(valeur) == false) {
			  			alert('Le format du champ est erroné');
			  			v_erreur = false;
        			obj.focus();
        			obj.select();

			  		}
			  	}			  
			  break;
	
				case 'LEN' :
			      
               
			  	if (valeur != "") {
			  		minmax = list[i].split(regnum);
                    
			  		if (valeur.length < minmax[0]) {
			  			alert('La valeur saisie dans le champ '+libelle+' est trop courte');
			  			v_erreur = false;
        			obj.focus();
        			obj.select();
			  		}
	               
			  		if (valeur.length > minmax[1]) {
			  			alert('La valeur saisie dans le champ '+libelle+' est trop longue');
			  			v_erreur = false;
        			obj.focus();
        			obj.select();
			  		}
			  	} 
			  
			  break;
	
				default :   	
			  break;
			}  	
		}
	}

	if (v_erreur == false) obj.value = valeur;
	
  return v_erreur;

}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


function ValidateForm(i_form) { 
	retVal = false;

    //i_form = MM_findObj(nomForm);
    
	for (i_form=0;i_form<document.forms.length;i_form++) {

		cur_form = document.forms[i_form];
	  for(i_elem=0;i_elem<cur_form.elements.length;i_elem++) {
			cur_elem = cur_form.elements[i_elem];
					
    //  if (cur_elem.type == 'select-multiple') SelectAll(cur_elem);
      
			retVal = Validation(cur_elem);
			
			if (retVal == false) return false;
		
		}
	
	}
    
    return retVal;
}

function Add(name,max) {
   var Qte;
   var Obj = MM_findObj(name);   
   var libelle   = Obj.getAttribute('INOM');
   
   Qte = parseInt(Obj.value);
   
   if ((isNaN(Qte)) || (Qte=='')) Qte=0;
 
   if (Qte < max ) {
      Qte++;
      Obj.value = Qte;
   } else alert("la "+libelle+" ne peut être supérieure à "+max);
}

function Remove(name,min) {
   var Qte;
   var Obj = MM_findObj(name);   
   var libelle   = Obj.getAttribute('INOM');
   
   Qte = parseInt(Obj.value);
   if ( (isNaN(Qte)) || (Qte=='')) Qte=0;
   if (Qte > min) {
   Qte--;
   Obj.value =Qte;
   } else alert("la "+libelle+" ne peut être inférieure à "+min);
}

function ShowToolBar(Obj) {
     var parent=Obj.parentNode;
     var name   = Obj.name;     
     var obj_cpt = MM_findObj('compt_'+name);
     var max   = obj_cpt.getAttribute('imax');
     var min   = obj_cpt.getAttribute('imin');
     var valeur  = Obj.value;
   
     /*var sHTML = "<span style=display:block;width:9px;height:30px;float:left;margin-top:0px;margin-left:2px;>";
     
     sHTML = sHTML + "<A onclick=\"javascript:Add('"+name+"'";
     sHTML = sHTML +  ","+max+ ");\"><IMG SRC='/img/plus2.gif' BORDER=0 width=9 heigth=8></A>";
     sHTML = sHTML + "<A onclick=\"javascript:Remove('"+name+"'";
     sHTML = sHTML + ","+min+ ");\"><IMG SRC='/img/moins2.gif' BORDER=0 width=9 heigth=8></A>";     
     sHTML = sHTML +  "</span>";
     */
     
     var sHTML = "";
     
     sHTML = sHTML +  "<div class='compteur' >";
     sHTML = sHTML + "<a onclick=\"javascript:Add('"+name+"'";
     sHTML = sHTML +  ","+max+ ");\"><IMG SRC='/img/plus2.gif' BORDER='0' width='9' heigth='8' /></a>";
     sHTML = sHTML + "<a onclick=\"javascript:Remove('"+name+"'";
     sHTML = sHTML + ","+min+ ");\"><IMG SRC='/img/moins2.gif' BORDER='0' width='9' heigth='8'></a>";     
     sHTML = sHTML +  "</div>";
     /*
     sHTML = sHTML + "<table border='1'  cellpadding='0' cellspacing='0' class='compteur' >  ";
     sHTML = sHTML +  "<tr height='8px' >";
     sHTML = sHTML +  "<td align=left height='8px' >";
     sHTML = sHTML + "<a onclick=\"javascript:Add('"+name+"'";
     sHTML = sHTML +  ","+max+ ");\"><IMG SRC='/img/plus2.gif' BORDER='1' width='9' heigth='8' /></a>";
     sHTML = sHTML +  "</td>";
     sHTML = sHTML +  "</tr>";
     sHTML = sHTML +  "<tr height='1px'><td height='1px'>";
     sHTML = sHTML +  "<img src='img/spacer.gif' height='1px' /></td></tr>";
     sHTML = sHTML +  "<tr height='8px' >";
     sHTML = sHTML +  "<td align=left height='8px' >";
     sHTML = sHTML + "<a onclick=\"javascript:Remove('"+name+"'";
     sHTML = sHTML + ","+min+ ");\"><IMG SRC='/img/moins2.gif' BORDER='0' width='9' heigth='8'></a>";
     sHTML = sHTML +  "</td>";
     sHTML = sHTML +  "</tr>";
     sHTML = sHTML +  "</table>";
     */
     //alert(sHTML);
     obj_cpt.innerHTML = sHTML;
}
