/**
 * Drop down plugin
 */
(function($j) {
	/**
	 * Public method to make a dropdown menu
	 * 
	 * @param object options. An optional object overriding the default options
	 */
	$j.fn.dropdown = function(options) {
		/**
		 * Default options
		 * 
		 * Number duration = 1000. The number of milliseconds before the menu closes itself
		 */
		var config = $j.extend({
			selectedClass: 'selected',
			delay: 500,
			speed: 250
		}, options);
		
		var timer;
		var $currMenu;
		
		var openMenu = function() {
			closeMenu();
			stopTimer();
			
			$currMenu = $j(this).find('ul:first').animate({
				left: '+=10px',
				opacity: 'show'
			}, config.speed);
			
			$currMenu.parent('li').addClass(config.selectedClass);
		};
		
		var closeMenu = function() {
			if ($currMenu) {
				$currMenu.animate({
					left: '-=10px',
					opacity: 'hide'
				}, config.speed);
				
				$currMenu.parent('li').removeClass(config.selectedClass);
			}
		};
		
		var startTimer = function() {
			timer = window.setTimeout(closeMenu, config.delay);
		};
		
		var stopTimer = function() {
			if (timer) {
				window.clearTimeout(timer);
				timer = null;
			}
		};
		
		$j(document).click(closeMenu);
		
		return $j(this).each(function() {
			if ($j(this).is(':has(ul)')) {
				var left = $j(this).find('ul:first').css('left');
				
				$j(this).find('ul:first').hide().css('left', parseInt(left) - 10);
				
				$j(this).hover(openMenu, startTimer);
			}
		});
	};
})(jQuery.noConflict());
