﻿var
	menu_timer   = null,
	menu_active  = null,
	menu_timeout = 2000;


function MenuFindPosLeft(el)
{
	var left = 0;
	if (el.offsetParent) {
		while (el.offsetParent) {
			left += el.offsetLeft
			el = el.offsetParent;
		}
	} else if (el.x)
		left += el.x;
	return left;
}


function MenuFindPosTop(el)
{
	var top = 0;
	if (el.offsetParent) {
		while (el.offsetParent) {
			top += el.offsetTop
			el = el.offsetParent;
		}
	} else if (el.y)
		top += el.y;
	return top;
}


function MenuFindPosBottom(el)
{
	var bottom;
	if (el.offsetParent) {
		bottom = el.offsetHeight;
		while (el.offsetParent) {
			bottom += el.offsetTop
			el = el.offsetParent;
		}
	} else if (el.y)
		bottom += el.y + el.height;
	return bottom;
}


function MenuHide()
{
	if (menu_active != null) {
		var el = document.getElementById("menu_"+menu_active);
		
		if (el)
			el.style.visibility = "hidden";
		
		menu_active = null;
	}
}


function MenuAbandon()
{	
	menu_timer = window.setTimeout(MenuHide, menu_timeout);
}


function MenuPopup(id, caller)
{
	// If there is any other menus pending to hide, do it now.
	if (menu_timer) {
		window.clearTimeout(menu_timer);
		menu_timer = null;
	}
	if (menu_active != id)
		MenuHide();
	
	var el = document.getElementById("menu_"+id);
	
	if (el) {
		if (caller) {
			el.style.left = MenuFindPosLeft(caller) + "px";
			el.style.top = (MenuFindPosBottom(caller) + 1) + "px";
		}
		el.style.visibility = "visible";
	}
	
	menu_active = id;
}


