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é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"),
    "email",
        new Array(
        "0",
        "e-mail de l'emprunteur",
        "email",
        ""),
	"coEmail",
        new Array(
        "1",
        "e-mail du co-emprunteur",
        "email",
        "coCivilite"),	
    "jourNaissance",
        new Array(
        "1",
        "jour de naissance de l'emprunteur",
        "nombre",
        ""),
    "moisNaissance",
        new Array(
        "1",
        "mois de naissance de l'emprunteur",
        "nombre",
        ""),
    "anneeNaissance",
        new Array(
        "1",
        "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"),
	"nbEnfantsACharge",
        new Array(
        "1",
        "nombre d'enfant(s) &agrave; charge",
        "nombre",
        ""),
    "revenus",
        new Array(
        "1",
        "revenus de l'emprunteur",
        "nombre",
        ""),
    "coRevenus",
        new Array(
        "1",
        "revenus du co-emprunteur",
        "nombre",
        "coCivilite"),		
    "charges",
        new Array(
        "1",
        "charges de l'emprunteur",
        "nombre",
        ""),
    "coCharges",
        new Array(
        "1",
        "charges du co-emprunteur",
        "nombre",
        "coCivilite"),
	"bienImmobilier",
        new Array(
        "1",
        "etes-vous propri&eacute;taire d&rsquo;un bien immobilier ?",
        "texte",
        ""),/*
	"bienImmobilier2",
        new Array(
        "1",
        "etes-vous propri&eacute;taire d&rsquo;un bien immobilier ?",
        "texte",
        ""),	*/
	"valeurBien",
        new Array(
        "1",
        "estimation de la valeur du bien",
        "nombre",
        ""),
	"montantMensualite",
        new Array(
        "1",
        "montant de la mensualit&eacute; souhait&eacute",
        "nombre",
        ""),
    "dureeRemboursement",
        new Array(
        "1",
        "dur&eacute;e de remboursement souhait&eacute;e",
        "textenombre",
        ""),		
	"montantReserve",
        new Array(
        "1",
        "montant de la r&eacute;serve d&rsquo;argent souhait&eacute;e",
        "nombre",
        ""),
	"momentRappel",
        new Array(
        "1",
        "choisissez le moment du rappel",
        "textenombre",
        ""),
    "heureRappel",
        new Array(
        "1",
        "choisissez l'heure du rappel",
        "textenombre",
        ""),
	"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",
        ""),
	"momentRappelAutre",
        new Array(
        "1",
        "choisissez le moment de l'autre rappel",
        "textenombre",
        ""),
    "heureRappelAutre",
        new Array(
        "1",
        "choisissez l'heure de l'autre rappel",
        "textenombre",
        ""),
	"telDomicileAutre",
        new Array(
        "0",
        "num&eacute;ro de t&eacute;l&eacute;phone (t&eacute;l. 1)",
        "phone",
        ""),
    "telBureauAutre",
        new Array(
        "1",
        "deuxi&egrave;me num&eacute;ro de t&eacute;l&eacute;phone",
        "phone",
        ""),	
    "commentaire",
        new Array(
        "1",
        "laissez-nous un commentaire",
        "",
        "")		     
);



// 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 "textenombre" :
            String(valeur);
            var expr = new RegExp("^[0-9a-zA-Z\-\ \+'àâäãçéèêëìîïòôöõùûüñ\.\+\%]+$","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 verifOnglet(noOnglet, ongletSuivant) {

    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", "email", /*"coEmail",*/ "jourNaissance", "moisNaissance", "anneeNaissance",
            "coJourNaissance", "coMoisNaissance", "coAnneeNaissance",
            "nbEnfantsACharge","revenus","coRevenus","charges","coCharges",
			/*"bienImmobilier1","bienImmobilier2",*/"valeurBien","montantMensualite","dureeRemboursement",
			"montantReserve","momentRappel","heureRappel","telDomicile","telBureau"/*,"commentaire"*/);
             
            break;

        default :
            var champsOnglet = new Array();
    }


    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 'anneeNaissance' :
                        verifDate('jourNaissance','moisNaissance','anneeNaissance','dateNaissance');
                        break;

                    case 'coAnneeNaissance' :
                        verifDate('coJourNaissance','coMoisNaissance','coAnneeNaissance','coDateNaissance');
                        break;
	
                }
            }
        }
        //en dehors de la boucle si l'onglet est 1
        if (noOnglet == 1) {
                
                var noErreur=verifRadioBouton('bienImmobilier1','bienImmobilier2','bienImmobilier');
                var valeurs  = extrait_donnees('bienImmobilier');
               
                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 && 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=\"600\" 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=\"600\" 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=\"600\" alt=\"\" style=\"vertical-align:bottom\" />\n";
            }
			
            div.innerHTML = textErreur+textAlerte;
            div.style.visibility = "visible";
            window.location = "#haut_page";
        }
    }
}



// fonction de changement d'onglet
// masque tous les onglets et affiche l'onglet "id"
function changeOnglet(id) {
	
    for(var i=1; i<=1; i++) {
        // masque les onglet
        document.getElementById("formulaire_tableau_"+i).style.display = "none";
    }
    // affiche l'onglet choisi
    document.getElementById("formulaire_tableau_"+id).style.display = "block";
    window.location = "index.php#haut_page";
} 

// 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 < 2) {
        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";
    }
}

// affichage des infobulles
function afficher_infobulle(info,etat)
{
	var object = 'infobulle_'+info;
	
	if (document.layers && document.layers[object])
	{ 
		//document.layers[object].visibility = etat;
		document.layers[object].display = etat;
	} 
	else if (document.all)
	{ 
		//document.all[object].style.visibility = etat;
		document.all[object].style.display = etat;
	}
	else if (document.getElementById) 
	{
		//document.getElementById(object).style.visibility = etat; 
		document.getElementById(object).style.display = etat;
	} 
}
