var expand = {
  init: function()
  {
    if (!document.getElementById ||
        !document.getElementsByTagName ||
        !document.getElementById("expand")) { return false; }

    var colExpand = document.getElementById("expand");
    var colNodes = colExpand.childNodes;

    for (var i = 0; i < colNodes.length; i++)
    {
      if (colNodes[i].nodeName == "P" || colNodes[i].nodeName == "UL")
      {
        var node = getPreviousElement(colNodes[i].previousSibling);
        var hash = (location.hash) ? location.hash.substring(1, location.hash.length) : "";

        if (node.getAttribute("id") != hash)
        {
          colNodes[i].className = "hide";
        }
        else
        {
          node.className = "show";
        }
      }
      else if (colNodes[i].nodeName == "H3")
      {
        colNodes[i].className = "reset";
        colNodes[i].style.cursor = (document.all) ? "hand" : "pointer";
        attachEventListener(colNodes[i], "click", expand.showhide, false);
      }
    }
  },
  showhide: function()
  {
    var node = getNextElement(this.nextSibling);
    node.className = (node.className == "") ? "hide" : "";
    this.className = (node.className == "") ? "show" : "reset";
  }
}

addLoadListener(expand.init);

var features = {
  qFeatures: null,
  init: function()
  {
    if (!document.getElementById ||
        !document.getElementsByTagName ||
        !document.getElementById("q-features")) { return false; }

    features.qFeatures = document.getElementById("q-features");
    var qNodes = features.qFeatures.getElementsByTagName("dl")[0].childNodes;

    for (var i = 0; i < qNodes.length; i++)
    {
      if (qNodes[i].nodeName == "DT")
      {
        attachEventListener(qNodes[i], "mouseover", features.showhide, false);
        attachEventListener(qNodes[i], "mouseout", features.showhide, false);
      }
    }
  },
  showhide: function()
  {
    var node = getNextElement(this.nextSibling);
    node.className = (node.className == "") ? "show" : "";
    var para = features.qFeatures.getElementsByTagName("p")[0];
    para.style.visibility = (node.className == "show") ? "hidden" : "visible";
    //para.className =(para.className == "") ? "hide" : ""; // problematic for NS 6 and 7
  }
}

addLoadListener(features.init);
