(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	: 1,
delay	: 800,
animation	:{opacity:'show'},
speed	: 'normal',
autoArrows	: false,
dropShadows : true,
disableHI	: false,
onInit	: function(){},
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)

