/* rockstarfish_menu.js
 * Sort of the super class of all three menus that describes the look and feel of each menu.
 * trying to separate the interface from the business logic here.
 * @author: Cory Simpson (csimpson@fulcrm.com)
 */

function createMenu(id, nosort) {
  var c = cbeGetElementById('page.border').cbe;
  var y;
  var x;
  y = c.top()+56;
  x = c.left()+16;

  //Set the look and feel of the menu.
  var menu = new SelectMenu(id, nosort);
  menu.setHeaderSize(15, 192);
  menu.setMenuItemHeight(12);
  //categoryMenu.setMenuWidth(191);
  menu.setMenuWidth(193);
  menu.moveMenuTo(x, y);
  menu.showInnerBorder(false);
  menu.setBorderWidth(1);
  menu.setBorderColor("#4E8893");
  menu.zIndex(3);
  menu.setItemBackground("#FFFFFF");
  menu.setItemTextColor("#4E8893");
  menu.setHeaderClass("menuItem");
  menu.setMenuItemClass("menuItem");

  //Set Common event listeners for the menu header.
  menu.addMenuEvent("mousedown", "headerDown()");
  menu.addMenuEvent("mouseup", "headerUp()");
  menu.addMenuEvent("mouseover", "headerOver()");
  menu.addMenuEvent("mouseout", "headerOut()");

  //Set common event listeners for each menu item.
  menu.addMenuItemEvent("mousedown", "itemDown");
  menu.addMenuItemEvent("mouseover", "itemOver");
  menu.addMenuItemEvent("mouseout", "itemOut" );

  return menu;
}

/**
 * Executes when a menu item is clicked.
 */
function itemDown(index, childIndex) {
  if(childIndex != null) {
    currentMenu.nodes[index].childMenu.nodes[childIndex].element.cbe.color("#591111");
    //currentMenu.nodes[index].element.cbe.color("#591111");
  }
  else {
    currentMenu.nodes[index].element.cbe.color("#591111");
    if(currentMenu.currentNodeIndex != null && currentMenu.currentNodeIndex != index && currentMenu.nodes[currentMenu.currentNodeIndex].hasChildMenu()) {
      currentMenu.nodes[currentMenu.currentNodeIndex].element.cbe.color("#4E8893");
      currentMenu.nodes[currentMenu.currentNodeIndex].childMenu.close();
      currentMenu.nodes[currentMenu.currentNodeIndex].menuArrow.src = cbeGetPreloadedImageByName('childMenuArrowOff').src;
    }
    currentMenu.currentNodeIndex = index;
    if(currentMenu.nodes[index].hasChildMenu()) {
      currentMenu.nodes[index].childMenu.animateOpen('se')
      currentMenu.nodes[index].menuArrow.src = cbeGetPreloadedImageByName('childMenuArrowOn').src;
    }
  }
}

/**
 * Executes when a menu item is moused over.
 */
function itemOver(index, childIndex) {
  if(childIndex != null) {
    currentMenu.nodes[index].element.cbe.color("#990000");
    currentMenu.nodes[index].childMenu.nodes[childIndex].element.cbe.color("#990000");
  }
  else {
    currentMenu.nodes[index].element.cbe.color("#990000");
    /*
    if(currentMenu.currentNodeIndex != null && currentMenu.currentNodeIndex != index && currentMenu.nodes[currentMenu.currentNodeIndex].hasChildMenu()) {
      currentMenu.nodes[currentMenu.currentNodeIndex].element.cbe.color("#4E8893");
      currentMenu.nodes[currentMenu.currentNodeIndex].childMenu.close();
    }
    currentMenu.currentNodeIndex = index;
    if(currentMenu.nodes[index].hasChildMenu()) {
      currentMenu.nodes[index].childMenu.isOpen = true;
      setTimeout('if(currentMenu.nodes['+index+'].childMenu.isOpen){currentMenu.nodes['+index+'].childMenu.isOpen=false; currentMenu.nodes['+index+'].childMenu.open()}', 400);
      currentMenu.nodes[index].menuArrow.src = cbeGetPreloadedImageByName('childMenuArrowOn').src;
    }
    */
  }
}

/**
 * Executes when the mouse if moved off a menu item.
 */
function itemOut(index, childIndex){
  /*
  if(currentMenu.nodes[index].hasChildMenu()) {
    currentMenu.nodes[index].menuArrow.src = cbeGetPreloadedImageByName('childMenuArrowOff').src;
  }
  */
  if(childIndex != null) {
    currentMenu.nodes[index].childMenu.nodes[childIndex].element.cbe.color("#4E8893");
  }
  else {
    currentMenu.nodes[index].element.cbe.color("#4E8893");
  }
}

/**
 * Executes when the mouse is pressed on the header.
 */
function headerDown() {
  currentMenu.header.cbe.color("#591111");
}

/**
 * Executes when the mouse is released from the header.
 */
function headerUp() {
  currentMenu.header.cbe.color("#990000");
  openMenu();
}

/**
 * Executes when the mouse moves over the header.
 */
function headerOver() {
  currentMenu.header.cbe.color("#990000");
}

/**
 * Executes when the mouse moves over the header.
 */
function headerOut() {
  currentMenu.header.cbe.color("#4E8893");
}

function showDropMenu() {
  currentMenu.show();
}

/**
 * Open the active menu to display the content.
 */
function openMenu(){
  if (currentMenu) {
    if (currentMenu.isOpen) {
      currentMenu.close();
    } else {
      if((is.ie || is.nav || is.gecko) && !is.safari){
        currentMenu.animateOpen('s');
        //currentMenu.fadeOpen();
      } else {
        currentMenu.open();
      }
    }
  }
}

/**
 * Open the active menu to display the content.
 */
function hideMenu(){
  if (currentMenu) {
    if (currentMenu.isVisible) {
      currentMenu.hide();
    }
    if (currentMenu.currentNode) {
      currentMenu.currentNode.thumbNailBox.currentThumbNail.casestudy.hide();
      thumbNailBox.cbe.hide();
    }
  }
}

function compareByNodeText(a,b){
  var aComp = a.text.toLowerCase();
  var bComp = b.text.toLowerCase();
  if (aComp < bComp) return -1;
  if (aComp > bComp) return 1;
  return 0;
}
