function OnMainMenuOver(obj, id) {
    var objMenu = JS$(obj.arrMenu[id].idMenu),
		objLink = JS$(obj.arrMenu[id].idLink);
    if (objMenu && objLink) {
        if (objMenu.style.visibility != 'visible') {
			var xy = JSLIB.dom.getXY(objLink);
            objMenu.style.left = (xy[0] + obj.offsetX) + 'px';
            objMenu.style.top = (xy[1] + obj.offsetY) + 'px';
            objMenu.style.visibility = 'visible';
        }
        obj.arrMenu[id].bHiding = false;
    }
    // hide all other submenu
    for (var i = 0; i < obj.arrMenu.length; i ++) {
        if (i != id) {
            MainMenuHide(obj, i);
        }
    }
}

function OnMainMenuOut(obj, i) {
    // delay hiding submenu since the cursor may be moving from main menu to its submenu.
    // if so, cancel hiding the submenu
    obj.arrMenu[i].bHiding = true;
    window.setTimeout('MainMenuHide(' + obj.name + ', ' +i+')', 100);
}

function MainMenuHide(obj, i) {
	var elem=JS$(obj.arrMenu[i].idMenu);
    if (elem) {
        if (obj.arrMenu[i].bHiding) {
            elem.style.visibility = 'hidden';
		}
        obj.arrMenu[i].bHiding = false;
    }
}

// update position. firefox may display the layer before moving it.
function MainMenuInit(obj) {
    for (var i = 0; i < obj.arrMenu.length; i ++) {
        var objMenu = JS$(obj.arrMenu[i].idMenu);
        var objLink = JS$(obj.arrMenu[i].idLink);
        if (objMenu) {
			var xy = JSLIB.dom.getXY(objLink);
            objMenu.style.left = (xy[0] + obj.offsetX) + 'px';
            objMenu.style.top = (xy[1] + obj.offsetY) + 'px';
        }
    }
}

