/* Menu Makeover */
(function($) {
	$.fn.menu_makeover= function(settings) {
    settings = jQuery.extend({
      animation:'fade',
			easing:'quintEaseOut',
      delay:500,
      show_speed:300  
    }, settings);
    var matches = this;
    var hover_item = undefined;
    function hide_all(){
/*
      $(matches).find('>li').each(function(){
        if(hover_item !=undefined){
          if( hover_item != this ){
      	    //if(submenu_timer){clearTimeout(submenu_timer); submenu_timer = false };        
            $(this).find('>ul').hide();  
            
          } 
        }
          
      });*/
      
 
    }
					
 
	  $(this).children().each(function(){
	    
      var submenu_timer = false;
      var showing  = false;
      var shown = false;
      var hiding = false;
	    var _parent = parent;
      var submenu = $(this).find('div>ul');
 
	    
	    if(submenu.get(0)!=undefined){
	      this.submenu = submenu;
	      submenu.each(function(){
 
	        $(this).hover(
    	      function(){
    
    	         if(submenu_timer){clearTimeout(submenu_timer); submenu_timer = false}
    	         
    	      }, 
    	      function(){
							if(settings.delay > 0) {
	              submenu_timer = setTimeout(function(){
	                submenu_timer = false;
	    	          this.parents('div:first').hide();
	    	          shown = false;
	    	        },settings.delay);
							} else {
	                submenu_timer = false;
	    	          this.parents('div:first').hide();
	    	          shown = false;
							}
    	      }
  	      );
	      });
	      submenu.menu_makeover(settings);
	      
	    }
    /*
      // not quite useful
      $(this).get(0).close = close = function(){
        if(submenu){
          submenu.hide();
          shown = false;
 
        }
	    }
	    */
			
			//if(submenu && settings.animation == 'slide') {
			if(submenu.width() <= 0)
				submenu = false;
				
			if(submenu) {
				var height = 0;
				submenu.find('>li').each(function(){
					height += parseInt($(this).css('height').replace('px', '').replace('PX', '')) + 10;
					
				});
				submenu.parents('div:first').css({'width':(submenu.width() + 20) + 'px', 'height':height + 'px'});
			}
			
	    $(this).hover(
  	    // Mouseover <li>
  	    function(){
         // alert(submenu.get(0));
          if(submenu_timer){
            clearTimeout(submenu_timer);
            submenu_timer = false;
            //if(hiding){
              showing = false;
              shown = false;
            //}
          }
          
          
          if(showing|| shown){
						if(hiding == false) {
            	hover_item = this; 
            	return;
						}
          } 
  
          if(hover_item == this && !hiding )return;
          
          hover_item = this; 
          
          showing = true;
          hide_all();
          //close();
          					
					submenu.parents('div:first').show();
          if(submenu){
            //submenu.css({'margin-left':'-4px','opacity':0,'display':'block'}).animate({'margin-left':'0','opacity':1},300,'swing' ,function(){
            if(settings.animation == 'fade') {
							submenu.fadeIn(function(){
	              showing = false;
	              shown = true;
	            });
						} else if(settings.animation == 'slide' || settings.animation == 'slide_in_out') {
							showing = true;
							submenu.stop().css({'left':'-' + $(this).width() + 'px'}).show().animate({'left':'0px'}, {
								complete: function() {									
	              	showing = false;
	              	shown = true;
								},			
								easing: settings.easing,						
								duration: settings.show_speed,
								queue: false
							});
						}  
          }          
          
  	    },
  	    // Mouseout <li>
  	    function(){
 
	        shown = false;  
  	      if(submenu){
						hide_submenu = function(){
              hiding = true;
              submenu_timer = false;
							if(settings.animation == 'fade') {
	  	          submenu.fadeOut(function(){
	  	            shown = false;
	  	            hiding = false;
	  	            hover_item = null;
									
									submenu.parents('div:first').hide();
	  	           // if(!showing)hover_item = null;
	  	          });    
							} else if(settings.animation == 'slide_in_out') {
								submenu.animate({'left':'-' + $(this).width() + 'px'}, {
									complete: function() {
										$(this).hide();//.css({'top':top, 'bottom':bottom, 'left':left, 'right':right});
										
	  	            	shown = false;
	  	            	hiding = false;
	  	            	hover_item = null;
									
										submenu.parents('div:first').hide();
									},												
									easing: settings.easing,
									duration: settings.show_speed
								});
							} else {
								//submenu.hide();
								shown = false;
	  	          hiding = false;
	  	          hover_item = null;
									
								submenu.parents('div:first').hide();
							}
  	        }
						
  	        if(submenu_timer){clearTimeout(submenu_timer); submenu_timer = false };
						if(settings.delay > 0)
            	submenu_timer = setTimeout(hide_submenu(), settings.delay);
						else
							hide_submenu();
  	        
  	      }
  	    }
	    ).click(function(){
	      
	      document.location= $(this).find('>a').attr('href');  
	    });  
	    
	    
	    
	    
	  })
	  
	};
})(jQuery);  	  


function debug(str){
  if($('#debug').get(0)==undefined){
    $('body').append('<div id="debug" style="position:absolute;top:0;left:0;z-index:100"></div>');    
  }
  $('#debug').append('<div>' + str + '</div>');
  
}
