﻿/* variables */
var MRsearchCatsTAB = null;
var MRsearchKeysTAB = null;
var NBLIENSMAX = 15;
var NBCARMIN = 3;
var AJAXINPROCESS = false;
var ISMOTEURV4 = true;

// tableau des caracteres spéciaux
var tab = new Array();
tab[0] = ['&quot;', '"']; tab[1] = ['&amp;', '&']; tab[2] = ['&euro;', '€']; tab[3] = ['&lt;', '‹']; tab[4] = ['&#140;', 'Œ'];
tab[5] = ['&#145;', '‘']; tab[6] = ['&#146;', '’']; tab[7] = ['&#147;', '“']; tab[8] = ['&#148;', '”']; tab[9] = ['&#150;', '–'];
tab[10] = ['&#151;', '—']; tab[11] = ['&#152;', '˜']; tab[12] = ['&gt;', '›']; tab[13] = ['&oelig;', 'œ']; tab[14] = ['&#158;', 'ž'];
tab[15] = ['&Yuml;', 'Ÿ']; tab[16] = ['&iexcl;', '¡']; tab[17] = ['&brvbar;', '¦']; tab[18] = ['&uml;', '¨']; tab[19] = ['&copy;', '©'];
tab[20] = ['&laquo;', '«']; tab[21] = ['&raquo;', '»']; tab[22] = ['&Agrave;', 'À']; tab[23] = ['&Aacute;', 'Á']; tab[24] = ['&Acirc;', 'Â'];
tab[25] = ['&Atilde;', 'Ã']; tab[26] = ['&Auml;', 'Ä']; tab[27] = ['&Aring;', 'Å']; tab[28] = ['&Aelig;', 'Æ']; tab[29] = ['&Ccedil;', 'Ç'];
tab[30] = ['&Egrave;', 'È']; tab[31] = ['&Eacute;', 'É']; tab[32] = ['&Ecirc;', 'Ê']; tab[33] = ['&Euml;', 'Ë']; tab[34] = ['&Igrave;', 'Ì'];
tab[35] = ['&Iacute;', 'Í']; tab[36] = ['&Icirc;', 'Î']; tab[37] = ['&Iuml;', 'Ï']; tab[38] = ['&eth;', 'Ð']; tab[39] = ['&Ntilde;', 'Ñ'];
tab[40] = ['&Ograve;', 'Ò']; tab[41] = ['&Oacute;', 'Ó']; tab[42] = ['&Ocirc;', 'Ô']; tab[43] = ['&Otilde;', 'Õ']; tab[44] = ['&Ouml;', 'Ö'];
tab[45] = ['&times;', '×']; tab[46] = ['&Oslash;', 'Ø']; tab[47] = ['&Ugrave;', 'Ù']; tab[48] = ['&Uacute;', 'Ú']; tab[49] = ['&Ucirc;', 'Û'];
tab[50] = ['&Uuml;', 'Ü']; tab[51] = ['&Yacute;', 'Ý']; tab[52] = ['&thorn;', 'Þ']; tab[53] = ['&szlig;', 'ß']; tab[54] = ['&agrave;', 'à'];
tab[55] = ['&aacute;', 'á']; tab[56] = ['&acirc;', 'â']; tab[57] = ['&atilde;', 'ã']; tab[58] = ['&auml;', 'ä']; tab[59] = ['&aring;', 'å'];
tab[60] = ['&aelig;', 'æ']; tab[61] = ['&ccedil;', 'ç']; tab[62] = ['&egrave;', 'è']; tab[63] = ['&eacute;', 'é']; tab[64] = ['&ecirc;', 'ê'];
tab[65] = ['&euml;', 'ë']; tab[66] = ['&igrave;', 'ì']; tab[67] = ['&iacute;', 'í']; tab[68] = ['&icirc;', 'î']; tab[69] = ['&iuml;', 'ï'];
tab[70] = ['&eth;', 'ð']; tab[71] = ['&ntilde;', 'ñ']; tab[72] = ['&ograve;', 'ò']; tab[73] = ['&oacute;', 'ó']; tab[74] = ['&ocirc;', 'ô'];
tab[75] = ['&otilde;', 'õ']; tab[76] = ['&ouml;', 'ö']; tab[77] = ['&divide;', '÷']; tab[78] = ['&oslash;', 'ø']; tab[79] = ['&ugrave;', 'ù'];
tab[80] = ['&uacute;', 'ú']; tab[81] = ['&ucirc;', 'û']; tab[82] = ['&uuml;', 'ü']; tab[83] = ['&yacute;', 'ý']; tab[84] = ['&thorn;', 'þ'];
tab[85] = ['&yuml;', 'ÿ'];
// fct qui convertit des car html en car normaux
function convertHTML2CAR(text) {
    var converted_text = text;
    for (var x = 0; x < tab.length; x++) {
        var reg = new RegExp(tab[x][0], "g");
        converted_text = converted_text.replace(reg, tab[x][1]);
    }
    return (converted_text);
}
// fct qui crée l'expression reguliere pour transformation des accents
function regExprAccent(search) {
    motRegExpr = '';
    var _noaccent = function(chaine) {
        tmp = chaine.replace(/[àâäa]/gi, 'àâäaA');
        tmp = tmp.replace(/[éèêëe]/gi, 'éèêëeE');
        tmp = tmp.replace(/[îïi]/gi, 'îïiI');
        tmp = tmp.replace(/[ôöo]/gi, 'ôöoO');
        tmp = tmp.replace(/[ùûüu]/gi, 'ùûüuU');
        return tmp;
    }
    for (var i = 0; i < search.length; i++) {
        carac = search.substring(i, i + 1);
        caracReplace = _noaccent(carac);
        if (carac != caracReplace) { motRegExpr += '[' + carac + caracReplace + ']'; }
        else { motRegExpr += caracReplace; }
    }
    return motRegExpr;
}
/*############################################################################################################*/
// fonction de recherche des mots clés en base ajax
function searchByTexte(txt) {
    if (txt.length < NBCARMIN) { MRsearchKeysTAB = null; document.getElementById("MRPanelMotsCles").style.display = 'none'; return; }
    if (MRsearchKeysTAB == null && !AJAXINPROCESS) {
        AJAXINPROCESS = true;
        franceloisirs.Composants.VLWebSevice.SearchByKeyWords(MRSITE, txt, !ISMOTEURV4, MRDISTANCE, function(value) {
            eval(value); searchInfo(MRsearchKeysTAB, txt);
            AJAXINPROCESS = false;
        });
    }
    else { searchInfo(MRsearchKeysTAB, txt); }
}
// fct de recherche
function searchInfo(MRsearchKeysTAB, searchTxt) {

    var html = "";
    if (MRsearchKeysTAB == null || searchTxt.length == 0) return;
    var tSearch = searchTxt.split(/ /);
    for (var i = 0; i < tSearch.length; i++) {
        if (tSearch[i].length >= NBCARMIN) {
            searchTxt = tSearch[i];
            searchTxt = regExprAccent(searchTxt);
            tSearch[i] = searchTxt;
        }
        else tSearch[i] = '';
    }

    // on parcours les catégories
    for (var c = 0; c < MRsearchKeysTAB.length; c++) {
        var cat = MRsearchKeysTAB[c];
        if (cat.length == 0) continue;
        var catnom = MRsearchCatsTAB[c];
        var ok = false;

        // on draw le titre
        var htmlTitre = '<div class="MRPanel">';
        htmlTitre += '<div id="MRTitre_' + c + '" class="MRTitre">' + catnom;

        // on draw les items
        var htmlItems = '</div><div id="MRItems_' + c + '" class="MRItems">';
        var cpt = 1;
        for (var i = 0; i < cat.length; i++) {
            var item = cat[i];
            var texte = item[0].replace('\\\'', '\'');
            var texteBefore = texte;
            var url = item[1];
            var texteSearch = convertHTML2CAR(texte);
            var expReg = new RegExp(searchTxt, 'gi');
            if (expReg.test(texteSearch)) {
                ok = true;
                texte = surligneText(texte, tSearch);
                if (cpt == NBLIENSMAX + 1) htmlItems += '<div id="MRItemsHidden_' + c + '" style="display:none">';
                texteBefore = texteBefore.replace(/'/g, "\\'");
                htmlItems += '<a onclick="afficheLoadingMoteur(); fillSearch(\'' + texteBefore + '\');" class="item" href="' + url + '">' + texte + '</a><br/>';
                cpt++;
            }
        }
        if (cpt > NBLIENSMAX) htmlItems += '</div>';
        htmlItems += '</div>';
        // on draw la fin
        var htmlEnd = '</div>';

        // si pas ok on continue
        if (!ok) continue;

        // on draw le html
        html += htmlTitre;
        if (cpt > NBLIENSMAX + 1) {
            html += '<div class="MRLien">';
            html += '<a id="MRLien_' + c + '" href="javascript:showMRItems(' + c + ', \'' + catnom + '\');">[+] afficher toutes les ' + catnom + '</a>';
            html += '</div>';
        }

        html += htmlItems;
        html += htmlEnd;
    }
    if (html.length <= 0)
        html = '<div class="MRPanel">' + ERRORMESSAGE + '</div>';

    document.getElementById("MRPanelMotsCles").innerHTML = html;
    document.getElementById("MRPanelMotsCles").style.display = '';
};
// fct d'affichage et de masquage des bloc items
function showMRItems(idCat, nomCat) {
    // on show le bloc
    document.getElementById("MRItemsHidden_" + idCat).style.display = "";
    document.getElementById("MRLien_" + idCat).href = 'javascript:hideMRItems(' + idCat + ', \'' + nomCat + '\')';
    document.getElementById("MRLien_" + idCat).innerHTML = '[-] réduire les ' + nomCat;
}
function hideMRItems(idCat, nomCat) {
    // on show le bloc
    document.getElementById("MRItemsHidden_" + idCat).style.display = "none";
    document.getElementById("MRLien_" + idCat).href = 'javascript:showMRItems(' + idCat + ', \'' + nomCat + '\')';
    document.getElementById("MRLien_" + idCat).innerHTML = '[+] afficher toutes les ' + nomCat;
}

// fct de surlignage du texte en fct de la recherche
function surligneText(texte, tSearch) {
    for (var i = 0; i < tSearch.length; i++) {
        if (tSearch[i].length <= NBCARMIN) continue;
        var expReg = new RegExp("(" + tSearch[i] + ")", 'gi');
        texte = texte.replace(expReg, '<b>$1</b>');
    }
    return texte;
}
// fct de chargement des items des ddl
function ItemsLoaded(combo, eventArqs) {
    if (combo.get_items().get_count() > 0) { combo.set_text(combo.get_items().getItem(0).get_text()); combo.get_items().getItem(0).highlight(); }
    combo.showDropDown();
}
// fonction d'ouverture du layer des resultats
function openMRItems(valeur) {
    if (document.getElementById("MRPanelMotsCles").style.display == 'none') {
        if (valeur.length > 0) { searchByTexte(valeur); }
    }
}
// fonction de remplissage du textbox avec la valeur
function fillSearch(txt) {
    if (txt.length > 0) document.getElementById(INPUTID).value = txt;
}
// fonction de fermeture du layer des resultats
function closeMRItems() {
    if (document.getElementById("MRPanelMotsCles").style.display != 'none') {
        document.getElementById("MRPanelMotsCles").style.display = 'none';
    }
}
var closeMR = {
    connect: function(oElem, sEvType, fn, bCapture) {
        return document.addEventListener ?
			oElem.addEventListener(sEvType, fn, bCapture) :
			oElem.attachEvent ?
				oElem.attachEvent('on' + sEvType, fn) :
				false;
    },
    cancelClick: function(e) {
        if (e && e.stopPropagation && e.preventDefault) {
            e.stopPropagation();
            e.preventDefault();
        }
        else if (e && window.event) {
            window.event.cancelBubble = true;
            window.event.returnValue = false;
        }
        return false;
    },
    quelId: function(e) {
        e = e || window.event;
        var el = e.target || e.srcElement;
        if (el.nodeType == 3) el = el.parentNode;
        if (document.getElementById("MRPanelMotsCles").style.display != 'none') {
            if (el.id.indexOf("MR") >= 0) return;
            closeMRItems();
        }
    }
};
closeMR.connect(document, 'click', closeMR.quelId, false);
