var timeout         = 500;
var closetimer		= 0;
var ddmenuitem      = 0;

// open hidden layer
function mopen(id) {

	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

	// Need to fix IE6 bug first
	positionIFrame(id, 'mainMenuMaskBugFix');
}
// close showed layer
function mclose()
{
    if (ddmenuitem) ddmenuitem.style.visibility = 'hidden';

    var frm = document.getElementById("mainMenuMaskBugFix");
    frm.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose;




/********************************************************************
 * IE6 FIX                                                          *
 * Problem when drop down menu hovers over windowed controls i.e.
 * dropdownlists.  The drop down list appears OVER the menu and cant
 * be fixed with z-index.
 ********************************************************************/
function positionIFrame(divid, frmid) {
    var div = document.getElementById(divid);
    var frm = document.getElementById(frmid);

    frm.style.left = 7;
    frm.style.top = findPosY(div);
    frm.style.height = div.offsetHeight - 5;
    frm.style.width = div.offsetWidth;
    frm.style.display = "block";
    frm.style.visibility = 'visible';
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
