document.getElementByClassName = function(needle) {
  var xpathResult = document.evaluate('//*[@class = needle]', document, null, 0, null);
  var outArray = new Array();
  while ((outArray[outArray.length] = xpathResult.iterateNext())) {
  }
  return outArray;
}

function highlight(raw)
{ 
  var keywords = new Array();
  var Links;
  var rng;
  
  try {
	keywords = raw.split("|");
    if (keywords.length < 1) { return true; }
 	Links = KeyWordGetLinks();
	
    for(k = 0; k < keywords.length; k++) {
      rng = document.body.createTextRange();  
      for (i=0; rng.findText(keywords[k]) != false; i++) { 
        try { 
			rng.pasteHTML('<span class="highlight">' + rng.text + '</span>');   
		} catch (e) { 
			KeyWordProcessError('KeyWordHiLite Text Range',e);    
		} finally   { 
			rng.collapse(false); 
		}
      }
      rng.collapse(true);
    }
	KeyWordCleanLinks(Links);
  }
  catch (exception) { KeyWordProcessError('KeyWordHiLite', exception); }
}

function KeyWordGetLinks()
{
   var Links = new Array();
   for (i=0; i < document.body.getElementsByTagName('A').length; i++) {
	  Links[i] = new Array (document.body.getElementsByTagName('A')[i].href, document.body.getElementsByTagName('A')[i].innerHTML); 
   }
   return Links;
}

function KeyWordCleanLinks(Links)
{
  for (i=0; i < document.body.getElementsByTagName('A').length; i++) { 
    document.body.getElementsByTagName('A')[i].href = Links[i][0]; 
    document.body.getElementsByTagName('A')[i].innerHTML = Links[i][1];
  }
}

function KeyWordProcessError(functionName,e)
{
  if (e.description == null) {
	  //alert(functionName + ' ' + e.message); 
  } else  { 
	  //alert(functionName + ' ' + e.description);
  }
}

 
