/*****************************
SCRIPT WEB2I
*****************************/

function show_hide_comments(plan_reponse_zone){

    if (document.getElementById(plan_reponse_zone).style.display == 'none'){
        document.getElementById(plan_reponse_zone).style.display = 'block';
        document.getElementById('bt-'+plan_reponse_zone).style.display = 'block';
        document.getElementById('repondre_annuler-'+plan_reponse_zone).innerHTML = 'annuler';
    }
    else{
        document.getElementById(plan_reponse_zone).style.display = 'none';
        document.getElementById('bt-'+plan_reponse_zone).style.display = 'none';
        document.getElementById(plan_reponse_zone).value = '';
        document.getElementById('repondre_annuler-'+plan_reponse_zone).innerHTML = 'répondre';
    }
}


function show_hide(zone){
    if (zone == 'evaluations'){
        if (document.getElementById('autres_plans_title'))
        document.getElementById('autres_plans_title').style.display = 'none';
        if (document.getElementById('autres_plans'))
        document.getElementById('autres_plans').style.display = 'none';
        if (document.getElementById('submenu'))
        document.getElementById('submenu').style.display = 'block';
        if (document.getElementById('les_plans'))
        document.getElementById('les_plans').style.display = 'block';

        document.getElementById('bt_evaluations').src = '/img/mes-evaluations.png';
        document.getElementById('bt_membres').src = '/img/autres-plans-des-membres.png';

    }
    else {
        if (document.getElementById('autres_plans_title'))
        document.getElementById('autres_plans_title').style.display = 'block';
        if (document.getElementById('autres_plans'))
        document.getElementById('autres_plans').style.display = 'block';
        if (document.getElementById('submenu'))
        document.getElementById('submenu').style.display = 'none';
        if (document.getElementById('les_plans'))
        document.getElementById('les_plans').style.display = 'none';

        document.getElementById('bt_evaluations').src = '/img/mes-evaluations-white.png';
        document.getElementById('bt_membres').src = '/img/autres-plans-des-membres-red.png';
    }
}

function $(id) {
    return document.getElementById(id);
}
function $F(id) {
    return document.getElementById(id).value;
}

function addslashes(str) {
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\0/g,'\\0');
    return str;
}
function htmlspecialchars(ch) {
    ch = ch.replace(/&/g,"&amp;")
    ch = ch.replace(/\"/g,"&quot;")
    ch = ch.replace(/\'/g,"&#039;")
    ch = ch.replace(/</g,"&lt;")
    ch = ch.replace(/>/g,"&gt;")
    return ch
}
function stripslashes(str) {
    str=str.replace(/\\'/g,'\'');
    str=str.replace(/\\"/g,'"');
    str=str.replace(/\\\\/g,'\\');
    str=str.replace(/\\0/g,'\0');
    return str;
}

/*******
descr: change l'évaluation pour l'ajout d'un plan
*******/
function changeEval(val)
{
    document.getElementById('eval_pos').className='';
    document.getElementById('eval_neu').className='';
    document.getElementById('eval_neg').className='';

    document.getElementById('eval_'+val).className='select_eval';

    $('plan_value').value = val;
}

function nl2br(str) {
    return str.replace(/\n/g, '<br />');
}

function trim(string)
{
    return string.replace(/(^\s*)|(\s*$)/g, '');
}
/*******
descr:Fonction qui permet d'ajouter des champs textes à la volée
param: 	1- l'id du champ hidden sur nb total
2- l'id du champ div vide pour accueillir les nouveaux champs
3- class du div de la ligne du formulaire
4- intitulé du label
5- champ name de l'input
********/
function addInputText (idNb, idConteneur, ligneClass, label, name) {
    var nb = parseInt($F(idNb));
    ++nb;

    var Conteneur = $(idConteneur);
    var dDiv = document.createElement("div");
    dDiv.setAttribute("class", ligneClass);
    dDiv.setAttribute("className", ligneClass);  /* redondance pour pallier bug IE */
    Conteneur.appendChild(dDiv);

    /*	contenu  = "<div class='inscription_champ_form_label'>"+label+" "+nb+"</div>";*/
    contenu  = "<div class='"+ligneClass+"_label'>"+label+" "+nb+"</div>";
    contenu += "<div class='"+ligneClass+"_input'><input type='text' id='"+name+"_"+nb+"' name='"+name+"["+nb+"]'></div>";

    dDiv.innerHTML = contenu;

    $(idNb).value = nb;
}


/*******
descr: Cache le div passé en parametre
param: id du div
********/
function Hide(div){
    document.getElementById(div).style.display='none';
}

/*******
descr: Affiche le div passé en parametre
param: id du div
********/
function Show(div){
    document.getElementById(div).style.display='block';
}

/*******
descr: Renvoie le code de la touche appuyer
param: event
********/
function getkey(e)
{
    if (window.event)
    return window.event.keyCode;
    else if (e)
    return e.which;
    else
    return null;
}

/*******
descr: Fonction qui limites les caractères saisies dans un input
param: event, liste de caractères autorisé
********/
function goodchars(e, goods)
{
    var key, keychar;
    key = getkey(e);
    if (key == null) return true;

    // get character
    keychar = String.fromCharCode(key);
    keychar = keychar.toLowerCase();
    goods = goods.toLowerCase();

    // check goodkeys
    if (goods.indexOf(keychar) != -1)
    return true;

    // control keys
    if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
    return true;

    // else return false
    return false;
}


/*******
descr: Récupère la hauteur de l'écran
param: ---
********/
function getWindowHeight() {
    var windowHeight = 0;
    if (document.documentElement && document.documentElement.clientHeight) {
        windowHeight = document.documentElement.clientHeight;
    }
    else if (typeof(window.innerHeight) == 'number') {
        windowHeight = window.innerHeight;
    }
    else if (document.body && document.body.clientHeight) {
        windowHeight = document.body.clientHeight;
    }
    return windowHeight;
}

/*******
descr: Retour la hauteur 1/3 de l'écran
param: ---
********/
function getTop()
{
    return document.documentElement.scrollTop + Math.floor(getWindowHeight()/3);
}

/*******
descr: Div alerte
param: le texte à afficher
********/
function showAlerte(id, txt)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id+'_middle').innerHTML = nl2br(txt);
    document.getElementById(id).style.display = "block";
}
function closeAlerte(id)
{
    document.getElementById(id).style.display = "none";
}

function showConfirmation(id, txt, action)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id + '_message').innerHTML = nl2br(txt);
    document.getElementById(id + '_ok').href = action;
    document.getElementById(id).style.display = "block";
}

function showPrompt(id, txt, action)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id + '_message').innerHTML = nl2br(txt);
    document.forms[id + '_form'].action = action;
    document.getElementById(id).style.display = "block";
}

function write_cookie(nom, valeur, expires) {
    document.cookie=nom+"="+escape(valeur)+
    ((expires==null) ? "" : ("; expires="+expires.toGMTString()));
}

function getCookieVal(offset)
{
    var endstr=document.cookie.indexOf (";", offset);
    if (endstr==-1) endstr=document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}
function read_cookie(nom)
{
    var arg=nom+"=";
    var alen=arg.length;
    var clen=document.cookie.length;
    var i=0;
    while (i<clen)
    {
        var j=i+alen;
        if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
        i=document.cookie.indexOf(" ",i)+1;
        if (i==0) break;
    }
    return null;
}

function showDisclaimer(){
    accept_disclamer = read_cookie("accept_disclamer");
    if(accept_disclamer != "yes")
    {
        var navigateur = navigator.appName;
        document.getElementById('disclaimer').style.visibility = 'visible';
        if(navigateur=='Microsoft Internet Explorer'){
            document.getElementById('disclaimer').style.filter='alpha(opacity=90)';
        } else {
            document.getElementById('disclaimer').style.opacity='0.9';
        }
    }
}

function acceptDisclaimer(){
    document.getElementById('disclaimer').style.visibility = 'hidden';
    write_cookie("accept_disclamer", "yes");
}

/**************************************/
/**************************************/
/**************************************/

function update_content(url, timer)
{

    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", url, false);
        AJAX.send(null);
        var doc =  AJAX.responseXML;
    } else {
        return false;
    }
    var racine = doc.getElementsByTagName("content")[0];
    for (var i=0; i<racine.childNodes.length; i++) {
        child = racine.childNodes[i];
        if (child.nodeName == "block") {
            $(child.attributes[0].nodeValue).innerHTML = child.firstChild.data;
        }
    }

    if (timer>0) {
        setTimeout("update_content('"+url+"', "+timer+")", timer);
    }

}

function update_block_escortweek(month, year, step) // step vaut previous ou next
{

    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", "/index.php?c=escort_week&month=" + month + "&year=" + year + "&step=" + step, false);
        AJAX.send(null);
        var doc =  AJAX.responseXML;
    } else {
        return false;
    }

    $('semaines').innerHTML = ''; // vider le bloc des semaines

    var racine = doc.getElementsByTagName("response")[0];
    for (var i=0; i<racine.childNodes.length; i++) {
        child = racine.childNodes[i];
        switch(child.nodeName) {
            case "month" :
            var new_month=child.firstChild.data;
            break;
            case "month_str" :
            var new_month_str=child.firstChild.data;
            break;
            case "year" :
            var new_year=child.firstChild.data;
            break;
            case "week" :

            switch(child.getAttribute('status')) {

                case 'passed' :
                $('semaines').innerHTML += '<div class="bold past"><div class="escortdelasemaine-week-number arial14">Semaine ' + child.getAttribute('numweek') + '</div><div class="escortdelasemaine-week-dates" style="float: left; height: 30px; line-height: 30px;">' + child.firstChild.data + '</div><div class="clearboth"></div></div>'
                break;

                case 'booked' :
                $('semaines').innerHTML += '<div class="bold red"> <div class="escortdelasemaine-week-number arial14">Semaine ' + child.getAttribute('numweek') + '</div> <div class="escortdelasemaine-week-dates" style="float: left; height: 30px; line-height: 30px;">' + child.firstChild.data + '</div> <div class="clearboth"></div> </div>';
                break;

                case 'free' :
                $('semaines').innerHTML += '<div class="bold"> <div class="escortdelasemaine-week-number arial14"><a href="#" class="green" onclick="showConfirmation(\'confirmation\', \'Vous avez choisi la semaine ' + child.getAttribute('numweek') + ' (' + child.firstChild.data + ') pour apparaître comme Escort de la Semaine. Confirmer ?\', \'' + child.getAttribute('link') + '\'); return false;">Semaine ' + child.getAttribute('numweek') + '</a></div> <div class="escortdelasemaine-week-dates" style="float: left; height: 30px; line-height: 30px;">' + child.firstChild.data + '</div> <div class="clearboth"></div> </div>';
                break;

            }


            break;
        }
    }

    $('escortweek_month').innerHTML = new_month_str + ' ' + new_year;

    $('previous_month').onclick = function() {
        update_block_escortweek(new_month,new_year,'previous');
        return false;
    };
    $('next_month').onclick  = function() {
        update_block_escortweek(new_month,new_year,'next');
        return false;
    };

}

/**************************************/
/**************************************/
/**************************************/
function ajax_fieldvalue_exist_control(classname, field, value) {
    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", 'index.php?c=fieldvalue&class='+classname+'&field='+field+'&value='+value, false);
        AJAX.send(null);
        var doc =  AJAX.responseXML;
    } else {
        return false;
    }
    var racine = doc.getElementsByTagName("response")[0];
    for (var i=0; i<racine.childNodes.length; i++) {
        child = racine.childNodes[i];
        if (child.nodeName == "code") {
            var code = child.firstChild.data;
        }
    }
    if (code == 0) {
        return true;
    }
    else if (code == 1) {
        return false;
    }
}

function check_text(value) {
    if (!trim(value).match(/.+/i)) {
        return false;
    }
    return true;
}

function check_format(format, value) {
    if (!trim(value).match(format)) {
        return false;
    }
    return true;
}

function check_select(field) {
    if ((field.options[field.options.selectedIndex].value != '') && (field.options[field.options.selectedIndex].value != 0)) {
        return true
    }
    return false;
}

function check_checkbox(field) {
    if (field.checked) {
        return true
    }
    return false;
}

function check_image(value) {
    if (!trim(value).match(/(gif|jpeg|jpg|png$)|(^$)/i)) {
        return false;
    }
    return true;
}

function check_confirm(value1, value2) {
    if ((trim(value1)!='') && (value1 != value2)) {
        return false;
    }
    return true;
}

function select_all(field) {
    for(var i=0; i<field.options.length; i++) {
        field.options[i].selected=true;
    }
}

function checkForm(formId) {
    var error = false;
    var error_str = 'Merci de corriger les champs suivants :\n';
    var CheckId;
    var formId;

    switch (arguments.length) {
        case 1 :
        CheckId = arguments[0];
        formId  = arguments[0];
        break;
        case 2 :
        formId = arguments[0];
        CheckId = arguments[1];
        break;
        default :
        exit;
        break;
    }

    with (document.forms[formId]) {
        switch (CheckId) {
            case 'rappel' : /* inscription d'un membre */
            var check_tab = new Array(
            new Array('callback', 'check_format', 'Votre numéro de téléphone', /^[0-9]+$/ )
            );
            break;
            case 'contact' : /* inscription d'un membre */
            var check_tab = new Array(
            new Array ('contact_nom','check_text', 'Nom' ),
            new Array ('contact_prenom','check_text', 'Prénom' ),
            new Array ('contact_email','check_format', 'Email', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array ('contact_telephone','check_text', 'Téléphone' ),
            new Array ('contact_subject','check_text', 'Sujet' ),
            new Array ('contact_content','check_text', 'Message' )
            );
            var combos_tab = new Array();
            break;
            case 'membre_inscription' : /* inscription d'un membre */
            var check_tab = new Array(
            new Array('member_nom', 'check_text', 'Votre nom'),
            new Array('member_prenom', 'check_text', 'Votre prénom'),
            new Array('member_ville', 'check_text', 'Votre ville de résidence'),
            new Array('member_telephone', 'check_text', 'Votre numéro de téléphone'),
            new Array('member_datenaissance','check_format', 'Date de naissance au format jj/mm/aaaa', /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/ ),
            new Array('member_pseudo','check_format', 'Votre pseudo doit etre compris entre 4 et 13 caratères', /^[-a-zA-Z0-9._]{4,13}$/),
            new Array('member_pseudo','ajax_fieldvalue_exist_control', 'Pseudo <b>{value}</b> déjà utilisé', 'member', 'member_pseudo' ),
            new Array('member_pseudo','ajax_fieldvalue_exist_control', 'Pseudo <b>{value}</b> déjà utilisé', 'escort', 'escort_pseudo' ),
            new Array('member_email','check_format', 'Email mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('member_email','check_confirm', 'Email et email de confirmation sont différent' ),
            new Array('member_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'member', 'member_email' ),
            new Array('member_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'escort', 'escort_email' ),
            new Array('member_motdepasse','check_text', 'Votre mot de passe' ),
            new Array('member_motdepasse','check_confirm', 'Mot de passe et confirmation de mot de passe sont différent' ),
            new Array('accept_cgv','check_checkbox', 'Vous devez accepter les conditions générales d\'utlisation' )
            );
            break;

            case 'membre_modification' : /* modification d'un membre */

            var check_tab = new Array(
            new Array('member_nom', 'check_text', 'Votre nom'),
            new Array('member_prenom', 'check_text', 'Votre prénom'),
            new Array('member_ville', 'check_text', 'Votre ville de résidence'),
            new Array('member_telephone', 'check_text', 'Votre numéro de téléphone'),
            new Array('member_datenaissance','check_format', 'Date de naissance au format jj/mm/aaaa', /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/ ),
            new Array('member_pseudo','check_format', 'Votre pseudo doit etre compris entre 4 et 13 caratères', /^[-a-zA-Z0-9._]{4,13}$/),
            new Array('member_pseudo','ajax_fieldvalue_exist_control', 'Pseudo <b>{value}</b> déjà utilisé', 'member', 'member_pseudo' ),
            new Array('member_pseudo','ajax_fieldvalue_exist_control', 'Pseudo <b>{value}</b> déjà utilisé', 'escort', 'escort_pseudo' ),
            new Array('member_email','check_format', 'Email mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('member_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'member', 'member_email' ),
            new Array('member_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'escort', 'escort_email' ),
            new Array('member_motdepasse','check_text', 'Votre mot de passe' ),
            new Array('member_motdepasse','check_confirm', 'Mot de passe et confirmation de mot de passe sont différent' )
            );
            break;

            case 'escort_inscription' : /* inscription d'une escorte */
            var check_tab = new Array(
            new Array('escort_nom', 'check_text', 'Votre nom'),
            new Array('escort_prenom', 'check_text', 'Votre prénom'),
            new Array('escort_ville', 'check_text', 'Votre ville de résidence'),
            new Array('escort_telpro', 'check_text', 'Votre numéro de téléphone'),
            new Array('escort_datenaissance','check_format', 'Date de naissance au format jj/mm/aaaa', /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/ ),
            new Array('escort_pseudo','check_format', 'Votre pseudo doit etre compris entre 4 et 13 caratères', /^[-a-zA-Z0-9._]{4,13}$/),
            new Array('escort_pseudo','ajax_fieldvalue_exist_control', 'Pseudo <b>{value}</b> déjà utilisé', 'escort', 'escort_pseudo' ),
            new Array('escort_pseudo','ajax_fieldvalue_exist_control', 'Pseudo <b>{value}</b> déjà utilisé', 'member', 'member_pseudo' ),
            new Array('escort_email','check_format', 'Email mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('escort_email','check_confirm', 'Email et email de confirmation sont différent' ),
            new Array('escort_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'escort', 'escort_email' ),
            new Array('escort_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'member', 'member_email' ),
            new Array('escort_motdepasse','check_text', 'Votre mot de passe' ),
            new Array('escort_motdepasse','check_confirm', 'Mot de passe et confirmation de mot de passe sont différent' )
            );
            break;
            case 'escort_modification' :
            var check_tab = new Array(
            new Array('escort_codepostal', 'check_text', 'Code postal'),
            new Array ('pays', 'check_select', 'Votre pays'),
            new Array ('types', 'check_select', 'Votre type'),
            new Array('escort_telpro', 'check_text', 'Votre téléphone professionnel'),
            new Array('escort_email','check_format', 'Email mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('escort_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'escort', 'escort_email' ),
            new Array('escort_email','ajax_fieldvalue_exist_control', 'Email <b>{value}</b> déjà utilisé', 'member', 'member_email' ),
            new Array('1h', 'check_text', 'Le tarif 1h est obligatoire'),
            new Array('escort_motdepasse','check_confirm', 'Mot de passe et confirmation de mot de passe sont différent' )
            );
            break;
            case 'escort_inscription_2' : /* inscription d'une escorte */
            var check_tab = new Array(
            new Array('escort_codepostal', 'check_text', 'Code postal'),
            new Array ('pays', 'check_select', 'Votre pays'),
            new Array ('types', 'check_select', 'Votre type'),
            new Array('escort_telperso', 'check_text', 'Votre téléphone perso'),
            new Array('escort_tarif1h', 'check_text', 'Le tarif 1h est obligatoire')
            );
            break;
        }
        for (var i=0; i<check_tab.length; i++) {
            switch(check_tab[i][1]) {
                case 'ajax_fieldvalue_exist_control' :
                if (!ajax_fieldvalue_exist_control(check_tab[i][3], check_tab[i][4], elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2].replace('{value}', elements[check_tab[i][0]].value)+'\n';
                }
                break;
                case 'check_text' :
                if (!check_text(elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_format' :
                if (!check_format(check_tab[i][3], elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_select' :
                if (!check_select(elements[check_tab[i][0]])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_checkbox' :
                if (!check_checkbox(elements[check_tab[i][0]])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_image' :
                if (!check_image(elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_confirm' :
                if (!check_confirm(elements[check_tab[i][0]].value, elements[check_tab[i][0]+'_confirm'].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_format_mult' :
                var error_loc = true;
                for (var j=0;j<check_tab[i][0].length; j++) {
                    if (check_format(check_tab[i][3], elements[check_tab[i][0][j]].value)) {
                        error_loc = false;
                    }
                }
                if (error_loc) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
            }
        }
    }

    if(error) {
        showAlerte("alerte", error_str);
        return false;
    }
    return true;

}

/*******
descr: Fonction qui ouvre les liens de classe .blank dans une nouvelle fenêtre
param: ---
********/
function open_ext_link()
{
    var liens = document.getElementsByTagName('a');
    // On récupère tous les liens (<a>) du document dans une variable (un array), ici liens.
    // Une boucle qui parcourt le tableau (array) liens du début à  la fin.
    for (var i = 0 ; i < liens.length ; ++i)  {
        // Si les liens ont un nom de class égal à  lien_ext, alors on agit.
        if (liens[i].className.match(/.*blank.*/))  {
            //liens[i].title = 'S\'ouvre dans une nouvelle fenêtre';
            // Au clique de la souris.
            liens[i].onclick = function()  {
                window.open(this.href);
                return false; // On ouvre une nouvelle page ayant pour URL le href du lien cliqué et on inhibe le lien réel.
            };
        }
    }
}
window.onload = open_ext_link;
// Au chargement de la page, on appelle la fonction.