$(document).ready(init_main_menu);

var caller = {};
var menu_hover_idx = undefined;
var current_menu_idx = undefined;
var current_what = undefined;
var menu_timeout = undefined;
var menu_timeouts = [];
var last_hover_idx = undefined;
function init_main_menu(){
  
  
  

  //$('body').append('<div id="debug" style="position:absolute; bottom:300px; left:0"></div>');
  
  // remove current-page-parent
  var current_parent;
  debug('init_main_menu');
  $('#main_menu>li>a').bind('mouseover', function(){
  	  debug('menu hover');
  		var _m = menu_hover_idx;
  		if(menu_hover_idx == $('#main_menu>li>a').index(this)){
  		   debug('return');
  		   //return;
  		}
  		clear_timeouts();
  		
      menu_hover_idx = $('#main_menu>li>a').index(this);
      if(_m == undefined){
      	// menu_hover_idx = -1;
      	if(current_parent.html()!= null){
      		hide_sub_menus(undefined, false);
      	}else{
      		hide_sub_menus(undefined);
      		
      	}
      	$(this).parent().children('ul').show();
      	return;
      }      
      hide_sub_menus();
      if(last_hover_idx != current_menu_idx){
        $(this).parent().children('ul').css({top:20,opacity:0}).animate({top: 35,opacity:1},{duration:300,queue:false});

      }
        last_hover_idx = menu_hover_idx;
      // $(this).parent().children('ul').fadeIn();
  });

  $('#main_menu>li>a').bind('mouseout', function(){
      debug('menu out');
      if(current_menu_idx!=undefined){
        menu_hover_idx = current_menu_idx;
      }else{
        menu_hover_idx = undefined;
      } 
      var mt = setTimeout( function(){hide_sub_menus(true)},2500);
      if(menu_hover_idx!= undefined){
        menu_timeouts.push(mt);
      }else{
         menu_timeouts.push(mt);
        
      }  
    }
  );
  
  $('#main_menu>li>ul a').bind('mouseover', function(){
  		clear_timeouts();    
      menu_hover_idx = $('#main_menu>li>ul').index($(this).parent().parent());

    }
  );
  
  $('#main_menu>li>ul').bind('mouseout', function(){
      if(current_menu_idx!=undefined){
        menu_hover_idx = current_menu_idx;
      }else{
        menu_hover_idx = undefined;
      } 
      var mt = setTimeout( function(){hide_sub_menus()},2500); 
      if(menu_hover_idx!= undefined){
        menu_timeouts.push(mt);
      }else{
        menu_timeouts.push(mt);
        
      }  
  });
  
  
  current_parent = $('#main_menu>li.current-page-item');
  
  if(current_parent.html()){
    current_parent.removeClass('current-page-item');
    current_what = 'current-page-item';
  }else{
    current_parent = $('#main_menu>li.current-page-parent');
    if(current_parent.html()){
      current_parent.removeClass('current-page-parent');
      current_what = 'current-page-parent';
    }else{
      current_parent = $('#main_menu>li.current-page-ancestor');
      if(current_parent.html()){
        current_parent.removeClass('current-page-ancestor');
        current_what = 'current-page-ancestor';
      }
    }
  }
    
  if(current_parent.html()){
    current_menu_idx = $('#main_menu>li').index(current_parent);
    
    current_parent.children('a').trigger('mouseover'); 
    
  }
  
  
  

}

function hide_sub_menus(double_check,animate){
  var a = false;
	if(animate==undefined) animate = true;
  $('#main_menu>li>ul').filter(
      function(index){

        if(index == current_menu_idx && menu_hover_idx==undefined) {
          menu_hover_idx = index;
        }
        if(index == menu_hover_idx){
          debug('current '   + current_menu_idx + ' idx= ' + index);
          if(menu_hover_idx == current_menu_idx){
            debug('return false!');
            return false;  
            
          }
          if($(this).css('display')=='none'){
          	if(animate){
            	$(this).css({display:'block',top:20,opacity:0}).animate({top:35,opacity:1}, {queue:false,duration:300});  
          	}else{
            	$(this).css({display:'block',top:35});          	
          	}
          } 
          if(current_what == undefined) current_what = 'current-page-parent';
          $(this).parent().addClass(current_what);
          debug('hide false');
          return false;
        }
        $(this).parent().removeClass('current-page-item');
        $(this).parent().removeClass('current-page-parent');
        $(this).parent().removeClass('current-page-ancestor');        
        
        
        var ret = $(this).css('display')=='' || $(this).css('display')=='block'; 
        if(ret){
          debug('hide ' + index);  
        }
        return ret;
      }
    ).hide();
    // ).fadeOut('fast');
    
  // alert(menu_hover_idx);
  
  $('#main_menu>li').filter(
    function(index){
      if(index == menu_hover_idx){
        $(this).addClass(current_what);
      }else{
        $(this).removeClass('current-page-item');
        $(this).removeClass('current-page-parent');
        $(this).removeClass('current-page-ancestor');          
      }   
    }
  )
    
    
  if(double_check){
    //debug('double_check');
    //setTimeout( function(){hide_sub_menus()},2500);

  }  
}

function debug(str){
  //$('#debug').append('<div>' + str + '</div>');
    
}

function clear_timeouts(){
  for( var i in menu_timeouts){
   // debug('clear ' + i + ' = '  + menu_timeouts[i]);
    clearTimeout(menu_timeouts[i]);
  }  
  
  menu_timeouts =[];
}
