Hilite=
{
	Elementid:'content',
	exact:false,
	max_nodes:1000,
	onload:false,
	style_name:'hilite',
	style_name_suffix:true,
	debug_referrer:''
};



Hilite.decodeReferrer=function(query)
{
	var nVer = navigator.appVersion;
	var nAgt = navigator.userAgent;

	var fullVersion = parseFloat(nVer);
	var majorVersion = parseInt(nVer);
	
	var isIE5 = 0;

	if ((verOffset=nAgt.indexOf("MSIE"))!=-1) 
	{
 		fullVersion = parseFloat(nAgt.substring(verOffset+5,nAgt.length));
 		majorVersion = parseInt(''+fullVersion);
 		if (fullVersion < 6)
 		{
			isIE5 = 1;
		}
	}
	if (isIE5 == 0)
	{	
		decodeURIComponent(query);
	}	
	query=query.split(/[\s,\+\.]+/);
	return query;
};

Hilite.hiliteElement=function(elm,query)
{
	if(!query||elm.childNodes.length==0)
	{
		return;
	}
	
	var nVer = navigator.appVersion;
	var nAgt = navigator.userAgent;

	var fullVersion = parseFloat(nVer);
	var majorVersion = parseInt(nVer);
	
	var isIE5 = 0;

	if ((verOffset=nAgt.indexOf("MSIE"))!=-1) 
	{
 		fullVersion = parseFloat(nAgt.substring(verOffset+5,nAgt.length));
 		majorVersion = parseInt(''+fullVersion);
 		if (fullVersion < 6)
 		{
			isIE5 = 1;
		}
	}
	
	if (isIE5 == 1)
	{	
		return;
	}	
	var qre=new Array();
	for(var i=0;i<query.length;i++)
	{
		query[i]=query[i].toLowerCase();
		if (query[i].length > 0)
		{
			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++)
	{
		stylemapper[query[i]]=Hilite.style_name+(i+1);
	}
	
	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(qre)
{
	var e=null;
	qre=qre.replace(/[^a-zA-Z0-9]/g, ' ');
	q=Hilite.decodeReferrer(qre);
	if(q&&((Hilite.elementid&&(e=document.getElementById(Hilite.elementid)))||(e=document.body)))
	{
		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;
				}
			}
		}
	}
};

if(Hilite.onload)
{
	if(window.attachEvent)
	{
		window.attachEvent('onload',Hilite.hilite);
	}
	else if(window.addEventListener)
	{
		window.addEventListener('load',Hilite.hilite,false);
	}
	else
	{
		var __onload=window.onload;
		window.onload=function()
		{
			Hilite.hilite();__onload();
		};
	}
}
