var g_menus = new Object();
var FF = document.getElementById&&!document.all;
var IE = document.all;
var SF = navigator.vendor;

function menu_showPopup(parentId, event, _submenuObj, parentObj, position)
{
	var _menu = g_menus["menu" + parentId];
	var submenuObj = _submenuObj;
	
	if (!_menu)
	{
		g_menus["menu" + parentId] = new Object();
		
		_menu = g_menus["menu" + parentId];
	}
	
	if (_menu.doExit)
	{
		window.clearTimeout(_menu.timerHandle);
		_menu.doExit = false;
	}

	// hide current active submenu
	if (!submenuObj || _menu.currentSubmenu != submenuObj)
		menu_exitPopup(parentId);
	
	// show selected submenu
	if (submenuObj && _menu.currentSubmenu != submenuObj)
	{
		submenuObj.style.display = "";
		var x = getEventX(event);
		var y = getEventY(event);
		var dim = getScreenDimensions();

		if (position == "bottom")
		{
			x = getScreenPosX(parentObj) + 1;
			y = getScreenPosY(parentObj) + parentObj.offsetHeight - 1;// + 68;
		}
		else if (position == "right")
		{
			x = parentObj.offsetWidth + getScreenPosX(parentObj);
			y = getScreenPosY(parentObj);

			if (IE)
			{
				x += 1;
				y -= 1;
			}
			else if (FF)
			{
				y -= 1;
			}
		}

		
		if (IE)
		{
			x -= dim.scrollLeft + 1;
			y -= dim.scrollTop;
		}
		
		
		var width  = submenuObj.offsetWidth;
		var height = submenuObj.offsetHeight;
		// ensure visiblity of menu
		var availHeight = document.body.offsetHeight-10;
		if (y-document.body.scrollTop + height > availHeight)
			y = availHeight + document.body.scrollTop - height; 
			
		var availWidth = document.body.offsetWidth-10;
		if (x-document.body.scrollLeft + width > availWidth)
			x = availWidth + document.body.scrollLeft - width;
		
		// aangepast
		var menuDiv = document.getElementById('menuList');
		var menuDivH = getScreenPosY(menuDiv) + menuDiv.offsetHeight;

		if (parentId == 'menu_-2')
			submenuObj.style.top =  menuDivH + 'px';
		else
			submenuObj.style.top = (getScreenPosY(parentObj)-getScreenPosY(submenuObj.offsetParent)) + "px";
			
		submenuObj.style.left = (x-getScreenPosX(submenuObj.offsetParent)) + "px";
		
		_menu.highlighted = parentObj;
	}

	_menu.currentSubmenu = submenuObj;
}

function menu_exitPopup(parentId)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu)	
		return;
		
	if (_menu.currentSubmenu)
	{
		// exit the submenu's submenu
		menu_exitPopup(_menu.currentSubmenu.id);

		_menu.currentSubmenu.style.display = "none";
		if (_menu.highlighted.id.search("alphamenu") == -1)
			_menu.highlighted.className = "normal";
	}
	_menu.currentSubmenu = null;
	_menu.highlighted = null;
}

function menu_exitPopup2(parentId)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu || !_menu.doExit)	
		return;

	menu_exitPopup(parentId);
}

function menu_exitPopupDelayed(parentId, event)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu)
		return;
		
	if (!_menu.doExit)
	{
		_menu.doExit = true;
		var callback = function() { menu_exitPopup2(parentId); }
		_menu.timerHandle = window.setTimeout(callback, 1000);
	}
}

function menu_cancelExit(parentId, event)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu)	
		return;

	_menu.doExit = false;
	window.clearTimeout(_menu.timerHandle);
}

function menu_mouseOver(obj, parent, id, event)
{
	obj.className="hover"; 
	menu_showPopup(parent, event, obj.childNodes[1], obj, "right"); 
}

function menu_mouseOut(obj, parent, id, event)
{
	var _menu = g_menus["menu" + parent];
	if (!_menu || !_menu.currentSubmenu)
		obj.className="normal";
}

function swapClass(id, swapTo, platformName) {
	var menu = document.getElementById('alphamenu_'+id);
	var img1 = document.getElementById('alphaimg1_'+id);
	var img2 = document.getElementById('alphaimg2_'+id);
	
	menu.className = swapTo;
	var srcTo = '';
	if (swapTo == 'hover' || swapTo == 'active')
		srcTo = 'active';
	else
		srcTo = 'normal';
		
	img1.src = './images/' + platformName + '/menu/' + srcTo + '_left.gif';
	img2.src = './images/' + platformName + '/menu/' + srcTo + '_right.gif';
}
