var searchText = "";
function applyToText(node, f)
{
  var n = node.firstChild;
  var next;
  while( n ) {
    next = n.nextSibling;
    if( n.nodeType == 3 ) {
      f(n);
	} else if( n.nodeType == 1 && n.nodeName == "SCRIPT" ) {
    } else {
      applyToText(n, f);
    }
    n = next;
  }
}

function highlightText(node)
{
  var x = node.data.toLowerCase().indexOf(searchText.toLowerCase(), 0);
  if( x >= 0 ) {
    var foundText = node.substringData(x, searchText.length);
    var newSpan = document.createElement("SPAN");
    newSpan.className = "hilight";
    newSpan.appendChild( document.createTextNode(foundText) );
    if( node.data.length > x+searchText.length ) {
        var newText = node.splitText(x+searchText.length);
        node.parentNode.insertBefore( newSpan, newText );
    } else if( node.nextSibling ) {
        node.parentNode.insertBefore( newSpan, node.nextSibling );
    } else {
        node.parentNode.appendChild( newSpan );
    }
    node.deleteData(x, searchText.length);
  }
}

function hilightSearch() 
{
  var W3CDOM = (document.createElement && document.getElementsByTagName);
  if (!W3CDOM) return;
  if( document.referrer == "" ) return;

  var relist = Array(
    "google.*[&?]q=([^&\"]+)",
    "search\\.msn\\.com.*[&?]q=([^&\"]+)",
    "search\\.live\\.com.*[&?]q=([^&\"]+)",
    "altavista\\.com.*[&?]q=([^&\"]+)",
	"ask\\.com.*[&?]q=([^&\"]+)"
  );

  var i;
  for( i=0; i<relist.length; i++) {
    var getRef = new RegExp(relist[i]);
    var ref = getRef.exec(document.referrer);
    if( ref ) {
      ref = ref[1];
      var getWords = new RegExp("(.+?)(%20|$|\\+)", "g");
      var words;
      while( words = getWords.exec(ref) ) {
        searchText = words[1];
        applyToText(document.body, highlightText);
      }
      return;
    }
  }

  var el = document.getElementById("emblems");
  if( el ) {
    el.appendChild( document.createTextNode(document.referrer) );
  }
}

window.onload = hilightSearch;
