function checkValidForm(docform,args){
  if(MM_validateForm(docform,args)){
     docform.submit();
  }
}


function MM_findObj(n, d) {
  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 findObj(docform,name){
   var elradio;
   for(i=0;i<docform.length;i++){
      if(name==docform[i].name){
         if(docform[i].type=="radio"){
            if(docform[i].checked) return docform[i];
            else elradio=docform[i];
         }
         else return docform[i];
      }     
   }
   if(elradio!=null) return elradio;
   return null;
}

function MM_validateForm(docform,args) { //v4.0
  var i,p,q,nm,test,num,min,max,errors='';
  for (i=0; i<(args.length-2); i+=3) {
    test=args[i+2];
    var name=args[i+1];
    val=findObj(docform,args[i]);
//    val=MM_findObj(args[i]);
    if (val) {
      nm=val.name;
      var type=val.type;
      var value=val.value;
      if(args[i+1]!="") nm=args[i+1];
      if(type=="checkbox"&&!val.checked){
         value="";
      }
      if(type=="radio"&&!val.checked){
//      alert(val+" "+nm+" "+type+", value="+value+" val.index="+val.index);

         value="";
      }
      if (value!="") {
        if (test.indexOf('isEmail')!=-1) {
          p=value.indexOf('@');
          if (p<1 || p==(value.length-1)) errors+='- Le champ '+nm+' doit comporter une adresse électronique valide.\n';
        }
        else if (test!='R') {
          num = parseFloat(value);
          if (isNaN(value)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) {
            p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
          } 
        }
      }
      else if (test.charAt(0) == 'R') errors += '- '+nm+'.\n';
    }
  }
  if (errors){
     alert('Les champs suivants sont requis et doivent être saisis:\n'+errors);
     return false;
  }
  return true;
}

