//Fonction de récupération des objets du documents
function get_objects()
{
    //Si IE
    if (boo_ie)
    {
        obj_window = top.window.document.getElementById(str_ifra_page).contentWindow;
        obj_page = obj_window.document;
        obj_footer = top.window.document.getElementById(str_ifra_footer).contentWindow.document;
    }
    //Sinon (FF, NN...)
    else
    {
        obj_window = top.window.document.getElementById(str_ifra_page);
        obj_page = obj_window.contentDocument;
        obj_footer = top.window.document.getElementById(str_ifra_footer).contentDocument;
    }
    obj_ifra = top.window.frames[str_ifra_page];
}


//Fonction de récupération de la page courante
function get_page()
{
    var str_url;
    var int_pos_page;
    var int_pos_ext;
    
    get_objects();
    str_url = obj_page.location.href;
    int_pos_page = str_url.lastIndexOf(str_page);
    int_pos_ext = str_url.lastIndexOf(str_ext_page);
    //Extrait le numéro de page de l'URL
    return eval(str_url.substring(int_pos_page + str_page.length, int_pos_ext) - 1);
}


//Fonction qui change le contenu d'un objet
//var_id    : id de l'objet
//str_html  : nouveau contenu html
function change_content(obj_document, var_id, str_html)
{
    if (typeof(var_id) != 'object')
    {
        if ((str_html != '') && obj_document.getElementById(var_id) != null) obj_document.getElementById(var_id).innerHTML = str_html;
    }
    else
    {
        if (str_html != '') var_id.innerHTML = str_html;
    }
}


//Fonction d'affichage du menu
//int_noeud  : index du noeud à afficher
//int_niveau : profondeur du noeud
function menu(int_noeud, int_niveau)
{
    //Boucle sur les noeuds
    for (var int_cnt = 0; int_cnt < int_pages; int_cnt++)
    {
        if ((arr_pere[int_cnt] == int_noeud) && (arr_titre[int_cnt] != -1))
        {
            document.write('<div class="level' + int_niveau + '" id="' + int_cnt + '" onclick="gopage(' + int_cnt + ');">');
            if (int_cnt == get_first(int_cnt))
            {
                document.write(str_filet);
            }
            document.write('<a href="#">');
            document.write(arr_titre[int_cnt]);
            document.write('</a></div>');
            menu(int_cnt, int_niveau + 1);
        }
    }
}


//Fonction d'affichage d'un noeud et ses fils
//int_noeud : index du noeud à afficher/cacher
function noeud(int_noeud)
{
    for (var int_cnt = 0; int_cnt < int_pages; int_cnt++)
    {
        if (arr_titre[int_cnt] != -1)
            {
            if ((arr_pere[int_cnt] == -1) || (arr_pere[int_cnt] == int_noeud) || (arr_pere[int_cnt] == arr_pere[int_noeud]))
            {
                top.window.document.getElementById(int_cnt).style.display = 'block';
            }
            else
            {
                top.window.document.getElementById(int_cnt).style.display = 'none';
            }
        }
    }
}


//Fonction qui retourne le premier frère d'un noeud
function get_first(int_noeud)
{
    if (arr_pere[int_noeud] == -1)
    {
        return int_noeud;
    }
    else
    {
        for (var int_cnt = 0; int_cnt < int_pages; int_cnt++)
        {
            if (arr_pere[int_cnt] == arr_pere[int_noeud])
            {
                return int_cnt;
            }
        }
    }
}


//Fonction qui retourne le chemin
//int_page : page dont le chemin est à retourner
function get_path(int_page)
{
    if (int_page != -1)
    {
        return get_path(arr_pere[int_page]) + ' ' + str_sep + ' ' + '<a href="#" onclick="gopage(' + int_page + ');">' + arr_titre[int_page] + '</a>';
    }
    else
    {
        return '';
    }
}


//Fonction qui formate et affiche le chemin
//int_page : page dont le chemin est à afficher
function path(int_page)
{
    if (arr_titre[int_page] == -1)
    {
        int_page = get_first(int_page);
    }
    var str_path = get_path(int_page);
    change_content(top.window.document, str_div_chemin, str_home + str_path);
}


//Fonction qui affiche l'image si elle existe
//int_page : index de la page dont l'image est à afficher
function img(int_page)
{
    var str_image;
    if (arr_img[int_page] != - 1)
    {
        str_image = '<img class="nomargin" src="' + str_dir_img + '/' + str_img + arr_img[int_page] + str_ext_img + '" alt="" border="0" width="204" height="195"/><br /><br />';
    }
    else
    {
        str_image = '&nbsp;';
    }
    change_content(top.window.document, str_div_img, str_image);
}


//Fonction qui affiche les liens
//int_page : index de la page dont les liens sont à afficher
function links(int_page)
{
    var str_links;
    
    //Si les liens existent, on construit le tableau
    if ((arr_link_nom[int_page] != -1) && (arr_link_nom[int_page] != -1))
    {
        str_links = str_link_libel + str_filet;
        str_links = str_links + '<div id="link_content">' + str_link_descr;
        for (var int_cnt = 0; int_cnt < arr_link_nom[int_page].length; int_cnt++)
        {
            str_links = str_links + str_puce + ' ' + '<a href="' + arr_link_url[int_page][int_cnt] + '" target="_blank">' + arr_link_nom[int_page][int_cnt] + '</a><br />';
        }
        str_links = str_links + '</div><div id="img_link_content">' + str_carte + '</div>' + str_filet;
    }
    else
    {
        str_links = '&nbsp;';
    }
    change_content(top.window.document, str_div_links, str_links);
}


//Fonction qui affiche les fichiers
//int_page : index de la page dont les fichiers sont à afficher
function files(int_page)
{
    var str_links;
    
    //Si les fichiers existent, on construit le tableau
    if ((arr_dl_nom[int_page] != -1) && (arr_dl_file[int_page] != -1))
    {
        str_links = str_file_libel + str_filet;
        str_links = str_links + '<div id="download_content">' + str_file_descr;
        for (var int_cnt = 0; int_cnt < arr_dl_nom[int_page].length; int_cnt++)
        {
            str_links = str_links + str_puce + ' ' + '<a href="' + str_dir_dl + '/' + arr_dl_file[int_page][int_cnt] + '" target="_blank">' + arr_dl_nom[int_page][int_cnt] + '</a><br />';
        }
        str_links = str_links + '</div>' + str_filet;
    }
    else
    {
        str_links = '&nbsp;';
    }
    change_content(top.window.document, str_div_dl, str_links);
}


//Fonction aller à la page
//int_page : index de la page à laquelle aller
function gopage(int_page)
{
    noeud(int_page);
    get_objects();
    
    //Test de l'emplacement actuel
    if (str_href.indexOf(str_dir_template) != -1 || str_href.indexOf(str_dir_page) != -1)
    {
        obj_page.location = '../' + str_dir_page + '/' + str_page + eval(int_page + 1) + str_ext_page;
    }
    else
    {
        obj_page.location = str_dir_page + '/' + str_page + eval(int_page + 1) + str_ext_page;
    }
    
    path(int_page);
    img(int_page);
    links(int_page);
    files(int_page);
    
    //Refresh footer pour script statistique
    obj_footer.location.reload();
}


//Fonction aller à la page + ancre
//int_page : index de la page à laquelle aller
//str_ancre : ancre
function gopage_ancre(int_page, str_ancre)
{
    noeud(int_page);
    get_objects();
    
    //Test de l'emplacement actuel
    if (str_href.indexOf(str_dir_template) != -1 || str_href.indexOf(str_dir_page) != -1)
    {
        obj_page.location = '../' + str_dir_page + '/' + str_page + eval(int_page + 1) + str_ext_page + '#' + str_ancre;
    }
    else
    {
        obj_page.location = str_dir_page + '/' + str_page + eval(int_page + 1) + str_ext_page + '#' + str_ancre;
    }
    
    path(int_page);
    img(int_page);
    links(int_page);
    files(int_page);
    
    //Refresh footer pour script statistique
    obj_footer.location.reload();
}


//Fonction page précédente
function gorew()
{
    var int_page = get_page();
    if (int_page > 0)
    {
        gopage(eval(int_page - 1));
    }
}


//Fonction page suivante
function gofwd()
{
    var int_page = get_page();
    if (int_page < int_pages - 1)
    {
        gopage(eval(int_page + 1));
    }
}


//Fonction d'initialisation
function init()
{
    menu(-1, 1);
    noeud(0);
    path(0);
}


//Fonction d'initialisation
function gohome()
{
    gopage(0);
    //Test de l'emplacement actuel
    if (str_href.indexOf(str_dir_template) != -1 || str_href.indexOf(str_dir_page) != -1)
    {
        obj_page.location = '../' + str_dir_page + '/' + str_page + 0 + str_ext_page;
    }
    else
    {
        obj_page.location = str_dir_page + '/' + str_page + 0 + str_ext_page;
    }
    change_content(top.window.document, str_div_chemin, str_home);
}


//Fonction trim
String.prototype.trim = function()
{
    return this.replace(/(?:^\s+|\s+$)/g, '');
}


//Fonction de lancement de la recherche
function lance_rech()
{
    get_objects();
    str_url_back = obj_page.location.href;
    obj_page.location = str_dir_template + '/' + str_page_rech;
}


//Fonction de recherche
function search()
{
    //Mot recherché
    var str_rech_0 = top.window.document.getElementById('txt_rech').value;
    var str_rech_1 = str_rech_0.toLowerCase().trim();
    var str_rech = ' ' + str_rech_1 + ' ';
    var obj_titre;
    var str_content_0 = '';
    var str_content = '';
    var str_html = '';
    var str_result = '';
    var str_entete = '';
    var int_pos_deb = 0;
    var int_pos_fin = 0;
    var int_offset = 25;
    var int_page;
    var str_event;
    
    //On balaye le tableau de recherche
    for (var int_cnt = 0; int_cnt <= int_pages; int_cnt++)
    {
        //Cas de la home
        if (int_cnt == 0)
        {
            int_page = 0;
            obj_titre = str_home_libel;
            str_event = 'gohome()';
        }
        else
        {
            int_page = int_cnt - 1;
            obj_titre = '';
            str_event = 'gopage(' + int_page + ')';
        }
    
        str_content_0 = rech[int_cnt];
        str_content = ' ' + str_content_0.toLowerCase().trim() + ' ';

        if (str_content.indexOf(str_rech, 0) != -1)
        {
            //Pour chaque occurence on construit le résultat
            if (obj_titre == '')
            {
                obj_titre = arr_titre[int_page];
            }
            if (obj_titre == -1)
            {
                obj_titre = arr_titre[get_first(int_page)];
            }
            
            str_entete = '<div onclick="' + str_event + ';" style="cursor:pointer; width:580;" class="title_004"><div style="background-color:#E9E9E9;">'+ obj_titre + '</div>';
            if (str_content.indexOf(str_rech, 0) >= int_offset)
            {
                int_pos_deb = str_content.indexOf(str_rech, 0) - int_offset;
            }
            else
            {
                int_pos_deb = 0;
            }
            int_pos_fin = str_content.indexOf(str_rech, 0) + str_rech.length + int_offset;
            str_result = '<i>"...' + str_content_0.substring(int_pos_deb, int_pos_fin) + '..."</i>';
            
            //On surligne le résultat
            str_result = str_result.toLowerCase().replace(str_rech_1, '<span style="background-color:#D6D7D2;">' + str_rech_1 + '</span>');
            str_result = str_result.toLowerCase().replace(str_rech_0, '<span style="background-color:#D6D7D2;">' + str_rech_0 + '</span>');
            str_html = str_html + str_entete + str_result + '</div><br/>';
        }
    }
    
    //Affiche le résultat de la recherche
    get_objects();
    change_content(obj_page, str_span_rech, '<i><strong>"<span style="background-color:#D6D7D2;">' + '&nbsp;' + str_rech_0 + '&nbsp;'+'</span>"</i></strong>');
    if (str_html != '')
    {
        change_content(obj_page, str_div_result, str_html);
    }
}


//Créé le cookie et affecte la valeur value au paramètre name
function createCookie(str_name, str_value, int_days)
{
    if (int_days)
    {
        var str_date = new Date();
        str_date.setTime(str_date.getTime() + (int_days * 24 * 60 * 60 * 1000));
        var str_expires = '; expires=' + str_date.toGMTString();
    }
    else
    {
        str_expires = '';
    }
    top.window.document.cookie = str_name + '=' + str_value + str_expires + '; path=/';
}


//Lit le cookie pour le paramètre name
function readCookie(str_name)
{
    var str_name_eq = str_name + '=';
    var arr_cookie = top.window.document.cookie.split(';');
    for(var int_cnt = 0; int_cnt < arr_cookie.length; int_cnt++)
    {
        var str_cookie = arr_cookie[int_cnt];
        while (str_cookie.charAt(0) == ' ')
        {
            str_cookie = str_cookie.substring(1, str_cookie.length);
        }
        if (str_cookie.indexOf(str_name_eq) == 0)
        {
            return str_cookie.substring(str_name_eq.length, str_cookie.length);
        }
    }
    return null;
}


//Ajoute la page courante au panier
function add_basket()
{
    var str_basket_old = readCookie(str_basket);
    var int_page = get_page();
    var str_page = str_basket_char + int_page + str_basket_char;
    var str_basket_new = '';

    if (obj_ifra.location.href.indexOf(str_dir_page) == -1)
    {
        return false;
    }
    
    if (str_basket_old == null)
    {
        str_basket_old = '';
    }
    
    if (str_basket_old.indexOf(str_page) != -1)
    {
        alert(str_basket_same);
    }
    else
    {
        //Stocke la page dans le cookie
        str_basket_new = str_basket_old + str_page;
        str_basket_new = str_basket_new.replace(str_basket_char + str_basket_char, str_basket_char);
        createCookie(str_basket, str_basket_new, int_jours);
        alert(str_basket_plus);
    }
}


//Fonction qui ouvre le panier
function show_basket()
{   
    get_objects();
    str_url_back = obj_page.location.href;
    obj_page.location = str_dir_template + '/' + str_page_basket;
}


//Fonction qui affiche le panier
function basket()
{
    var str_basket_content = readCookie(str_basket);
    var arr_basket;
    var str_html = '';
    var str_titre
    var str_event;

    if (str_basket_content == null)
    {
        str_basket_content = '';
    }

    if (str_basket_content != '')
    {
        arr_basket = str_basket_content.substr(1, str_basket_content.length - 2).split(str_basket_char);
        str_html = '<table id="table_basket">';
        
        //Création du tableau de pages
        for (var int_cnt = 0; int_cnt < arr_basket.length; int_cnt++)
        {
            //Cas de la home
            if (arr_basket[int_cnt] == -1)
            {
                str_event = 'gohome()';
                str_titre = str_home_libel;
            }
            else
            {
                str_event = 'gopage(' + arr_basket[int_cnt] + ')';
                str_titre = arr_titre[arr_basket[int_cnt]];
            }
            str_html = str_html + '<tr><td style="cursor:pointer;" class="title_004" onclick="' + str_event + ';">' + str_titre + '</td>';
            str_html = str_html + '<td style="cursor:pointer; text-align:right;" onclick="sup_basket(' + arr_basket[int_cnt] + ');"><img src="../' + str_dir_commun + '/' + str_dir_commun_img + '/' + str_img_delete + '" alt="" /></td></tr>';
            str_html = str_html + '<tr><td colspan="2"><div class="filet"></div></td></tr>';
        }
        str_html = str_html + '</table>';
    }
    else
    {
        str_html = str_empty;
    }
    get_objects();
    change_content(obj_page, str_div_basket, str_html);
}


//Fonction qui supprime une page du panier
function sup_basket(int_page)
{
    var str_basket_old = readCookie(str_basket);
    var str_page = str_basket_char + int_page + str_basket_char;
    var str_basket_new = '';

    if (str_basket_old == null)
    {
        str_basket_old = '';
    }
    
    if (str_basket_old != '')
    {
        //Supprime la page du cookie
        str_basket_new = str_basket_old.replace(str_page, str_basket_char);
        if (str_basket_new == str_basket_char)
        {
            str_basket_new = '';
        }
        createCookie(str_basket, str_basket_new, int_jours);
        basket();
    }
}


//Ouvre la page des téléchargements
function download()
{
    get_objects();
    obj_page.location = str_dir_template + '/' + str_page_dl;
}


//Imprime la page courante
function imprimer()
{
    get_objects();
    obj_ifra.focus();
    obj_ifra.print();
}


//Change le style du lefter (problème IE6) (PLUS UTILISE)
function set_lefter_ie6()
{
    var int_version;
    
    //Si IE
    if (boo_ie)
    {
        //On isole le numéro de version (6, 7...)
        int_version = str_agent.substr(str_agent.search(str_ie_name) + 5, 1);
        //Si IE6 ou inférieur on réduit le margin-left (css incompatible)
        if (int_version <= 6)
        {
            document.getElementById(str_div_lefter).style.marginLeft = '3px';
        }
    }
}


//Fonction retournant la position verticale absolue d'un élément
function getTop(obj_element)
{
    if (obj_element.offsetParent)
    {
        return(obj_element.offsetTop + getTop(obj_element.offsetParent));
    }
    else
    {
        return (obj_element.offsetTop);
    }
}


//Fonction qui retaille l'iframe
function resize_iframe()
{
    //Taille iframe
    var int_cnt;
    var obj_img;
    
    get_objects();
    for (int_cnt = 0; (obj_img = obj_page.getElementsByTagName('img')[int_cnt]); int_cnt++)
    {
        if (obj_img.getAttribute('src').indexOf('navFooter') != -1)
        {
            top.window.document.getElementById(str_ifra_page).style.height = getTop(obj_img) + obj_img.offsetHeight + 50;
            return false;
        }
    }
}

