// JavaScript Document
/* Validation de formulaire*/
function valideForm(nomForm){
  /*
    nomForm   : nom du formulaire
    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
     mess     : message de d'erreur 
  */
  var form=document.getElementById(nomForm);
  if(form){
    var messErr="Les erreurs suivantes sont survenues :\n";
    var messE="";
    for(var i=1;i<arguments.length;i+=3){
      var nomC=arguments[i];
      if(form[nomC]){
        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") && 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 "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;
          
        }
      }
    }
    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(messErr+messE,"erreur",false);
      }else
        alert(messErr+messE);
    }else
      form.submit();
  }
}

/* Validation de formulaire*/
function valideFormInsc(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
     mess     : message de d'erreur 
  */
  var form=document.getElementById(nomForm);
  if(form){
    var messErr="Les erreurs suivantes sont survenues :\n";
    var messE="";
    for(var i=2;i<arguments.length;i+=3){
      var nomC=arguments[i];
      if(form[nomC]){
        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") && 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 "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;
          
        }
      }
    }
    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(messErr+messE,"erreur",false);
      }else
        alert(messErr+messE);
      return false;
    }else
      if(sub)
        form.submit();
      else
        return true;
  }
}

function verifDate(lg){
  if(lg=="en"){
    var err1="You must specify the dates of arrival and departure from the hotel";
    var err2="Your arrival time cannot be earlier than your departure time";
  }else{
    var err1="Vous devez spécifier vos dates d'arrivée et de départ";
    var err2="Votre date d'arrivée doit se situer avant votre date de départ";
  }
    

  var jourA=document.forms.formC.jourA.value;
  var heureA=document.forms.formC.heureA.value;
  var minA=document.forms.formC.minA.value;
  var jourD=document.forms.formC.jourD.value;
  var heureD=document.forms.formC.heureD.value;
  var minD=document.forms.formC.minD.value;
  
  var erreur=false;
  
  
  if(jourA==-1 || jourD==-1 || heureA==-1 || heureD==-1)
    wErreur(err1,"erreur");
  else{
    switch(jourA){
      case "1":
        var dateArr=new Date(2007,08,26,heureA,minA,0);
      break;
      case "2":
        var dateArr=new Date(2007,08,27,heureA,minA,0);
      break;
      default:
        var dateArr=new Date(2007,08,25,heureA,minA,0);
      break;
    }
    
    switch(jourD){
      case "2":
        var dateDep=new Date(2007,08,27,heureD,minD,0);
      break;
      case "3":
        var dateDep=new Date(2007,08,28,heureD,minD,0);
      break;
      default:
        var dateDep=new Date(2007,08,26,heureD,minD,0);
      break;
    }
    
    if(dateArr>dateDep)
      wErreur(err2,"erreur");
    else
      document.forms.formC.submit();
  }
}

function cache(calque){
  var tab=calque.split(",");
  for(var i=0;i<tab.length;i++){
    document.getElementById(tab[i]).style.visibility='hidden';
    document.getElementById(tab[i]).style.display='none';
  }
}
function affich(calque){
  var tab=calque.split(",");
  for(var i=0;i<tab.length;i++){
    document.getElementById(tab[i]).style.display='block';
    if(document.getElementById(tab[i]).tagName=="TR" && navigator.appName.substr(0,3)!="Mic")
      document.getElementById(tab[i]).style.display='table-row';
    document.getElementById(tab[i]).style.visibility='visible';
  }
  
}
function gestAff(calque){
  var tab=calque.split(",");
  for(var i=0;i<tab.length;i++){
    if(document.getElementById(tab[i]).style.display=='none')
      affich(tab[i]);
    else
      cache(tab[i]);
  }
}

var disable=true;
function enableChamp(){
  disable=!disable;
  document.forms.formC.f_societe.disabled = disable;
  document.forms.formC.f_adresse.disabled = disable;
  document.forms.formC.f_adresse2.disabled = disable;
  document.forms.formC.f_cp.disabled = disable;
  document.forms.formC.f_ville.disabled = disable;
  document.forms.formC.f_id_pays.disabled = disable;
}
