var timeout	= 500;
var closetimer = 500;
var closesubtimer = 100;
var ddmenuitem = 0;
var ddmenuitemsub = 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';
}

// open hidden sub layer
function mopensub(id, parent)
{
    // cancel sub close timer
    mcancelclosesubtime();
    
    // close old layer
    if (ddmenuitemsub) ddmenuitemsub.style.visibility = 'hidden';

    // get new sub layer and show it
    ddmenuitemsub = document.getElementById(id);
    ddmenuitemsub.style.visibility = 'visible';
    ddmenuitemsub.style.zIndex = '99';
    ddmenuitemsub.style.position = 'absolute';
    var x = parent.offsetLeft + parent.clientWidth;
    var y = parent.offsetTop; 

	ddmenuitemsub.style.left = x + 'px';
	ddmenuitemsub.style.top = y + 'px';
}

// close showed layer
function mclose()
{
    if (ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// close showed sub layer
function mclosesub() {
    if (ddmenuitemsub) ddmenuitemsub.style.visibility = 'hidden';
}

// go close timer
function mclosetime() {
	closetimer = window.setTimeout(mclose, timeout);
}

// go close sub timer
function mclosesubtime()
{
    closesubtimer = window.setTimeout(mclosesub, timeout);
}

// cancel close timer
function mcancelclosetime()
{
    if (closetimer)
    {
        window.clearTimeout(closetimer);
        closetimer = null;
    }
}

// cancel close sub timer
function mcancelclosesubtime() {
    if (closesubtimer)
	{
		window.clearTimeout(closesubtimer);
		closesubtimer = null;
	}
}

// close layer when click-out
document.onclick = function() { mclosesub(); mclose(); };