
var MENU_HIDE_DELAY = 500;  // in milliseconds



function killDelayedHide(menu) {
	if (menu.parentmenu && menu.parentmenu.timedmenu) {
		clearTimeout(menu.parentmenu.timedmenu.timerid);
		menu.parentmenu.timedmenu.timerid = null;

		if (menu.parentmenu.timedmenu != menu)
			execHide(menu.parentmenu.timedmenu.id, menu.parentmenu.timediframe.id);

		menu.parentmenu.timedmenu = null;
		menu.parentmenu.timediframe = null;
	}

	if (menu.timerid != null) {
		clearTimeout(menu.timerid);
		menu.timerid = null;
	}
}

function execDelayedHide(menu, iframe) {
	killDelayedHide(menu);
	menu.parentmenu.timedmenu = menu;
	menu.parentmenu.timediframe = iframe;
	menu.timerid = setTimeout("execHide('"+menu.id+"', '"+iframe.id+"')", MENU_HIDE_DELAY);
}

function execHide(menuid, iframeid) {
	var menu = GetHTMLObjectById(menuid);
	var iframe = GetHTMLObjectById(iframeid);

	SetHTMLObjectExistence(iframe, false);
	SetHTMLObjectExistenceDIV(menu, false);

	if (menu.parentelement) menu.parentelement.className = 'element-submenu';
	if (menu.parentmenu && menu.parentmenu.timedmenu) {
		menu.parentmenu.timedmenu.timerid = null;
		menu.parentmenu.timedmenu = null;
		menu.parentmenu.timediframe = null;
	}
}



function showMenu(menuid, parentid, parentOrient, orient) {
	var menu = GetHTMLObjectById(menuid + '-menu');
	var element = GetHTMLObjectById(menuid + '-element');

	menu.parentmenu = GetHTMLObjectById(parentid + '-menu');
	menu.parentelement = element;

	killDelayedHide(menu);

	if (!HTMLObjectExists(menu)) {
		var elementpos = GetHTMLObjectPosition(element);

		if (parentOrient == 'V' && orient == 'V')
			SetHTMLObjectPosition(menu, elementpos.x + elementpos.w, elementpos.y, 0, 0);
		else if (parentOrient == 'H' && orient == 'V')
			SetHTMLObjectPosition(menu, elementpos.x, elementpos.y + elementpos.h, 0, 0);
		else if (parentOrient == 'H' && orient == 'H') {
			parentpos = GetHTMLObjectPosition(menu.parentmenu);
			SetHTMLObjectPosition(menu, parentpos.x, elementpos.y + elementpos.h, 0, 0);
		}

		menu.parentelement.className = 'element-submenu-active';

		var iframe = GetHTMLObjectById(menuid + '-iframe');

		SetHTMLObjectExistenceDIV(menu, true);
		SetHTMLObjectExistenceDIV(iframe, true);

		var table = GetHTMLObjectById(menuid + '-table');
		var tablepos = GetHTMLObjectPosition(table);
		SetHTMLObjectPosition(iframe, tablepos.x, tablepos.y, tablepos.w+2, tablepos.h+5);
	}
}

function setActiveMenu(menuid, parentid, parentOrient, orient) {
	var activeMenu = GetHTMLObjectById(menuid + '-menu');
	activeMenu.alwaysshow = true;

	showMenu(menuid, parentid, parentOrient, orient);

	activeMenu.parentelement.className = 'element-submenu-default';
	activeMenu.className = 'menusystem-default-H';
}

function hideMenu(menuid) {
	var menu = GetHTMLObjectById(menuid + '-menu');
	var iframe = GetHTMLObjectById(menuid + '-iframe');
	if (!menu.alwaysshow) {
		while (menu.parentmenu != null) {
			execDelayedHide(menu, iframe);
			menu = menu.parentmenu;
		}
	}
}

function stopHideMenu(menuid) {
	var menu = GetHTMLObjectById(menuid + '-menu');
	while (menu.parentmenu != null) {
		killDelayedHide(menu);
		menu = menu.parentmenu;
	}
}
