var _debug = false;

var _isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") != -1);

var kMenuBarBorderBottom = _isSafari ? -5 : 0;
var kMenuPaddingTop = -6;
var kMenuPaddingRight = -5;

function showMenu(menuId, parentObj, align) {	
	var menu = document.getElementById(menuId);
	if (menu == null)
		return;
	
	_lastMenu = menu;
			
	debugMenu("showMenu : " + menuId);
	setMenuPosition(menu, parentObj, align);	
	menu.style.visibility = 'visible';
}

function hideLastMenu() {
	if (_lastMenu != null) {	
		debugMenu("hideLastMenu : " + _lastMenu.id);
		hideMenuX(_lastMenu.id);
	}
}

function hideMenu(menuId) {
	debugMenu("hideMenu : " + menuId);
	
	var menu = document.getElementById(menuId);
	if (menu != null)
		menu.style.visibility = 'hidden';
}

function setMenuPosition(menu, parentObj, align) {
	var x = y = 0;
	
	switch (align) {
		case 'bottom' :
			var parentBounds = getBounds(parentObj);
			x = parentBounds.x;
			y = parentBounds.y + parentBounds.height + kMenuBarBorderBottom;
			break;
			
		case 'right' :
			x = parentObj.offsetWidth + kMenuPaddingRight;
			y = parentObj.offsetTop + kMenuPaddingTop;
			
			break;
	}
	
	menu.style.left = x + 'px';
	menu.style.top = y + 'px';
	
	/*
	debugMenu("****************");
	debugMenu("setMenuPos : " + menu.id);
	debugMenu("parentBounds : x=" + parentBounds.x + " y=" + parentBounds.y + " width=" + parentBounds.width + " height=" + parentBounds.height);
	debugMenu("x=>" + x + " y=> " + y);
	debugMenu("left=" + menu.style.left + " top=" + menu.style.top);
	*/	
}

function getBounds(elmt) {
	var x = y = width = height = 0;
	
	if (elmt != null) {
		var parent = elmt;
		while (parent) {
				x += parent.offsetLeft;
				y += parent.offsetTop;
			
			parent = parent.offsetParent;
		}
		
		width = (elmt.offsetWidth || elmt.clientWidth);		
		height = (elmt.offsetHeight || elmt.clientHeight);
	}
	
	return { x : x, y : y, width : width, height : height };
}

function isParent(parent, elmt) {
	if (parent == null || elmt == null)
		return false;
	
	var obj = elmt.parentNode;
	while (obj) {
		if (obj == parent)
			return true;
		obj = obj.parentNode;
	}
	return false;
}

function debugMenu(msg) {
	if (!_debug)
		return;
				
	var div = document.getElementById('debug');
	if (div == null)
		return;
		
	div.innerHTML += "<br />";
	div.innerHTML += msg;
	div.scrollTop = div.scrollHeight;
}