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' ) 
                  {
                     if ( type_zone == 'select-one' ) // cas pop_list un choix
                     {
                        contenu = -1;
                        eval ( 'contenu = document.forms[k].'+val_zone+'.selectedIndex;' );
                        if ( contenu == 0 )
                        {
                           alert('Le champ '+nom_champ[kk]+' est obligatoire !');
                           chaine = 'document.forms[k].'+val_zone+'.focus();';
                           eval (chaine);
                           ret = false;
                        }
                     }
                     else 
                     {
                        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=2005; // 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;
}

