
//http://jquery-howto.blogspot.com/2008/12/how-to-check-if-checkbox-is-checked.html
//http://www.quirksmode.org/dom/importxml.html
//http://unicode.coeurlumiere.com/

var sSearchFile = "search.xml";
var xmlDoc;

function SearchAll(sLang) {
    //alert(sLang);
    window.location.href = "search.html?search=" + $("#txtSearchForSmall").val();
}

function SearchAllOnLoad(sLang) {
    //alert(sLang);
    var sSearch = getURLParameter('search');
    if (sSearch != "") {
        //alert(sSearch);
        //document.forms['form_search'].txtSearchFor.value = sSearch;
        $("#txtSearchFor").val(sSearch);

        var eResults = document.getElementById("search_results");

        if (eResults != null) {
            //alert("Searching...");
            eResults.innerHTML = ReadXML(sSearch, sLang, true, true, true, true, false);
        }
    }
}

function Search(sLang) {
    //alert("Searching...");

    //var lblMessage = $("#lblMessage");
    var lblMessage = document.getElementById("lblMessage");
    ;
    var sSearchFor = $("#txtSearchFor").val();

    //alert(sSearchFor);

    if (sSearchFor == "") {
        //alert("empty string");
        if (sLang == "fr") { lblMessage.innerHTML = "<p>Inscrire le texte &#xE0; rechercher...</p>"; }
        else { lblMessage.innerHTML = "<p>Type the text to seach for...</p>"; }
        return false;
    }

    var bTitle = $('#chkTitle').attr('checked');
    var bDescription = $('#chkDescription').attr('checked');
    var bKeywords = $('#chkKeywords').attr('checked');
    var bBody = $('#chkBody').attr('checked');
    var bMatchCase = $('#chkMatchCase').attr('checked');

    //alert(bTitle + ", " + bDescription + ", " + bKeywords + ", " + bBody + ", " + bMatchCase);

    var eResults = document.getElementById("search_results");
    if (eResults != null) {
        //alert("Searching...");
        eResults.innerHTML = ReadXML(sSearchFor, sLang, bTitle, bDescription, bKeywords, bBody, bMatchCase);
    }
}

function ReadXML(sSearchFor, sLang, bTitle, bDescription, bKeywords, bBody, bMatchCase) {
    //function ReadXML(sLang) {
    //alert("Reading...");

    //var lblMessage = $("#lblMessage");
    var lblMessage = document.getElementById("lblMessage");

    var eResults = $("#search_results");
    //var eResults = document.getElementById("search_results");

    var sMessage;

    //alert("Searching for " + sSearchFor);

    xmlDoc = Sarissa.getDomDocument();
    xmlDoc.async = false;
    xmlDoc.load(sSearchFile);

    if (xmlDoc.parseError.errorCode != 0) {
        if (sLang == "fr") { lblMessage.innerHTML = "<p>Une erreur est survenue lors du chargement du fichier XML.</p>"; }
        else { lblMessage.innerHTML = "<p>There was an error loading the XML file.</p>"; }
    }

    if (bMatchCase == false) {
        //alert("bMatchCase == false");
        sSearchFor = sSearchFor.toLowerCase();
    }

    //alert("Searching for " + sSearchFor);

    if (sLang == "fr") { lblMessage.innerHTML = "<p>Recherche de : \"" + sSearchFor + "\"...</p>"; }
    else { lblMessage.innerHTML = "<p>Searching for: \"" + sSearchFor + "\"...</p>"; }

    if (!xmlDoc.documentElement.hasChildNodes()) {
        if (sLang == "fr") { lblMessage.innerHTML = "<p>Ce document est vide.</p>"; }
        else { lblMessage.innerHTML = "<p>This document is empty.</p>"; }
    }
    else {

        var bFlag = false;
        var eFile;
        var eTitle;
        var eDescription;
        var eKeywords;
        var eBody;

        var sFile = "";
        var sTitle = "";
        var sDescription = "";
        var sKeywords;
        var sBody = "";

        var sMarkup = "";
        var iTopicCount = 0;

        //var nodestables = xmldoc.selectNodes("//body/table[@class='cele']");
        //var topics = xmldoc.selectNodes("//topics/topic[contains(text,'" + sSearchFor + "')]");
        var topics = xmlDoc.getElementsByTagName("topic");

        //alert(topics.length);

        if (topics.length > 0) {
            //alert(topics.length);
            //search all topics
            for (var i = 0; i < topics.length; i++) {
                //search topic
                bFlag = false;
                eFile = topics[i].getElementsByTagName("file")[0];
                eTitle = topics[i].getElementsByTagName("title")[0];
                eDescription = topics[i].getElementsByTagName("description")[0];
                eKeywords = topics[i].getElementsByTagName("keywords")[0];
                eBody = topics[i].getElementsByTagName("body")[0];

                //alert(eTitle.text);

                if (bTitle) {
                    if (bMatchCase == false) { sTitle = eTitle.text.toLowerCase(); }
                    else { sTitle = eTitle.text; }
                    //alert(sTitle + ", " + sSearchFor)
                    if (sTitle.indexOf(sSearchFor) > -1) { bFlag = true; }
                }
                if (bDescription) {
                    if (bMatchCase == false) { sDescription = eDescription.text.toLowerCase(); }
                    else { sDescription = eDescription.text; }
                    if (sDescription.indexOf(sSearchFor) > -1) { bFlag = true; }
                }
                if (bKeywords) {
                    if (bMatchCase == false) { sKeywords = eKeywords.text.toLowerCase(); }
                    else { sKeywords = eKeywords.text; }
                    if (sKeywords.indexOf(sSearchFor) > -1) { bFlag = true; }
                }
                if (bBody) {
                    if (bMatchCase == false) { sBody = eBody.text.toLowerCase(); }
                    else { sBody = eBody.text; }
                    if (sBody.indexOf(sSearchFor) > -1) { bFlag = true; }
                }
                if (bFlag) {
                    //sMarkup = sMarkup + "<p>"
                    sFile = eFile.text;
                    sTitle = eTitle.text;
                    sDescription = eDescription.text;
                    sMarkup = sMarkup + "<div class='search-link'><p><a href='" + sFile + "'><b>" + sTitle + "</b></a></p></div>";
                    sMarkup = sMarkup + "<div class='search-description'><p>" + sDescription + "</p></div>";
                    //sMarkup = sMarkup + "</p>";
                    iTopicCount += 1;
                } //if
            } //for
        } //if

        if (iTopicCount == 0) {
            if (sLang == "fr") { lblMessage.innerHTML = "<p>" + "Aucun article contenant \"" + sSearchFor + "\" n'a &#xE9;t&#xE9; touv&#xE9;." + "</p>"; }
            else { lblMessage.innerHTML = "<p>" + "No topic containing \"" + sSearchFor + "\" was found." + "</p>"; }
        } //if
        else {
            if (sLang == "fr") { lblMessage.innerHTML = "<p>" + "" + iTopicCount + " articles contenant \"" + sSearchFor + "\" ont &#xE9;t&#xE9; trouv&#xE9;." + "</p>"; }
            else { lblMessage.innerHTML = "<p>" + "" + iTopicCount + " topics containing \"" + sSearchFor + "\" were found." + "</p>"; }
        }

        //return sMarkup;
        return sMarkup;
    }
}

function Search_OFFLINE() {
    //alert("searching...");

    var sSearchFor = document.getElementById("txtSearchFor").value;
    var lblMessage = document.getElementById("lblMessage");
    var eResults = document.getElementById("search_results");

    if (sSearchFor != "") {
        //alert("Searching for: " + sSearchFor + " ...");
        lblMessage.innerHTML += "<p>Searching for: \"" + sSearchFor + "\"...</p>";
    } else {
        alert("Enter a string to search for.");
        return false
    }

    xmlDoc = Sarissa.getDomDocument();
    xmlDoc.async = false;
    xmlDoc.load(sSearchFile);

    if (xmlDoc.parseError.errorCode != 0) {
        lblMessage.innerHTML = "<p>The XML file is not well formed or there was an other error!</p>";
    } else {
        //alert("searching...");
        //lblMessage.innerHTML += "<p>Searching...</p>";
    }

    eResults.innerHTML = ReadXML();

}

function ReadXML_OFFLINE() {
    //alert("reading...");

    var sSearchFor = document.getElementById("txtSearchFor").value;
    var lblMessage = document.getElementById("lblMessage");
    var eResults = document.getElementById("search_results");

    var sMessage;

    if (eResults != null) {
        //alert("reading...");

        var bMatchCase = false;

        if (document.getElementById("chkMatchCase").checked) {
            //alert("match case");
            bMatchCase = true;
        }
        else {
            sSearchFor = sSearchFor.toLowerCase();
        }

        if (!xmlDoc.documentElement.hasChildNodes()) {
            sMessage = "<p>This document is empty.</p>";
            lblMessage.innerHTML += sMessage;
        }
        else {

            var bFlag = false;
            var eFile;
            var eTitle;
            var eDescription;
            var eKeywords;
            var eBody;


            var sFile = "";
            var sTitle = "";
            var sDescription = "";
            var sKeywords = "";
            var sBody = "";

            var sMarkup = "";
            var iTopicCount = 0;

            //var nodestables = xmldoc.selectNodes("//body/table[@class='cele']");
            //var topics = xmldoc.selectNodes("//topics/topic[contains(text,'" + sSearchFor + "')]");
            var topics = xmlDoc.getElementsByTagName("topic");

            //alert(topics.length);

            if (topics.length > 0) {
                //search all topics
                //alert(topics.length);
                for (var i = 0; i < topics.length; i++) {
                    //search topic                    
                    bFlag = false;
                    eFile = topics[i].getElementsByTagName("file")[0];
                    eTitle = topics[i].getElementsByTagName("title")[0];
                    eDescription = topics[i].getElementsByTagName("description")[0];
                    eKeywords = topics[i].getElementsByTagName("keywords")[0];
                    eBody = topics[i].getElementsByTagName("body")[0];

                    if (document.getElementById("chkTitle").checked) {
                        if (bMatchCase == false) { sTitle = eTitle.text.toLowerCase(); }
                        else { sTitle = eTitle.text; }
                        if (sTitle.indexOf(sSearchFor) > -1) { bFlag = "true"; }
                    }
                    if (document.getElementById("chkDescription").checked) {
                        if (bMatchCase == false) { sDescription = eDescription.text.toLowerCase(); }
                        else { sDescription = eDescription.text; }
                        if (sDescription.indexOf(sSearchFor) > -1) { bFlag = "true"; }
                    }
                    if (document.getElementById("chkKeywords").checked) {
                        if (bMatchCase == false) { sKeywords = eKeywords.text.toLowerCase(); }
                        else { sKeywords = eKeywords.text; }
                        if (sKeywords.indexOf(sSearchFor) > -1) { bFlag = "true"; }
                    }
                    if (document.getElementById("chkBody").checked) {
                        if (bMatchCase == false) { sBody = eBody.text.toLowerCase(); }
                        else { sBody = eBody.text; }
                        if (sBody.indexOf(sSearchFor) > -1) { bFlag = "true"; }
                    }
                    if (bFlag == "true") {
                        sMarkup = sMarkup + "<p>"
                        sFile = eFile.text;
                        sTitle = eTitle.text;
                        sDescription = eDescription.text;
                        sMarkup = sMarkup + "<a href='" + sFile + "'>" + sTitle + "</a><br/>";
                        sMarkup = sMarkup + "<span class='description'>" + sDescription + "</span>";
                        sMarkup = sMarkup + "</p>";
                        iTopicCount += 1;
                    } //if
                } //for
            } //if

            if (iTopicCount == 0) {
                sMessage = "<p>" + "No topic containing \"" + sSearchFor + "\" was found." + "</p>";
                lblMessage.innerHTML += sMessage;
            } //if
            else {
                sMessage = "<p>" + "" + iTopicCount + " topics containing \"" + sSearchFor + "\" were found." + "</p>";
                lblMessage.innerHTML += sMessage;
            }

            //return sMarkup;
            return sMarkup;

        }
    }
}

