The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
/*
 * jQuery Drop Down panel menu v.1
 * 
 * Copyright (c) 2011 Pieter Pareit
 *
 * http://www.scriptbreaker.com
 *
 */

//plugin definition
(function($){
    $.fn.extend({

    //pass the options variable to the function
    dropDownPanels: function(options) {

		var defaults = {
			speed: 250,
			resetTimer: 1000
		};

		// Extend our default options with those provided.
		var opts = $.extend(defaults, options);
		//Assign current element to variable, in this case is UL element
 		var $this = $(this);

 		var closetimer;
 		
 		function resetMenu(){
 			$this.find(".hover").removeClass("hover");
 			$this.find(".submenu:visible").slideUp(opts.speed);
 		}

 		  function activateTimer(){  
 		      closetimer = window.setTimeout(resetMenu, opts.resetTimer);
 		  }

 		  function cancelTimer(){  
 			    if(closetimer){  
 			 	    window.clearTimeout(closetimer);
 					closetimer = null;
 				}
 			}
 			
 		 $this.find(">li").hover(function() {
 			cancelTimer();
 			if(!$(this).find(".submenu").is(":visible")){
 				$(this).parent().find(".hover").removeClass("hover");
 				$(this).parent().find(".submenu:visible").hide();
 				if($(this).has(".submenu")){
 					$(this).find(".submenu").slideDown(opts.speed);
 					$(this).find("a:first").addClass("hover");
 				}
 			}
 		}, function(){
 			activateTimer();
		});
    }
});
})(jQuery);