/*	cms_menus.js
	javascript functions to show and hide menus
	(c) 2007 Nuvola Ltd
*/
var idTimeout = 0;
var menudisplayed = 0;

/*configuration options - make the menus even wizzier*/
var menus_parent_class = "menulink";				//parent class when not opened
var menus_parent_selected_class = "menulinksel";		//change class of parent to this when submenu open
var menus_fixed_width = false;						//if non-zero (or not false), menus will be fixed width regardless of other settings
var menus_match_width = true;						//if true, change width of submenu to match parent menu
var menus_match_height = false;						//if true, change height of submenu to match parent menu
var menus_min_width = 110;							//menus will never be rendered narrower than this
var menus_offset_height = 0;
var menus_offset_width = -1;
var menus_extra_width = navigator.userAgent.indexOf("Safari") ? -5 : -5;


function showsubmenu(num)
{
	var leftpos = "50px";
	cancelhidesubmenu();

	if(menudisplayed) hidesubmenu(menudisplayed);

	var menu = document.getElementById("menu" + num);
	var offl = menu.offsetLeft, offt = menu.offsetTop;

	if(navigator.userAgent.indexOf("MSIE") != -1)		//msie - offsets only refer to offset from parent
	{
		if(parseFloat(navigator.appVersion.split("MSIE")[1]) < 8)
		{
			var i = 0, obj = menu.parentElement;
			for(i = 0; i < 100; i ++)
			{
				if(!obj || obj == "null" || obj == "undefined") break;
				offl += obj.offsetLeft;
				offt += obj.offsetTop;
				obj = obj.parentElement;
			}
		}
	}

	document.getElementById("submenu" + num).className = "submenu";
	var top =  offt + menu.offsetHeight + menus_offset_height;
	var left = offl + menus_offset_width;
	document.getElementById("submenu" + num).style.top = top + 'px';
	document.getElementById("submenu" + num).style.left = left + 'px';

	if(menus_fixed_width)
		document.getElementById("submenu" + num).style.width = menus_fixed_width;
	else if(menus_match_width)
		document.getElementById("submenu" + num).style.width = (menu.offsetWidth + menus_extra_width) > menus_min_width ? menu.offsetWidth + menus_extra_width : menus_min_width;

	if(menus_match_height) document.getElementById("submenu" + num).style.height = menu.offsetHeight;

	menu.className = menus_parent_selected_class;


	menudisplayed = num;
}

function hidesubmenu(num)
{
	cancelhidesubmenu();
	document.getElementById("submenu" + num).className = "submenuhidden";
	document.getElementById("menu" + num).className = menus_parent_class;
	menudisplayed = 0;
}

function delayhidesubmenu(num)
{
	idTimeout = setTimeout("hidesubmenu(" + num + ")", 500);
}


function cancelhidesubmenu()
{
	if(idTimeout) clearTimeout(idTimeout);
	idTimeout = 0;
}

