var sHighlightClass, oReg;
var oTran = new Array;
oTran[">"] = "&gt;"
oTran["<"] = "&lt;"
oTran[" "] = "&nbsp;"

function highlightSearchTerms( sText, sClass )
{

    oReg = new RegExp;
    sta = sText.split(" ");
    
    for (var i = 0; i < sta.length; i++) {
        oReg.compile( "(" + sta[i] + ")", "ig" );
        sHighlightClass = sClass;
        highlightSearchRecursive( document.body );
    }
}

function highlightSearchRecursive( oDOMNode )
{    for( var i=0; i< oDOMNode.childNodes.length; i++ )
    {    oChild = oDOMNode.childNodes[i];
        if (oChild.nodeType==3)
        {    sText = oChild.nodeValue;
            if (sText.search( oReg ) > -1)
            {    sText= oChild.nodeValue.replace( /^ |[<>]/g, entityConvert );
                oSpan = document.createElement("SPAN");
                oSpan.innerHTML = sText.replace( oReg, "<span class='" + sHighlightClass + "'>" + "$&" + "</span>" );
                oDOMNode.replaceChild( oSpan, oChild );
            }
      }
        else    highlightSearchRecursive( oChild );
    }
}

function entityConvert( sPart ){    return( oTran[sPart] );    }