/*



 * Superfish v1.4.8 - jQuery menu widget



 * Copyright (c) 2008 Joel Birch



 *



 * Dual licensed under the MIT and GPL licenses:



 * 	http://www.opensource.org/licenses/mit-license.php



 * 	http://www.gnu.org/licenses/gpl.html



 *



 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt



 */







;(function($){



	$.fn.superfish = function(op){







		var sf = $.fn.superfish,



			c = sf.c,



			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),



			over = function(){



				var $$ = $(this), menu = getMenu($$);



				clearTimeout(menu.sfTimer);



				$$.showSuperfishUl().siblings().hideSuperfishUl();



			},



			out = function(){



				var $$ = $(this), menu = getMenu($$), o = sf.op;



				clearTimeout(menu.sfTimer);



				menu.sfTimer=setTimeout(function(){



					o.retainPath=($.inArray($$[0],o.$path)>-1);



					$$.hideSuperfishUl();



					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}



				},o.delay);	



			},



			getMenu = function($menu){



				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];



				sf.op = sf.o[menu.serial];



				return menu;



			},



			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };



			



		return this.each(function() {



			var s = this.serial = sf.o.length;



			var o = $.extend({},sf.defaults,op);



			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){



				$(this).addClass([o.hoverClass,c.bcClass].join(' '))



					.filter('li:has(ul)').removeClass(o.pathClass);



			});



			sf.o[s] = sf.op = o;



			



			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {



				if (o.autoArrows) addArrow( $('>a:first-child',this) );



			})



			.not('.'+c.bcClass)



				.hideSuperfishUl();



			



			var $a = $('a',this);



			$a.each(function(i){



				var $li = $a.eq(i).parents('li');



				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});



			});



			o.onInit.call(this);



			



		}).each(function() {



			menuClasses = [c.menuClass];



			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);



			$(this).addClass(menuClasses.join(' '));



		});



	};







	var sf = $.fn.superfish;



	sf.o = [];



	sf.op = {};



	sf.IE7fix = function(){



		var o = sf.op;



		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)



			this.toggleClass(sf.c.shadowClass+'-off');



		};



	sf.c = {



		bcClass     : 'sf-breadcrumb',



		menuClass   : 'sf-js-enabled',



		anchorClass : 'sf-with-ul',



		arrowClass  : 'sf-sub-indicator',



		shadowClass : 'sf-shadow'



	};



	sf.defaults = {



		hoverClass	: 'sfHover',



		pathClass	: 'overideThisToUse',



		pathLevels	: 3,



		delay		: 500,



		animation	: {opacity:'show',height:'show'},



		speed		: 'slow',



		autoArrows	: true,



		dropShadows : true,



		disableHI	: false,		// true disables hoverIntent detection



		onInit		: function(){}, // callback functions



		onBeforeShow: function(){},



		onShow		: function(){},



		onHide		: function(){}



	};



	$.fn.extend({



		hideSuperfishUl : function(){



			var o = sf.op,



				not = (o.retainPath===true) ? o.$path : '';



			o.retainPath = false;



			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)



					.find('>ul').hide().css('visibility','hidden');



			o.onHide.call($ul);



			return this;



		},



		showSuperfishUl : function(){



			var o = sf.op,



				sh = sf.c.shadowClass+'-off',



				$ul = this.addClass(o.hoverClass)



					.find('>ul:hidden').css('visibility','visible');



			sf.IE7fix.call($ul);



			o.onBeforeShow.call($ul);



			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });



			return this;



		}



	});







})(jQuery);



