/**
 * @author Jonathan Dorsey
 * http://jonathandorsey.com
 */

 var jd_menu = Class.create();
jd_menu.prototype = {
  
  initialize: function(){
       
    this.isIE6 = (document.all && !window.opera && !window.XMLHttpRequest) ? true : false;    

    if(!this.isIE6){
      this.initObservers();
    }
  },
  
  initObservers : function(){
    this.clearObservers();
    this.bMenuItemOver = this.open.bindAsEventListener(this);
    $$("#headernav li a.menu").invoke("observe", "mouseover", this.bMenuItemOver);
    
    this.bMenuItemClick = this.clearHoverStyle.bind(this);
    $$("#headernav li a").invoke("observe", "click", this.bMenuItemClick);
     
  },
  
  clearObservers : function(){
    $$("#headernav li a.menu").invoke("stopObserving", "mouseover", this.bMenuItemOver);
  },
  
  open : function(e){
    var menuItem = Event.element(e);
    var subMenu = menuItem.next();

    $(subMenu).stopObserving("mouseout", this.bSubMenuItemOut); 
    $(subMenu).stopObserving("mouseover", this.bSubMenuItemOver);
        
    this.bSubMenuItemOver = this.setState.bindAsEventListener(this, menuItem, 'on');
    $(subMenu).observe("mouseover", this.bSubMenuItemOver);   
    this.bSubMenuItemOut = this.setState.bindAsEventListener(this, menuItem, 'off');
    $(subMenu).observe("mouseout", this.bSubMenuItemOut);    
 
  },

  setState : function(e, menuItem, state){  

    if(state == 'on'){
      menuItem.addClassName("over");
    }else{  
      menuItem.removeClassName("over");
    }        
    
  },

  clearHoverStyle : function(){
    $$("#headernav li a.menu").invoke("removeClassName", 'over');
  }

}


/*
 * Needs no special instantiation - just instantiate it on DOM load...
 */
document.observe("dom:loaded", function() {jd_menu = new jd_menu();});


