
function ComputeElementPosition(elem)
{
    var pos = { x:0, y:0 };
    while (elem != document.body && elem.style.position != "absolute") {pos.x += elem.offsetLeft; pos.y += elem.offsetTop; elem = elem.offsetParent; }
    return pos;
}

var g_VisiblePopup = null;

function ShowPopup(strTargetID, strPopupID, objEvent)
{
    var objTarget = GetObject(strTargetID);
    var objPopup = GetObject(strPopupID);
    
    if(objTarget == null || objPopup == null)
        return;

    HideVisiblePopup();
    ShowObject(strPopupID);

    var pos = ComputeElementPosition(objTarget);
    
    if(objPopup.getAttribute("popup_align") == 'right')
    {
        var xAlign = pos.x + objTarget.offsetWidth;
        objPopup.style.left= (xAlign - objPopup.offsetWidth) +  "px";
    }
    else
        objPopup.style.left=pos.x + "px";

    objPopup.style.top=(pos.y + 15) + "px";

    g_VisiblePopup = objPopup;
    
    if(objEvent.stopPropagation)
        objEvent.stopPropagation();
    else 
        objEvent.cancelBubble = true;
    
    document.body.onclick=HideVisiblePopup;
}

function HideVisiblePopup()
{   
    if(g_VisiblePopup != null)
    {
        if(GetObject(g_VisiblePopup.id) != null)
            HideObject(g_VisiblePopup.id);
    }
        
    g_VisiblePopup = null;
}

