var Maintenant = new Date;
var anneeDerniere = Maintenant.getFullYear()-1;

/*
    0 : facultatif (1) ou non (0)
    1 : libellé du champ
    2 : type du champ (texte|nombre|textenombre|codepostal|phone|email)
    3 : idChamp duquel il dépend (devient obligatoire si ce champ est rempli)
*/
var champs = new Array(
    // onglet 1
    "civilite",
        new Array(
        "0",                        // facultatif (1) ou non (0)
        "civilit&eacute;", // descriptif du champ
        "texte",                    // type du champ
        ""),                        // dépend de...
    "nom",
        new Array(
        "0",
        "nom",
        "texte",
        ""),
    "prenom",
        new Array(
        "0",
        "pr&eacute;nom",
        "texte",
        ""),
    "jourNaissance",
        new Array(
        "0",
        "jour de naissance",
        "nombre",
        ""),
    "moisNaissance",
        new Array(
        "0",
        "mois de naissance",
        "nombre",
        ""),
    "anneeNaissance",
        new Array(
        "0",
        "ann&eacute;e de naissance",
        "nombre",
        ""),
    "email",
        new Array(
        "0",
        "e-mail",
        "email",
        ""),
    "email2",
        new Array(
        "0",
        "confirmation d'e-mail",
        "email",
        ""),
    "telDomicile",
        new Array(
        "0",
        "num&eacute;ro de t&eacute;l&eacute;phone 1",
        "phone",
        ""),
    "telPortable",
        new Array(
        "1",
        "deuxi&egrave;me num&eacute;ro de t&eacute;l&eacute;phone",
        "phone",
        ""),
    "observations",
        new Array(
        "1",
        "observations",
        "",
        ""),
    "chk_newsletter",
        new Array(
        "1",
        "newsletter ?",
        "texte",
        "")
);



// extrait les données d'un champ
/* clés du tableau retourné :
    0 : facultatif (1) ou non (0)
    1 : libellé du champ
    2 : type du champ (cf type_ok)
    3 : idChamp duquel il dépend
*/
function extrait_donnees(idChamp)
{
    for (i = 0; i < champs.length; i++) {
        if (champs[i] == idChamp) {
            return (champs[i+1]);
        }
    }

    return false;
}





// fonction de vérification de champ en temps réel
// (affiche une image en conséquence)
function verifChamp(idChamp)
{
	var champ   = document.getElementById(idChamp);
	var donnees = extrait_donnees(idChamp);

    if (donnees != 0) {

        var image  = document.getElementById('picto_'+idChamp);
        var erreur = erreur_champ(champ, donnees);

        if (image) {
            switch (erreur) {
                case 1 : // champ ok
                    image.src = "../images/formulaire-picto-ok.gif";
                    image.style.visibility = "visible";
                    break;

                case 2 : // mauvais type
                    image.src = "../images/formulaire-picto-format.gif";
                    image.style.visibility = "visible";
                    break;

                case 3 : // champ obligatoire vide
                    image.src = "../images/formulaire-picto-vide.gif";
                    image.style.visibility = "visible";
                    break;

                default :
                    image.style.visibility = "hidden";
            }
        }

        return erreur;
    }

    return 0;

}



// fonction de vérification de date (idem que vérifChamp mais sur 3 champs date)
function verifDate(idJour, idMois, idAnnee, idImage)
{
    var erreurJour  = verifChamp(idJour);
    var erreurMois  = verifChamp(idMois);
    var erreurAnnee = verifChamp(idAnnee);
    var image       = document.getElementById('picto_'+idImage);

    if (image) {
        if (erreurJour == 3 || erreurMois == 3 || erreurAnnee == 3) {
            image.src = "../images/formulaire-picto-vide.gif";
            image.style.visibility = "visible";
            return 3;

        } else if (erreurJour == 2 || erreurMois == 2 || erreurAnnee == 2) {
            image.src = "../images/formulaire-picto-format.gif";
            image.style.visibility = "visible";
            return 2;

        } else if (erreurJour == 1 || erreurMois == 1 || erreurAnnee == 1) {
            image.src = "../images/formulaire-picto-ok.gif";
            image.style.visibility = "visible";
            return 1;
        }
    }

    return 0;
}



// fonction de recherche de type d'erreur sur un champ
/* entrée :
        champ   : objet de type HTMLObject
        donnees : tableau dont les clés sont les suivantes :
                    0 : facultatif (1) ou non (0)
                    1 : libellé du champ
                    2 : type du champ
                    3 : idChamp duquel il dépend

sortie :
        0 = champ facultatif vide
        1 = champ obligatoire ok
        2 = type non respecté
        3 = champ obligatoire vide
*/
function erreur_champ(champ, donnees)
{
    if (donnees[3] !== "") { // dépend d'un autre champ
        var champParent   = document.getElementById(donnees[3]);
        var donneesParent = extrait_donnees(donnees[3]);

        if (donneesParent !== false) {
            var erreur = erreur_champ(champParent, donneesParent);

            if (is_null(champ)) {
                if (erreur == 0)
                    return 0;
                else
                    return 3;
            }
        }

    } else if (is_null(champ)) {
        if (donnees[0] == 0) // champ obligatoire
            return 3;
        else
            return 0;
    }

    if (type_ok(champ, donnees[2]))
        return 1;
    else
        return 2;
}



// vérifie si un champ est nul ou non
// entrée : HTMLObject
function is_null(champ)
{
    var valeur = valeur_champ(champ);

    if (valeur == "" || valeur.length == 0 || valeur == " ")
        return 1;
    else
        return 0;
}



// extrait la valeur d'un champ
// entrée : HTMLObject
function valeur_champ(champ) {

	var valeur = "";

    if (champ.type == "text") {
        valeur = champ.value;
    } else if (champ.type == "select-one") {
        valeur = champ.options[champ.selectedIndex].value;
    } else {
        valeur = champ.text;
    }

    return valeur;
}



// vérifie que le champ est du bon type
// entrée : HTMLObject, string
function type_ok(champ, typeChamp) {

    var valeur = valeur_champ(champ);

    switch (typeChamp) {
        case "nombre" :
            Number(valeur);
            var expr = new RegExp("^[0-9]+$","gi");
            return expr.test(valeur);
            break;

        case "texte" :
            String(valeur);
            var expr = new RegExp("^[a-zA-Z\-\ 'àâäãçéèêëìîïòôöõùûüñ\%\,]+$","gi");
            return expr.test(valeur);
            break;

        case "nombretexte" :
        case "textenombre" :
            String(valeur);
            var expr = new RegExp("^[0-9a-zA-Z\-\ \+'àâäãçéèêëìîïòôöõùûüñ\.\+\%\,]+$","gi");
            return expr.test(valeur);
            break;

        case "codepostal" :
            String(valeur);
            var expr = new RegExp("^(2a|2b|2A|2B)?[0-9\ ]+$","gi");
            return expr.test(valeur);
            break;

        case "phone" :
            String(valeur);
            var expr = new RegExp("^[0-9\ \-\.]+$","gi");
            return expr.test(valeur);
            break;

        case "email" :
            String(valeur);
            var expr=/^[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
            return ((valeur.match(expr) == valeur) && (valeur.substr(valeur.lastIndexOf("@")).length<=256));
            break;

    }

}


function verifRadioBouton(idBouton1,idBouton2,idImage)
{
 
    var image       = document.getElementById('picto_'+idImage);

    if (image) {
        if(document.getElementById(idBouton1).checked || document.getElementById(idBouton2).checked) {
            image.src = "../images/formulaire-picto-ok.gif";
            image.style.visibility = "visible";
            return 1;
        }else {
            image.src = "../images/formulaire-picto-vide.gif";
            image.style.visibility = "visible";
            return 3;
        }

    }
 

    return 0;
}



// fonction de vérification globale lors du changement d"onglet
function verif() {

    var champsOnglet = new Array("civilite", "nom", "prenom",
        "jourNaissance", "moisNaissance", "anneeNaissance",
        "email", "email2", "telDomicile", "telPortable");

    var erreur = new Array();
    var alerte = new Array();

   for ( n=0; n < champsOnglet.length; n++) {

        var noErreur = verifChamp(champsOnglet[n]);
        var valeurs  = extrait_donnees(champsOnglet[n]);

        switch (noErreur) {
            case 2 : // mauvais type
                alerte.push(valeurs[1]);
                break;

            case 3 : // champ obligatoire vide
                erreur.push(valeurs[1]);
                break;
        }
    }


     var noErreur=verifRadioBouton('chk_newsletter1','chk_newsletter2','chk_newsletter');
                var valeurs  = extrait_donnees('chk_newsletter');
               
                switch (noErreur) {
                case 2 : // mauvais type
                    alerte.push(valeurs[1]);
                    break;

                case 3 : // champ obligatoire vide
                    erreur.push(valeurs[1]);
                    break;
            }


    div = document.getElementById("message_erreur_rappel");

    if (erreur.length == 0 && alerte.length == 0) {

        document.getElementById('formulaire').submit();

    } else {

        var textErreur = new String;
        var textAlerte = new String;

        if (erreur.length >0 && alerte.length == 0) {
                textErreur  = "<img src=\"../images/formulaire-erreur-haut.gif\" width=\"285\" height=\"15\" alt=\"\" />\n";
                textErreur += "<p>Les champs suivants sont obligatoires :</p>\n";
                textErreur += "<ul>";
                for (i=0; i < erreur.length; i++)
                    textErreur += "<li>"+erreur[i]+"</li>";
                textErreur += "</ul>";
                textErreur += "<img src=\"../images/formulaire-erreur-bas.gif\" width=\"285\" height=\"250\" alt=\"\" style=\"vertical-align:bottom\" />";
            }
			
            if (alerte.length >0 && erreur.length == 0) {
                textAlerte  = "<img src=\"../images/formulaire-erreur-haut.gif\" width=\"285\" height=\"15\" alt=\"\" />\n";
                textAlerte += "<p>Les champs suivants ne sont pas au format attendu :</p>\n";
                textAlerte += "<ul>";
                for (i=0; i < alerte.length; i++)
                    textAlerte += "<li>"+alerte[i]+"</li>";
                textAlerte += "</ul>";
                textAlerte += "<img src=\"../images/formulaire-erreur-bas.gif\" width=\"285\" height=\"250\" alt=\"\" style=\"vertical-align:bottom\" />\n";
            }
			
			if (erreur.length >0 && alerte.length > 0) {
                textErreur  = "<img src=\"../images/formulaire-erreur-haut.gif\" width=\"285\" height=\"15\" alt=\"\" />\n";
                textErreur += "<p>Les champs suivants sont obligatoires :</p>\n";
                textErreur += "<ul>";
                for (i=0; i < erreur.length; i++)
                	textErreur += "<li>"+erreur[i]+"</li>";
                textErreur += "</ul>";
                textErreur += "<img src=\"../images/formulaire-erreur-bas-court.gif\" width=\"285\" height=\"15\" alt=\"\" style=\"vertical-align:bottom\" />\n";
			    textAlerte  = "<img src=\"../images/formulaire-erreur-haut.gif\" width=\"285\" height=\"15\" alt=\"\" />\n";
                textAlerte += "<p>Les champs suivants ne sont pas au format attendu :</p>\n";
                textAlerte += "<ul>";
                for (i=0; i < alerte.length; i++)
                    textAlerte += "<li>"+alerte[i]+"</li>";
                textAlerte += "</ul>";
                textAlerte += "<img src=\"../images/formulaire-erreur-bas.gif\" width=\"285\" height=\"250\" alt=\"\" style=\"vertical-align:bottom\" />\n";
            }

        div.innerHTML = textErreur+textAlerte;
        div.style.visibility = "visible";
		window.location = "rappel-assurance-credit.php#haut_page";
    }
}
