/*
 * Superfish v1.3.3 - jQuery menu widget
 * Copyright (c) 2007 Joel Birch
 * Dual licensed under the MIT and GPL licenses:
 */
(function($){
 $.fn.superfish = function(o){
  var $sf = this,
   defaults = {
   hoverClass	: 'sfHover',
   pathClass	: 'overideThisToUse',
   delay		: 100,
   animation	: {opacity:'show'},
   speed		: 'normal',
   onshow		: function(){} // in your function, 'this' is the revealed ul
  },
   over = function(){
    clearTimeout(this.sfTimer);
    $(this)
    .showSuperfishUl(o)
    .siblings()
    .hideSuperfishUl(o);
   },
   out = function(){
    var $$ = $(this);
    if ( !$$.is('.'+o.bcClass) ) {
     this.sfTimer=setTimeout(function(){
      $$.hideSuperfishUl(o);
      var sf = $$.parents('ul.superfish:first')[0];
      if (!$('.'+o.hoverClass,sf).length) {
       over.call(sf.o.$currents.hideSuperfishUl(o));
      }
     },o.delay);
    }
   };
  $.fn.extend({
   hideSuperfishUl : function(o){
    return this
     .removeClass(o.hoverClass)
     .find('>ul')
      .hide()
      .css('visibility','hidden')
     .end();
   },
   showSuperfishUl : function(o){
    return this
     .addClass(o.hoverClass)
     .find('>ul:hidden')
      .css('visibility','visible')
      .animate(o.animation,o.speed,function(){
       o.onshow.call(this);
      })
     .end();
   },
   applySuperfishHovers : function(){
    return this[($.fn.hoverIntent) ? 'hoverIntent' : 'hover'](over,out);
   }
  });

  return this
  .addClass('superfish')
  .each(function(){
   o = $.extend({bcClass:'sfbreadcrumb'},defaults,o || {});
   o = $.extend(o,{$currents:$('li.'+o.pathClass,this)});
   this.o = o;

   if (o.$currents.length) {
    o.$currents.each(function(){
     $(this).removeClass(o.pathClass).addClass(o.hoverClass+' '+o.bcClass);
    });
   }

   var $sfHovAr=$('li:has(ul)',this)
    .applySuperfishHovers(over,out)
    .not('.'+o.bcClass)
     .hideSuperfishUl(o)
    .end();

   $('a',this).each(function(){
    var $a = $(this), $li = $a.parents('li');
    $a.focus(function(){
     over.call($li);
     return false;
    }).blur(function(){
     $li.removeClass(o.hoverClass);
    });
   });
  });
 };
 $(window).unload(function(){
  $('ul.superfish').each(function(){
   $('li:has(ul)',this).unbind('mouseover').unbind('mouseout');
   this.o = this.o.$currents = null; // clean up
  });
 });
})(jQuery);
