var LastMenuDObj;
var DObjNotClose;

addEvent(document.body, 'click', MenuCloseLast)
addEvent(window, 'resize', MenuOnResize)

function ShowMenu(Id, ClickObj, PositionType, Offset, OffsetTop)
{
    if (LastMenuDObj && LastMenuDObj.el.id==Id) return MenuCloseLast();
    if (LastMenuDObj) LastMenuDObj.Close();
    if (!Offset) Offset=0;
    if (!PositionType) OffsetType="right";
    DObj = new DynamicObj(Id);
    DObj.RelativeObj=ClickObj;
    DObj.RelativeOffset=Offset;
    DObj.PositionType=PositionType;
    DObj.el.onclick=function(){
        DObjNotClose=true;
    }
	if (!OffsetTop) OffsetTop=0;
    DObj.SetRelativePosition(ClickObj, Offset, OffsetTop, 1);
    if (PositionType=="left") DObj.SetPosition(DObj.GetLeft()-(DObj.GetWidth()+(Offset*2)), DObj.GetTop());
    DObjNotClose=true;
    DObj.Show();
    LastMenuDObj=DObj;
}

function MenuCloseLast()
{
    if (DObjNotClose) {
        DObjNotClose=false;
        return true;
    }
    if (!LastMenuDObj) return true;
    LastMenuDObj.Close();
    LastMenuDObj=false;
    return true;
}

function MenuOnResize() {
    if (!LastMenuDObj) return true;
    LastMenuDObj.SetRelativePosition(LastMenuDObj.RelativeObj, LastMenuDObj.RelativeOffset, 0, 1);
    if (LastMenuDObj.PositionType=="left") {
        LastMenuDObj.SetPosition(LastMenuDObj.GetLeft()-(LastMenuDObj.GetWidth()+(LastMenuDObj.RelativeOffset*2)), LastMenuDObj.GetTop());
    }
    return true;
}
