// Fonctions utilitaires

/* Lorsque la page load, on met la bonne grosseur de texte*/
function AjusterTailleTexte() {
    if (Get_Cookie("coTailleTexte") != "") {
        document.getElementById("page").style.fontSize = Get_Cookie("coTailleTexte");
    }
    else {
        Set_Cookie("coTailleTexte", tailleTexte.style.fontSize, 7, "/", "", "");
    }
}

/* Pour changer la taille du texte */
function AugmenterTaille() {
    var tailleTexte = document.getElementById("page");

    if (Get_Cookie("coTailleTexte") != "") {
        tailleTexte.style.fontSize = Get_Cookie("coTailleTexte");
    }

    if (tailleTexte.style.fontSize == "10px") {
        tailleTexte.style.fontSize = "12px";
    }
    else if (tailleTexte.style.fontSize == "12px") {
        tailleTexte.style.fontSize = "14px";
    }
    else if (tailleTexte.style.fontSize == "16px") {
        tailleTexte.style.fontSize = "18px";
    }
    else {
        if (tailleTexte.style.fontSize != "18px") {
            tailleTexte.style.fontSize = "16px";
        }
    }

    Set_Cookie("coTailleTexte", tailleTexte.style.fontSize, 7, "/", "", "");
}

function DiminuerTaille() {
    var tailleTexte = document.getElementById("page");

    if (Get_Cookie("coTailleTexte") != "") {
        tailleTexte.style.fontSize = Get_Cookie("coTailleTexte");
    }

    if (tailleTexte.style.fontSize == "18px") {
        tailleTexte.style.fontSize = "16px";
    }
    else if (tailleTexte.style.fontSize == "16px") {
        tailleTexte.style.fontSize = "14px";
    }
    else if (tailleTexte.style.fontSize == "12px") {
        tailleTexte.style.fontSize = "10px";
    }
    else {
        if (tailleTexte.style.fontSize != "10px") {
            tailleTexte.style.fontSize = "12px";
        }
    }

    Set_Cookie("coTailleTexte", tailleTexte.style.fontSize, 7, "/", "", "");
}

/* Pour créer un cookie(Provient de http://techpatterns.com) */
function Set_Cookie(name, value, expires, path, domain, secure) {
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime(today.getTime());

    /*
    if the expires variable is set, make the correct
    expires time, the current script below will set
    it for x number of days, to make it for hours,
    delete * 24, for minutes, delete * 60 * 24
    */
    if (expires) {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date(today.getTime() + (expires));

    document.cookie = name + "=" + escape(value) +
	((expires) ? ";expires=" + expires_date.toGMTString() : "") +
	((path) ? ";path=" + path : "") +
	((domain) ? ";domain=" + domain : "") +
	((secure) ? ";secure" : "");
}

/* Pour obtenir un cookie (Provient de http://techpatterns.com) */
function Get_Cookie(check_name) {
    // first we'll split this cookie up into name/value pairs
    // note: document.cookie only returns name=value, not the other components
    var a_all_cookies = document.cookie.split(';');
    var a_temp_cookie = '';
    var cookie_name = '';
    var cookie_value = '';
    var b_cookie_found = false; // set boolean t/f default f

    for (i = 0; i < a_all_cookies.length; i++) {
        // now we'll split apart each name=value pair
        a_temp_cookie = a_all_cookies[i].split('=');


        // and trim left/right whitespace while we're at it
        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

        // if the extracted name matches passed check_name
        if (cookie_name == check_name) {
            b_cookie_found = true;
            // we need to handle case where cookie has no value but exists (no = sign, that is):
            if (a_temp_cookie.length > 1) {
                cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
            }
            // note that in cases where cookie is initialized but no value, null is returned
            return cookie_value;
            break;
        }
        a_temp_cookie = null;
        cookie_name = '';
    }
    if (!b_cookie_found) {
        return null;
    }
}

/* Recherche dans un tableau */
function array_search(what, where) {
    var index_du_tableau = -1

    for (elt in where) {
        index_du_tableau++;
        if (where[elt] == what) {
            return index_du_tableau
        }
    }
    index_du_tableau = -1;
    return index_du_tableau
}

/* Function pour connaître le nom de la page en cours */
function PageEnCours() {
    var strAdresse = String(window.location);
    var tblUrlChemin = strAdresse.split("/");

    var nomFichier = tblUrlChemin[tblUrlChemin.length - 1];
    tblUrlParam = nomFichier.split("?");

    return tblUrlParam[0];
}

/* Functions pour le sous-menu déroulant */
function ouvrirSousMenu(strNoMenu) {
    var id_zoneSousMenu = document.getElementById("zone_sousMenu" + strNoMenu);

    if (strNoMenu == "1") {
        id_zoneSousMenu.className = "zone_sousMenu_on";
        document.getElementById("btn_genealogie").className = "btn_genealogie_on";
    }
}
function fermerSousMenu(strNoMenu) {
    var id_zoneSousMenu = document.getElementById("zone_sousMenu" + strNoMenu);

    if (strNoMenu == "1") {
        id_zoneSousMenu.className = "zone_sousMenu";

        if (array_search(PageEnCours(), tblGenealogie) == -1) {
            document.getElementById("btn_genealogie").className = "btn_genealogie";
        }
    }
}
/* Pour reproduire l'effet over sur les boutons */
function ChangerClasseBtn(etat, id_btn_g, id_btn_m, id_btn_d) {
    if (etat == "hover") {
        document.getElementById(id_btn_g).className = "btn_cote_g_hover";
        document.getElementById(id_btn_m).className = "btn_cote_m_hover";
        document.getElementById(id_btn_d).className = "btn_cote_d_hover";
    }
    else {
        document.getElementById(id_btn_g).className = "btn_cote_g";
        document.getElementById(id_btn_m).className = "btn_cote_m";
        document.getElementById(id_btn_d).className = "btn_cote_d";
    }
}
function ChangerClasseNouveauBtn(etat, id_btn_g, id_btn_m, id_btn_d) {
    if (etat == "hover") {
        document.getElementById(id_btn_g).className = "btn_bord_g_hover";
        document.getElementById(id_btn_m).className = "btn_milieu_hover";
        document.getElementById(id_btn_d).className = "btn_bord_d_hover";
    }
    else {
        document.getElementById(id_btn_g).className = "btn_bord_g";
        document.getElementById(id_btn_m).className = "btn_milieu";
        document.getElementById(id_btn_d).className = "btn_bord_d";
    }    
}
function ChangerClasseNouveauBtnflechecroix(etat, id_btn_g, id_btn_m, id_btn_flechecroix) {
    if (etat == "hover") {
        document.getElementById(id_btn_g).className = "btn_bord_g_hover";
        document.getElementById(id_btn_m).className = "btn_milieu_hover";
	document.getElementById(id_btn_flechecroix).className = id_btn_flechecroix + "_hover";	    
    }
    else {
        document.getElementById(id_btn_g).className = "btn_bord_g";
        document.getElementById(id_btn_m).className = "btn_milieu";
        document.getElementById(id_btn_flechecroix).className = id_btn_flechecroix;	
    }    
}

function ChangerClasseBtnH(etat, id_btn_g, id_btn_m, id_btn_d) {
    if (etat == "hover") {
        document.getElementById(id_btn_g).className = "btn_cote_g_hover";
        document.getElementById(id_btn_m).className = "btn_cote_m_hover";
        document.getElementById(id_btn_d).className = "btn_cote_h_hover";
    }
    else {
        document.getElementById(id_btn_g).className = "btn_cote_g";
        document.getElementById(id_btn_m).className = "btn_cote_m";
        document.getElementById(id_btn_d).className = "btn_cote_h";
    }
}
function ChangerClasseBtnX(etat, id_btn_g, id_btn_m, id_btn_d) {
    if (etat == "hover") {
        document.getElementById(id_btn_g).className = "btn_cote_g_hover";
        document.getElementById(id_btn_m).className = "btn_cote_m_hover";
        document.getElementById(id_btn_d).className = "btn_cote_x_hover";
    }
    else {
        document.getElementById(id_btn_g).className = "btn_cote_g";
        document.getElementById(id_btn_m).className = "btn_cote_m";
        document.getElementById(id_btn_d).className = "btn_cote_x";
    }
}
/* 	Fonction pour initialiser le message d'erreur (enlever le texte en rouge et les encadrés rouges)
Le Paramètre "tblLstChamps" doit être un tableau (Array) qui contient la liste des champs à initialiser
(label et input)
*/
function InitialiserErreurs(tblLstChamps) {
    document.getElementById("bloc_erreur_m").style.display = "none";
    document.getElementById("bloc_erreur_b").style.display = "none";
    document.getElementById("msg_erreur").innerHTML = "";

    for (i = 0; i < tblLstChamps.length; i++) {
        document.getElementById(tblLstChamps[i]).className = "";
    }
}
/* 	Fonction pour afficher le message d'erreur
Paramètres:	messages => le message à afficher
idLabel => le id du label (texte à mettre en rouge)
idInput => le id du input (pour mettre les bordu en rouge)
*/
function AfficherErreurs(messages, idLabel, idInput) {
    document.getElementById("bloc_erreur_m").style.display = "block";
    document.getElementById("bloc_erreur_b").style.display = "block";
    document.getElementById("msg_erreur").innerHTML = messages;

    if (document.getElementById(idLabel)) {
        document.getElementById(idLabel).className = "txt_erreur";
    }
    if (document.getElementById(idInput)) {
        document.getElementById(idInput).className = "champs_erreur";
        document.getElementById(idInput).focus();
    }
}


/* Function pour ajouter le site aux favoris */
function addToFavorite(address, favTitle) {
    if ((navigator.appVersion.indexOf("MSIE")
  > 0) && (parseInt(navigator.appVersion) >= 4)) {
        window.external.AddFavorite(address, unescape(favTitle));
    }
    else {
        alert("Votre navigateur requiert que vous fassiez vous-même l'enregistrement de vos favoris (ou signets)");
    }
}


/* Autres fonctions de Monsieur Jean Trudel */
function ValiderCriterePren() {
    var Prenom = Trim(document.frmRechPrenom.Prenom.value);

    if (Prenom == "") {
        alert("Vous avez omis de fournir un prénom à rechercher");
        document.frmRechPrenom.Prenom.focus();
        return false;
    }

    var checkStr = Prenom;
    if (!CritNomPrenom(checkStr)) {
        alert("Le prénom est invalide. Seules les lettres, les apostrophes sont permises, ainsi qu'un seul trait d'union.");
        document.frmRechPrenom.Prenom.focus();
        return false;
    }

    return true;
}
function ValiderCritereNom() {
    var Nom = Trim(document.frmRechNom.Nom.value);

    if (Nom == "") {
        alert("Vous avez omis de fournir un nom de famille à rechercher");
        document.frmRechNom.Nom.focus();
        return (false);
    }

    Nom = Nom.toLowerCase();
    if (Nom.substr(0, 6) == "saint-") {
        Nom = Nom.substr(6);
    }

    var checkStr = Nom;
    if (!CritNomPrenom2(checkStr)) {
        if (!TraitUnion(checkStr, "nom")) {
            alert("Le nom de famille est invalide. Seules les lettres sont permises, ainsi qu'un seul trait d'union lorsque le nom commence par 'Saint-'.");
            document.frmRechNom.Nom.focus();
        }
        return (false);
    }

}

function CritNomPrenom(s) {
    var allValid = true;
    var sAcc = "-àäâçéèëêìïîòöôùüûÀÄÂÉÈËÊÌÏÎÒÖÔÙÜÛ";
    var nTraits = 0;
    for (i = 0; i < s.length; i++) {
        ch = s.charAt(i);
        if (!(ch >= "A" && ch <= "Z") && !(ch >= "a" && ch <= "z") && ch !== "'") {
            if (sAcc.indexOf(ch) == -1 || (ch == "-" && nTraits > 0)) {
                allValid = false;
                break;
            }
            else {
                if (ch == "-") {
                    nTraits = nTraits + 1
                }
            }
        }
    }
    return (allValid);
}
function CritNomPrenom2(s) {
    var allValid = true;
    var sAcc = "àäâçéèëêìïîòöôùüûÀÄÂÉÈËÊÌÏÎÒÖÔÙÜÛ"
    for (i = 0; i < s.length; i++) {
        ch = s.charAt(i);
        if (!(ch >= "A" && ch <= "Z") && !(ch >= "a" && ch <= "z")) {
            if (sAcc.indexOf(ch) == -1) {
                allValid = false;
                break;
            }
        }
    }
    return (allValid);
}

function TraitUnion(s, t) {
    var msg = "";
    if (s.indexOf("-") == -1) {
        return (false);
    }
    {
        msg = "Les " + t + "s composés ne sont pas permis à moins qu'ils commencent par 'Saint-' et ne comprennent que 2 éléments (ex. Saint-Hilaire)" + s;
        alert(msg);
        return (true);
    }
}
//-----------------------------------------------------------------------------------------------------
function CourrielOK(s) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3} \])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
    return re.test(s);
}
//-----------------------------------------------------------------------------------------------------
function Trim(aString) {
    return aString.replace(/^\s+/, "").replace(/\s+$/, "");
}
//-----------------------------------------------------------------------------------------------------
function RTrim(sString) {
    return aString.replace(/\s+$/, "");
}
//-----------------------------------------------------------------------------------------------------
function LTrim(aString) {
    return aString.replace(/^\s+/, "");
}
//-----------------------------------------------------------------------------------------------------
function VerifieValeur(champs) {
    champs.value = Trim(champs.value)
    if (champs.value == "")
        return false;
    else
        return true;
}
//-----------------------------------------------------------------------------------------------------
function isSelectionner(champ) {
    if (parseInt(champ.value, 10) < 1)
        return false;
    else
        return true;
}
//-----------------------------------------------------------------------------------------------------
function NextFocus(F, strName, nbrElemSuivant) {
    for (var i = 0; i < F.length; i++)
        if (F[i].name == strName) {
        F[i + nbrElemSuivant].focus();
        break;
    }
}
//-----------------------------------------------------------------------------------------------------
function ValideDate(j, m, a) {
    j = parseInt(j, 10);
    if (isNaN(j))
        return false;
    m = parseInt(m, 10);
    if (isNaN(m))
        return false;
    a = parseInt(a, 10);
    if (isNaN(a))
        return false;

    if (j < 1 || m < 1 || m > 12 || a < 0)
        return false;
    else
        switch (m) {

        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12: if (j > 31)
                return false;
            break;
        case 4:
        case 6:
        case 9:
        case 11: if (j > 30)
                return false;
            break;
        case 2: if ((a % 100) == 0) {
                if ((a % 400) == 0) {
                    if (j > 29)
                        return false;
                }
                else
                    if (j > 28)
                    return false;
            }
            else
                if ((a % 4) == 0) {
                if (j > 29)
                    return false;
            }
            else
                if (j > 28)
                return false;
            break;
    }
    return true;
}
//-----------------------------------------------------------------------------------------------------
function ChangerClasseBtnIE6(Etat, IdBouton, Image) {
    var ms = navigator.appVersion.indexOf("MSIE")

    if ((ms > 0) && (parseInt(navigator.appVersion.substring(ms + 5, ms + 6)) < 7)) {
        if (Etat == "hover") {
            document.getElementById(IdBouton).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/Boutons/" + Image + "Hover.png',sizingMethod='crop')"
        }
        else {
            document.getElementById(IdBouton).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/Boutons/" + Image + ".png',sizingMethod='crop')"
        }
    }
}
//-----------------------------------------------------------------------------------------------------
function ChangerClasseBtnIE62(Etat, IdBouton, Image) {
    var ms = navigator.appVersion.indexOf("MSIE")

    if ((ms > 0) && (parseInt(navigator.appVersion.substring(ms + 5, ms + 6)) < 7)) {
        if (Etat == "hover") {
            document.getElementById(IdBouton).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/Boutons/" + Image + "O.gif',sizingMethod='crop')"
        }
        else {
            document.getElementById(IdBouton).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/Boutons/" + Image + ".gif',sizingMethod='crop')"
        }
    }
}
//-----------------------------------------------------------------------------------------------------
function HandleKeyPressEnter(e) {
    var element = e.target || e.srcElement;

    if ('TEXTAREA' != element.tagName && e.keyCode == 13)
        return true;
    else
        return false;
}