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...
    "coCivilite",
        new Array(
        "1",
        "civilit&eacute; du co-emprunteur",
        "texte",
        ""),
    "nom",
        new Array(
        "0",
        "nom de l'emprunteur",
        "texte",
        ""),
    "coNom",
        new Array(
        "1",
        "nom du co-emprunteur",
        "texte",
        "coCivilite"),
    "prenom",
        new Array(
        "0",
        "pr&eacute;nom de l'emprunteur",
        "texte",
        ""),
    "coPrenom",
        new Array(
        "1",
        "pr&eacute;nom du co-emprunteur",
        "texte",
        "coCivilite"),
    "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",
        ""),
    "coJourNaissance",
        new Array(
        "1",
        "jour de naissance du co-emprunteur",
        "nombre",
        "coCivilite"),
    "coMoisNaissance",
        new Array(
        "1",
        "mois de naissance du co-emprunteur",
        "nombre",
        "coCivilite"),
    "coAnneeNaissance",
        new Array(
        "1",
        "ann&eacute;e de naissance du co-emprunteur",
        "nombre",
        "coCivilite"),
    "typeDePoste",
        new Array(
        "0",
        "emploi actuel de l'emprunteur",
        "nombre",
        ""),
    "coTypeDePoste",
        new Array(
        "1",
        "emploi actuel du co-emprunteur",
        "nombre",
        "coCivilite"),
    "poste",
        new Array(
        "1",
        "poste occup&eacute; par l'emprunteur",
        "texte",
        ""),
    "coPoste",
        new Array(
        "1",
        "poste occup&eacute; par le co-emprunteur",
        "texte",
        ""),
    "etablissementPreteur",
        new Array(
        "1",
        "etablissement pr&ecirc;teur de l'emprunteur",
        "texte",
        ""),
    "coEtablissementPreteur",
        new Array(
        "1",
        "etablissement pr&ecirc;teur du co-emprunteur",
        "texte",
        ""),
    "adresse",
        new Array(
        "1",
        "adresse",
        "textenombre",
        ""),
    "adresse2",
        new Array(
        "1",
        "deuxi&egrave;me ligne d'adresse",
        "textenombre",
        ""),
    "codePostal",
        new Array(
        "0",
        "code postal",
        "codepostal",
        ""),
    "ville",
        new Array(
        "0",
        "ville",
        "texte",
        ""),
    "email",
        new Array(
        "0",
        "e-mail",
        "email",
        ""),
    "email2",
        new Array(
        "0",
        "confirmation de votre e-mail",
        "verifemail",
        ""),
    "telDomicile",
        new Array(
        "0",
        "num&eacute;ro de t&eacute;l&eacute;phone (t&eacute;l. 1)",
        "phone",
        ""),
    "telBureau",
        new Array(
        "1",
        "deuxi&egrave;me num&eacute;ro de t&eacute;l&eacute;phone",
        "phone",
        ""),
    "telPortable",
        new Array(
        "1",
        "troisi&egrave;me num&eacute;ro de t&eacute;l&eacute;phone",
        "phone",
        ""),
    "fax",
        new Array(
        "1",
        "quatri&egrave;me num&eacute;ro de t&eacute;l&eacute;phone",
        "phone",
        ""),
     "chk_newsletter",
        new Array(
        "1",
        "newsletter ?",
        "texte",
        "")
   );


    /* Onglet 2
    -------------------------------------------------------------------------------*/

    // prets
    for (no=1; no<=6; no++) {
        var place = no+"&egrave;me";

        if (no == 1)
            var place = "1er";

        champs.push(
        "pretMontant"+no,
            new Array(
            "1",
            "montant du "+place+" pr&ecirc;t",
            "nombre",
            ""),
        "pretDuree"+no,
            new Array(
            "1",
            "dur&eacute;e du "+place+" pr&ecirc;t",
            "nombretexte",
            "pretMontant"+no),
        "pretTaux"+no,
            new Array(
            "1",
            "taux du "+place+" pr&ecirc;t",
            "decimal",
            "pretMontant"+no),
        "pretType"+no,
            new Array(
            "1",
            "type du "+place+" pr&ecirc;t",
            "texte",
            "pretMontant"+no),
        "pretDiffere"+no,
            new Array(
            "1",
            "diff&eacute;r&eacute; du "+place+" pr&ecirc;t",
            "nombre",
            "")
        );
    }

    champs.push(
    "fumeur",
        new Array(
        "0",
        "Etes-vous fumeur ? (emprunteur)",
        "texte",
        ""
        ),
    "coFumeur",
        new Array(
        "1",
        "Etes-vous fumeur ? (co-emprunteur)",
        "texte",
        "coCivilite"
        ),
    "kmParAn",
        new Array(
        "0",
        "Faites-vous plus de 15000km professionnels par an ? (emprunteur)",
        "texte",
        ""
        ),
    "coKmParAn",
        new Array(
        "1",
        "Faites-vous plus de 15000km professionnels par an ? (co-emprunteur)",
        "texte",
        "coCivilite"
        ),
    "manutention",
        new Array(
        "0",
        "Faites-vous de la manutention ? (emprunteur)",
        "texte",
        ""
        ),
    "coManutention",
        new Array(
        "1",
        "Faites-vous de la manutention ? (co-emprunteur)",
        "texte",
        "coCivilite"
        ),
    "diat",
        new Array(
        "0",
        "DIAT de l'emprunteur",
        "nombre",
        ""
        ),
    "coDiat",
        new Array(
        "1",
        "DIAT du co-emprunteur",
        "nombre",
        "coCivilite"
        ),
    "itt",
        new Array(
        "0",
        "ITT / IPT de l'emprunteur",
        "nombre",
        ""
        ),
    "coItt",
        new Array(
        "1",
        "ITT / IPT du co-emprunteur",
        "nombre",
        "coCivilite"
        ),
    "franchise",
        new Array(
        "0",
        "franchise de l'emprunteur",
        "nombre",
        ""
        ),
    "coFranchise",
        new Array(
        "1",
        "franchise du co-emprunteur",
        "nombre",
        "coCivilite"
        ),
    "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 "decimal" :
            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]+)*@([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;

         case "verifemail":
            String(valeur);
            var expr=/^[a-z\d]+((\.|-|_)[a-z\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) && valeur==document.getElementById("email").value);
            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&eacute;rification globale lors du changement d"onglet
function verifOnglet(noOnglet, ongletSuivant) {

    var champsOnglet = new Array();
    

    if(ongletSuivant<noOnglet&&ongletSuivant!=0)
    {
        imageOnglet(noOnglet,0);
        imageOnglet(ongletSuivant,1);
        changeOnglet(ongletSuivant);
        return;
    }

    switch (noOnglet) {
        case 1 :
            // champs onglet 1
            var champsOnglet = new Array('civilite','coCivilite',
            'nom','coNom','prenom','coPrenom',
            'jourNaissance','moisNaissance','anneeNaissance',
            'coJourNaissance','coMoisNaissance','coAnneeNaissance',
            'typeDePoste','coTypeDePoste','poste','coPoste',
            'etablissementPreteur', 'coEtablissementPreteur',
            'adresse','adresse2','codePostal','ville','email','email2',
            'telDomicile','telBureau','telPortable','fax');
            break;

        case 2 :
            // champs onglet 2
            for (no=1; no<=6; no++) {
                champsOnglet.push('pretMontant'+no, 'pretDuree'+no,
                'pretTaux'+no, 'pretType'+no, 'pretDiffere'+no);
            }

            champsOnglet.push('fumeur','coFumeur',
            'kmParAn', 'coKmParAn',
            'manutention', 'coManutention',
            'diat', 'coDiat', 'itt', 'coItt',
            'franchise', 'coFranchise');

            break;
    }


    if (champsOnglet.length > 0) {

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

            if (noOnglet == 1) {
                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;

                    case 'coAnneeNaissance' :
                        verifDate('coJourNaissance','coMoisNaissance','coAnneeNaissance','coDateNaissance');
                        break;

                    case 'loyerMensuel' :
                        var proprio = valeur_champ(document.getElementById('logementActuel'));
                        if (proprio != 'Propriétaire' && noErreur == 0 && verifChamp('logementActuel') != 3) {
                            erreur.push(valeurs[1]);
                            var image = document.getElementById('picto_loyerMensuel');
                            image.src = "images/formulaire-picto-vide.gif";
                            image.style.visibility = "visible";
                        }
                        break;
                }
            } else if (noOnglet == 2 && champsOnglet[n] == 'typeDeBien1') {
                var proprio = valeur_champ(document.getElementById('logementActuel'));
                if (proprio == 'Propriétaire' && noErreur == 0) {
                    erreur.push(valeurs[1]);
                    var image = document.getElementById('picto_typeDeBien1');
                    image.src = "images/formulaire-picto-vide.gif";
                    image.style.visibility = "visible";
                }
            }
        }

        if (noOnglet == 2) {
                
                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");

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

            div.style.visibility = "hidden";

            if (ongletSuivant == 0) {
                document.getElementById('formulaire').submit();
            } else {
                imageOnglet(noOnglet,0);
                imageOnglet(ongletSuivant,1);
                changeOnglet(ongletSuivant);
            }

        } 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 = "assurance-pret-moins-chere.php#haut_page";
        }
    }
}



// fonction de changement d'onglet
// masque tous les onglets et affiche l'onglet "id"
function changeOnglet(id) {

    for(var i=1; i<=2; i++) {
        // masque les onglet
        document.getElementById("formulaire_tableau_"+i).style.display = "none";
    }
    // affiche l'onglet choisi
    document.getElementById("formulaire_tableau_"+id).style.display = "block";

    // on redimensionne la page :
    switch(id) {
        case 1 :
            var hauteur = 800;
            var srcXitiTag = "";
            break;
        case 2 :
            var hauteur = 1200;
            var srcXitiTag = "http://logi151.xiti.com/hit.xiti?s=373226&s2=&p=formulaire::formulaire_depot_dossier_onglet2&di=&";
            break;
    }

    document.getElementById("formulaire_fond").style.height = hauteur+"px";
    document.getElementById("xitiTag").src = srcXitiTag;
}

// change l'image d'un onglet (valide)
// id : identifiant de l'onglet
// on : image de l'onget (1=on, 0=off)
function imageOnglet(id, on) {
    if (id > 0 && id < 4) {
        if (on == 1)
            document.getElementById("onglet"+id).src = "images/formulaire-onglet"+id+"-on.gif";
        else
            document.getElementById("onglet"+id).src = "images/formulaire-onglet"+id+"-off.gif";
    }
}

// affiche ou masque les biens
function montreBien(id) {
    bien = document.getElementById('bien'+id);

    if (bien.style.display == "none") {
        bien.style.display = "block";
    } else {
        bien.style.display = "none";
    }
}


// rappel le nom de l'emprunteur et du co-emprunteur dans le 2&egrave;me onglet
function rappel(id) {
    if (id == 'emprunteur') {
        civilite = document.getElementById('civilite').value;
        nom      = document.getElementById('nom').value;
        document.getElementById('emprunteur').innerHTML = civilite+' '+nom+' (Emprunteur)';
    } else {
        civilite = document.getElementById('coCivilite').value;
        nom      = document.getElementById('coNom').value;
        document.getElementById('coEmprunteur').innerHTML = civilite+' '+nom+' (Co-Emprunteur)';
    }
}
