function checkform(of)
{
    
          if(!document.getElementById || !document.createTextNode){return;}
          if(!document.getElementById('required')){return;}
          
          
          var errorID='errormsg';
          var errorClass='error'
          var errorMsg='Veuillez saisir ou modifier les champs marqu\351s d\'une \351toile. (*) ';
          var errorImg='';
          var errorImgClass = 'picto_error';
          var errorAlt='Erreur ';
          var errorTitle='Ce champ est erron\351 !';
          var reqfields=of.required.value.split(',');
          
        
          // Nettoyage des anciens messages
          // s'il y a un ancien champ errormessage, on le supprime
          if(document.getElementById(errorID))
          {
            var em=document.getElementById(errorID);
            em.parentNode.removeChild(em);
          }
          // supprime les anciennes images et classes des champs requis
          for(var i=0;i<reqfields.length;i++)
          {
            var f=document.getElementById(reqfields[i]);
            if(!f){continue;}
            /*if(f.previousSibling && /img/i.test(f.previousSibling.nodeName))
            {
              f.parentNode.removeChild(f.previousSibling);
            }*/
            f.className='';
          }
           
          // boucle sur les champs requis
          for(var i=0;i<reqfields.length;i++)
          {
        // vérifie que le champs requis est présent
            var f=document.getElementById(reqfields[i]);
            if(!f){continue;}
            
             // teste si le champ requis est erroné,
        // en fonction de son type 
            switch(f.type.toLowerCase())
            {
              case 'text':
                if(f.value=='' && f.id!='adresse_email'){cf_adderr(f)}              
        // adresse_email est un champ spécial nécessitant une vérification
                if(f.id=='adresse_email' && 
                !cf_isadresse_emailAddr(f.value)){cf_adderr(f)}              
              break;
              case 'textarea':
                if(f.value==''){cf_adderr(f)}              
              break;
              case 'checkbox':
                if(!f.checked){cf_adderr(f)}              
              break;
              case 'select-one':
                if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f)}              
              break;
              case 'password':
                if(f.value==''){cf_adderr(f)}              
              break;
            
            }
          }
          
          
          
           return !document.getElementById(errorID);
        
         /* Méthodes outils */
          function cf_adderr(o)
          {
        
           
           
           
             // crée l'image, l'ajoute et colorie les champs erronés
            /*
	    var errorIndicator=document.createElement('img');
            errorIndicator.alt=errorAlt;
            errorIndicator.src=errorImg;
            errorIndicator.title=errorTitle;
            errorIndicator.className=errorImgClass;
	    */
            o.className=errorClass;
            //o.parentNode.insertBefore(errorIndicator,o);
            
          
        
        
         // Vérifie qu'il n'y a pas de message d'erreur
            if(!document.getElementById(errorID))
            {
            // crée "errormessage" et l'insère avant le bouton d'envoi
              var em=document.createElement('div');
              em.id=errorID;
              var newp=document.createElement('p');
              newp.appendChild(document.createTextNode(errorMsg))
              // duplique et insère le message d'erreur
              //newp.appendChild(errorIndicator.cloneNode(true));
              em.appendChild(newp);
        
        
        
           // trouve le bouton d'envoi 
              for(var i=0;i<of.getElementsByTagName('input').length;i++)
              {
                if(/hidden/i.test(of.getElementsByTagName('input')[i].type))
                {
                  var sb=of.getElementsByTagName('input')[i];
                  break;
                }
              }
              if(sb)
              {
                sb.parentNode.insertBefore(em,sb);
              }  
            } 
          }
        
        
         function cf_isadresse_emailAddr(str) 
          {
              return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
          }

}














