function OnMainMenuOver(obj, id) {
    if (!document.getElementById) return

    var objMenu = document.getElementById(obj.arrMenu[id].idMenu)
    var objLink = document.getElementById(obj.arrMenu[id].idLink)
    if (objMenu && objLink) {
        if (objMenu.style.visibility != 'visible') {
            objMenu.style.left = (HeUtilsGetOffsetLeft(objLink) + obj.offsetX) + 'px'
            objMenu.style.top = (HeUtilsGetOffsetTop(objLink) + 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) {
    if (document.getElementById && document.getElementById(obj.arrMenu[i].idMenu)) {
        if (obj.arrMenu[i].bHiding)
            document.getElementById(obj.arrMenu[i].idMenu).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 = document.getElementById(obj.arrMenu[i].idMenu)
        var objLink = document.getElementById(obj.arrMenu[i].idLink)
        if (objMenu) {
            objMenu.style.left = (HeUtilsGetOffsetLeft(objLink) + obj.offsetX) + 'px'
            objMenu.style.top = (HeUtilsGetOffsetTop(objLink) + obj.offsetY) + 'px'
        }
    }
}
