function menuClose(event, obj){
  var related;
  var target = document.getElementById(obj);

  if (window.event) {
    related = window.event.toElement;
  }
  else {
    related = event.relatedTarget;
  }

  if (related != target && !contains(target, related))
    target.style.visibility = "hidden";
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function openMenu(event, id, obj) {

  var el, x, y;

  el = document.getElementById(id);
  if (window.event) {
    x = findPosX(obj)+obj.offsetWidth;
    y = findPosY(obj);
	event.cancelBubble = true;
  }
  else {
    x = event.target.offsetLeft+event.target.offsetWidth;
    y = event.target.offsetTop;
	event.stopPropagation();
  }
  x -= 2; y += 2; 					// Para menu inline, x -= 120; y += 15; (x = posicionamento horizontal)
  el.style.left = x + "px";
  el.style.top  = y + "px";
  el.style.visibility = "visible";
}

function contains(a, b) {

  while (b.parentNode)
    if ((b = b.parentNode) == a)
      return true;
  return false;
}

function closeMenu(event) {
  var current, related;

  if (window.event) {
    current = this;
    related = window.event.toElement;
  }
  else {
    current = event.currentTarget;
    related = event.relatedTarget;
  }

  if (current != related && !contains(current, related))
    current.style.visibility = "hidden";
}
