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 div_cache(nomdiv)
{
 var style = document.getElementById(nomdiv).style.visibility;
 var display  = "block";
 
 if (style == "visible")
 {
  style ="hidden";
  display = "none";
 }
 else
 {
  style ="visible";
  display = "block";
 }
 document.getElementById(nomdiv).style.visibility= style;
 document.getElementById(nomdiv).style.display = display; 
 //this.choix_groupe.elements[nomdiv]
}

function div_montre(nomdiv)
{
 var style = document.getElementById(nomdiv).style.visibility;
 var display  = "block";
 
 if (style == "hidden")
 {
  style ="visible";
  display = "block";
 }
 else
 {
  style ="hidden";
  display = "none";
 }
 document.getElementById(nomdiv).style.visibility= style;
 document.getElementById(nomdiv).style.display = display; 
 //this.choix_groupe.elements[nomdiv]
}


function MM_jumpMenu(targ,selObj,restore){ //v3.0
   if (targ != '')
   {
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
   }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function div_montre_carto(nomdiv)
{
 var style = document.getElementById(nomdiv).style.visibility;
 var display  = "block";

  style ="visible";
  display = "block";

 document.getElementById(nomdiv).style.visibility= style;
 document.getElementById(nomdiv).style.display = display; 
 //this.choix_groupe.elements[nomdiv]
}

function div_cache_carto(nomdiv)
{
 var style = document.getElementById(nomdiv).style.visibility;
 var display  = "block";

  style ="hidden";
  display = "none";

 document.getElementById(nomdiv).style.visibility= style;
 document.getElementById(nomdiv).style.display = display; 
 //this.choix_groupe.elements[nomdiv]
}

// fonction de controle de saisie obligatoire des champs dans un formulaire
// nom_form = nom du formulaire

// dans le formulaire, il y a un HIDDEN tab_ctrl[] qui contient le nom des champs obligatoires
// format général ex : pour dire le prenom est obligatoire, tab_ctrl[]='prenom'
// il y a un format spécial pour dire : nom obligatoire OU email obligatoire : tab_ctrl[]='nom#email1" 

// dans le formulaire, il y a un HIDDEN nom_ctrl[] qui contient les libellés a affichés correspondant a tab_ctrl[]

// dans le formulaire, il y a un HIDDEN tab_email[] qui contient les noms des champs email du formulaire pour controle validité email
function ctrl_form(nom_form)
{
   var ret = true;
   var k = -1;
   var nom_champ = new Array();
   // on cherche le formulaire désiré
   nb_form = document.forms.length;
   for (j=0; j < nb_form; j++)
   {
      if ( nom_form == document.forms[j].name )
      {
         k = j;
      }
   }
   
   if ( k > -1 )
   {

      temp = document.forms[k].elements.length;
      var val_zone;
      var posi_diese;
      var prem_z2;
      var kk = 0;

      var val_zone_nom;
      var posi_diese_nom;
      var prem_z2_nom;
      var kk_nom = 0;

      for (i=0; i < temp; i++)
      {  
         if ( ret == true )
         {
            // recuperation du nom du champ pour le message
            if ( document.forms[k].elements[i].name == 'nom_ctrl[]' )
            {
               posi_diese_nom = -1;
               val_zone_nom = document.forms[k].elements[i].value;
               posi_diese_nom = val_zone_nom.indexOf('#', 1) ;
               // cas de controle zone1 ou zone2
               if ( posi_diese_nom > -1 )
               {
                  zone1_nom = val_zone_nom.substring(0, posi_diese_nom);
                  prem_z2_nom = posi_diese_nom + 1;
                  zone2_nom = val_zone_nom.substring(prem_z2_nom, val_zone_nom.length);
                  nom_champ[kk_nom] = zone1_nom+' ou le champ '+zone2_nom;
               }
               else
               {
                  nom_champ[kk_nom] = val_zone_nom;
               }
               kk_nom ++;
            }
            
            // vérification du contenu des zones saisie obligatoire
            if ( document.forms[k].elements[i].name == 'tab_ctrl[]' )
            {
               posi_diese = -1;
               val_zone = document.forms[k].elements[i].value;
               posi_diese = val_zone.indexOf('#', 1) ;
               // cas de controle : zone1 obligatoire OU zone2 obligatoire
               if ( posi_diese > -1 )
               {
                  zone1 = val_zone.substring(0, posi_diese);
                  prem_z2 = posi_diese + 1;
                  zone2 = val_zone.substring(prem_z2, val_zone.length);
                  
                  // zone 1
                  eval ( 'type_zone1 = document.forms[k].'+zone1+'.type;' );
                  // cas non checkbox
                  if ( type_zone1 != 'checkbox' ) 
                  {
                     eval ( 'contenu1 = document.forms[k].'+zone1+'.value;' );
                     if ( contenu1.length == 0 )
                     {
                        ind_check1 = false;
                     }
                     else
                     {
                        ind_check1 = true;
                     }
                  }
                  else
                  {
                     eval ( 'ind_check1 = document.forms[k].'+zone1+'.checked;' );
                  }
                  
                  // zone 2
                  eval ( 'type_zone2 = document.forms[k].'+zone2+'.type;' );
                  // cas non checkbox
                  if ( type_zone2 != 'checkbox' ) 
                  {
                     eval ( 'contenu2 = document.forms[k].'+zone2+'.value;' );
                     if ( contenu2.length == 0 )
                     {
                        ind_check2 = false;
                     }
                     else
                     {
                        ind_check2 = true;
                     }
                  }
                  else
                  {
                     eval ( 'ind_check2 = document.forms[k].'+zone2+'.checked;' );
                  }
                  
                  // test soit l'un soit l'autre
                  if ( ( ind_check1 == false ) && ( ind_check2 == false ) )
                  {
                     alert('Vous devez saisir le champ '+nom_champ[kk]+' !');
                     chaine = 'document.forms[k].'+zone1+'.focus();';
                     eval (chaine);
                     ret = false;
                  }
               }
               else
               {  // cas normal zone1 obligatoire
                  
                  eval ( 'type_zone = document.forms[k].'+val_zone+'.type;' );
                  // cas non checkbox
                  if ( type_zone != 'checkbox' ) 
                  {
                     eval ( 'contenu = document.forms[k].'+val_zone+'.value;' );
                     if ( contenu.length == 0 )
                     {
                        alert('Le champ '+nom_champ[kk]+' est obligatoire !');
                        chaine = 'document.forms[k].'+val_zone+'.focus();';
                        eval (chaine);
                        ret = false;
                     }
                  }
                  else
                  { // cas checkbox 
                     eval ( 'ind_check = document.forms[k].'+val_zone+'.checked;' );
                     if ( ind_check == false )
                     {
                        alert('Le champ '+nom_champ[kk]+' est obligatoire !');
                        chaine = 'document.forms[k].'+val_zone+'.focus();';
                        eval (chaine);
                        ret = false;
                     }
                  } 
               }
               kk ++;
            }
            
            // controle d'un l'email 
            if ( document.forms[k].elements[i].name == 'tab_email[]' )
            {
            
               val_zone_email = document.forms[k].elements[i].value;
               eval ( 'contenu_email = document.forms[k].'+val_zone_email+'.value;' );
         
               if ( contenu_email.length > 0 )
               {

                  ret = verifiermail(contenu_email);
                  if ( ret == false )
                  {
                     chaine_email = 'document.forms[k].'+val_zone_email+'.focus();';
                     eval (chaine_email);
                     alert ( 'Email invalide !' );
                  }
               }
            }
            
            // controle d'une date 
            if ( document.forms[k].elements[i].name == 'tab_date[]' )
            {
               val_zone_date = document.forms[k].elements[i].value;
               eval ( 'contenu_date = document.forms[k].'+val_zone_date+'.value;' );
               if ( contenu_date.length > 0 )
               {
                  ret = verifierdate(contenu_date);
                  if ( ret == false )
                  {
                     chaine_date = 'document.forms[k].'+val_zone_date+'.focus();';
                     eval (chaine_date);
                  }
               }
            }
         }
      }
   }
   return ret;
}

function verifiermail(mail) 
{
   ret = true;
   if ( mail.length >= 5 )
   {  
      if ((mail.indexOf("@")>=0)&&(mail.indexOf(".")>=0)) 
      {
      } 
      else 
      {
         ret = false
      }
   }
   else
   {
      ret = false
   }
   return ret;
}

function verifierdate(d) 
{
   // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
   // Le séparateur est défini dans la variable separateur
   var amin=1900; // année mini
   var amax=2020; // année maxi
   var separateur="/"; // separateur entre jour/mois/annee
   var j=(d.substring(0,2));
   var m=(d.substring(3,5));
   var a=(d.substring(6));
   var ok=true;
   if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==true) ) {
      alert("Le jour n'est pas correct !"); ok=false;
   }
   if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==true) ) {
      alert("Le mois n'est pas correct !"); ok=false;
   }
   if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==true) ) {
      alert("L'année n'est pas correcte !"); ok=false;
   }
   if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==true) ) {
      alert("Les séparateurs doivent être des "+separateur); ok=false;
   }
   if (ok==true) {
      var d2=new Date(a,m-1,j);
      j2=d2.getDate();
      m2=d2.getMonth()+1;
      a2=d2.getFullYear();
      if (a2<=100) {a2=1900+a2}
      if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
         alert("La date "+d+" n'existe pas !");
         ok=false;
      }
   }
   return ok;
}
