/*
 * Droppy 0.1.2
 * (c) 2008 Jason Frame (jason@onehackoranother.com)
 * 
 * [custom 1.0]
 * edit telime,2010/05/10
 */
(function($) {
	
	var name='droppy custom';
	
	$.fn.droppy = function(options) {
		
		options = $.extend({speed: 250,timeout: 500}, options || {});
		
		this.each(function() {
			
			var root = this, zIndex = 1000;
			
			function getSubnav(ele) {
				if (ele.nodeName.toLowerCase() == 'li') {
					var subnav = $('> ul', ele);
					return subnav.length ? subnav[0] : null;
				} else {
					return ele;
				}
			}
			
			function getActuator(ele) {
				if (ele.nodeName.toLowerCase() == 'ul') {
					return $(ele).parents('li')[0];
				} else {
					return ele;
				}
			}
			
			function hide() {
				var subnav = getSubnav(this);
				if (!subnav) return;
				$.data(subnav, 'cancelHide', false);
				setTimeout(function() {
					if (!$.data(subnav, 'cancelHide')) {
						$(subnav).slideUp(options.speed);
					}
				}, options.timeout);
			}
		
			function show() {
				var subnav = getSubnav(this);
				if (!subnav) return;
				$.data(subnav, 'cancelHide', true);
				$(subnav).css({zIndex: zIndex++}).slideDown(options.speed);
				if (this.nodeName.toLowerCase() == 'ul') {
					var li = getActuator(this);
					$(li).addClass('hover');
					$('> a', li).addClass('hover');
				}
			}
			
			$('ul, li', this).hover(show, hide);
			$('li', this).hover(
				function() { $(this).addClass('hover'); $('> a', this).addClass('hover'); },
				function() { $(this).removeClass('hover'); $('> a', this).removeClass('hover'); }
			);
			
		});
	}
})(jQuery);

