function Highlighter(link_set_id, class_name) {
  this.link_set_id = link_set_id;
  this.class_name = (class_name) ? class_name : "highlighter";
  this.top_link = null;
  this.curr_elm = null;

  if (typeof Highlighter._initialized == "undefined") {

    Highlighter.prototype.addHighlight = function (e) {
      if (hl.curr_elm) {
        hl.removeHighlight();
      }

      var el;
      if (window.event && window.event.srcElement) {
        el = window.event.srcElement;
      }
      if (e && e.target) {
        el = e.target;
      }
      if (!el) {
        return;
      }
      if (el.href) {
        var pos = el.href.lastIndexOf('#');
        if (pos) {
          var elm_id = el.href.substr(pos+1);
          var myElm = document.getElementById(elm_id);
          myElm.appendChild(hl.top_link);
          addEvent(hl.top_link, 'click', hl.removeHighlight, false);
          changeClass(elm_id, hl.class_name);
          hl.curr_elm = elm_id;
        }
      }
    }

    Highlighter.prototype.removeHighlight = function () {
      if (hl.top_link.parentNode) {
        hl.top_link.parentNode.removeChild(hl.top_link);
      }
      changeClass(hl.curr_elm, 'none');
    }

    Highlighter.prototype.initHL = function () {
          //alert(hl.class_name);
      var mySet = document.getElementById(hl.link_set_id);

      hl.top_link = document.createElement('p');
      hl.top_link.className = "highlighter_topLink";
      var myLink = document.createElement('a');
      myLink.href = "#top";
      var myText = document.createTextNode("top");
      myLink.appendChild(myText);
      hl.top_link.appendChild(myLink);
      var myLinks = mySet.getElementsByTagName('a');
      for (i=0;i<myLinks.length;i++) {
        addEvent(myLinks[i], 'click', hl.addHighlight, false);
      }
    }

    Highlighter._initialized = true;
  }
}

var hl = new Highlighter("faq_links");

function initHighlighter() {
  hl.initHL();
}


