// --- Search Highlight Functions --- var ValidParentTags = new Array('div','p','ul','ol','li','dl','dt','dd','a'); function InArray( TextString, StringArray ) { for( var i = 0; i < StringArray.length; i++ ) { if( TextString == StringArray[i] ) { return true; } } return false; } function GetParams() { var Params = new Array(); var QueryString = window.location.search.substring( 1 ); var KeyValuePairs = QueryString.split( '&' ); for( var i=0; i 0 ) { var key = unescape( KeyValuePairs[i].substring(0,pos).replace(/\+/g,' ') ); var val = unescape( KeyValuePairs[i].substring(pos+1).replace(/\+/g,' ') ); Params[key] = val; } } return Params; } function SearchHighlightTerms() { var Params = GetParams(); var Target = Params['target']; if( Target ) { var ContentText = document.getElementById( 'Content' ); if( ContentText ) { var SearchTerms = Target.split( ' ' ); SearchRecursiveReplace( ContentText, SearchTerms ); } } } function SearchRecursiveReplace( ParentNode, Terms ) { for( var ChildIndex = 0; ChildIndex < ParentNode.childNodes.length; ChildIndex++ ) { var ChildNode = ParentNode.childNodes[ChildIndex]; if( ChildNode.nodeType == 3 ) { ChildIndex += ModifySearchTerms( ParentNode, ChildNode, Terms ); } else if( ChildNode.nodeType == 1 && InArray( ChildNode.nodeName.toLowerCase(), ValidParentTags ) ) { SearchRecursiveReplace( ChildNode, Terms ); } } } function ModifySearchTerms( ParentNode, ChildNode, Terms ) { var AdditionalChildNodes = 0; var FirstTermIndex = -1; var FirstTermTitle = null; var FirstTermArrayIndex = 0; for( var TermIndex = 0; TermIndex < Terms.length; TermIndex++ ) { var TermTitle = Terms[TermIndex]; var TermOffset = ChildNode.nodeValue.toLowerCase().search( new RegExp('\\b' + TermTitle.toLowerCase() + '\\b') ); if( TermOffset != -1 && (FirstTermIndex == -1 || TermOffset < FirstTermIndex) ) { FirstTermIndex = TermOffset; FirstTermTitle = TermTitle; FirstTermArrayIndex = TermIndex; } } if( FirstTermIndex != -1 ) { var PreText=ChildNode.nodeValue.substring(0,FirstTermIndex); var TermText=ChildNode.nodeValue.substring(FirstTermIndex,FirstTermIndex+FirstTermTitle.length); var PostText=ChildNode.nodeValue.substring(FirstTermIndex + FirstTermTitle.length,ChildNode.nodeValue.length); var TermNode = document.createElement("span"); //TermNode.setAttribute("class","SearchTerm"); TermNode.className = "SearchTerm"; var TermTextNode = document.createTextNode(TermText); TermNode.appendChild(TermTextNode); var PreTextNode = document.createTextNode(PreText); var PostTextNode = document.createTextNode(PostText); ParentNode.insertBefore(PreTextNode,ChildNode); ParentNode.insertBefore(TermNode,ChildNode); ParentNode.insertBefore(PostTextNode,ChildNode); ParentNode.removeChild(ChildNode); AdditionalChildNodes += 1; } return AdditionalChildNodes; }