function load(location){
    if(document.images){
        var image = new Image();
        image.src = location;
        return image;
    }
}

function getElementPosition(oElement, oMenu){
    var res = new Array(0, 0);
    // Detect absolute or relative parent offset
    pStopObj = null;
    pObj = oMenu.parentNode;
    while(pObj != null && typeof(pObj.style) != "undefined"){
        if(pObj.style.position == "absolute" || pObj.style.position == "relative"){
            pStopObj = pObj;
            break;
        }
        pObj = pObj.parentNode;
    }
    // Get coordinates
    do{
        if(pStopObj == oElement)
            break;
        res[0] += oElement.offsetLeft;
        res[1] += oElement.offsetTop;
    } while((oElement = oElement.offsetParent) != null);
    return res;
}

function positioningMenu(smNum, relateToParentX, relateToParentY, deltaX, deltaY){
    var menuId = "smenu" + smNum;
    var menuObj = document.getElementById(menuId);
    var parentId = "m" + smNum;
    var parentObj = document.getElementById(parentId);
    var parentPosition = getElementPosition(parentObj, menuObj);

    if(typeof(deltaX) == "undefined")
        deltaX = 0;
    if(relateToParentX == "right" || relateToParentX == "center"){
        parentWidth = parentObj.offsetWidth;
        if(relateToParentX == "center")
            parentWidth = parentWidth/2;
        deltaX += parentWidth;
    }
    if(typeof(deltaY) == "undefined")
        deltaY = 0;
    if(relateToParentY == "bottom" || relateToParentY == "center"){
        parentHeight = parentObj.offsetHeight;
        if(relateToParentY == "center")
            parentHeight = parentHeight/2;
        deltaY += parentHeight;
    }

    menuObj.style.position = 'absolute';
    menuObj.style.left = parentPosition[0] + deltaX;
    menuObj.style.top = parentPosition[1] + deltaY;
}

var hTmMenuHide = null;
var hTmSubMenuHide = null;
var prNum = 0;
var prevImgSrc = Array();
var openedMenusStack = Array();

function showMenu(smNum, parentNum, relateToParentX, relateToParentY, deltaX, deltaY, imgOver, lang){
    showBG(smNum, lang);
    var menuObj = document.getElementById("smenu" + smNum);
    if(menuObj != null){
        if(prNum == smNum){
            clearTimeout(hTmMenuHide);
            clearTimeout(hTmSubMenuHide);
        }
        
//        hideMenuById(parentNum, true, true);
        positioningMenu(smNum, relateToParentX, relateToParentY, deltaX, deltaY);
        menuObj.style.visibility = 'visible';
//        openedMenusStack.push(smNum);
    }
}

function showBG(smNum,lang){
    var menubg = 'url("/templates/cip/images/'+lang+'_cip_menu' + smNum / 10 + 'bg.gif")';
    document.getElementById("m" + smNum).style.backgroundImage = menubg;
}

function hideBG(smNum){
    var menubg = 'url("/templates/cip/images/spacer.gif")';
    document.getElementById("m" + smNum).style.backgroundImage = menubg;
    prNum = 0;
}

function moff(smNum){
    prNum = smNum;
    hTmMenuHide = setTimeout('hideBG(' + smNum + ')', 30);
    var menuObj = document.getElementById("smenu" + smNum);
    if(menuObj != null){
        hTmSubMenuHide = setTimeout('hideSubMenu(' + smNum + ')', 10);
    }
}

function hideSubMenu(smNum){
    var menuObj = document.getElementById("smenu" + smNum);
    menuObj.style.visibility = 'hidden';
}

function mon(smNum){
    clearTimeout(hTmMenuHide);
    clearTimeout(hTmSubMenuHide);
}









function hideMenuById(smNum, isIdParent, hideAllIfNotFound){
    if(smNum == 0){
        hideMenuAll();
    } else {
        var removeFromPos = -1;
        for(i = 0; i < openedMenusStack.length; i++){
            if(openedMenusStack[i] == 0)
                break;
            if(removeFromPos == -1 && openedMenusStack[i] == smNum){
                removeFromPos = i;
                if(isIdParent){
                    removeFromPos += 1;
                    continue;
                }
            }
            if(removeFromPos > -1){
                hideMenu(openedMenusStack[i]);
            }
        }
        if(hideAllIfNotFound && removeFromPos == -1){
            hideMenuAll();
        } else if(removeFromPos > -1 && removeFromPos < openedMenusStack.length){
            openedMenusStack.splice(removeFromPos, openedMenusStack.length-removeFromPos);
        }
    }
} 
