(function(){
  
  $(window).load(init);
  
  var mm_items = [], sm_items = [], $sm,
      timeoutId, active_item_index, default_active_index,
      timeout = 100;
  
  function init(){
    //collecting menu items
    var $mm_items = $("[id^='mm']"), i, j, l, s;
    
    for (i=0,l=$mm_items.length;i<l;i++){
      j = String($mm_items[i].id).slice(-1) * 1;
      mm_items[j] = $mm_items[i];
      
      if ($($mm_items[i]).hasClass('mma_button'))
        active_item_index = default_active_index = j;
      
      s = $('#sm' + j);
      if (s.length == 1)
        sm_items[j] = s[0];
    }
    
    //adding handlers
    for (i in mm_items){
      $(mm_items[i]).mouseover(
        (function(index){ return function(){ on_item_mouseover(index); } })(i)
      );
      
      $(mm_items[i]).mouseout(
        (function(index){ return function(){ on_item_mouseout(index);} })(i)
      );
    }
      
    //secondary menu container
    $sm = $('div.secondary_menu');
    $sm.mouseover(on_sm_mouseover).mouseout(on_sm_mouseout);
    
  }
  
  //event handlers
  
  function on_item_mouseover(index){
    if (timeoutId) 
      clearTimeout(timeoutId);
    timeoutId = setTimeout(function(){ set_item_active(index)},timeout);
  }
  
  function on_item_mouseout(index){
    if (timeoutId) 
      clearTimeout(timeoutId);
    timeoutId = setTimeout(function(){ restore_default_state(); },timeout);
  }
  
  function on_sm_mouseover(){
    if (timeoutId) 
      clearTimeout(timeoutId);
  }
  
  function on_sm_mouseout(){
    timeoutId = setTimeout(function(){ restore_default_state(); },timeout);
  }
  
  //UI control functions
  function set_item_active(index){
    if (index == active_item_index) return null;
    if (active_item_index)
      set_item_inactive(active_item_index);
    mm_items[index].className = 'mma_button';  
    active_item_index = index;  
    show_sm_section(index);
  }
   
  function set_item_inactive(index){
    if (index != default_active_index)
      mm_items[index].className = 'mm_button';
      
    hide_sm_section(index);
    if (active_item_index == index)
      active_item_index = 0;
  }
  
  function show_sm_section(index){
    
    if (sm_items[index]){
      $sm.css({visibility:'visible'});
      
      $(sm_items[index])
      .css({display:'block'})
      .find('.sm_overlay').css({opacity:1,display:'block'})
      .stop(true,true)
      .animate({opacity:0},200,'swing',function(){ 
        $(sm_items[index])
        .find('.sm_overlay')
        .css({display:'none'}) 
      });  
    } else $sm.css({visibility:'hidden'});
    
    
  }
  
  function hide_sm_section(index){
    if (sm_items[index]) 
      $(sm_items[index]).css({display:'none'});
  }
  
  function restore_default_state(){
    set_item_active(default_active_index);
  }
  
  
})()