/* copyright (c) 2005 Eric W. Yee */

var pMenu = null;
function OLMBEvent(evt, bt, dd, m)
{
    if (pMenu == null)
        pMenu = new OLMenuButton(bt, dd, m);
    pMenu.HandleEvent(evt);
}

function HandleEvent(evt)
{
    switch (evt.type)
    {
        case 'mouseover':
            OLMBMouseOver(this.m_dropDown);
            OLMBMouseOver(this.m_button);
            break;
        case 'mouseout':
            if (!this.m_bVisible)
            {
                OLMBMouseOut(this.m_dropDown);
                OLMBMouseOut(this.m_button);
            }
            break;
        case 'click':
            if (this.m_bVisible)
                this.OLMBHideMenu();
            else
                this.OLMBShowMenu();
            break;
    }
}

function OLMenuButton(bt, dd, m)
{
    this.m_button = GetElement(bt);
    this.m_dropDown = GetElement(dd);
    this.m_menu = GetElement(m);
    this.m_bClick = false;
    this.m_bVisible = false;

    this.HandleEvent = HandleEvent;
    this.OLMBShowMenu = OLMBShowMenu;
    this.OLMBHideMenu = OLMBHideMenu;
}

function OLMBMouseOver(o)
{
    if (o.className == null || o.className != 'Depressed')
        o.className = 'Select';
}
function OLMBMouseOut(o)
{
    if (o.className != null && o.className == 'Select')
        o.className = null;
}
function OLMBClick(o)
{
    window.location = o;
}
function OLMBShowMenu()
{
    this.m_menu.style.left = GetOffsetLeft(this.m_button);
    this.m_menu.style.top = GetOffsetTop(this.m_button)
        + this.m_button.offsetHeight;
    this.m_menu.style.visibility = "visible";
    document.onclick = function() { pMenu.OLMBHideMenu(); }
    this.m_bClick = true;
    this.m_bVisible = true;
    OLMBMouseOver(this.m_dropDown);
    OLMBMouseOver(this.m_button);
}
function OLMBHideMenu()
{
    if (this.m_bClick)
        this.m_bClick = false;
    else
    {
        this.m_menu.style.visibility = "hidden";
        document.onclick = null;
        this.m_bVisible = false;
        OLMBMouseOut(this.m_dropDown);
        OLMBMouseOut(this.m_button);
    }
}

