var menuShowing = null;
var menuClosing = null;
var menuPopDownDelay = 75;
var nestedMenuOffset = 4;

function PopUp(parentName, name)
{
   if (is_ie && is_mac) return;

   //debug("PopUp('" + parentName + "', '" + name + "')");
   menuShowing = name;
   var item = document.getElementById(parentName);
   var menu = document.getElementById(name);
   menu.style.top = (item.offsetTop + item.offsetHeight  + item.offsetParent.offsetTop) + "px";
   menu.style.left = (item.offsetLeft + item.offsetParent.offsetLeft) + "px";
   menu.style.zIndex = 1;
   menu.style.display = "block";
   menu.style.position = "absolute";
   menu.parentMenu = item;
   menu.parentMenu.nestedVisible = true;
   menu.nestedVisible = false;
   menu.parentMenu.root = true;
   
   //debug("PopUp('" + name + "'): menu.parentMenu.nestedVisible == " + menu.parentMenu.nestedVisible);
}

function PopDown()
{
   if (is_ie && is_mac) return;

   menuClosing = menuShowing;
   menuShowing = null;
   var menu = document.getElementById(menuClosing);
  
   if (menu != null)
   {
      menu.timeoutID = setTimeout("HideMenu('" + menuClosing + "')", menuPopDownDelay);
   }

   //debug("PopDown('" + name + "'): menu.parentMenu.nestedVisible == " + menu.parentMenu.nestedVisible);
}

function PopUpNested(parentName, name, parentElement)
{
  if (is_ie && is_mac) return;
  
//debug("PopUpNested('" + parentName + "', '" + name + "')");
  menuShowing = name;
  var item = document.getElementById(parentName);
  var menu = document.getElementById(name);
  var closing = document.getElementById(menuClosing);
  
  menu.parentMenu = item;
  menu.nestedVisible = true;
  menu.parentMenu.nestedVisible = true;
  
//debug("PopUpNested('" + parentName + "', '" + name + "'): menuShowing == " + menuShowing + ", " + menu.parentMenu.id + ".nestedVisible == " + menu.parentMenu.nestedVisible);
  
  menu.style.zIndex = 1;
  menu.style.top = ((parentElement.parentNode.offsetTop + parentElement.parentNode.parentNode.offsetTop) + nestedMenuOffset) + "px";
  menu.style.left = ((parentElement.parentNode.parentNode.offsetLeft + parentElement.parentNode.offsetWidth) - nestedMenuOffset) + "px";
  menu.style.display = "block";
  menu.style.position = "absolute";

  // menu.style.top = (parentElement.offsetTop + nestedMenuOffset) + "px";
  // menu.style.left = ((parentElement.offsetLeft + parentElement.offsetWidth) - nestedMenuOffset) + "px";
}

function PopDownNested(name)
{
   if (is_ie && is_mac) return;
  
//debug("PopDownNested('" + item.id + "', '" + name + "')");
   menuClosing = menuShowing;
   menuShowing = null;
   var menu = document.getElementById(name);
  
   if (menu != null)
   {
      menu.parentMenu.nestedVisible = false;
      menu.nestedVisible = false;
      //debug("PopDownNested('" + name + "'): " + menu.parentMenu.id + ".nestedVisible == " + menu.parentMenu.nestedVisible);
      menu.timeoutID = setTimeout("HideMenu('" + name + "')", menuPopDownDelay);
   }
}

function RollOver(menuID)
{
  var menu = document.getElementById(menuID);
  
//debug("RollOver('" + menu.id + "'): " + menu.parentMenu.id + ".nestedVisible == " + menu.parentMenu.nestedVisible);
  menuShowing = menu.id;
  menu.parentMenu.nestedVisible = true;
}

function RollOut(menuID)
{
  var menu = document.getElementById(menuID);
  
//debug("RollOver('" + menu.id + "'): " + menu.parentMenu.id + ".nestedVisible == " + menu.parentMenu.nestedVisible);

  menuClosing = menuShowing;
  var closingMenu = document.getElementById(menuClosing);

  menuShowing = null;
  menu.timeoutID = setTimeout("HideMenu('" + menu.id + "')", menuPopDownDelay);

  menu.parentMenu.nestedVisible = false;
  menu.parentMenu.timeoutID = setTimeout("HideMenu('" + menu.parentMenu.id + "')", menuPopDownDelay);
}

function HideMenu(name)
{
//debug("HideMenu('" + name + "'): Fired for " + name + "; menuShowing is " + menuShowing);
  
  if (menuShowing != name)
  {
    var menu = document.getElementById(name);
    
//debug("HideMenu('" + name + "'): " + name + ".nestedVisible == " + menu.nestedVisible);
    
    if (!menu.root && !menu.nestedVisible)
    {
      menu.style.display = "none";
//debug("HideMenu('" + name + "'): Hiding " + name + " on timeout ID " + menu.timeoutID);
    }
  }
}

function createMenuContent(menuID)
{
  var node = document.createElement('div');

  var id_attr = document.createAttribute("id");
  id_attr.nodeValue = menuID;
  node.setAttributeNode(id_attr);
  
  node.id = menuID;
  
  var class_attr = document.createAttribute("class");
  class_attr.nodeValue = "menuContent";
  node.setAttributeNode(class_attr);
  
  node.onmouseover = createRollOver(menuID);
  node.onmouseout = createRollOut(menuID);

  return node;
}

function createMenuItem(parentID, text, href, click, nestedMenuID)
{
   var node = document.createElement('div');

   var class_attr = document.createAttribute("class");
   class_attr.nodeValue = "menuItem";
   node.setAttributeNode(class_attr);
     
   var link = document.createElement("a");
     
   var href_attr = document.createAttribute("href");
   href_attr.nodeValue = href;
   link.setAttributeNode(href_attr);

   if (click != null)
   {
      link.onclick = new Function(click);
   }
     
   if (nestedMenuID != null)
   {
      link.onmouseover = createPopUpNested(parentID, nestedMenuID, link);
      link.onmouseout = createPopDownNested(parentID, nestedMenuID);

      class_attr.nodeValue += " menuMore";
   }
     
   var textNode = document.createTextNode(text);
   link.appendChild(textNode); 

   node.appendChild(link);

   return node;
}

function createRollOver(menuID)
{
  return new Function("RollOver('" + menuID + "')");
}

function createRollOut(menuID)
{
  return new Function("RollOut('" + menuID + "')");
}

function createPopUpNested(parentID, menuID, item)
{
  return new Function("PopUpNested('" + parentID + "', '" + menuID + "', this)");
}

function createPopDownNested(parentID, menuID, item)
{
  return new Function("PopDownNested('" + menuID + "')");
}

