phpJSvForm  v11.11.12
Des classes PHP, des JavaScripts pour créer facilement un formulaire.
phpJSvForm/form/jsVerifForm.js
Aller à la documentation de ce fichier.
00001 /*******************************************************************************
00002  This file is part of 'phpJSvForm'.
00003  Copyright (C) 2010-2011  Pierre POISSON (synanceia)
00004 
00005     'phpJSvForm' is free software: you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation, either version 3 of the License, or
00008     (at your option) any later version.
00009 
00010     'phpJSvForm' is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with 'phpJSvForm'.  If not, see <http://www.gnu.org/licenses/>.
00017 *******************************************************************************/
00018 
00028 /*******************************************************************************
00029 Historique : -------------------------------------------------------------------
00030 04/08/2010     PP   Création du fichier
00031 14/08/2010     PP   Première version finalisée
00032 15/08/2010     PP   Ajout de la classe 'Boutons'
00033 26/08/2010     PP   Ajout prise en compte du style CSS 'cssObligatoire'
00034 30/09/2010     PP   Correction dysfonctionnement : mise en forme des dates
00035 21/02/2011     PP   Modification expression régulière pour URL
00036 26/07/2011     PP   Si les objets sont inhibés (disabled) alors le format des champs n'est pas vérifié
00037 28/07/2011     PP   Ajout : inhibition de champs si case à cocher...
00038 24/08/2011     PP   Ajout : 'selectall_', un click sur une case particulière permet de valider automatiquement un ensemble de case à cocher
00039 01/11/2011     PP   Validation automatique du formulaire  (en l'absence du bouton 'Valider') dès qu'un champ est modifié
00040 xx/11/2011     PP   Documentation au format doxygen
00041 *******************************************************************************/
00042 
00047 function jsTrim (myString) 
00048 {
00049      return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
00050 } 
00051 
00055 function chargementVerifForm() 
00056 {
00057      var i, imax ;
00058      var selectForm ;
00059      if((selectForm=document.getElementsByTagName("form")) != null )
00060      {
00061           for(i=0, imax=selectForm.length; i<imax; i++)
00062           {
00063                prepareFormulaire(selectForm[i]) ;
00064           }
00065      }
00066 }
00067 
00072 function prepareFormulaire(formulaire) 
00073 {  
00074   var selectInput ; // Tableau d'objets
00075   var selectObjet, selectChk, selectDest, selectLabel, newHidden ; // Objet
00076   var listeObj, idForm ; // Chaines de caractères
00077   var match ; // Tableau de 2 chaines de caractères
00078   var i, imax, j, jmax ; // Entier
00079   var valid_auto=false ; // Booléen validation automatique si Btn valid_nodisp supprimé
00080 
00081   idForm=formulaire.id ;
00082 
00083   if((selectObjet=document.getElementById(idForm+"__valid_nodisp")) != null)
00084   { //Suppression du bouton "Valider" qui doit être caché si javascript activé ! (soumission automatique)
00085      var attribut ;
00086      if(selectObjet.getAttribute("type") == "submit")
00087      {
00088           selectObjet.setAttribute("type", "hidden")
00089           valid_auto = true ; 
00090           if((selectObjet=document.getElementById(idForm+"__reinit")) != null)
00091           { //Modification comportement du bouton "Réinitialiser" (soumission automatique)
00092                selectObjet.type="button" ;
00093                add_Event(selectObjet,"click",function(){
00094                if((selectObjet=document.getElementById(idForm+"__valid_nodisp")) != null)
00095                {
00096                     selectObjet.value="Réinitialiser" ;
00097                }
00098                this.form.submit();});
00099           }
00100      }
00101   }
00102   else if((selectObjet=document.getElementById(idForm+"__reinit")) != null)
00103   { //Suppression du bouton "Réinitialiser" qui devient inutile si javascript activé ! (sauf si soumission automatique)
00104      selectObjet.parentNode.removeChild(selectObjet);  
00105   }
00106   
00107   
00108   if((selectObjet=document.getElementById(idForm+"__annuler")) != null)
00109   { //Modification comportement du bouton "Annuler"
00110      selectObjet.type="button" ;
00111     add_Event(selectObjet,"click",function(){this.form.reset(); nettoieFormulaireApresRAZ(this.form);});
00112   }
00113   
00114   if((selectInput=formulaire.getElementsByTagName("textarea")) != null)
00115   { 
00116     for(i=0, imax=selectInput.length; i<imax; i++)
00117      {
00118        prepareObjet(selectInput[i], formulaire, valid_auto) ;
00119      }
00120   }
00121 
00122   if((selectInput=formulaire.getElementsByTagName("select")) != null)
00123   { 
00124     for(i=0, imax=selectInput.length; i<imax; i++)
00125      {
00126        prepareObjet(selectInput[i], formulaire, valid_auto) ;
00127      }
00128   }
00129   
00130   if((selectInput=formulaire.getElementsByTagName("input")) != null)
00131   {
00132     for(i=0, imax=selectInput.length; i<imax; i++)
00133      {
00134        if(selectInput[i].type=="text" || selectInput[i].type=="password")
00135        {
00136           prepareObjet(selectInput[i], formulaire, valid_auto) ;
00137        }
00138        else if(selectInput[i].type=="radio" || selectInput[i].type=="checkbox" || selectInput[i].type=="button")
00139        {
00140           if(valid_auto) prepareObjet_validAuto(selectInput[i], formulaire) ;
00141        }
00142        else if(selectInput[i].type=="hidden")
00143        { 
00144           if((match= new RegExp("^"+idForm+"__(.*)").exec(selectInput[i].id)) != null)
00145           {
00146                listeObj=selectInput[i].value.split(' ') ;
00147                if(/^exist_/.test(match[1]))
00148                { // Le formulaire possède des champs obligatoires dont l'obligation estconditionnée par une case à cocher ?
00149                     selectChk=document.getElementById(listeObj[0]) ; // sélection de la case à cocher
00150                     if(selectChk.type=="checkbox")
00151                     {
00152                          add_Event(selectChk,"click",function() {clickChkVerifExist(this);});
00153                          selectChk.listeObj=selectInput[i].value ;
00154                          if(!selectChk.checked)
00155                          {
00156                               for(j=1, jmax=listeObj.length; j<jmax; j++)
00157                               {
00158                                    selectObjet=document.getElementById(listeObj[j]) ;
00159                                    selectObjet.disabled=true; 
00160                               }
00161                          }
00162                          else
00163                          {
00164                               for(j=1, jmax=listeObj.length; j<jmax; j++)
00165                               {
00166                                    selectObjet=document.getElementById(listeObj[j]) ;
00167                                    jscss('add',selectObjet,'cssObligatoire') ;
00168                                    selectLabel=RecherchePrecedentTag(selectObjet,'label') ;
00169                                    jscss('add',selectLabel,'cssObligatoire') ;
00170                               }
00171                          }
00172                     }
00173                }
00174                else if(/^copie_/.test(match[1]))
00175                {
00176                     // Le formulaire possède des champs recopiés automatiquement selon l'état d'une case à cocher 
00177                     selectChk=document.getElementById(listeObj[0]) ; // sélection de la case à cocher
00178                     if(selectChk.type=="checkbox")
00179                     {
00180                          add_Event(selectChk, "click", function() {clickChkCopie(this);}) ;
00181                          selectChk.listeObj=selectInput[i].value ;    
00182                          for(j=2, jmax=listeObj.length; j<jmax; j+=2)
00183                          {
00184                               selectObjet=document.getElementById(listeObj[j]) ;
00185                               add_Event(selectObjet,"blur",function(){copieValeur(this);}) ;
00186                               selectObjet.destination=listeObj[j-1] ;      
00187                               selectObjet.chkBox=listeObj[0] ;
00188                               
00189                               if(selectChk.checked)
00190                               {
00191                                    selectDest = document.getElementById(listeObj[j-1]) ;
00192                                    selectDest.disabled=true;
00193                                    selectDest.value=selectObjet.value ;
00194                               }
00195                          }
00196                     }
00197                
00198                }
00199                else if(/^egal_/.test(match[1]))
00200                {
00201                     selectObjet=document.getElementById(listeObj[0]) ; // sélection du 1er champ (la référence)
00202                     add_Event(selectObjet,"change",function() {egalRef(this);}) ;
00203                     selectObjet.listeObj=selectInput[i].value ;
00204                     egalRef(selectObjet) ; // initialisation des différents champs...
00205                     for(j=1, jmax=listeObj.length; j<jmax; j++)
00206                     {
00207                          selectObjet=document.getElementById(listeObj[j]) ;
00208                          add_Event(selectObjet, "blur", function(){egalVerif(this);});
00209                          selectObjet.reference=listeObj[0] ;
00210                     }
00211                }
00212                else if(/^desact_/.test(match[1])) // (28/07/2011 - PP)
00213                {
00214                     // Le formulaire possède des champs désactivés si une case est cochée
00215                     selectChk=document.getElementById(listeObj[0]) ; // sélection de la case à cocher
00216                     if(selectChk.type=="checkbox")
00217                     {
00218                          add_Event(selectChk,"click",function() {clickChkDesact(this);});
00219                          selectChk.listeObj=selectInput[i].value ;
00220                          if(selectChk.checked)
00221                          {
00222                               for(j=1, jmax=listeObj.length; j<jmax; j++)
00223                               {
00224                                    selectObjet=document.getElementById(listeObj[j]) ;
00225                                    selectObjet.disabled=true; 
00226                               }
00227                          }
00228                     }
00229                }
00230                else if(/^selectall_/.test(match[1])) // (xx/08/2011 - PP)
00231                {
00232                     // Le formulaire possède une case à cocher du stype "Sélectionner/déselectionner tout"
00233                     selectChk=document.getElementById(listeObj[0]) ; // sélection de la case à cocher
00234                     if(selectChk.type=="checkbox")
00235                     {
00236                          add_Event(selectChk,"click",function() {clickChkSelectAll(this);});
00237                          selectChk.listeObj=selectInput[i].value ;
00238                          if(selectChk.checked)
00239                          {
00240                               for(j=1, jmax=listeObj.length; j<jmax; j++)
00241                               {
00242                                    selectObjet=document.getElementById(listeObj[j]) ;
00243                                    selectObjet.checked=true; 
00244                               }
00245                          }
00246                     }
00247                }
00248                else if((" date tel url courriel login codePostal APE SIRET NIRPP ").indexOf(" "+match[1]+" ")!=-1)
00249                {
00250                  for(j=0, jmax=listeObj.length; j<jmax;j++)
00251                  {
00252                     selectObjet=document.getElementById(listeObj[j]) ;
00253                     eval("add_Event(selectObjet,\"blur\", function(){verif_"+match[1]+"(this) ;});") ;
00254                     //La chaîne transmis à la méthode eval sera interprétée comme un élément de script.
00255                  }
00256                }
00257           }
00258        }
00259      }
00260   }
00261   
00262   formulaire.onsubmit=function(){ return (verifAvantSoumission() == 0); }
00263 }
00264 
00269 function nettoieFormulaireApresRAZ(formulaire)
00270 {
00271   var selectInput ;
00272   var i, imax;
00273   if((selectInput=formulaire.getElementsByTagName("textarea")) != null)
00274   { 
00275      for(i=0, imax=selectInput.length; i<imax; i++)
00276      {
00277           nettoieObjetApresRAZ(selectInput[i]) ;
00278      }
00279   }
00280 
00281   if((selectInput=formulaire.getElementsByTagName("select")) != null)
00282   { 
00283     for(i=0, imax=selectInput.length; i<imax; i++)
00284      {
00285           nettoieObjetApresRAZ(selectInput[i]) ;
00286      }
00287   }
00288   
00289   if((selectInput=formulaire.getElementsByTagName("input")) != null)
00290   {
00291     for(i=0, imax=selectInput.length; i<imax; i++)
00292      {
00293           if("text radio checkbox password".indexOf(selectInput[i].type)!=-1)
00294                nettoieObjetApresRAZ(selectInput[i]) ;
00295      }
00296   }  
00297 }
00298 
00305 function nettoieFormulaireAvantSoumission(formulaire)
00306 {
00307   var SelectInput ;
00308   var i, imax;
00309   // Si un champ vaut textInfo alors il faut le vider avant vérifications et soumission
00310   if((selectInput=formulaire.getElementsByTagName("textarea")) != null)
00311   { 
00312      for(i=0, imax=selectInput.length; i<imax; i++)
00313      {
00314        if(selectInput[i].textInfo) if(selectInput[i].value==selectInput[i].textInfo) selectInput[i].value="";
00315      }
00316   }
00317 
00318   if((selectInput=formulaire.getElementsByTagName("select")) != null)
00319   { 
00320     for(i=0, imax=selectInput.length; i<imax; i++)
00321      {
00322        if(selectInput[i].textInfo) if(selectInput[i].value==selectInput[i].textInfo) selectInput[i].value="";
00323      }
00324   }
00325   
00326   if((selectInput=formulaire.getElementsByTagName("input")) != null)
00327   {
00328     for(i=0, imax=selectInput.length; i<imax; i++)
00329      {
00330        if(selectInput[i].textInfo) if(selectInput[i].value==selectInput[i].textInfo) selectInput[i].value="";
00331      }
00332   }  
00333 }
00334 
00347 function prepareObjet(champ, formulaire, valid_auto)
00348 {
00349      var selectObjet, selectOption ;
00350      
00351      add_Event(champ,"mouseover",function(){
00352           if(this.textInfo)
00353           {
00354                if (this.value!=this.textInfo && this.memoValue!=this.value){
00355                     if(this.memoValue=="" && this.value.indexOf(this.textInfo)==0) this.value=(this.value.substr(this.textInfo.length)) ;
00356                     this.focus() ;
00357                }
00358           }
00359           else
00360           {
00361                if (this.memoValue!=this.value) this.focus() ;
00362           }
00363      });
00364      
00365      if(valid_auto)
00366      {
00367           add_Event(champ,"change",function(){
00368                this.memoValue = this.value ;
00369                if (verifAvantSoumission()==0)
00370                     if(jscss("check",this,"cssAvert"))
00371                          window.setTimeout("var form=document.getElementById('"+formulaire.id+"');form.submit();",1000) ;
00372                     else 
00373                          formulaire.submit() ;
00374           }) ;
00375           
00376           add_Event(champ,"blur",function(){           
00377                if(this.value=="" && this.textInfo)
00378                {
00379                     this.value=this.textInfo ;
00380                     jscss("add",this,"cssTextInfo") ;
00381                }
00382                if(this.value!=this.memoValue)
00383                     if (verifAvantSoumission()==0)
00384                          if(jscss("check",this,"cssAvert"))
00385                               window.setTimeout("var form=document.getElementById('"+formulaire.id+"');form.submit();",1000) ;
00386                          else 
00387                               formulaire.submit() ;
00388           });
00389      }
00390      else
00391      {
00392           add_Event(champ,"change",function(){
00393                this.memoValue = this.value ;
00394           }) ;
00395           
00396           add_Event(champ,"blur",function(){           
00397                if(this.value=="" && this.textInfo)
00398                {
00399                     this.value=this.textInfo ;
00400                     jscss("add",this,"cssTextInfo") ;
00401                }
00402           });  
00403      }
00404 
00405      add_Event(champ,"focus",function(){
00406           nettoieObjet(this);
00407      });
00408      
00409      champ.memoValue=champ.value ;
00410      
00411      if(champ.previousSibling) selectObjet=champ.previousSibling ;
00412      while(selectObjet.previousSibling && !selectObjet.tagName)
00413      {
00414           selectObjet=selectObjet.previousSibling ;
00415      }
00416 
00417      if(selectObjet.tagName && selectObjet.className)
00418      {
00419           if(selectObjet.tagName.toLowerCase()=="span" && selectObjet.className=="invisible")
00420           {
00421                champ.textInfo=selectObjet.firstChild.nodeValue ;
00422                if (champ.tagName.toLowerCase()=="select") 
00423                {    
00424                     selectOption=document.createElement('option');
00425                     selectOption.value=champ.textInfo ;
00426                     selectOption.appendChild(document.createTextNode(champ.textInfo));
00427                     selectOption.disabled=true ;
00428                     champ.insertBefore(selectOption,champ.firstChild);
00429                }              
00430                
00431                if(champ.value=="")
00432                {
00433                     champ.value=champ.textInfo ;
00434                     jscss("add",champ,"cssTextInfo") ;
00435                }
00436           }
00437      }
00438 }
00439 
00446 function prepareObjet_validAuto(champ, formulaire)
00447 {
00448      if(champ.type=="button")
00449      {
00450           add_Event(champ,"click",function(){
00451                if (verifAvantSoumission()==0)
00452                     if(jscss("check",this,"cssAvert"))
00453                          window.setTimeout("var form=document.getElementById('"+formulaire.id+"');form.submit();",1000) ;
00454                     else 
00455                          formulaire.submit() ;
00456           }) ;
00457      }
00458      else
00459      {
00460                add_Event(champ,"change",function(){
00461                if (verifAvantSoumission()==0)
00462                     if(jscss("check",this,"cssAvert"))
00463                          window.setTimeout("var form=document.getElementById('"+formulaire.id+"');form.submit();",1000) ;
00464                     else 
00465                          formulaire.submit() ;
00466           }) ;
00467      }
00468 }
00469 
00475 function nettoieObjet(champ)
00476 {
00477      var selectTexte ;
00478      
00479      //Enlever les mises en forme spéciales avant de traiter l'objet
00480      jscss("remove",champ,"cssAvert") ;
00481      jscss("remove",champ,"cssErreur") ;
00482      //Enlever le 'textInfo' s'il existe...
00483      jscss("remove",champ,"cssTextInfo") ;
00484      champ.value=jsTrim(champ.value) ; // Suppression des espaces avant/après
00485      if(champ.textInfo) if(champ.value==champ.textInfo) champ.value="" ;
00486      
00487      //Supprimer la balise <span> qui suit si elle existe ...
00488      selectTexte=document.getElementById('span__'+champ.id) ;
00489      if(selectTexte){    
00490           selectTexte.parentNode.removeChild(selectTexte.previousSibling); // suppression du saut
00491           selectTexte.parentNode.removeChild(selectTexte);
00492      }
00493 }
00494 
00500 function nettoieObjetApresRAZ(champ)
00501 {
00502      nettoieObjet(champ) ;
00503      champ.memoValue=champ.value ;
00504      if(champ.textInfo && champ.value=="")
00505      {
00506           champ.value=champ.textInfo ;
00507           jscss("add",champ,"cssTextInfo") ;
00508      }
00509 }
00510 
00521 function actualiseObjet(champ, aTester, misEnForme, expReg, messErr)
00522 {
00523      var selectTexte, selectBalises, selectSaut, suivant ;
00524      var message="", i ;
00525      var erreur=0 ;
00526      
00527      if (jscss("check",champ,"cssErreur","cssAvert")) nettoieObjet(champ) ;
00528      
00529      if (!expReg.test(misEnForme))
00530      {
00531           message=messErr ;
00532           jscss("add",champ,"cssErreur") ; //Ajoute la class 'cssErreur' (fond rouge)
00533           erreur=1 ;
00534      }
00535      else if (misEnForme!=aTester)
00536      {
00537           message="▲ Ce champ a été remis en forme." ;
00538           champ.value=misEnForme ;
00539           jscss("add",champ,"cssAvert") ; //Ajoute la class 'cssAvert' (fond jaune)
00540      }
00541      if (message)
00542      {    // Créer la balise <span class='petit'>...</span> et l'insérer après le champ testé !
00543           selectSaut=document.createElement('br');
00544           selectTexte=document.createElement('span');
00545           selectTexte.id='span__'+champ.id;
00546           selectTexte.className='petit';
00547           selectTexte.className='rouge';
00548           selectTexte.appendChild(document.createTextNode(message));
00549           
00550           //Recherche de la balise <br/> suivante... pour ajouter notre message juste avant.
00551           suivant=RechercheSuivantTag(champ, "br") ;
00552           champ.parentNode.insertBefore(selectSaut,suivant);
00553           champ.parentNode.insertBefore(selectTexte,suivant);
00554      }
00555      return erreur ; 
00556 }
00557 
00566 function verifExist(formObjet, nomTest, chaineListeObj)
00567 {
00568      var selectObjet ; // Un noeud
00569      var retour=0, initFor, i, imax, j, jmax ;
00570      var listeObj, listeInput ; // Tableau de chaines
00571      var coche ; // Booléen
00572      
00573      listeObj=chaineListeObj.split(' ') ;
00574      if(nomTest=="exist") 
00575      {
00576           initFor=0 ;
00577      }
00578      else // Existence à vérifier si 1er objet (case à cocher) est cochée !
00579      {
00580           selectObjet=document.getElementById(listeObj[0]) ; // sélection de la case à cocher
00581           if(selectObjet.type=="checkbox")
00582                if(selectObjet.checked)
00583                     initFor=1 ; 
00584                else
00585                     initFor=listeObj.length; // la boucle ne sera pas parcourue
00586      }
00587      for(i=initFor, imax=listeObj.length; i<imax; i++)
00588      {
00589           if(listeObj[i].indexOf(',')!=-1)
00590           {    // On peut supposer qu'il s'agit d'un ensemble de boutons radio ou de cases à cocher
00591                listeInput=listeObj[i].split(',') ;
00592                coche=false;
00593                for(j=0, jmax=listeInput.length; j<jmax ; j++)
00594                {
00595                     selectObjet=document.getElementById(listeInput[j]) ;
00596                     if(selectObjet.checked) coche=true;
00597                }
00598                if(!coche)
00599                {
00600                     nettoieObjet(selectObjet) ;
00601                     actualiseObjet(selectObjet,selectObjet.value,"",/ /,"▲ Ce champ est obligatoire") ;
00602                     retour+=1 ;
00603                }
00604           }
00605           else 
00606           {
00607                selectObjet=document.getElementById(listeObj[i]) ;
00608                if(selectObjet)
00609                {
00610                     selectObjet.value=jsTrim(selectObjet.value) ;
00611                     // Si selectObjet est une case à cocher il faut vérifier si elle est cochée, sinon un test sur value suffit
00612                     if(selectObjet.type=="checkbox")
00613                     {
00614                          if(!selectObjet.checked)
00615                          {
00616                               nettoieObjet(selectObjet) ;
00617                               actualiseObjet(selectObjet,selectObjet.value,"",/ /,"▲ Ce champ est obligatoire") ;
00618                               retour+=1 ;
00619                          }
00620                     }
00621                     else
00622                     {
00623                          if((!selectObjet.value)&& !selectObjet.disabled)
00624                          // Si selectObjet est inhibé alors le test n'est pas effectué...
00625                          {
00626                               nettoieObjet(selectObjet) ;
00627                               actualiseObjet(selectObjet,selectObjet.value,"",/ /,"▲ Ce champ est obligatoire") ;
00628                               retour+=1 ;
00629                          }
00630                     }
00631                }
00632                else
00633                {
00634                     alert ("phpJSvForm /ERREUR/ Objet non trouvé : "+listeObj[i]) ;
00635                }
00636           }
00637      }
00638      return retour ;
00639 }
00640 
00646 function clickChkVerifExist(Objet)
00647 {
00648      var selectObjet, selectLabel ;
00649      var listeObj=Objet.listeObj.split(' ') ; 
00650      var j, jmax=listeObj.length ;
00651      
00652      if(Objet.checked)
00653      {
00654           for(j=1; j<jmax; j++)
00655           {
00656                selectObjet=document.getElementById(listeObj[j]) ;
00657                selectObjet.disabled=false; 
00658                jscss('add',selectObjet,'cssObligatoire') ;
00659                selectLabel=RecherchePrecedentTag(selectObjet,'label') ;
00660                jscss('add',selectLabel,'cssObligatoire') ;
00661           }
00662      }
00663      else
00664      {
00665           for(j=1; j<jmax;j++)
00666           {
00667                selectObjet=document.getElementById(listeObj[j]) ;
00668                selectObjet.disabled=true; 
00669 //             selectObjet.value=""; 
00670                nettoieObjet(selectObjet);
00671                jscss('remove',selectObjet,'cssObligatoire') ;
00672                selectLabel=RecherchePrecedentTag(selectObjet,'label') ;
00673                jscss('remove',selectLabel,'cssObligatoire') ;
00674           }
00675      }
00676 }
00677 
00684 function clickChkDesact(Objet)
00685 {
00686      var selectObjet, selectLabel ;
00687      var listeObj=Objet.listeObj.split(' ') ; 
00688      var j, jmax=listeObj.length ;
00689      
00690      if(!Objet.checked)
00691      {
00692           for(j=1; j<jmax; j++)
00693           {
00694                selectObjet=document.getElementById(listeObj[j]) ;
00695                selectObjet.disabled=false; 
00696           }
00697      }
00698      else
00699      {
00700           for(j=1; j<jmax;j++)
00701           {
00702                selectObjet=document.getElementById(listeObj[j]) ;
00703                selectObjet.disabled=true; 
00704           }
00705      }
00706 }
00707 
00713 function clickChkSelectAll(Objet)
00714 {
00715      var selectObjet, selectLabel ;
00716      var listeObj=Objet.listeObj.split(' ') ; 
00717      var j, jmax=listeObj.length ;
00718 
00719      if(!Objet.checked)
00720      {
00721           for(j=1; j<jmax; j++)
00722           {
00723                selectObjet=document.getElementById(listeObj[j]) ;
00724                selectObjet.checked=false; 
00725           }
00726      }
00727      else
00728      {
00729           for(j=1; j<jmax;j++)
00730           {
00731                selectObjet=document.getElementById(listeObj[j]) ;
00732                selectObjet.checked=true; 
00733           }
00734      }
00735 }
00736 
00745 function clickChkCopie(Objet, chaineListeObj)
00746 {
00747      var selectObjet ;
00748      var listeObj=Objet.listeObj.split(' ') ; 
00749      var j, jmax=listeObj.length ;
00750 
00751      if(Objet.checked)
00752      {
00753           for(j=2; j<jmax; j+=2)
00754           {
00755                Source=document.getElementById(listeObj[j]) ;
00756                Destination=document.getElementById(listeObj[j-1]) ;
00757                if(Source.textInfo) 
00758                     if(Source.value!=Source.textInfo) Destination.value=Source.value ; else Destination.value="";
00759                else
00760                     Destination.value=Source.value ;
00761           }
00762           for(j=1; j<jmax; j+=2)
00763           {
00764                selectObjet=document.getElementById(listeObj[j]) ;
00765                selectObjet.readOnly=true; 
00766                nettoieObjet(selectObjet);
00767                jscss("add",selectObjet,"cssReadOnly") ;
00768           }
00769      }
00770      else
00771      {
00772           for(j=1; j<jmax; j+=2)
00773           {
00774                selectObjet=document.getElementById(listeObj[j]) ;
00775                selectObjet.readOnly=false; 
00776                jscss("remove",selectObjet,"cssReadOnly") ;
00777           }
00778      }
00779 }
00780 
00787 function copieValeur(Source)
00788 {
00789      var ChkBox=document.getElementById(Source.chkBox);
00790      var Destination ;
00791      
00792      if(ChkBox.checked)
00793      {
00794           Destination=document.getElementById(Source.destination);
00795           if(Source.textInfo) 
00796                if(Source.value!=Source.textInfo) Destination.value=Source.value ; else Destination.value="";
00797           else
00798                Destination.value=Source.value ;
00799      }
00800 }
00801 
00807 function egalRef(Objet) 
00808 {
00809      var selectObjet ;
00810      var listeObj=Objet.listeObj.split(' ') ; 
00811      var j, jmax=listeObj.length ;
00812      
00813      if(Objet.value)
00814      {
00815           for(j=1; j<jmax; j++)
00816           {
00817                selectObjet=document.getElementById(listeObj[j]) ;
00818                selectObjet.readOnly=false; 
00819                jscss("remove",selectObjet,"cssReadOnly") ;
00820                if(selectObjet.value!="")
00821                {
00822                     nettoieObjet(selectObjet);
00823                     egalVerif(selectObjet) ;
00824                }
00825           }
00826      }
00827      else
00828      {
00829           for(j=1; j<jmax; j++)
00830           {
00831                selectObjet=document.getElementById(listeObj[j]) ;
00832                selectObjet.readOnly=true; 
00833                jscss("add",selectObjet,"cssReadOnly") ;
00834                selectObjet.value="" ;
00835           }
00836      }
00837 }
00838 
00844 function egalVerif(Objet)
00845 {
00846      var erreur=0 ;
00847      var Ref=document.getElementById(Objet.reference);
00848      if(!Ref)
00849      {
00850           messErr="▲ Erreur : l'objet de référence n'a pas été trouvé." ;
00851           erreur=actualiseObjet(Objet,Objet.value," ",/^$/,messErr) ;
00852      }
00853      else if(Objet.value!=Ref.value && !Objet.disabled && !Ref.disabled)
00854      // Si Objet ou Ref est inhibé alors le test n'est pas effectué...
00855      {
00856           messErr="▲ Ce champ n'est pas identique à son champ de référence." ;
00857           erreur=actualiseObjet(Objet,Objet.value," ",/^$/,messErr) ;
00858      }
00859      return erreur ;
00860 }
00861 
00869 function verif_date(Objet)
00870 {
00871      var expReg, messErr, misEnForme ;
00872      var date ; // tableau de 4 chaines - les 3 dernières : [1]année/[2]mois/[3]jour
00873      var varTime ; // variable de type Date
00874      var erreur=0 ;
00875      
00876      if(Objet.value && !Objet.disabled)
00877      // Si Objet est inhibé alors le test n'est pas effectué...
00878      {
00879           misEnForme=jsTrim(Objet.value.replace(/\//g,'-')) ;
00880           if(!(date=/(\d{4})\-(\d{1,2})\-(\d{1,2})/.exec(misEnForme)))// La date était au format YYYY-MM-DD
00881           {
00882                if((date=/(\d{1,2})\-(\d{1,2})\-(\d{1,4})/.exec(misEnForme)) != null)
00883                { // La date était au format DD-MM-YY ou DD-MM-YYYY
00884                     var temp=date[1] ;
00885                     date[1]=date[3] ;
00886                     date[3]=temp ;
00887                     if (date[1]<10) date[1]='200'+date[1] ;
00888                     else if (date[1]<40) date[1]='20'+date[1] ;
00889                }
00890           }
00891           if(date) varTime=new Date(date[1],date[2]-1,date[3]) ;
00892           misEnForme=varTime?formatDate(varTime,"dd/MM/yyyy"):"" ; // formatDate est une fonction de CalendarPopup.js
00893           expReg=/^\d{2}\/\d{2}\/\d{4}$/ ;
00894           messErr="▲ Cette date n'est pas valide. Formats autorisés : 2010-08-23, 23/08/2010." ;
00895           erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
00896      }
00897      return erreur ;
00898 }
00899 
00907 function verif_tel(Objet)
00908 {
00909      var expReg, messErr, misEnForme ;
00910      var erreur=0 ;
00911      if(Objet.value && !Objet.disabled)
00912      // Si Objet est inhibé alors le test n'est pas effectué...
00913      {
00914           expReg=/^0\d\.\d{2}\.\d{2}\.\d{2}\.\d{2}$/ ;
00915           if(!expReg.test(Objet.value))
00916           {
00917                misEnForme=Objet.value.replace(/[^0-9]/g,'').replace(/^0?([1-9])(\d{2})(\d{2})(\d{2})(\d{2})$/,'0$1.$2.$3.$4.$5') ;
00918                messErr="▲ Ce numéro n'est pas valide, il doit être constitué de 10 chiffres et débuter par 0." ;
00919                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
00920           }
00921      }
00922      return erreur;
00923 }
00924 
00932 function verif_courriel(Objet)
00933 {
00934      var expReg, messErr, misEnForme ;
00935      var erreur=0 ;
00936      if(Objet.value && !Objet.disabled)
00937      // Si Objet est inhibé alors le test n'est pas effectué...
00938      {
00939           expReg=/^[a-z0-9_.-]+@[a-z0-9_.-]+\.[a-z]{2,6}$/ ;
00940           if(!expReg.test(Objet.value))
00941           {
00942                misEnForme=jsTrim(Objet.value.toLowerCase()) ;
00943                messErr="▲ Cette adresse (messagerie électronique) n'est pas valide." ;
00944                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
00945           }
00946      }
00947      return erreur;
00948 }
00949 
00957 function verif_url(Objet)
00958 {
00959      var expReg, messErr, misEnForme ;
00960      var erreur=0 ;
00961      if(Objet.value && !Objet.disabled)
00962      // Si Objet est inhibé alors le test n'est pas effectué...
00963      {
00964           //expReg=/^https?:\/\/((\d+\.\d+\.\d+\.\d+)|(([a-z0-9_-]+\.)+([a-z][a-z0-9_-]*)))\/?$/ ;
00965           //expReg=/^http(s)?:\/\/([a-zA-Z0-9-_]+.){0,4}[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}(:[0-9]+)?(\/[a-zA-Z0-9-]*\/?|\/[a-zA-Z0-9]+\.[a-zA-Z0-9]{1,4})?$/ ;
00966                expReg=/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/ ;
00967           if(!expReg.test(Objet.value))
00968           {
00969                misEnForme=jsTrim(Objet.value.toLowerCase()) ;
00970                messErr="▲ Cette adresse de site Web n'est pas valide (ne pas oublier le préfixe http:// !)." ;
00971                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
00972           }
00973      }
00974      return erreur;
00975 }
00976 
00984 function verif_login(Objet)
00985 {
00986      var expReg, messErr, misEnForme ;
00987      var erreur=0 ;
00988      if(Objet.value && !Objet.disabled)
00989      // Si Objet est inhibé alors le test n'est pas effectué...
00990      {
00991           expReg=/^[\w.-]+$/ ;
00992           if(!expReg.test(Objet.value))
00993           {
00994                misEnForme=Objet.value.replace(/[éèëê]/g,'e');
00995                misEnForme=misEnForme.replace(/[àäâ@]/g,'a');
00996                misEnForme=misEnForme.replace(/[ïî]/g,'i');
00997                misEnForme=misEnForme.replace(/[öô]/g,'o');
00998                misEnForme=misEnForme.replace(/[ùûüµ]/g,'u');
00999                misEnForme=misEnForme.replace(/[ç]/g,'c');
01000                //misEnForme=misEnForme.replace(/[ ]/g,'_');
01001                misEnForme=misEnForme.replace(/[^\w.-]/g, '') ;// ne conserver que les caractères autorisés
01002                messErr="▲ Ce login n'est pas valide, il ne doit être constitué que de lettres non accentuées, de chiffres ou des signes '-', '_' et '.'." ;
01003                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
01004           }
01005      }
01006      return erreur;
01007 }
01008 
01016 function verif_codePostal(Objet)
01017 {
01018      var expReg, messErr, misEnForme ;
01019      var erreur=0 ;
01020      if(Objet.value && !Objet.disabled)
01021      // Si Objet est inhibé alors le test n'est pas effectué...
01022      {
01023           expReg=/^(\d{2})(\d{3})?$/ ;// 2 ou 5 chiffres !
01024           if(!expReg.test(Objet.value))
01025           {
01026                misEnForme=Objet.value.replace(/[^0-9]/g, '') ; // ne conserver que les chiffres
01027                messErr="▲ Ce code postal n'est pas valide, il doit être constitué de 2 ou 5 chiffres." ;
01028                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
01029           }
01030      }
01031      return erreur;
01032 }
01033 
01041 function verif_APE(Objet)
01042 {
01043      var expReg, messErr, misEnForme ;
01044      var erreur=0 ;
01045      if(Objet.value && !Objet.disabled)
01046      // Si Objet est inhibé alors le test n'est pas effectué...
01047      {
01048           expReg=/^\d{4}[A-Z]$/ ;// code de 4 chiffres suivis d'une lettre majuscule
01049           if(!expReg.test(Objet.value))
01050           {
01051                misEnForme=jsTrim(Objet.value.toUpperCase()) ;
01052                messErr="▲ Ce code APE n'est pas valide, il doit être constitué de de 4 chiffres suivis d'une lettre." ;
01053                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
01054           }
01055      }
01056      return erreur;
01057 }
01058                                         
01066 function verif_SIRET(Objet)
01067 {
01068      var expReg, messErr, misEnForme ;
01069      var erreur=0 ;
01070      if(Objet.value && !Objet.disabled)
01071      // Si Objet est inhibé alors le test n'est pas effectué...
01072      {
01073           expReg=/^(\d{3})-(\d{3})-(\d{3})( \d{5})?$/ ;
01074           if(!expReg.test(Objet.value))
01075           {
01076                misEnForme=jsTrim(Objet.value.replace(/[^0-9]/g,'').replace(/^(\d{3})(\d{3})(\d{3})(\d{5})?$/,'$1-$2-$3 $4')) ;
01077                messErr="▲ Ce code n'est pas valide, il doit être constitué de 14 chiffres. A défaut, le code SIREN, constitué de 9 chiffres peut être accepté." ;
01078                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
01079           }
01080      }
01081      return erreur;
01082 }
01083 
01091 function verif_NIRPP(Objet) // numéro sécu.
01092 {
01093      var expReg, messErr, misEnForme ;
01094      var erreur=0 ;
01095      if(Objet.value && !Objet.disabled)
01096      // Si Objet est inhibé alors le test n'est pas effectué...
01097      {
01098           expReg=/^\d.(\d{2}).(\d{2}).(\d{2}).(\d{3}).(\d{3}) \((\d{2})\)$/ ;
01099           if(!expReg.test(Objet.value))
01100           {
01101                misEnForme=Objet.value.replace(/[^0-9]/g,'').replace(/^(\d{1})(\d{2})(\d{2})(\d{2})(\d{3})(\d{3})(\d{2})$/,'$1.$2.$3.$4.$5.$6 ($7)') ;
01102                messErr="▲ Ce numéro n'est pas valide, il doit être constitué de 15 chiffres." ;
01103                erreur=actualiseObjet(Objet,Objet.value,misEnForme,expReg,messErr) ;
01104           }
01105      }
01106      return erreur;
01107 }
01108 
01109 /* ***************************** Window.onLoad ***************************** */
01113 if(document.getElementById && document.createTextNode)
01114 {
01115      addLoadEvent(chargementVerifForm);
01116 }