/*	
 *	jQuery dropmenu 1.1.3
 *	www.frebsite.nl
 *	Copyright (c) 2010 Fred Heusschen
 *	Licensed under the MIT license.
 *	http://www.opensource.org/licenses/mit-license.php
 */
 
 
(function($) {
	$.fn.dropmenu = function(options) {
		var isIE 	= $.browser.ie,
			isIE6	= isIE && $.browser.version < 7,
			isIE7	= isIE && $.browser.version < 8;


		return this.each(function() {

			var opts  = $.extend({}, $.fn.dropmenu.defaults, options),
				$menu = $(this),
				$topl = $menu.find('> li'),
				menuX = $menu.offset().left;

			if (opts.maxWidth == 0) {
				opts.maxWidth = $('body').width() - menuX;
			}
			
			if (opts.font=='') opts.font = $topl.find('> a').css('font-family');
			if (opts.font_over=='') opts.font_over = opts.font;
			if (opts.fontcolor=='') opts.fontcolor = $topl.find('> a').css('color');
			if (opts.fontcolor_over=='') opts.fontcolor_over = opts.fontcolor;
				
			//	UL itself and all LI's
			$menu
				.css({
					display		: 'block-inline',
					listStyle	: 'none'
				})
				.find("li")
				.css({
					display		: 'block',
					listStyle	: 'none',
					position	: 'relative'
				});
			
			
			var css = {
				display		: 'block',
				outline		: 'none'
			};
			if (opts.nbsp) css['whiteSpace'] = 'nowrap';
			
			//	all A's and SPANs
			$menu
				.find('li > a, li > span')
				.css(css);


			//	top-level LI's and top level A's and SPANs
			$topl
				.css({
					float		: 'left',
					marginLeft	: 5,
					marginRight	: 5
				})
				.find('> a, > span')
				.addClass('toplevel')
				.css({
					float		: 'left',
					'border-top'	: opts.border,
					'border-bottom'	: opts.border
				});		

			//	all sub-ULs
						
			$menu
				.find('ul')
				.css({
					display		: 'none',
					position	: 'absolute'
				});
				
			//	first sub-UL and second, third, etc. sub-ULs
			$topl
				.find('> ul')
				.css({
					left		: 0,
					top			: $topl.outerHeight()-opts.border.match(/\d*/)
				})
				.find('li > a, li > span')
				.addClass('sublevel')
				.parent()
				.find('ul')
				.css({
					top			: 0
				}).data('subsub', true);
			
			$topl
				


			//	IE fixes
			if (isIE6) {
				$menu.find('ul').css({
					lineHeight	: 0
				});
			}
			if (isIE6 || isIE7) {
				$menu.find('ul a, ul span').css({
					zoom		: 1
				});
			}


			//$menu.find('a').click(function() {
			//	$('ul', $menu).hide();
			//	$('a, span', $menu).removeClass('hover');
			//});

			$menu.find('li').hover(
				
				//	showing submenu
				function() {
					var listit = this,
						subnav = $.fn.dropmenu.getSubnav(listit),
						subcss = { zIndex: $.fn.dropmenu.zIndex++ };

					if ($(listit).parent().attr('id')==$topl.parent().attr('id')){
						var $toplevel = true
					} else {
						var $toplevel = false
					}
					
					
					$(listit).find('> a, > span').addClass('hover');
					
					if ($toplevel){
						$(listit).css({
							'background-image' : 'url('+opts.bg_on_drop+')'
						})
					}
				
					if ($toplevel){
						$(listit).find('> a').css({
							'font-family' :opts.font_over,
							'color' :opts.fontcolor_over
						})
					}
					
					if (!subnav) return;
					if ($(subnav).is(":animated")) return;
							
					
					//if ($toplevel){
						$(subnav).css({
							'background-image' : 'url('+opts.bg_on_drop+')',
							'border-bottom'	: opts.border
						})	
					//}
							
					$(listit).find('> a').css({
						'border-bottom'	: '0px'
					})
					
					if ($.data(subnav, 'subsub')) {
						var distance  = $(listit).outerWidth(),
							itemWidth = $(listit).offset().left + distance - menuX,
							position  = (opts.maxWidth < itemWidth) ? "right" : "left";
						
						subcss[position] = distance;						
					}
					$(subnav).css(subcss);
					$.data(subnav, 'stayOpen', true);
					
					switch (opts.effect) {
						case 'slide':
							$(subnav).slideDown(opts.speed);
							break;
						
						case 'fade':
							$(subnav).fadeIn(opts.speed);
							break;
							
						default:
							$(subnav).show();
							break;
					}

				//	hiding submenu
				}, function() {
					var listit = this,
						subnav = $.fn.dropmenu.getSubnav(listit);

					
					$(listit).find('> a').css({
						'font-weight'	: 'normal',
						'font-family' : opts.font,
						'color' : opts.fontcolor
					})	
		
					if (!subnav) {
						$(listit).css({
							'background-image' : 'none'
						})
						$(listit).find('> a, > span').removeClass('hover');
						return;
					}
					

					
					$.data(subnav, 'stayOpen', false);
					setTimeout(function() {
						if ($.data(subnav, 'stayOpen')) return;
						$(listit).find('> a, > span').removeClass('hover');

						$('ul', subnav).hide();
						switch (opts.effect) {
							case 'slide':
								$(subnav).slideUp(opts.speed,function(){
								
									$(listit).css({
										'background-image' : 'none'
									})	
									
									$(listit).find('> a').css({
										'border-bottom'	: opts.border
									})	
									
								});
								break;
							
							case 'fade':
								$(subnav).fadeOut(opts.speed);
								break;
								
							default:
								$(subnav).hide();
								break;
						}
						
						
					}, opts.timeout);
				}
			);
		});
	};
	
	$.fn.dropmenu.getSubnav = function(ele) {
		if (ele.nodeName.toLowerCase() == 'li') {
			var subnav = $('> ul', ele);
			return subnav.length ? subnav[0] : null;
		} else {
			return ele;
		}
	}
	
	$.fn.dropmenu.zIndex 	= 1000;
	$.fn.dropmenu.defaults 	= {
		effect			: 'none',		//	'slide', 'fade', or 'none'
		speed			: 'normal',		//	'normal', 'fast', 'slow', 100, 1000, etc
		timeout			: 250,
		nbsp			: false,
		maxWidth		: 0,
		border			: '2px solid #ffffff',
		font			: '',
		font_over		: 'Optima LT W01 Roman',
		fontcolor		: '',
		fontcolor_over	: '',
		bg_on_drop      : 'images/bg_30p_black.png'
	};
})(jQuery);
