addEvent(window, "load", activateNavigation);
// 2005-05-11 mwp removed from load. Html will be shown with all the questions closed
//addEvent(window, "load", closeAllQuestions);

function activateNavigation() {
  var ul = document.getElementById("dropdown_navigation");
  if(!ul) return;
  var lis = ul.getElementsByTagName("li");
  for (var i=0; i < lis.length; i++) {
    if (lis[i].parentNode == ul) {
      if (lis[i].className == "selected") {
        lis[i].persistent = true;
      }
      lis[i].submenu = lis[i].getElementsByTagName("ul")[0];
      lis[i].onmouseover = openMenu;
      lis[i].onmouseout = closeMenu;
      if (document.all && lis[i].submenu) {
        lis[i].iframe = addIFRAME(lis[i], lis[i].submenu);
      }
    }
  }
}

function openMenu(e) {
  if (this.className == "hover" && !this.persistent) {
    return;
  }
  if (this.submenu) {
    this.submenu.className = "visible";
  }
  if (document.all && this.iframe) {
    this.iframe.className = "visible";
  }
  this.className = "hover";
  if (e) {
    e.cancelBubble = true;
  } else {
    window.event.cancelBubble = true;
  }
}

function closeMenu(e) {
  if (e) var dest = e.relatedTarget; else var dest = window.event.toElement;
  if (!isChild(this, dest)) {
    if (this.submenu) {
      this.submenu.className = "";
    }
    if (document.all && this.iframe) {
      this.iframe.className = "";
    }
    if (!this.persistent) {
      this.className = "";
    } else {
     this.className = "selected";
    }
  }
  if (e) {
    e.cancelBubble = true;
  } else {
    window.event.cancelBubble = true;
  }
}

function isChild(ancestor, candidate) {
  while (candidate && candidate != ancestor.parentNode) {
    if (candidate == ancestor) {
      return true;
    }
    candidate = candidate.parentNode;
  }
  return false;
}

function addIFRAME(container, contents) {
  contents.className = "visible";
  var newNode = document.createElement("iframe");
  newNode.style.width = contents.offsetWidth+"px";
  newNode.style.height = contents.offsetHeight+"px";
  contents.className = "";
  return container.insertBefore(newNode, contents);
}

function addEvent(receiver, eventName, listener) {
  if (receiver.addEventListener) {
    receiver.addEventListener(eventName, listener, true); 
  } else if (receiver.attachEvent) {
    receiver.attachEvent("on"+eventName, listener);
  }
}
