/* 
  Provides necessary javascript functions for Blurb dropdown menus.
  This script depends prototype.js
  
  Author: Nathan Manousos (with help from Greg Tomei)
*/


if (typeof Blurb == "undefined"){ var Blurb = {}; }
Blurb.SlickDrop = {};

var mainMenuIsOpen = false;

function dbg(string)
{$('debug').innerHTML = string}


Blurb.SlickDrop.drop = function()
{ 
  // this; // The main menu item (li) that is being hovered over

  //clear any open menus
  Blurb.SlickDrop.clearMenus()
  
  //activate
  this.down('ul.submenu').addClassName('active');
  this.addClassName('active');
  mainMenuIsOpen = true;  
}


Blurb.SlickDrop.clearMenus = function()
{ 
  
  menus = $$('li.top-level');
  sub_menus = $$('ul.submenu');

  menus.invoke('removeClassName', 'active')
  sub_menus.invoke('removeClassName', 'active')

  mainMenuIsOpen = false;
}


Blurb.SlickDrop.init = function()
{
  menu_arrows = $$('.menu-arrow');
  menus = $$('li.top-level');
  
  menus.each(function(menu) { 
    menu.addClassName('has-arrow')
    menu.observe('mouseover', Blurb.SlickDrop.drop.bindAsEventListener(menu) );
    menu.observe('mouseover', function(){ menu.addClassName('hover');  } );
    menu.observe('mouseout', function(){ menu.removeClassName('hover') } );
  });
    
  menu_arrows.each(function(arrow) { 
    arrow.addClassName('show')
    arrow.observe('mouseover', function(){arrow.addClassName('hover')}  );
    arrow.observe('mouseout', function(){arrow.removeClassName('hover')}  );
  });
  
  //begin observing for event to close menu
  Event.observe(document.body, 'mouseover', function(event)
  {
    if(mainMenuIsOpen) {
      var maybe_a_menu = event.element()
      is_active_menu = maybe_a_menu.hasClassName('top-level') || maybe_a_menu.up('li.top-level.active')
      if(!is_active_menu)
      {
        Blurb.SlickDrop.clearMenus()
        // setTimeout('Blurb.SlickDrop.clearMenus()', 1000);
      }
    }
  });

}

