function searchHighlight() {
  if (!document.createElement) return;

  var div = document.getElementById("main");
  if (!div) return;

  function getSearchWords(url) {
    if (url.indexOf('?') == -1) return [];
    var queryString = url.substr(url.indexOf('?') + 1);
    var params = queryString.split('&');
    var numparams = params.length;
    for (var i = 0; i < numparams; i++) {
      var param = params[i].split('=');
      if (param.length < 2) continue;
      if (param[0] == 'q') {
        var words = unescape(param[1].replace(/\+/g, ' ')).split(/(".*?")|('.*?')|(\s+)/);
        var retval = [];
        var numwords = words.length;
        for (var w = 0; w < numwords; w++) {
          words[w] = words[w].replace(/^\s+$/, '');
          if (words[w] != '') {
            retval.push(words[w].replace(/^['"]/, '').replace(/['"]$/, ''));
          }
        }
        return retval;
      }
    }
    return [];
  }

  function highlightWord(node, word) {
    // If this node is a text node and contains the search word, highlight it by
    // surrounding it with a span element
    if (node.nodeType == 3 && !/^\s+$/.test(node.nodeValue)) { // Node.TEXT_NODE
      var pos = node.nodeValue.toLowerCase().indexOf(word.toLowerCase());
      if (pos >= 0 && !/^searchword\d$/.test(node.parentNode.className)) {
        var span = document.createElement("span");
        span.className = "searchword";
        span.appendChild(document.createTextNode(
          node.nodeValue.substr(pos, word.length)));
        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
          document.createTextNode(node.nodeValue.substr(pos + word.length)),
            node.nextSibling));
        node.nodeValue = node.nodeValue.substr(0, pos);
        return true;
      }
    } else if (!node.nodeName.match(/button|select|textarea/i)) {
      // Recurse into child nodes
      for (var i = 0; i < node.childNodes.length; i++) {
        if (highlightWord(node.childNodes[i], word)) i++;
      }
    }
    return false;
  }

  var words = getSearchWords(document.URL);
  if (!words.length) words = getSearchWords(document.referrer);
  if (words.length) {
    for (var i = 0; i < words.length; i++) {
      if (words[i].length) highlightWord(div, words[i]);
    }
  }
}

if (window.addEventListener) {
  window.addEventListener("load", searchHighlight, false);
} else if (window.attachEvent) {
  window.attachEvent("onload", searchHighlight);
}
