Hilite = {
elementid: 'contentWithNavigationBorder',
exact: false,
max_nodes: 1000,
style_name: 'hilite',
style_name_suffix: false
};
Hilite.excludePhrase = function(keyword) {
switch (keyword.toUpperCase()) {
case 'AND' :
return true;
case 'OR' :
return true;
case 'NOT' :
return true;
case '' :
return true; }
return false; }
Hilite.decodeReferrer = function(searchtext) {
var keywords = new Array();
temp = searchtext.split(' ');
for(k=0;k<temp.length;k++) {
if (Hilite.excludePhrase(temp[k]) == false) {
keywords.push(temp[k]); }}
return keywords;
};
Hilite.hiliteElement = function(elm, query) {
if (!query || elm.childNodes.length == 0)
return;
var qre = new Array();
for (var i = 0; i < query.length; i ++) {
query[i] = query[i].toLowerCase();
if (Hilite.exact)
qre.push('\\b'+query[i]+'\\b');
else
qre.push(query[i]); }
qre = new RegExp(qre.join("|"), "i");
var stylemapper = {};
for (var i = 0; i < query.length; i ++) {
if (Hilite.style_name_suffix)
stylemapper[query[i]] = Hilite.style_name+(i+1);
else
stylemapper[query[i]] = Hilite.style_name; }
var textproc = function(node) {
var match = qre.exec(node.data);
if (match) {
var val = match[0];
var k = '';
var node2 = node.splitText(match.index);
var node3 = node2.splitText(val.length);
var span = node.ownerDocument.createElement('SPAN');
node.parentNode.replaceChild(span, node2);
span.className = stylemapper[val.toLowerCase()];
span.appendChild(node2);
return span;
} else {
return node; }
};
Hilite.walkElements(elm.childNodes[0], 1, textproc);
};
Hilite.hilite = function(searchtext) {
var e = null;
q = Hilite.decodeReferrer(searchtext);
e = document.getElementById(Hilite.elementid);
if (q && e) {
Hilite.hiliteElement(e, q); }
};
Hilite.walkElements = function(node, depth, textproc) {
var skipre = /^(script|style|textarea)/i;
var count = 0;
while (node && depth > 0) {
count ++;
if (count >= Hilite.max_nodes) {
var handler = function() {
Hilite.walkElements(node, depth, textproc);
};
setTimeout(handler, 50);
return; }
if (node.nodeType == 1) { 
if (!skipre.test(node.tagName) && node.childNodes.length > 0) {
node = node.childNodes[0];
depth ++;
continue; }
} else if (node.nodeType == 3) { 
node = textproc(node); }
if (node.nextSibling) {
node = node.nextSibling;
} else {
while (depth > 0) {
node = node.parentNode;
depth --;
if (node.nextSibling) {
node = node.nextSibling;
break; }
}}}
};