(function($) { $.fn.bgIframe = $.fn.bgiframe = function(s) { if ($.browser.msie && /MSIE 6.0/.test(navigator.userAgent)) { s = $.extend({ top: 'auto', left: 'auto', width: 'auto', height: 'auto', opacity: true, src: 'javascript:false;' }, s || {}); var prop = function(n) { return n && n.constructor == Number ? n + 'px' : n }, html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + s.src + '"' + 'style="display:block;position:absolute;z-index:-1;' + (s.opacity !== false ? 'filter:Alpha(Opacity=\'0\');' : '') + 'top:' + (s.top == 'auto' ? 'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')' : prop(s.top)) + ';' + 'left:' + (s.left == 'auto' ? 'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')' : prop(s.left)) + ';' + 'width:' + (s.width == 'auto' ? 'expression(this.parentNode.offsetWidth+\'px\')' : prop(s.width)) + ';' + 'height:' + (s.height == 'auto' ? 'expression(this.parentNode.offsetHeight+\'px\')' : prop(s.height)) + ';' + '"/>'; return this.each(function() { if ($('> iframe.bgiframe', this).length == 0) this.insertBefore(document.createElement(html), this.firstChild) }) } return this } })(jQuery); (function($) { $.fn.hoverIntent = function(f, g) { var cfg = { sensitivity: 1, interval: 10, timeout: 0 }; cfg = $.extend(cfg, g ? { over: f, out: g} : f); var cX, cY, pX, pY; var track = function(ev) { cX = ev.pageX; cY = ev.pageY }; var compare = function(ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) { $(ob).unbind("mousemove", track); ob.hoverIntent_s = 1; return cfg.over.apply(ob, [ev]) } else { pX = cX; pY = cY; ob.hoverIntent_t = setTimeout(function() { compare(ev, ob) }, cfg.interval) } }; var delay = function(ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); ob.hoverIntent_s = 0; return cfg.out.apply(ob, [ev]) }; var handleHover = function(e) { var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; while (p && p != this) { try { p = p.parentNode } catch (e) { p = this } } if (p == this) { return false } var ev = jQuery.extend({}, e); var ob = this; if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t) } if (e.type == "mouseover") { pX = ev.pageX; pY = ev.pageY; $(ob).bind("mousemove", track); if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout(function() { compare(ev, ob) }, cfg.interval) } } else { $(ob).unbind("mousemove", track); if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout(function() { delay(ev, ob) }, cfg.timeout) } } }; return this.mouseover(handleHover).mouseout(handleHover) } })(jQuery); (function($) { $.superfish = {}; $.superfish.o = []; $.superfish.op = {}; $.superfish.defaults = { hoverClass: 'sfHover', pathClass: 'overideThisToUse', delay: 0, animation: { opacity: 'show' }, speed: 'fast', oldJquery: false, disableHI: false, onInit: function() { }, onBeforeShow: function() { }, onShow: function() { }, onHide: function() { } }; $.fn.superfish = function(op) { var bcClass = 'sfbreadcrumb', over = function() { var $$ = $(this), menu = getMenu($$); getOpts(menu, true); clearTimeout(menu.sfTimer); $$.showSuperfishUl().siblings().hideSuperfishUl() }, out = function() { var $$ = $(this), menu = getMenu($$); var o = getOpts(menu, true); clearTimeout(menu.sfTimer); if (!$$.is('.' + bcClass)) { menu.sfTimer = setTimeout(function() { $$.hideSuperfishUl(); if (o.$path.length) { over.call(o.$path) } }, o.delay) } }, getMenu = function($el) { return $el.parents('ul.superfish:first')[0] }, getOpts = function(el, menuFound) { el = menuFound ? el : getMenu(el); return $.superfish.op = $.superfish.o[el.serial] }, hasUl = function() { return $.superfish.op.oldJquery ? 'li[ul]' : 'li:has(ul)' }; return this.each(function() { var s = this.serial = $.superfish.o.length; var o = $.extend({}, $.superfish.defaults, op); o.$path = $('li.' + o.pathClass, this).each(function() { $(this).addClass(o.hoverClass + ' ' + bcClass).filter(hasUl()).removeClass(o.pathClass) }); $.superfish.o[s] = $.superfish.op = o; $(hasUl(), this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over, out).not('.' + bcClass).hideSuperfishUl(); var $a = $('a', this); $a.each(function(i, elem) { var $li = $(elem).parents('li'); $(elem).hover(function() { over.call($li) }, function() { out.call($li) }) }); o.onInit.call(this) }).addClass('superfish') }; $.fn.extend({ hideSuperfishUl: function() { var o = $.superfish.op, $ul = $('li.' + o.hoverClass, this).add(this).removeClass(o.hoverClass).find('>ul').hide().css('visibility', 'hidden'); o.onHide.call($ul); return this }, showSuperfishUl: function() { var o = $.superfish.op, $ul = this.addClass(o.hoverClass).find('>ul:hidden').css('visibility', 'visible'); o.onBeforeShow.call($ul); $ul.show(); return this } }); $(window).unload(function() { $('ul.superfish').each(function() { $('li', this).unbind('mouseover', 'mouseout', 'mouseenter', 'mouseleave') }) }) })(jQuery); function applySuperfish() { $("#primary-nav").superfish({ delay: 100, speed: "fast" }).find(">li:has(ul)").mouseover(function() { $("ul", this).bgIframe({ opacity: false }) }).find("a").focus(function() { $("ul", $("#primary-nav>li:has(ul)")).bgIframe({ opacity: false }) }); $("#primary-nav ul li:last").addClass("last") }
