function PDMenu(mName)
{
    var menuName   = mName;
    var divName    = menuName + "Div";
    var oMenu      = new YAHOO.widget.Menu(divName);
    var oMenuLink  = YAHOO.util.Dom.get(menuName);
    var nTimeoutId = null;
        
    PDMenu.saveMenu(menuName, this);

    this.getName = function()
    {
        return menuName;
    }

    this.onMouseOver = function()
    {
        if ( nTimeoutId )
            window.clearTimeout(nTimeoutId);
        
        oMenu.cfg.setProperty("context", [oMenuLink, "tl", "bl"]);
        oMenu.show();
    }
        
    this.onMouseOut = function()
    {
        nTimeoutId = window.setTimeout("PDMenu.hideMenu('" + menuName + "')", 100);
    }

    this.hide = function()
    {
        oMenu.hide();
    }

    YAHOO.util.Event.addListener(oMenuLink, "mouseover", this.onMouseOver);
    YAHOO.util.Event.addListener(oMenuLink, "mouseout",  this.onMouseOut);
    YAHOO.util.Event.addListener(oMenuLink, "click",     this.hide);
        
    oMenu.mouseOutEvent.subscribe(this.onMouseOut);
    oMenu.mouseOverEvent.subscribe(this.onMouseOver);
    oMenu.clickEvent.subscribe(this.hide);
        
    oMenu.cfg.setProperty("effect", {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.10} );
}

PDMenu.menuMap = new Object();

PDMenu.saveMenu = function(menuName, pdMenu)
{
    PDMenu.menuMap[menuName] = pdMenu;    
}

PDMenu.hideMenu = function(menuName)
{
    var pdMenu = PDMenu.menuMap[menuName];
    if ( pdMenu ) pdMenu.hide();
}
