// Global variables

var curSub = null;
var curButton = null;
var lockHighlight = false;


// Menu functions

function menuClick(url)
{
  if (url != null)
  {
	if (window.location.href.indexOf("definitions") == -1)
	{
      if (url.indexOf("http:") == -1)
        url = url.substring(url.indexOf("/")+1, url.length);	
	}
    window.location = url;
  }
}

function menuOver(button)
{
  if (button != null)
    button.className = "button_hl";
}

function menuOut(button, event)
{
  if (lockHighlight && button == curButton)
  {
    if (event.toElement) // IE
    {
      if (event.toElement == curSub || isChildOf(curSub, event.toElement))
        return;
    }
    else if (event.relatedTarget)  // Mozilla
    {
      if (event.relatedTarget == curSub || isChildOf(curSub, event.relatedTarget))
        return;

    }

  }

  if (button != null)
    button.className = "button";

  hideCurSub();
}


// Submenu functions

function subMenuShow(button, subID)
{
  if (button != null)
  {
    var x = 0;
    var y = button.offsetHeight;

    var element = button;
    while (element) {
      x += element.offsetLeft;
      y += element.offsetTop;
      element = element.offsetParent;
    }

    var width = button.offsetWidth;
    var submenu = document.getElementById(subID);
    if (submenu != null)
    {
      submenu.style.left = x+"px";
      submenu.style.top = (y-1)+"px";
      submenu.style.width = width+"px";
      submenu.style.visibility = "visible";

      curSub = submenu;
      curButton = button;
      lockHighlight = true;
    }
  }
}

function subMenuOut(event)
{
  if (event.toElement) // IE
  {
    if (event.toElement == curSub || isChildOf(curSub, event.toElement))
      return;
  }
  else if (event.relatedTarget)  // Mozilla
  {
    if (event.relatedTarget == curSub || isChildOf(curSub, event.relatedTarget))
      return;
  }

  hideCurSub();

}


function subOver(button)
{
  if (button != null)
    button.className = "subbutton_hl";
}

function subOut(button)
{
  if (button != null)
    button.className = "subbutton";
}

function hideCurSub()
{
  if (curSub != null)
  {
    curSub.style.visibility = "hidden";
    curSub = null;
  }

  if (curButton != null)
  {
    curButton.className = "button";
    curButton = null;
  }

  lockHighlight = false;
}

// Helper function

function isChildOf(parent, child)
{
  var curNode = child;
  while (curNode.parentNode != null)
  {
    curNode = curNode.parentNode;
    if (curNode == parent)
      return true;
  }

  return false;
}


document.onclick=hideCurSub;