﻿/* New: Variable searchhi_string to keep track of words being searched. */
var searchhi_string = '';
/* http://www.kryogenix.org/code/browser/searchhi/ */
/* Modified 20021006 to fix query string parsing and add case insensitivity */
function highlightWord(node, word) {
    if (node.hasChildNodes) {
        var hi_cn;
        for (hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) {
            highlightWord(node.childNodes[hi_cn], word);
        }
    }
    if (node.nodeType == 3) { // text node
        tempNodeVal = node.nodeValue.toLowerCase();
        tempWordVal = word.toLowerCase();
        if (tempNodeVal.indexOf(tempWordVal) != -1) {
            pn = node.parentNode;
            if (pn.className != "searchword") {
                nv = node.nodeValue;
                ni = tempNodeVal.indexOf(tempWordVal);
                before = document.createTextNode(nv.substr(0, ni));
                docWordVal = nv.substr(ni, word.length);
                after = document.createTextNode(nv.substr(ni + word.length));
                hiwordtext = document.createTextNode(docWordVal);
                hiword = document.createElement("span");
                hiword.className = "searchword";
                hiword.appendChild(hiwordtext);
                pn.insertBefore(before, node);
                pn.insertBefore(hiword, node);
                pn.insertBefore(after, node);
                pn.removeChild(node);
            }
        }
    }
}
function unhighlightWord(node, word) {
    if (node.hasChildNodes) {
        var hi_cn;
        for (hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) {
            highlightWord(node.childNodes[hi_cn], word);
        }
    }
    if (node.nodeType == 3) { // text node
        tempNodeVal = node.nodeValue.toLowerCase();
        tempWordVal = word.toLowerCase();
        if (tempNodeVal.indexOf(tempWordVal) != -1) {
            pn = node.parentNode;
            if (pn.className == "searchword") {
                prevSib = pn.previousSibling;
                nextSib = pn.nextSibling;
                nextSib.nodeValue = prevSib.nodeValue + node.nodeValue + nextSib.nodeValue;
                prevSib.nodeValue = '';
                node.nodeValue = '';
            }
        }
    }
}
function unhighlight(node) {
    if (node.hasChildNodes) {
        var hi_cn;
        for (hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) {
            unhighlight(node.childNodes[hi_cn]);
        }
    }
    if (node.nodeType == 3) { // text node
        pn = node.parentNode;
        if (pn.className == "searchword") {
            prevSib = pn.previousSibling;
            nextSib = pn.nextSibling;
            nextSib.nodeValue = prevSib.nodeValue + node.nodeValue + nextSib.nodeValue;
            prevSib.nodeValue = '';
            node.nodeValue = '';
        }
    }
}
function googleSearchHighlight() {
    if (!document.createElement) return;
    ref = document.referrer;
    ref = ref.replace(/\/search\/web\//, '?search&q='); // Most WebCrawler searches
    if (ref.indexOf('?') == -1) return;
    qs = ref.substr(ref.indexOf('?') + 1);
    qsa = qs.split('#');
    qs = qsa[0];
    qs = qs.replace(/(^|&)p=Q&ts=e&/, '&'); // Most Eurekster searches
    qs = qs.replace(/(^|&)query=/, '&q='); // Most Lycos searches
    qs = qs.replace(/(^|&)key=/, '&q='); // Most Walhello searches
    qs = qs.replace(/(^|&)keywords=/i, '&q='); // Most Overture searches
    qs = qs.replace(/(^|&)searchfor=/, '&q='); // Most Mysearch.com searches
    qs = qs.replace(/(^|&)qt=/, '&q='); // Most Acoona.com searches
    qs = qs.replace(/(^|&)s=/, '&q='); // Most Technirati GET searches
    qsa = qs.split('&');
    for (i = 0; i < qsa.length; i++) {
        qsip = qsa[i].split('=');
        if (qsip.length == 1) continue;
        if (qsip[0] == 'q' || qsip[0] == 'p' || qsip[0] == 'w') { // q= for Google, p= for Yahoo, w= for Eurekster
            qsip[1] = unescape(qsip[1]).replace(/^\s+|\s+$/g, "");
            if (qsip[1] == '') continue;
            phrases = qsip[1].replace(/\+/g, ' ').split(/\"/);
            for (p = 0; p < phrases.length; p++) {
                phrases[p] = unescape(phrases[p]).replace(/^\s+|\s+$/g, "");
                if (phrases[p] == '') continue;
                if (p % 2 == 0) words = phrases[p].replace(/([+,()]|%(29|28)|\W+(AND|OR)\W+)/g, ' ').split(/\s+/);
                else { words = Array(1); words[0] = phrases[p]; }
                for (w = 0; w < words.length; w++) {
                    if (words[w] == '') continue;
                    highlightWord(document.getElementById('MIMSContent'), words[w]);
                    if (p % 2 == 0) searchhi_string = searchhi_string + ' ' + words[w];
                    else searchhi_string = searchhi_string + ' "' + words[w] + '"';
                }
            }
        }
    }
}
function localSearchHighlight(searchStr) {
    if (!document.createElement) return;
    if (searchStr.indexOf('&h=') == -1) {
        if (document.getElementById('HiddenHighlightString') != null) {
            searchStr = "?h=" + document.getElementById('HiddenHighlightString').value;
        }
    }
    if (searchStr == '') return;
    if (searchStr.indexOf('?') == -1) qs = searchStr.substr(0);
    else qs = searchStr.substr(1);
    qsa = qs.split('&');
    for (i = 0; i < qsa.length; i++) {
        qsip = qsa[i].split('=');
        if (qsip.length == 1) continue;
        if (qsip[0] == 'h') { // don't make this q or p or will get ghost highlights
            qsip[1] = unescape(qsip[1]).replace(/^\s+|\s+$/g, "");
            if (qsip[1] == '') continue;
            phrases = qsip[1].replace(/\+/g, ' ').split(/,/);
            for (p = 0; p < phrases.length; p++) {
                phrases[p] = unescape(phrases[p]).replace(/^\s+|\s+$/g, "");
                if (phrases[p] == '') continue;
                if (p % 2 == 0) words = phrases[p].replace(/([+,()]|%(29|28)|\W+(AND|OR)\W+)/g, ' ').split(/\s+/);
                else { words = Array(1); words[0] = phrases[p]; }
                for (w = 0; w < words.length; w++) {
                    if (words[w] == '') continue;
                    highlightWord(document.getElementById('MIMSContent'), words[w]);
                    if (p % 2 == 0) searchhi_string = searchhi_string + ' ' + words[w];
                    else searchhi_string = searchhi_string + ' "' + words[w] + '"';
                }
            }
        }
    }
}
function SearchHighlight() {
    googleSearchHighlight();
    localSearchHighlight(location.search);
    searchhi_string = searchhi_string.replace(/^\s+|\s+$/g, "");
    if (location.hash.length > 1) location.hash = location.hash;
}
function SmartHighlight() {
    var today = new Date();
    var now = today.getUTCSeconds();
    var cookie = document.cookie;
    var cookieArray = cookie.split('; ');
    for (var loop = 0; loop < cookieArray.length; loop++) {
        var nameValue = cookieArray[loop].split("=");
        if (nameValue[0].toString() == 'SHTS') {
            var cookieTime = parseInt(nameValue[1]);
        }
        else if (nameValue[0].toString() == 'SHTSP') {
            var cookieName = nameValue[1];
        }
    }
    if (cookieName &&
cookieTime &&
cookieName == escape(location.href) &&
Math.abs(now - cookieTime) < 5) {
        searchhi_unl = 0;
    }
    else {
        SearchHighlight();
    }
}
function SmartHLUnload() {
    if (searchhi_unl > 0) {
        var today = new Date();
        var now = today.getUTCSeconds();
        document.cookie = 'SHTS=' + now + ';';
        document.cookie = 'SHTSP=' + escape(location.href) + ';';
    }
    else {
        document.cookie = 'SHTS=;';
        document.cookie = 'SHTSP=;';
    }
}
function NotRefreshHL() {
    searchhi_unl = 0;
    return true;
}
var searchhi_unl = 1;


