
var TopNavigation = Class.create();
TopNavigation.prototype = {
  
  initialize: function() {
    
    var th = this;
    
    th.delay_rate = 0;
    th.delay_timer = undefined;
    th.menus = new Array();
    
    if( $('categories') ) {
      
      $('categories').childElements().each(function(elm){
        
        var classes = $w(elm.className);
        th.menus.push(classes[0]);
        
        var menu_list = elm.select('div').first();
        var base_link = elm.select('a').first();
        
        if( menu_list ) {
          
          menu_list.observe('mouseout',th.hide_menu.bindAsEventListener(th,elm));
          
          base_link.observe('mouseover',th.show_menu.bindAsEventListener(th,elm));
          base_link.observe('mouseover',th.came_back.bindAsEventListener(th,elm));
          base_link.observe('mouseout',th.hide_menu.bindAsEventListener(th,elm));
          
          menu_list.select('li').each(function(link){
            link.observe('mouseout',th.hide_menu.bindAsEventListener(th,elm));
            link.observe('mouseover',th.came_back.bindAsEventListener(th,elm));
          });
          
        } else {
          
          Element.observe(base_link,'mouseover',th.hide_all.bindAsEventListener(th));
          
        }
        
      });
      
    }
    
  },
  
  show_menu: function(e,menu) {
    
    this.hide_all(this);
    menu.addClassName('show_menu');
    this.select_sort(true);
    
  },
  
  hide_menu: function(e,menu) {
    
    var th = this;
    var over = th.over_menu(e,menu);
    
    if( over ) {
      Event.stop(e);
      th.select_sort(true);
    } else {
      th.delay_timer = Element.removeClassName.delay(th.delay_rate,menu,'show_menu');
      th.select_sort(false);
    }
    
  },
  
  hide_all: function(e) {
    
    var th = this;
    
    for( i=0; i<th.menus.length; i++) {
      
      menu_to_close = $$('li.'+th.menus[i]);
      if( menu_to_close.length > 0 ) menu_to_close.first().removeClassName('show_menu');
      
    }
    
  },
  
  over_menu: function(e,menu) {
    
    this.select_sort(true);
    
    var elmOver = e.relatedTarget;
    var menuClass = $w(menu.className);
    var menuOver = $$('div.'+menuClass[0]).first();
    
    if( elmOver ) var flag = ( elmOver.hasClassName(menuClass[0]) || elmOver.descendantOf(menuOver) ) ? true : false;

    return flag;
      
  },
  
  came_back: function(e,elm) {
    
    var th = this;
    window.clearTimeout(th.delay_timer);
    
  },
	
	select_sort: function(disable) {
	  
	  var selects = $$('body').first().select('select');
	  var browser = navigator.userAgent;
	  
	  if( /MSIE 6/.test(browser) ) {
  	  if( disable ) {
	    
  	    selects.each(function(elm){
  	      elm.setStyle({ 'visibility': 'hidden' });
  	    });
	    
  	  } else {
	      var delay_rate = this.delay_rate;
	      
  	    selects.each(function(elm){
  	      Element.setStyle.delay(delay_rate,elm,{ 'visibility': 'visible' });
  	    });
	    
  	  }
	  }
	  
	}  
  
};

var mainSearch = Class.create();
mainSearch.prototype = {
  
  initialize: function() {
    
    var search_box = $$('input.search_input').first();
    var search_button = $$('a.search_button').first();
    search_box.observe('click',this.clear_search_box.bindAsEventListener(this));
    search_button.observe('click',this.search_term_check.bindAsEventListener(this));
    
  },
  
  clear_search_box: function(e) {
    
    var search_box = Event.element(e);
    
    if( !this.clicked_search && search_box.hasClassName('default_text') ) {
      
      search_box.setValue('');
      search_box.removeClassName('default_text');
      
    }
    
    this.clicked_search = true;
    
  },
  
  search_term_check: function(e) {
    
    var search_box = $$('input.search_input').first();
    
    Event.stop(e);
    
    if( search_box.getValue() != '' && search_box.getValue() != 'Enter cartridge number or printer name' ) {
      $('cse-search-box').submit();
    }
    
    
  }
  
};


function initTop() { 
  var newTopNavigation = new TopNavigation(); 
  var newMainSearch = new mainSearch();
}
document.observe('dom:loaded',initTop);