    function checkform(of)
    {
    // Teste si DOM est disponible et s'il y a un élément appelé "required"
        if(!document.getElementById || !document.createTextNode){return;}
        if(!document.getElementById('required')){return;}

    // Définit les messages d'erreur et sépare les champs requis
        var errorID='errormsg';
        var errorColor='#fbe7e3';
        /* changements pour la liste de liens */
        var errorMsg='Merci de renseigner ou de corriger les champs surlignés';
        /* fin des changements pour la liste de liens */
        var errorImg='img/alert.gif';
        var errorAlt='Erreur';
        var errorTitle='Ce champ est erroné !';
        var reqfields=document.getElementById('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);
        }

    // 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!='email'){cf_adderr(f)}							
    // email est un champ spécial nécessitant une vérification
                    else if (f.id=='email' && !cf_isEmailAddr(f.value)){cf_adderr(f)}							
                    else {f.style.background = '#fff';}							
                break;
                case 'textarea':
                    if(f.value==''){cf_adderr(f)}	
                    else {f.style.background = '#fff';}	                    
                break;
                case 'checkbox':
                    if(!f.checked){cf_adderr(f)}							
                break;
                case 'select-one':
                    if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f)}							
                break;
            }
        }
        if (document.getElementById(errorID)) {document.getElementById('submit').disabled = false;}
        return !document.getElementById(errorID);
                  
        /* Méthodes outils */
        function cf_adderr(o)
        {
            o.style.background = errorColor;
        // 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))
                em.appendChild(newp);
                /* ajout pour la liste des liens */
                
                var newul=document.createElement('ul');		
                em.appendChild(newul);
                /* fin d'ajout pour la liste des liens */
                sb = document.getElementById('message');
                if(sb)
                {                    
                    sb.parentNode.insertBefore(em,sb);
                }
            }            
        }
        function cf_isEmailAddr(str) 
        {
            return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
        }
    }
