var t;

function accordion_add_listener(class_name)
{
  var selector = '.accordion_toggle.'+class_name;
  
  $$(selector).each(function(toggle) {
    toggle.observe('mouseover', function(evt) { accordion(evt, class_name); }).observe('mouseout', accordion_remove_timeout);
  });
}

function accordion_remove_listener(class_name)
{
  var selector = '.accordion_toggle.'+class_name;
  
  $$('.accordion_toggle').each(function(toggle) {
    toggle.stopObserving('mouseover', function(evt) { accordion(evt, class_name); });
  });
}

function accordion_remove_timeout()
{
  if (t != undefined) {
    clearTimeout(t);
  }
}

function accordion(evt, class_name)
{
  accordion_remove_timeout();
  
  t = setTimeout(function() { _accordion(evt, class_name); }, 350);
}

function _accordion(evt, class_name)
{
  var toggle = Event.element(evt);
  var content = toggle.next('.accordion_content');
  
  if (!content.visible()) {
    toggle.setStyle({fontWeight:'bold'});
    
    accordion_remove_listener(class_name);

    $$('.accordion_content.'+class_name).select(Element.visible).each(function(cnt) {
      cnt.previous('.accordion_toggle').setStyle({fontWeight:'normal'});
      Effect.SlideUp(cnt, {duration:0.3});
    });
    
    Effect.SlideDown(content, {duration:0.3, afterFinish:function() { accordion_add_listener(class_name); }});
  }
}

function search_add_listener()
{
  $('search_q').observe('focus', function() {
    if (this._cleared) return;
    
    this.clear();
    this._cleared = true;
  });
}

function menu_add_listener()
{
  $$('.menu .tab', '.menu .first_tab', '.menu .middle_tab', '.menu .big_tab').each(function(tab) {
    tab.observe('mouseover', function() {
      tab.next().show();
      tab.setStyle({backgroundPosition: '0 -30px'});
    });
    
    tab.observe('mouseout', function() {
      tab.next().hide();
      tab.setStyle({backgroundPosition: '0 0'});
    });
  });
  
  $$('.menu ul', '.menu ul', '.menu ul').each(function(list) {
    list.observe('mouseover', function() {
      list.show();
      list.previous().setStyle({backgroundPosition: '0 -30px'});
    });
    
    list.observe('mouseout', function() {
      list.hide();
      list.previous().setStyle({backgroundPosition: '0 0'});
    });
  });
}

Event.observe(window, 'load', function() {
  accordion_add_listener('accordion_disciplines');
  search_add_listener();
  menu_add_listener();
});
