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; de l'emprunteur", // descriptif du champ
        "texte",                    // type du champ
        ""),                        // d&eacute;pend de...
    "nom",
        new Array(
        "0",
        "nom de l'emprunteur",
        "texte",
        ""),
    "prenom",
        new Array(
        "0",
        "pr&eacute;nom de l'emprunteur",
        "texte",
        ""),
    "jourNaissance",
        new Array(
        "0",
        "jour de naissance de l'emprunteur",
        "nombre",
        ""),
    "moisNaissance",
        new Array(
        "0",
        "mois de naissance de l'emprunteur",
        "nombre",
        ""),
    "anneeNaissance",
        new Array(
        "0",
        "ann&eacute;e de naissance de l'emprunteur",
        "nombre",
        ""),
    "typeDePoste",
        new Array(
        "0",
        "emploi actuel de l'emprunteur",
        "nombre",
        ""),
    "logementActuel",
        new Array(
        "0",
        "logement actuel",
        "texte",
        ""),
    "email",
        new Array(
        "0",
        "e-mail",
        "email",
        ""),
    "email2",
        new Array(
        "0",
        "confirmation de votre e-mail",
        "email",
        ""),
    "telDomicile",
        new Array(
        "0",
        "num&eacute;ro de t&eacute;l&eacute;phone (t&eacute;l. 1)",
        "phone",
        ""),
    "telPortable",
        new Array(
        "1",
        "deuxi&egrave;me num&eacute;ro de t&eacute;l&eacute;phone",
        "phone",
        ""),
    "rachatPret",
        new Array(
        "1",
        "votre projet",
        "texte",
        ""
        ),
    "observations",
        new Array(
        "1",
        "observations",
        "",
        "")
);



// extrait les donn&eacute;es d'un champ
/* cl&eacute;s du tableau retourn&eacute; :
    0 : facultatif (1) ou non (0)
    1 : libell&eacute; du champ
    2 : type du champ (cf type_ok)
    3 : idChamp duquel il d&eacute;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&eacute;rification de champ en temps r&eacute;el
// (affiche une image en cons&eacute;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&eacute;rification de date (idem que v&eacute;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&eacute;e :
        champ   : objet de type HTMLObject
        donnees : tableau dont les cl&eacute;s sont les suivantes :
                    0 : facultatif (1) ou non (0)
                    1 : libell&eacute; du champ
                    2 : type du champ
                    3 : idChamp duquel il d&eacute;pend

sortie :
        0 = champ facultatif vide
        1 = champ obligatoire ok
        2 = type non respect&eacute;
        3 = champ obligatoire vide
*/
function erreur_champ(champ, donnees)
{
    if (donnees[3] !== "") { // d&eacute;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&eacute;rifie si un champ est nul ou non
// entr&eacute;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&eacute;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 if (champ.type == "checkbox") {
        if (champ.ckecked == "ckecked")
            valeur = 1;
        else
            valeur = 0;
    } else {
        valeur = champ.text;
    }

    return valeur;
}



// v&eacute;rifie que le champ est du bon type
// entr&eacute;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;
    }

}




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

    var champsOnglet = new Array('civilite','nom','prenom',
        'jourNaissance','moisNaissance','anneeNaissance',
        'typeDePoste','logementActuel','email','email2',
        'telDomicile','telPortable', 'rachatPret');

    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;
        }

        switch(champsOnglet[n]) {
            case 'email2' :
                var mail1 = document.getElementById("email").value;
                var mail2 = document.getElementById("email2").value;
                if (mail1 != mail2)
                    alerte.push("les deux e-mails fournis ne sont pas identiques");
                break;

            case 'anneeNaissance' :
                verifDate('jourNaissance','moisNaissance','anneeNaissance','dateNaissance');
                break;


        }
    }

    div = document.getElementById("message_erreur");

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

        div.style.visibility = "hidden";
        document.getElementById('formulaire').submit();

    } else {

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

        if (erreur.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=\"10\" alt=\"\" />";
        }
        if (alerte.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=\"10\" alt=\"\" />";
        }

        div.innerHTML = textErreur+textAlerte;
        div.style.visibility = "visible";
		window.location = "demande-rachat-pret-hypothecaire.php#haut_page";
    }
}

