function verif(){
    //indication des champs obligatoires
    var obligatoire = ['nom','prenom','email','tel'];
    //indication des autres champs &agrave; v&eacute;rifier si renseigner
    var autres = [];
    //indication de la classe CSS d'erreur
    var class_error = 'erreur';
    //indication de la classe CSS normal
    var class_normal = 'champs';
    //r&eacute;initialisation du div contenant le message d'erreur
    document.getElementById('error').innerHTML = '';
    //initialistation des styles CSS
    initialisation(obligatoire, class_normal);
    initialisation(autres, class_normal);
    //verification des champs
    var error_obligatoire = verification(obligatoire, true, class_error);
    var error_autres = verification(autres, false, class_error);
    if (error_obligatoire == 0 && error_autres == 0) {
        //affichage de la popup de confirmation et envoi du formaulire
        window.open('about:blank', 'confirm', 'toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=0, copyhistory=0, menuBar=0, width=200, height=100, left=120, top=120');
        document.contact.submit();
    }
    else {
        //affichage du message d'erreur
        if (error_obligatoire > 0) 
            document.getElementById('error').innerHTML += '<p id="msg_erreur">Les champs obligatoires surlign&eacute;s ont &eacute;t&eacute; mal ou non renseign&eacute;s</p>';
        if (error_autres > 0) 
            document.getElementById('error').innerHTML += '<p id="msg_erreur">Les champs facultatifs surlign&eacute;s ont &eacute;t&eacute; mal renseign&eacute;s</p>';
    }
}

// fonction d'initialisation des classes des champs
function initialisation(tableau, classe){
    for (var i = 0; i < tableau.length; i++) {
        document.getElementById(tableau[i]).className = classe;
    }
}

// fonction de v&eacute;rification des champs
function verification(tableau, required, classe){
    var error = 0;
    for (var i = 0; i < tableau.length; i++) {
        switch (tableau[i]) {
            // verificarton pour un champs date
            case 'date': //valeur &agrave; modifier si n&eacute;cessaire
                var date = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
                error = verifRegExp(tableau[i], date, required, classe, error)
                break;
            // verificarton pour un code postal
            case 'cp': //valeur &agrave; modifier si n&eacute;cessaire
                var codepostal = /^([A-Z]+[A-Z]?\-)?[0-9]{1,2} ?[0-9]{3}$/;
                error = verifRegExp(tableau[i], codepostal, required, classe, error)
                break;
            // verification pour une adresse email
            case 'email': //valeur &agrave; modifier si n&eacute;cessaire
                var email = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/;
                error = verifRegExp(tableau[i], email, required, classe, error)
                break;
            // verification pour unnum&eacute;ro de t&eacute;l&eacute;phone
            case 'telephone': //valeur &agrave; modifier si n&eacute;cessaire
                var tel = /^(0[1234568])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
                error = verifRegExp(tableau[i], tel, required, classe, error)
                break;
            // verification pour un num&eacute;ro de t&eacute;l&eacute;phone protable
            case 'portable': //valeur &agrave; modifier si n&eacute;cessaire
                var tel = /^(0[1234568])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
                error = verifRegExp(tableau[i], tel, required, classe, error)
                break;
            // verification pour un num&eacute;ro de fax
            case 'fax': //valeur &agrave; modifier si n&eacute;cessaire
                var fax = /^(0[1234568])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
                error = verifRegExp(tableau[i], fax, required, classe, error)
                break;
            default:
                if (required) {
                    if (document.getElementById(tableau[i]).value == "") {
                        document.getElementById(tableau[i]).className =  document.getElementById(tableau[i]).className+' erreur';
                        error++;
                    }
                }
            break;
        }
    }
    return error;
}

// fonction de verification par expression r&eacute;guli&egrave;re
function verifRegExp(element, expreg, required, classe, error){
    if (required) {
        if (expreg.test(document.getElementById(element).value) == false) {
            document.getElementById(element).className = document.getElementById(element).className+' '+classe;
            error++;
        }
    }
    else {
        if (expreg.test(document.getElementById(element).value) == false && document.getElementById(element).value != "") {
            document.getElementById(element).className = document.getElementById(element).className+' '+classe;
            error++;
        }
    }
    return error;
}

