//***********************************************
// Title: fNav - jQuery Plugin
// Author: Mark Appleby
// Current Version: 1.06
// Last Edited: Wed, March, 30th, 2011
// Last Changes: Sub nav items appear at top
//
// All Right Reserved
// Please do not alter this plugin without the
// author's permission
//***********************************************

//jQuery Color Plugin
//http://stackoverflow.com/questions/190560/jquery-animate-backgroundcolor
(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);

//jQuery Browser Detection
//http://stackoverflow.com/questions/454875/how-to-do-browser-detection-with-jquery-1-3-with-browser-msie-deprecated
(function($) {var userAgent = navigator.userAgent.toLowerCase();$.browser = {version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],safari: /webkit/.test( userAgent ),opera: /opera/.test( userAgent ),msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )};

})(jQuery);

(function($){
	$.fn.nav = function(options) {
		
		var defaults = {
			delay:500,
			hoverColor:'#ABB549',
			hoverSpeed:100,
			fadeSpeed:250,
			arrowClass:'arrow'
		};
		var options = $.extend(defaults,options);
		var timeoutID;
		var offColor;
		
		return this.each(function(index) {
			
			var obj = $(this);
			
			offColor = $(obj).find('li ul li').css('background-color');
			
			//Set ul Top-Margins
			$(obj).find('li ul li').find('ul').each(function(){
				var tmpHeight = $(this).parent().outerHeight();
				tmpHeight = tmpHeight - parseInt($(this).parent().css('padding-top'));
				tmpHeight = tmpHeight*-1;
				$(this).css('margin-top',tmpHeight+'px');
			});
			
			//Show Drop-downs
			$(obj).find('li').each(function(){
				$(this).mouseenter(function(){
					$(this).parent().children('.sfhover').each(function(){
						//navOut(this);
						$(this).removeClass('sfhover');
					});
					navIn(this);
				});
			});
	
			//Cancel Hide Drop Downs
			$(obj).mouseover(function(){
				window.clearTimeout(timeoutID);
			});
	
			//Hide Drop Downs After Delay
			$(obj).mouseleave(function(){
				timeoutID = window.setTimeout(function(){
					navOut('.sfhover');
				}, options.delay);
			});
	
			//Handle Drop Down Formatting
			$(obj).find('ul li').each(function(){
				$(this).mouseenter(function(){				
					$(this).animate({'backgroundColor' : options.hoverColor},options.hoverSpeed);
					$(this).children('.'+options.arrowClass).animate({'borderTopColor' : options.hoverColor},options.hoverSpeed);
					$(this).children('.'+options.arrowClass).animate({'borderBottomColor' : options.hoverColor},options.hoverSpeed);
				});
		
				$(this).mouseleave(function(){
					$(this).animate({'backgroundColor' : offColor},options.hoverSpeed);
					$(this).children('.'+options.arrowClass).animate({'borderTopColor' : offColor},options.hoverSpeed);
					$(this).children('.'+options.arrowClass).animate({'borderBottomColor' : offColor},options.hoverSpeed);
				});
		
				//$(this).click(function(){
				//	window.location = $(this).find('a').attr('href');
				//});
		
				if($(this).children().length>1){
					$(this).append('<span class="'+options.arrowClass+'"><!-- null --></span>');
				}
			});
			
			//Handle Fading of Menu
			if(!$.browser.msie || options.fadeSpeed==0){
				$(obj).find('ul').each(function(){
					$(this).animate({'left':'auto', 'opacity':0},0);
				});
			}
			
			function navOut(nav){
				if(!$.browser.msie || options.fadeSpeed==0){
					$(nav).children('ul').animate({'left':'auto', 'opacity':0},options.fadeSpeed,function(){
						$(nav).removeClass('sfhover');
					});
				}
				else $(nav).removeClass('sfhover');
			}
			
			function navIn(nav){
				if(!$.browser.msie || options.fadeSpeed==0){
					$(nav).addClass('sfhover');
					$(nav).children('ul').animate({'left':'auto', 'opacity':1},options.fadeSpeed);
				}
				else $(nav).addClass('sfhover');
			}
		})
	}
})(jQuery);
