/**
 * simpleDropDown ver 1.1 (18/03/2009)
 *
 * Copyright (c) 2009 Adam Chambers
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 **/

jQuery.fn.simpleDropDown = function(options){
	
	var defaults = { 
		event          : "hover",
    	delay          : 50,  
    	slide          : false,
		slideSpeedDown : 500,
		slideSpeedUp   : 50,
		opacity        : 0.7
   	};  
  	var options = $.extend(defaults, options); 
	
	return this.each(function(){
		var elementID = $(this).attr('id');
		var menuItem = $('#'+elementID+' li:has(ul)');
		menuItem.children('ul').fadeTo(0.1, options.opacity).hide();
		
		var display_timeout = 0;
		
		switch(defaults.event) {
			case "hover":
			
				menuItem.hover(
					function() {
						if(display_timeout != 0) {
							clearTimeout(display_timeout);
						}
						
						var this_element = $(this);
			            
						if(options.slide == false) {
							display_timeout = setTimeout(function() {
								display_timeout = 0;
								this_element.children('ul').show();
							}, options.delay);
						} else if(options.slide == true) {
							display_timeout = setTimeout(function() {
								display_timeout = 0;
								this_element.children('ul').slideDown(options.slideSpeedDown);
							}, options.delay);
						}
					},
					function() {
						
						if(display_timeout != 0) {
							clearTimeout(display_timeout);
						}	
						
						if(options.slide == false) {
							$(this).children('ul').hide();
						} else if(options.slide == true) {
							$(this).children('ul').slideUp(options.slideSpeedUp);	
						}
					}
				);
			
			break;
			
			case "click":
			
				var COUNTER = 0;
			
				if (COUNTER == 0) {
					menuItem.click(function(){
						if (display_timeout != 0) {
							clearTimeout(display_timeout);
						}
						
						var this_element = $(this);
						
						if (options.slide == false) {
							display_timeout = setTimeout(function(){
								display_timeout = 0;
								this_element.children('ul').show();
							}, options.delay);
						}
						else 
							if (options.slide == true) {
								display_timeout = setTimeout(function(){
									display_timeout = 0;
									this_element.children('ul').slideDown(options.slideSpeedDown);
								}, options.delay);
							}
						COUNTER = 1;
					});
				}
				else if (COUNTER == 1) {
					
					menuItem.click(
						function(){
							if (display_timeout != 0) {
								clearTimeout(display_timeout);
							}
								
							if (options.slide == false) {
								$(this).children('ul').hide();
							} else if (options.slide == true) {
								$(this).children('ul').slideUp(options.slideSpeedUp);
							}
							COUNTER = 0;
						}
					);
				}
			
			break;
		}
	});
}