/**
 * MenuController JavaScript Class
 *
 *  This static object is an interface into all the popup menus
 *  on a web page.  It oversees that all menus are opened in the 
 *  correct locations/positions and that the appropriate popups
 *  are closed appropriately.
 *
 * Copyright Peter M. Laurina 2008
 * The use or modification of this property
 * is strictly prohibited unless with written
 * permission from myself, the author.  For
 * questions, please contact me via email at
 * pete at zionvier dot com 
 */


function MenuControl() {}

MenuControl.allMenuItems = new Array();
MenuControl.allMenuItemsIds = new Array();
MenuControl.allPopups  = new Array();
MenuControl.allPopupsIds = new Array();

MenuControl.hideAll = function()
{
    var len = MenuControl.allPopupsIds.length;
    while (len > 0)
    {
        len--;
        MenuControl.allPopups[MenuControl.allPopupsIds[len]].hide();
    }
    MenuControl.unSelectAll();
}
MenuControl.unSelectAll = function()
{    
    var len = MenuControl.allPopupsIds.length;
    while (len > 0)
    {
        len--;
        if (MenuControl.allPopups[MenuControl.allPopupsIds[len]].selectedItem != null)
          MenuControl.allPopups[MenuControl.allPopupsIds[len]].selectedItem.unSelect();
    }
}
MenuControl.hide = function(popup)
{
    if(popup != null && popup.hide == null)
      popup = MenuControl.allPopups[popup];
  
    if (popup.selectedItem != null  && popup.selectedItem.submenu != null)
    {
        MenuControl.hide(popup.selectedItem.submenu);
    }
    popup.hide();
    
}
MenuControl.show = function(popup)
{
    if(popup != null && popup.show != null)
      popup.show();
    else
      MenuControl.allPopups[popup].show();
}

MenuControl.addPopup = function(popup)
{
    MenuControl.allPopupsIds.push(popup.popupId);
    MenuControl.allPopups[popup.popupId] = popup;   
    
}

MenuControl.addItem = function(item)
{
    MenuControl.allMenuItemsIds.push(item.cmd);
    MenuControl.allMenuItems[item.cmd] = item;
}

