(function($){
var menuTrees=[],
IE = !!window.createPopup,
IElt9=IE&&!document.defaultView,
IElt8=IE&&!document.querySelector,
IE6=IE&&typeof document.documentElement.currentStyle.minWidth=='undefined',
mouse=false,
mouseDetectionEnabled=false;
function initMouseDetection(disable){
if(!mouseDetectionEnabled&&!disable){
var firstTime=true,
lastMove=null;
$(document).bind({
'mousemove.smartmenus_mouse': function(e){
var thisMove={ x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() };
if(lastMove){
var deltaX=Math.abs(lastMove.x - thisMove.x),
deltaY=Math.abs(lastMove.y - thisMove.y);
if((deltaX > 0||deltaY > 0)&&deltaX <=2&&deltaY <=2&&thisMove.timeStamp - lastMove.timeStamp <=300){
mouse=true;
if(firstTime){
var $a=$(e.target).closest('a');
if($a.is('a')){
$.each(menuTrees, function(){
if($.contains(this.$root[0], $a[0])){
this.itemEnter({ currentTarget: $a[0] });
return false;
}});
}
firstTime=false;
}}
}
lastMove=thisMove;
},
'touchstart.smartmenus_mouse pointerover.smartmenus_mouse MSPointerOver.smartmenus_mouse': function(e){
if(!/^(4|mouse|pen)$/.test(e.originalEvent.pointerType)){
mouse=false;
}}
});
mouseDetectionEnabled=true;
}else if(mouseDetectionEnabled&&disable){
$(document).unbind('.smartmenus_mouse');
mouseDetectionEnabled=false;
}};
$.SmartMenus=function(elm, options){
this.$root=$(elm);
this.opts=options;
this.rootId='';
this.$subArrow=null;
this.subMenus=[];
this.activatedItems=[];
this.visibleSubMenus=[];
this.showTimeout=0;
this.hideTimeout=0;
this.scrollTimeout=0;
this.clickActivated=false;
this.zIndexInc=0;
this.$firstLink=null;
this.$firstSub=null;
this.disabled=false;
this.$disableOverlay=null;
this.lastLevel=0;
this.init();
};
$.extend($.SmartMenus, {
hideAll: function(){
$.each(menuTrees, function(){
this.menuHideAll();
});
},
destroy: function(){
while (menuTrees.length){
menuTrees[0].destroy();
}
initMouseDetection(true);
},
prototype: {
init: function(refresh){
var self=this;
if(!refresh){
menuTrees.push(this);
this.rootId=(new Date().getTime() + Math.random() + '').replace(/\D/g, '');
if(this.$root.hasClass('sm-rtl')){
this.opts.rightToLeftSubMenus=true;
}
this.$root
.data('smartmenus', this)
.attr('data-smartmenus-id', this.rootId)
.dataSM('level', 1)
.bind({
'mouseover.smartmenus': $.proxy(this.rootOver, this),
'mouseout.smartmenus': $.proxy(this.rootOut, this)
})
.delegate('a, div.logo-container', {
'mouseenter.smartmenus': $.proxy(this.itemEnter, this),
'mouseleave.smartmenus': $.proxy(this.itemLeave, this),
'mousedown.smartmenus': $.proxy(this.itemDown, this),
'focus.smartmenus': $.proxy(this.itemFocus, this),
'blur.smartmenus': $.proxy(this.itemBlur, this),
'click.smartmenus': $.proxy(this.itemClick, this),
'touchend.smartmenus': $.proxy(this.itemTouchEnd, this)
});
var eNamespace='.smartmenus' + this.rootId;
if(this.opts.hideOnClick){
$(document).on('touchstart' + eNamespace, $.proxy(this.docTouchStart, this))
.on('touchmove' + eNamespace, $.proxy(this.docTouchMove, this))
.on('touchend' + eNamespace, $.proxy(this.docTouchEnd, this))
.on('click' + eNamespace, $.proxy(this.docClick, this));
}
$(window).on('resize' + eNamespace + ' orientationchange' + eNamespace, $.proxy(this.winResize, this));
var $vmenu=$('body.vmenu .vmenu-container');
if(! $vmenu.length&&UNCODE.wwidth > UNCODE.mediaQuery){
$(window).on('scroll' + eNamespace + ' orientationchange' + eNamespace, $.proxy(this.winResize, this));
}
if(this.opts.subIndicators){
this.$subArrow=$('<span/>').addClass('sub-arrow');
if(this.opts.subIndicatorsText){
this.$subArrow.html(this.opts.subIndicatorsText);
}}
initMouseDetection();
}
this.$firstSub=this.$root.find('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)').each(function(){ self.menuInit($(this)); }).eq(0);
this.$firstLink=this.$root.find('a').eq(0);
if(this.opts.markCurrentItem){
var reDefaultDoc=/(index|default)\.[^#\?\/]*/i,
reHash=/#.*/,
locHref=window.location.href.replace(reDefaultDoc, ''),
locHrefNoHash=locHref.replace(reHash, '');
this.$root.find('a').each(function(){
var href=this.href.replace(reDefaultDoc, ''),
$this=$(this);
if(href==locHref||href==locHrefNoHash){
$this.addClass('current');
if(self.opts.markCurrentTree){
$this.parents('li').each(function(){
var $this=$(this);
if($this.dataSM('sub')){
$this.children('a').addClass('current');
}});
}}
});
}},
destroy: function(){
this.menuHideAll();
this.$root
.removeData('smartmenus')
.removeAttr('data-smartmenus-id')
.removeDataSM('level')
.unbind('.smartmenus')
.undelegate('.smartmenus');
var eNamespace='.smartmenus' + this.rootId;
$(document).unbind(eNamespace);
$(window).unbind(eNamespace);
if(this.opts.subIndicators){
this.$subArrow=null;
}
var self=this;
$.each(this.subMenus, function(){
if(this.hasClass('mega-menu')){
this.find('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)').removeDataSM('in-mega');
}
if(this.dataSM('shown-before')){
if(IElt8){
this.children().css({ styleFloat: '', width: '' });
}
if(self.opts.subMenusMinWidth||self.opts.subMenusMaxWidth){
if(!IE6){
this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap');
}else{
this.css({ width: '', overflowX: '', overflowY: '' }).children().children('a').css('white-space', '');
}}
if(this.dataSM('scroll-arrows')){
this.dataSM('scroll-arrows').remove();
}
this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' });
}
if(self.opts.subIndicators){
this.dataSM('parent-a').removeClass('has-submenu').children('span.sub-arrow').remove();
}
this.removeDataSM('shown-before')
.removeDataSM('ie-shim')
.removeDataSM('scroll-arrows')
.removeDataSM('parent-a')
.removeDataSM('level')
.removeDataSM('beforefirstshowfired')
.parent().removeDataSM('sub');
});
if(this.opts.markCurrentItem){
this.$root.find('a.current').removeClass('current');
}
this.$root=null;
this.$firstLink=null;
this.$firstSub=null;
if(this.$disableOverlay){
this.$disableOverlay.remove();
this.$disableOverlay=null;
}
menuTrees.splice($.inArray(this, menuTrees), 1);
},
disable: function(noOverlay){
if(!this.disabled){
this.menuHideAll();
if(!noOverlay&&!this.opts.isPopup&&this.$root.is(':visible')){
var pos=this.$root.offset();
this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({
position: 'absolute',
top: pos.top,
left: pos.left,
width: this.$root.outerWidth(),
height: this.$root.outerHeight(),
zIndex: this.getStartZIndex() + 1,
opacity: 0
}).appendTo(document.body);
}
this.disabled=true;
}},
docClick: function(e){
if(this.visibleSubMenus.length&&!$.contains(this.$root[0], e.target)||$(e.target).is('a:not([data-filter])')){
this.menuHideAll($(e.target));
}},
docTouchEnd: function(e){
if(!this.lastTouch){
return;
}
if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!$.contains(this.$root[0], this.lastTouch.target))){
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
var self=this;
this.hideTimeout=setTimeout(function(){ self.menuHideAll($(e.target)); }, 350);
}
this.lastTouch=null;
},
docTouchMove: function(e){
if(!this.lastTouch){
return;
}
var touchPoint=e.originalEvent.touches[0];
this.lastTouch.x2=touchPoint.pageX;
this.lastTouch.y2=touchPoint.pageY;
},
docTouchStart: function(e){
var touchPoint=e.originalEvent.touches[0];
this.lastTouch={ x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };},
enable: function(){
if(this.disabled){
if(this.$disableOverlay){
this.$disableOverlay.remove();
this.$disableOverlay=null;
}
this.disabled=false;
}},
getHeight: function($elm){
return this.getOffset($elm, true);
},
getOffset: function($elm, height){
var old,
$win=$(window),
winW=$win.width();
if($elm.css('display')=='none'){
old={ position: $elm[0].style.position, visibility: $elm[0].style.visibility };
$elm.css({ position: 'absolute', visibility: 'hidden' }).show();
if(($('body').hasClass('menu-mobile-off-canvas')&&winW < 960&&$elm.closest('.main-menu-container').length)
||
(($('body').hasClass('vmenu-offcanvas-overlay')||$('body').hasClass('vmenu'))&&winW >=960&&$elm.closest('.main-menu-container').length&&!$elm.closest('.menu-horizontal-inner').length)
){
$elm.closest('li').addClass('smartmenu-open-item');
}}
var defaultView=$elm[0].ownerDocument.defaultView,
compStyle=defaultView&&defaultView.getComputedStyle&&defaultView.getComputedStyle($elm[0], null),
val=compStyle&&parseFloat(compStyle[height ? 'height':'width']);
if(val){
val +=parseFloat(compStyle[height ? 'paddingTop':'paddingLeft'])
+ parseFloat(compStyle[height ? 'paddingBottom':'paddingRight'])
+ parseInt(compStyle[height ? 'borderTopWidth':'borderLeftWidth'])
+ parseInt(compStyle[height ? 'borderBottomWidth':'borderRightWidth']);
}else{
val=height ? $elm[0].offsetHeight:$elm[0].offsetWidth;
}
if(old){
$elm.hide().css(old);
}
return val;
},
getWidth: function($elm){
return this.getOffset($elm);
},
getStartZIndex: function(){
var zIndex=parseInt(this.$root.css('z-index'));
return !isNaN(zIndex) ? zIndex:1;
},
handleEvents: function(){
return !this.disabled&&this.isCSSOn();
},
handleItemEvents: function($a){
return this.handleEvents()&&!this.isLinkInMegaMenu($a);
},
isCollapsible: function(){
return this.$firstSub.css('position')=='static';
},
isCSSOn: function(){
return this.$firstLink.css('display')=='block'||this.$firstLink.css('display')=='flex'||this.$firstLink.css('display')=='inline-flex'||this.$firstLink.css('display')=='table-cell'||this.$firstLink.css('display')=='inline';
},
isFixed: function(){
return this.$root.css('position')=='fixed';
},
isLinkInMegaMenu: function($a){
return !$a.parent().parent().dataSM('level');
},
isTouchMode: function(){
return !mouse||this.isCollapsible();
},
itemActivate: function($a, $show){
var $li=$a.parent(),
$ul=$li.parent(),
level=$ul.dataSM('level'),
winh=$(window).height();
if(level > 1&&(!this.activatedItems[level - 2]||this.activatedItems[level - 2][0]!=$ul.dataSM('parent-a')[0])){
var self=this;
$($ul.parentsUntil('[data-smartmenus-id]', 'ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)').get().reverse()).add($ul).each(function(){
self.itemActivate($(this).dataSM('parent-a'));
});
}
if(this.visibleSubMenus.length > level){
for (var i=this.visibleSubMenus.length - 1, l = !this.activatedItems[level - 1]||this.activatedItems[level - 1][0]!=$a[0] ? level - 1:level; i > l; i--){
this.lastLevel=level;
if(typeof $show==='undefined'&&this.isCollapsible()){
this.menuHide(this.visibleSubMenus[i], $a);
return;
}else{
this.menuHide(this.visibleSubMenus[i]);
}}
}
this.activatedItems[level - 1]=$a;
this.visibleSubMenus[level - 1]=$ul;
if(this.$root.triggerHandler('activate.smapi', $a[0])===false){
return;
}
var $sub=$li.dataSM('sub');
if($sub&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){
var aRect=$a[0].getBoundingClientRect();
if((aRect.y < 0||aRect.y > winh)&&this.isCollapsible()&&(this.lastLevel===this.activatedItems.length)){
setTimeout(function(){
var currentScroll=$a.closest('.main-menu-container').scrollTop();
$a.closest('.main-menu-container').scrollTop(currentScroll + aRect.y);
}, 1);
}
this.menuShow($sub);
}},
itemBlur: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
this.$root.triggerHandler('blur.smapi', $a[0]);
},
itemClick: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
$a.removeDataSM('mousedown');
if(this.$root.triggerHandler('click.smapi', $a[0])===false){
return false;
}
var $sub=$a.parent().dataSM('sub');
if(this.isTouchMode()){
if($a.dataSM('href')){
$a.attr('href', $a.dataSM('href')).removeDataSM('href');
}
if($sub&&(!$sub.dataSM('shown-before')||!$sub.is(':visible'))){
this.itemActivate($a);
if($sub.is(':visible')){
return false;
}}
}else if(this.opts.showOnClick&&$a.parent().parent().dataSM('level')==1&&$sub){
this.clickActivated=true;
this.menuShow($sub);
return false;
}
if($a.hasClass('disabled')){
return false;
}
if(this.$root.triggerHandler('select.smapi', $a[0])===false){
return false;
}},
itemDown: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
$a.dataSM('mousedown', true);
},
itemEnter: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if(!this.isTouchMode()){
if(this.showTimeout){
clearTimeout(this.showTimeout);
this.showTimeout=0;
}
var self=this;
this.showTimeout=setTimeout(function(){ self.itemActivate($a); }, this.opts.showOnClick&&$a.parent().parent().dataSM('level')==1 ? 1:this.opts.showTimeout);
}
this.$root.triggerHandler('mouseenter.smapi', $a[0]);
},
itemFocus: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if((!this.isTouchMode()||!$a.dataSM('mousedown'))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length - 1][0]!=$a[0])){
this.itemActivate($a);
}
this.$root.triggerHandler('focus.smapi', $a[0]);
},
itemLeave: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if(!this.isTouchMode()){
if($a[0].blur){
$a[0].blur();
}
if(this.showTimeout){
clearTimeout(this.showTimeout);
this.showTimeout=0;
}}
$a.removeDataSM('mousedown');
this.$root.triggerHandler('mouseleave.smapi', $a[0]);
},
itemTouchEnd: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
var $sub=$a.parent().dataSM('sub');
if($a.attr('href').charAt(0)!=='#'&&$sub&&(!$sub.dataSM('shown-before')||!$sub.is(':visible'))){
$a.dataSM('href', $a.attr('href'));
$a.attr('href', '#');
}},
menuFixLayout: function($ul){
if(!$ul.dataSM('shown-before')){
$ul.hide().dataSM('shown-before', true);
if(IElt8){
$ul.children().css({ styleFloat: 'left', width: '100%' });
}}
},
menuHide: function($sub, $show){
if(this.$root.triggerHandler('beforehide.smapi', $sub[0])===false){
return;
}
$sub.stop(true, true);
if($sub.is(':visible')){
var self=this;
var complete=function(){
if(IElt9){
$sub.parent().css('z-index', '');
}else{
$sub.css('z-index', '');
}
if(typeof $show!=='undefined'){
self.itemActivate($show, true)
}};
if(this.isCollapsible()){
if(this.opts.collapsibleHideFunction){
this.opts.collapsibleHideFunction.call(this, $sub, complete);
}else{
$sub.hide(this.opts.collapsibleHideDuration, complete);
}}else{
if(this.opts.hideFunction){
this.opts.hideFunction.call(this, $sub, complete);
}else{
$sub.hide(this.opts.hideDuration, complete);
}}
if($sub.dataSM('ie-shim')){
$sub.dataSM('ie-shim').remove();
}
if($sub.dataSM('scroll')){
$sub.unbind('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide();
}
$sub.dataSM('parent-a').removeClass('highlighted');
var level=$sub.dataSM('level');
this.activatedItems.splice(level - 1, 1);
this.visibleSubMenus.splice(level - 1, 1);
this.$root.triggerHandler('hide.smapi', $sub[0]);
}},
menuHideAll: function($item){
if($item!=undefined&&$item.parent().hasClass('menu-item')&&!$item.parent().hasClass('menu-item-has-children')) return;
var $win=$(window),
winW=$win.width();
if(this.showTimeout){
clearTimeout(this.showTimeout);
this.showTimeout=0;
}
for (var i=this.visibleSubMenus.length - 1; i > 0; i--){
if(this.visibleSubMenus[i].closest('.smartmenu-open-item').length){
if($item!=undefined&&$item.closest('.smartmenu-open-item').length){
this.menuHide(this.visibleSubMenus[i]);
$(this.visibleSubMenus[i]).closest('.smartmenu-open-item').removeClass('smartmenu-open-item');
}else{
return;
}}else{
this.menuHide(this.visibleSubMenus[i]);
}}
if(this.opts.isPopup){
this.$root.stop(true, true);
if(this.$root.is(':visible')){
if(this.opts.hideFunction){
this.opts.hideFunction.call(this, this.$root);
}else{
this.$root.hide(this.opts.hideDuration);
}
if(this.$root.dataSM('ie-shim')){
this.$root.dataSM('ie-shim').remove();
}}
}
this.activatedItems=[];
this.visibleSubMenus=[];
this.clickActivated=false;
this.zIndexInc=0;
},
menuIframeShim: function($ul){
if(IE&&this.opts.overlapControlsInIE&&!$ul.dataSM('ie-shim')){
$ul.dataSM('ie-shim', $('<iframe/>').attr({ src: 'javascript:0', tabindex: -9 })
.css({ position: 'absolute', top: 'auto', left: '0', opacity: 0, border: '0' })
);
}},
menuInit: function($ul){
if(!$ul.dataSM('in-mega')){
this.subMenus.push($ul);
if($ul.hasClass('mega-menu')){
$ul.find('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)').dataSM('in-mega', true);
}
var level=2,
par=$ul[0];
while (par!=null&&par.parentNode!=null&&(par=par.parentNode.parentNode)!=this.$root[0]){
level++;
}
$ul.dataSM('parent-a', $ul.prevAll('a').eq(-1))
.dataSM('level', level)
.parent().dataSM('sub', $ul);
if(this.opts.subIndicators){
$ul.dataSM('parent-a').addClass('has-submenu')[this.opts.subIndicatorsPos](this.$subArrow.clone());
}}
if($('.vc_row[data-parent].has-bg', $ul).length&&!$('.vc_row[data-parent]:not(.has-bg)', $ul).length){
$ul.addClass('has-bg-items');
}},
menuPosition: function($sub){
var fixIE=$('html.ie').length;
var $a=$sub.dataSM('parent-a'),
$li=$sub.parent(),
$ul=$sub.parent().parent(),
$container=$ul.closest('.row-menu-inner').length ?($('body').hasClass('megamenu-side-to-side') ? $ul.closest('.row-menu'):$ul.closest('.row-menu-inner')):$ul.closest('.uncol'),
level=$sub.dataSM('level'),
subW=this.getWidth($sub),
subH=this.getHeight($sub),
itemOffset=$a.offset(),
itemX=itemOffset.left,
itemY=itemOffset.top,
itemW=this.getWidth($a),
itemH=this.getHeight($a),
$win=$(window),
winX=$win.scrollLeft(),
winY=$win.scrollTop(),
winW=$win.width(),
winH=$win.height(),
containerW=$container.width(),
containerOffsetX=containerW + ((winW - containerW) / 2),
horizontalParent=$ul.hasClass('sm')&&!$ul.hasClass('sm-vertical'),
subOffsetX=level==2 ? this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,
subOffsetY=level==2 ? this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,
x, y, leftPos;
if(horizontalParent){
x=this.opts.rightToLeftSubMenus ? itemW - subW - subOffsetX:subOffsetX;
y=this.opts.bottomToTopSubMenus ? -subH - subOffsetY:itemH + subOffsetY;
}else{
x=this.opts.rightToLeftSubMenus ? subOffsetX - subW:subW - subOffsetX;
y=this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH:subOffsetY;
}
if(this.opts.keepInViewport&&!this.isCollapsible()){
if(this.isFixed()){
itemX -=winX;
itemY -=winY;
winX=winY=0;
}
var absX=itemX + x,
absY=itemY + y;
if(this.opts.rightToLeftSubMenus&&absX < winX){
x=horizontalParent ? winX - absX + x:itemW - subOffsetX;
}else if(!this.opts.rightToLeftSubMenus&&absX + subW > winX + containerOffsetX){
x=horizontalParent ? winX + containerOffsetX - subW - absX + x:subOffsetX - subW;
}
if(!horizontalParent){
if(subH < winH&&absY + subH > winY + winH){
y +=winY + winH - subH - absY;
}else if(subH >=winH||absY < winY){
y +=winY - absY;
}}
if(mouse&&(horizontalParent&&(absY + subH > winY + winH + 0.49||absY < winY)||!horizontalParent&&subH > winH + 0.49)){
var self=this;
if(!$sub.dataSM('scroll-arrows')){
$sub.dataSM('scroll-arrows', $([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0], $('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]])
.bind({
mouseenter: function(){ self.menuScroll($sub, $(this).hasClass('scroll-up')); },
mouseleave: function(e){
self.menuScrollStop($sub);
self.menuScrollOut($sub, e);
},
'mousewheel DOMMouseScroll': function(e){ e.preventDefault(); }})
.insertAfter($sub)
);
}
var vportY=winY - (itemY + itemH);
$sub.dataSM('scroll', {
vportY: vportY,
subH: subH,
winH: winH,
step: 1
})
.bind({
'mouseover.smartmenus_scroll': function(e){ self.menuScrollOver($sub, e); },
'mouseout.smartmenus_scroll': function(e){ self.menuScrollOut($sub, e); },
'mousewheel.smartmenus_scroll DOMMouseScroll.smartmenus_scroll': function(e){ self.menuScrollMousewheel($sub, e); }})
.dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width'))||0), width: this.getWidth($sub) - (parseInt($sub.css('border-left-width'))||0) - (parseInt($sub.css('border-right-width'))||0), zIndex: this.getStartZIndex() + this.zIndexInc })
.eq(0).css('margin-top', vportY).end()
.eq(1).css('margin-top', vportY + winH - this.getHeight($sub.dataSM('scroll-arrows').eq(1))).end()
.eq(horizontalParent&&this.opts.bottomToTopSubMenus ? 0:1).show();
}}
if(!$sub.closest('.menu-accordion').length){
var rightPos='auto';
if($sub.closest('.grid-filters').length){
if($sub.closest('.text-right').length){
leftPos='0px';
rightPos='auto';
}else{
leftPos='auto';
rightPos='0px';
}
x=0;
}else{
if($sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)').length&&$sub.closest('.row-menu').is('.limit-width')&&level===2){
var parentContW=$sub.closest('.menu-container').width();
$sub.css({ width: parentContW});
$sub.addClass('need-focus');
leftPos=-1 * (parseFloat($sub.closest('ul.menu-smart').offset().left) - parseFloat($sub.closest('.menu-container').offset().left));
x=0;
}else if($sub.hasClass('mega-menu-inner')||$sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)').length){
$sub.css({ width: containerW});
$sub.addClass('need-focus');
leftPos=-1 * (parseFloat($sub.closest('ul.menu-smart').offset().left) - parseFloat($sub.closest('.row-menu').offset().left));
if(! $('body').hasClass('megamenu-side-to-side')){
leftPos +=parseFloat($sub.closest('.row-menu-inner').css('paddingLeft'));
}
x=0;
}else{
if($sub.is('.block-wrapper-parent')&&!$sub.find('.col-custom-width').length&&!$sub.find('.row-parent-limit').length&&level===2){
leftPos=($li.position().left -((UNCODE.wwidth - $sub.outerWidth())/2)) + 'px';
}else{
leftPos=(level > 2 ? $li.position().left - parseFloat($li.closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)').css('paddingLeft')):$li.position().left) + 'px';
}
x=(level > 2&&x >=0) ? x + 1:x - 1;
}}
}
$sub.css({ top: (level > 2) ? $a[0].offsetTop:(fixIE ? itemH:'100%'), left: leftPos, right: rightPos, marginLeft: x, marginTop: (level > 2) ? 0:y - itemH + ($sub.closest('.menu-borders').length&&!$sub.closest('.menu-borders.needs-after').length ? 1:0) });
this.menuIframeShim($sub);
if($sub.dataSM('ie-shim')){
$sub.dataSM('ie-shim').css({ zIndex: $sub.css('z-index'), width: subW, height: subH, marginLeft: x, marginTop: y - itemH + ($sub.closest('.menu-mini').length ? 0:1) });
}},
menuScroll: function($sub, up, wheel){
var y=parseFloat($sub.css('margin-top')),
scroll=$sub.dataSM('scroll'),
navH=$('.navbar-main').outerHeight(),
end=scroll.vportY + (up ? navH + 54:scroll.winH - scroll.subH),
step=wheel||!this.opts.scrollAccelerate ? this.opts.scrollStep:Math.floor($sub.dataSM('scroll').step);
$sub.add($sub.dataSM('ie-shim')).css('margin-top', Math.abs(end - y) > step ? y + (up ? step:-step):end);
y=parseFloat($sub.css('margin-top'));
if(up&&y + scroll.subH > scroll.vportY + scroll.winH||!up&&y < scroll.vportY){
$sub.dataSM('scroll-arrows').eq(up ? 1:0).show();
}
if(!wheel&&this.opts.scrollAccelerate&&$sub.dataSM('scroll').step < this.opts.scrollStep){
$sub.dataSM('scroll').step +=0.5;
}
if(Math.abs(y - end) < 1){
$sub.dataSM('scroll-arrows').eq(up ? 0:1).hide();
$sub.dataSM('scroll').step=1;
}else if(!wheel){
var self=this;
this.scrollTimeout=setTimeout(function(){ self.menuScroll($sub, up); }, this.opts.scrollInterval);
}},
menuScrollMousewheel: function($sub, e){
var $closestSub=$(e.target).closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)');
while ($closestSub.dataSM('in-mega')){
$closestSub=$closestSub.parent().closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)');
}
if($closestSub[0]==$sub[0]){
var up=(e.originalEvent.wheelDelta||-e.originalEvent.detail) > 0;
if($sub.dataSM('scroll-arrows').eq(up ? 0:1).is(':visible')){
this.menuScroll($sub, up, true);
}}
if(! $sub.hasClass('mega-menu-inner')&&! $sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)')){
e.preventDefault();
}},
menuScrollOut: function($sub, e){
var reClass=/^scroll-(up|down)/,
$closestSub=$(e.relatedTarget).closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)');
while ($closestSub.dataSM('in-mega')){
$closestSub=$closestSub.parent().closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)');
}
if(!reClass.test((e.relatedTarget||'').className)&&($sub[0]!=e.relatedTarget&&!$.contains($sub[0], e.relatedTarget)||$closestSub[0]!=$sub[0])){
$sub.dataSM('scroll-arrows').css('visibility', 'hidden');
}},
menuScrollOver: function($sub, e){
var reClass=/^scroll-(up|down)/,
$closestSub=$(e.target).closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)');
while ($closestSub.dataSM('in-mega')){
$closestSub=$closestSub.parent().closest('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)');
}
if(!reClass.test(e.target.className)&&$closestSub[0]==$sub[0]){
$sub.dataSM('scroll-arrows').css('visibility', 'visible');
}},
menuScrollStop: function($sub){
if(this.scrollTimeout){
clearTimeout(this.scrollTimeout);
this.scrollTimeout=0;
$sub.dataSM('scroll').step=1;
}},
menuShow: function($sub){
if(!$sub.dataSM('beforefirstshowfired')){
$sub.dataSM('beforefirstshowfired', true);
if(this.$root.triggerHandler('beforefirstshow.smapi', $sub[0])===false){
return;
}}
if(this.isCollapsible()){
this.$root.triggerHandler('beforecollapse.smapi', $sub[0]);
}
if(this.$root.triggerHandler('beforeshow.smapi', $sub[0])===false){
return;
}
this.menuFixLayout($sub);
$sub.stop(true, true);
if(!$sub.is(':visible')){
$sub.css({
'visibility': 'visible',
'pointer-events': 'auto',
});
var zIndex=this.getStartZIndex() + (++this.zIndexInc);
if(IElt9){
$sub.parent().css('z-index', zIndex);
}else{
$sub.css('z-index', zIndex);
}
if(this.opts.keepHighlighted||this.isCollapsible()){
if($sub.dataSM('parent-a').attr('data-type')!='title')
$sub.dataSM('parent-a').addClass('highlighted');
}
if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){
if(!IElt8){
$sub.css({ width: ($sub.hasClass('mega-menu-inner')||$sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)')) ? $('.box-container').outerWidth() + 'px':'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
if(this.opts.subMenusMinWidth){
$sub.css('min-width', this.opts.subMenusMinWidth);
}
if(this.opts.subMenusMaxWidth){
var noMaxWidth=this.getWidth($sub);
if(! $sub.hasClass('mega-menu-inner')&&! $sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)')){
$sub.css('max-width', this.opts.subMenusMaxWidth);
}
if(noMaxWidth > this.getWidth($sub)){
$sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
}}
}else{
$sub.children().css('styleFloat', 'none');
if(IE6){
$sub.width(this.opts.subMenusMinWidth ? this.opts.subMenusMinWidth:1)
.children().children('a').css('white-space', 'nowrap');
}else{
$sub.css({ width: ($sub.hasClass('mega-menu-inner')||$sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)')) ? $('.box-container').outerWidth() + 'px':'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
if(this.opts.subMenusMinWidth){
$sub.css('min-width', this.opts.subMenusMinWidth);
}}
if(this.opts.subMenusMaxWidth){
var noMaxWidth=$sub.width();
if(IE6){
var maxWidth=$sub.css({ width: this.opts.subMenusMaxWidth, overflowX: 'hidden', overflowY: 'hidden' }).width();
if(noMaxWidth > maxWidth){
$sub.css({ width: maxWidth, overflowX: 'visible', overflowY: 'visible' }).children().children('a').css('white-space', '');
}else{
$sub.css({ width: noMaxWidth, overflowX: 'visible', overflowY: 'visible' });
}}else{
if(! $sub.hasClass('mega-menu-inner')&&! $sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)')){
$sub.css('max-width', this.opts.subMenusMaxWidth);
}
if(noMaxWidth > $sub.width()){
$sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
}else{
$sub.width(noMaxWidth);
}}
}else{
$sub.width($sub.width());
}
$sub.children().css('styleFloat', 'left');
}}
if(((($sub.hasClass('mega-menu-inner')||$sub.find('[data-parent="true"]:not(.limit-width):not(.row-parent-limit)'))&&$('body').hasClass('scrollable-megamenu')) )&&UNCODE.wwidth > UNCODE.mediaQuery){
var $nav=$('.navbar-main'),
navH=0,
navTop=0,
$vmenu=$('body.vmenu .vmenu-container, body.menu-overlay .vmenu-container, body.menu-offcanvas .vmenu-container');
if($nav.length&&typeof $nav[0]!=='undefined'){
var navRect=$nav[0].getBoundingClientRect();
navH=navRect.height;
navTop=navRect.top;
}
if(! $vmenu.length){
$sub.css({ maxHeight: UNCODE.wheight - navH });
if($('.megamenu-block-wrapper', $sub).length){
$sub.find('> li').addClass('has-scroll').css({ maxHeight: UNCODE.wheight - navH });
}}
}
this.menuPosition($sub);
if($sub.dataSM('ie-shim')){
$sub.dataSM('ie-shim').insertBefore($sub);
}
var complete=function(){
$sub.css('overflow', '');
};
if(this.isCollapsible()){
if(this.opts.collapsibleShowFunction){
this.opts.collapsibleShowFunction.call(this, $sub, complete);
}else{
$sub.show(this.opts.collapsibleShowDuration, complete);
}}else{
if(this.opts.showFunction){
this.opts.showFunction.call(this, $sub, complete);
}else{
$sub.show(this.opts.showDuration, complete);
}}
this.visibleSubMenus[$sub.dataSM('level') - 1]=$sub;
this.$root.triggerHandler('show.smapi', $sub[0]);
}},
popupHide: function(noHideTimeout){
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
var self=this;
this.hideTimeout=setTimeout(function(){
self.menuHideAll();
}, noHideTimeout ? 1:this.opts.hideTimeout);
},
popupShow: function(left, top){
if(!this.opts.isPopup){
alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');
return;
}
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
this.menuFixLayout(this.$root);
this.$root.stop(true, true);
if(!this.$root.is(':visible')){
this.$root.css({ left: left, top: top });
this.menuIframeShim(this.$root);
if(this.$root.dataSM('ie-shim')){
this.$root.dataSM('ie-shim').css({ zIndex: this.$root.css('z-index'), width: this.getWidth(this.$root), height: this.getHeight(this.$root), left: left, top: top }).insertBefore(this.$root);
}
if(this.opts.showFunction){
this.opts.showFunction.call(this, this.$root);
}else{
this.$root.show(this.opts.showDuration);
}
this.visibleSubMenus[0]=this.$root;
}},
refresh: function(){
this.menuHideAll();
this.$root.find('ul:not(.nav-tabs):not(.unmenu-block):not(.unmenu-block *)').each(function(){
var $this=$(this);
if($this.dataSM('scroll-arrows')){
$this.dataSM('scroll-arrows').remove();
}})
.removeDataSM('in-mega')
.removeDataSM('shown-before')
.removeDataSM('ie-shim')
.removeDataSM('scroll-arrows')
.removeDataSM('parent-a')
.removeDataSM('level')
.removeDataSM('beforefirstshowfired');
this.$root.find('a.has-submenu').removeClass('has-submenu')
.parent().removeDataSM('sub');
if(this.opts.subIndicators){
this.$root.find('span.sub-arrow').remove();
}
if(this.opts.markCurrentItem){
this.$root.find('a.current').removeClass('current');
}
this.subMenus=[];
this.init(true);
},
rootOut: function(e){
if(!this.handleEvents()||this.isTouchMode()||e.target==this.$root[0]){
return;
}
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
if(!this.opts.showOnClick||!this.opts.hideOnClick){
var self=this;
this.hideTimeout=setTimeout(function(){ self.menuHideAll(); }, this.opts.hideTimeout);
}},
rootOver: function(e){
if(!this.handleEvents()||this.isTouchMode()||e.target==this.$root[0]){
return;
}
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}},
winResize: function(e){
if(!this.handleEvents()){
if(this.$disableOverlay){
var pos=this.$root.offset();
this.$disableOverlay.css({
top: pos.top,
left: pos.left,
width: this.$root.outerWidth(),
height: this.$root.outerHeight()
});
}
return;
}
if(!this.isCollapsible()&&(!('onorientationchange' in window)||e.type=='orientationchange')){
if(this.activatedItems.length){
this.activatedItems[this.activatedItems.length - 1][0].blur();
}
this.menuHideAll();
}}
}});
$.fn.dataSM=function(key, val){
if(val){
return this.data(key + '_smartmenus', val);
}
return this.data(key + '_smartmenus');
}
$.fn.removeDataSM=function(key){
return this.removeData(key + '_smartmenus');
}
$.fn.smartmenus=function(options){
if(typeof options=='string'){
var args=arguments,
method=options;
Array.prototype.shift.call(args);
return this.each(function(){
var smartmenus=$(this).data('smartmenus');
if(smartmenus&&smartmenus[method]){
smartmenus[method].apply(smartmenus, args);
}});
}
var opts=$.extend({}, $.fn.smartmenus.defaults, options);
return this.each(function(){
new $.SmartMenus(this, opts);
});
}
$.fn.smartmenus.defaults={
isPopup:		false,
mainMenuSubOffsetX:	0,
mainMenuSubOffsetY:	0,
subMenusSubOffsetX:	0,
subMenusSubOffsetY:	0,
subMenusMinWidth:	false, //'10em',		// min-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
subMenusMaxWidth:	false, //'20em',		// max-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
subIndicators: 		true,
subIndicatorsPos: 	'prepend',
subIndicatorsText:	'+',
scrollStep: 		30,
scrollInterval:		30,
scrollAccelerate:	true,
showTimeout:		250,
hideTimeout:		500,
showDuration:		0,
showFunction:		null,
hideDuration:		0,
hideFunction:		function($ul, complete){ $ul.fadeOut(200, complete); },
collapsibleShowDuration:0,
collapsibleShowFunction:function($ul, complete){ $ul.slideDown(200, complete); },
collapsibleHideDuration:0,
collapsibleHideFunction:function($ul, complete){ $ul.slideUp(200, complete); },
showOnClick:		false,
hideOnClick:		true,
keepInViewport:		true,
keepHighlighted:	true,
markCurrentItem:	false,
markCurrentTree:	true,
rightToLeftSubMenus:	false,
bottomToTopSubMenus:	false,
overlapControlsInIE:	true
};})(jQuery);