/* Validation de formulaire*/
function valideForm(nomForm,sub){
  /*
    nomForm   : nom du formulaire
    sub       : indique s'il faut soumettre le formulaire ou non
    nomC     : nom de champ
    typeD     : type de demande
      - nnc champ nécessaire
      - ve  email valide
      - nf  pas la première option
      - ch  checké obligatoirement
      - vd  date valide
      - mi  minimum de check pour un tableau de résultat
      - ma  maximum de check pour un tableau de résultat
      - test  test libre
     mess     : message de d'erreur 
  */
  var form=document.getElementById(nomForm);
  if(form!=undefined){
    //var messErr="Les erreurs suivantes sont survenues :\n";
    var messErr="";
    var messE="";
    for(var i=2;i<arguments.length;i+=3){
      var nomC=arguments[i];
      if(form[nomC]!=undefined){
        var typeC=form[nomC].type;
        var typeD=arguments[(i+1)];
        var tabD=typeD.split(" ");
        var mess=arguments[(i+2)];
        
        switch(tabD[0]){
          case "nnc":{
            if((typeC=="text" || typeC=="textarea" || typeC=="hidden") && form[nomC].value=="")
              messE+="\t- "+mess+"\n";
          }break;
          case "ve":{
            if(typeC=="text"){
              var erreur=false;
              
              pos=form[nomC].value.indexOf("@")
              if(pos<2)
                erreur=true;
              
              pos2=form[nomC].value.lastIndexOf(".")
              if(pos2<5 || (pos2+2)>(form[nomC].value.length-1))
                erreur=true;
              
              if(erreur)
                messE+="\t- "+mess+"\n";
            }
          }break;
          case "nf":{
            if(typeC=="select-one" && form[nomC][0].selected)
              messE+="\t- "+mess+"\n";
          }break;
          case "vd":{
            var erreur=false;
            tab=form[nomC].value.split("/");
            //on regarde si le dernier élèment est l'année sur 4 chiffres
            if(tab[(tab.length-1)].length!=4)
              erreur=true;
            else{
              //on parcourt tous les élèments du tableau pour vérifier leur validité, dabord s'ils sont entier puis s'ils sont valide
              if((tab.length==2 && (isNaN(tab[0]) || isNaN(tab[1]))) || (tab.length==3 && (isNaN(tab[0]) || isNaN(tab[1]) || isNaN(tab[1]))))
                erreur=true
              else{
                lst30=new Array(4,6,9,11);
                switch(tab.length){
                  case 2:{  //format mm/aaaa
                    if(tab[0]>12)
                      erreur=true;
                  }break;
                  case 3:{  //format jj/mm/aaaa
                    //on regarde le nombre de jour dans le mois correspondant
                    if(tab[0]>31 || (tab[1]==2 && tab[0]>29))
                      erreur=true;
                    else{
                      //on parcourt le tableau des mois à 30 jours
                      for(var cpt =0; cpt<lst30.length; cpt++){
                        if(lst30[cpt]==tab[1] && tab[0]>30)
                          erreur=true;
                      }
                    }
                  }break;
                  default:{
                    erreur=true;
                  }break;
                }
              }
            }
            
            if(erreur)
                messE+="\t- "+mess+"\n";
          }break;
          case "ch":{
            if(!form[nomC].checked)
              messE+="\t- "+mess+"\n";
          }break;
          case "mi":{
            var cpt=0;
            for(var j=0;j<form[nomC].length;j++){
              if(form[nomC][j].checked)
                cpt++;
            }
            if(cpt<tabD[1])
              messE+="\t- "+mess+"\n";
          }break;
          case "ma":{
            var cpt=0;
            for(var j=0;j<form[nomC].length;j++){
              if(form[nomC][j].checked)
                cpt++;
            }
            if(cpt>tabD[1])
              messE+="\t- "+mess+"\n";
          }break;
          case "sup":{
            if(form[nomC].value<tabD[1])
              messE+="\t- "+mess+"\n";
          }break;
          case "inf":{
            if(form[nomC].value>tabD[1])
              messE+="\t- "+mess+"\n";
          }break;
        }
      }
    }
    if(messE!=""){
      if(document.getElementById("wErr")){
        //c'est un message au format HTML donc on change les \n en <br>
        messErr=messErr.replace("\n","<br />");
        messErr="<h4>"+messErr+"</h4>";
        while(messE.search("\n")!=-1 || messE.search("\t")!=-1){
          messE=messE.replace("\t","&nbsp;&nbsp;&nbsp;");
          messE=messE.replace("\n","<br />");
        }
        //wErreur(messE,"erreur",false);
        wErreur(messErr+messE,"erreur",false);
      }else
        alert(messErr+messE);
      return false;
    }else{
      if(sub)
        form.submit();
      return true;
    }
  }else{
    return true
  }
}
