/**
 * MenuBar JavaScript Class
 *
 * 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 MenuBar() {}

MenuBar = function (parentDiv, iconPath, docking)
{  
    this.menuShadowDivClass = "zv_menuShadowDiv";
    this.menuOutterDivClass = "zv_menuOutterDiv";
    this.menuInnerDivClass = "zv_menuInnerDiv";
    this.menuItemClass = "zv_menuItem";
    this.menuAlinkClass = "zv_menuBarAlink";
    this.menuAlinkCommonClass = "zv_menuBarAlinkCommon";
    this.menuSelectedAlinkClass = "zv_menuBarSelectedAlink";
    this.menuImgClass = "zv_menuImg";
    this.menuCapSpanClass = "zv_menuCaption";
    this.menuDownArrow = "zv_menuDownArrow";
    
    if (iconPath != null)
      this.iconPath = iconPath;
    else
      this.iconPath = Utils.iconPath;
  
    this.parentDiv = parentDiv;
    this.menuItems = new Array();
    
    this.outterDiv = document.createElement('div');
    this.innerDiv = document.createElement('div');
    this.outterDiv.style.width = "100%";
    this.innerDiv.style.width = "100%";
    Utils.addClassName(this.outterDiv, "zv_menuBarOutterDiv");
    Utils.addClassName(this.innerDiv, "zv_menuBarInnerDiv");
    
    this.innerDiv.innerHTML = "<img src='xeno/images/toolbardots.gif' alt='toolbar'>";
    this.outterDiv.appendChild(this.innerDiv);
    var dockDiv = document.getElementById(parentDiv);
    dockDiv.appendChild(this.outterDiv);
    
    if (docking == "top" || docking == null)
    {
      while (dockDiv.firstChild != this.outterDiv)
        dockDiv.appendChild(dockDiv.firstChild);
    }
    else if (docking == "bottom")
    {
        if (dockDiv.style.position != "relative")
        { alert("Unable to correctly dock MenuBar to bottom.\nparentDiv must have position = relative");}
        this.outterDiv.style.position = "relative";
        this.outterDiv.style.bottom = "0px";
    }
}

MenuBar.prototype.addMenu = function(cmd, caption, icon, submenu)
{
    var item = new MenuBarItem(this, cmd,  icon, caption, submenu);
    this.menuItems[cmd] = item;
    
    this.innerDiv.appendChild(item.alink); //put that item into the control for real
    return item;
}


function MenuBarItem(menuBar, cmd, icon, caption, submenu)
{  
    this.menuBar = menuBar;
    this.cmd = cmd;
    this.icon = icon;
    this.capion = caption;
    this.submenu = submenu;
    this.alink = null; //contains the entire link
    
    this.iconImg = document.createElement('img');
    this.iconImg.src = Strings.makeUrlPath( this.menuBar.iconPath, (icon==null)?"ico-none.gif" : icon );
    Utils.addClassName(this.iconImg, this.menuBar.menuImgClass );
    if (icon==null)
       this.iconImg.style.width = "1px";
   
    this.capSpan = document.createElement('span');
    this.capSpan.innerHTML = caption;
    Utils.addClassName(this.capSpan, this.menuBar.menuCapSpanClass);
    if (icon==null)
       this.capSpan.style.marginLeft = "1px";
       
    if (this.submenu != null)
    {
        this.arrow = document.createElement('img');
        this.arrow.src = Strings.makeUrlPath( this.menuBar.iconPath, "arrow_down.gif");
        Utils.addClassName(this.arrow, this.menuBar.menuDownArrow);
    }
    
    this.alink = document.createElement("A");
    this.alink.href = "#";  
    this.alink.className = this.menuBar.menuAlinkCommonClass;
    Utils.addClassName(this.alink, this.menuBar.menuAlinkClass)
    this.alink.appendChild(this.iconImg);
    this.alink.appendChild(this.capSpan);
    if (this.arrow != null)
      this.alink.appendChild(this.arrow);
    
    this.alink.menuItem = this; //look at myself so I can find me later
/*
    if ( isIE )                                  
      this.alink.attachEvent("onclick", MenuBar.onPopupMenuClick );            
    else
      this.alink.addEventListener("click", MenuBar.onPopupMenuClick, false);
  
    if ( isIE )                                  
      this.alink.attachEvent("onmouseover", MenuBar.onPopupMouseOver );            
    else
      this.alink.addEventListener("mouseover", MenuBar.onPopupMouseOver, false);
  */
    MenuControl.addItem(this);
}