
	/*
3	 * Superfish v1.4.8 - jQuery menu widget
4	 * Copyright (c) 2008 Joel Birch
5	 *
6	 * Dual licensed under the MIT and GPL licenses:
7	 *  http://www.opensource.org/licenses/mit-license.php
8	 *  http://www.gnu.org/licenses/gpl.html
9	 *
10	 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
11	 */

	;(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() {
	            var 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  : 1,
	        delay       : 800,
	        animation   : {opacity:'show'},
	        speed       : 'normal',
	        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 = $.fn.superfish.op, $ul = $('li.'+o.hoverClass,this).add(this); $ul.find('>ul').animate(o.animationClose, o.speed, function() { $(this).css('visibility','hidden'); $ul.removeClass(o.hoverClass); o.onBeforeShow.call($ul); }); return this; }, showSuperfishUl : function(){ var o = $.fn.superfish.op, $ul = this.addClass(o.hoverClass) .find('>ul:hidden').css('visibility','visible'); o.onBeforeShow.call($ul); $ul.animate(o.animationOpen,o.speed,function(){ o.onShow.call(this); }); 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);
