/*! * SmartMenus jQuery Plugin - v0.9.7 - August 25, 2014 * http://www.smartmenus.org/ * * Copyright 2014 Vasil Dinkov, Vadikom Web Ltd. * http://vadikom.com * * Licensed MIT */ ( function( a ){var b=[],d=!!window.createPopup,e=false,f=false;function h( k ){var l=".smartmenus_mouse";if ( !f&&!k ){var m=true,j=null;a( document ).bind( g( [["mousemove",function( q ){var r={x:q.pageX,y:q.pageY,timeStamp:new Date().getTime()};if ( j ){var o=Math.abs( j.x-r.x ),n=Math.abs( j.y-r.y );if ( ( o>0||n>0 )&&o<=2&&n<=2&&r.timeStamp-j.timeStamp<=300 ){e=true;if ( m ){var p=a( q.target ).closest( "a" );if ( p.is( "a" ) ){a.each( b,function(){if ( a.contains( this.$root[0],p[0] ) ){this.itemEnter( {currentTarget:p[0]} );return false}} )}m=false}}}j=r}],[c()?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function( n ){if ( i( n.originalEvent ) ){e=false}}]],l ) );f=true}else{if ( f&&k ){a( document ).unbind( l );f=false}}}function i( j ){return !/^( 4|mouse )$/.test( j.pointerType )}function c(){return"ontouchstart" in window }function g( j,l ){if ( !l ){l=""}var k={};a.each( j,function( m,n ){k[n[0].split( " " ).join( l+" " )+l]=n[1]} );return k}a.SmartMenus=function( k,j ){this.$root=a( k );this.opts=j;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.isTouchScrolling=false;this.init()};a.extend( a.SmartMenus,{hideAll:function(){a.each( b,function(){this.menuHideAll()} )},destroy:function(){while( b.length ){b[0].destroy()}h( true )},prototype:{init:function( l ){var j=this;if ( !l ){b.push( this );this.rootId=( new Date().getTime()+Math.random()+"" ).replace( /\D/g,"" );if ( this.$root.hasClass( "sm-rtl" ) ){this.opts.rightToLeftSubMenus=true}var p=".smartmenus";this.$root.data( "smartmenus",this ).attr( "data-smartmenus-id",this.rootId ).dataSM( "level",1 ).bind( g( [["mouseover focusin",a.proxy( this.rootOver,this )],["mouseout focusout",a.proxy( this.rootOut,this )]],p ) ).delegate( "a",g( [["mouseenter",a.proxy( this.itemEnter,this )],["mouseleave",a.proxy( this.itemLeave,this )],["mousedown",a.proxy( this.itemDown,this )],["focus",a.proxy( this.itemFocus,this )],["blur",a.proxy( this.itemBlur,this )],["click",a.proxy( this.itemClick,this )],["touchend",a.proxy( this.itemTouchEnd,this )]],p ) ); p+=this.rootId;if ( this.opts.hideOnClick ){a( document ).bind( g( [["touchstart",a.proxy( this.docTouchStart,this )],["touchmove",a.proxy( this.docTouchMove,this )],["touchend",a.proxy( this.docTouchEnd,this )],["click",a.proxy( this.docClick,this )]],p ) )}a( window ).bind( g( [["resize orientationchange",a.proxy( this.winResize,this )]],p ) );if ( this.opts.subIndicators ){this.$subArrow=a( "" ).addClass( "sub-arrow" );if ( this.opts.subIndicatorsText ){this.$subArrow.html( this.opts.subIndicatorsText )}}h()}this.$firstSub=this.$root.find( "ul" ).each( function(){j.menuInit( a( this ) )} ).eq( 0 );this.$firstLink=this.$root.find( "a" ).eq( 0 );if ( this.opts.markCurrentItem ){var n=/( index|default )\.[^#\?\/]*/i,k=/#.*/,o=window.location.href.replace( n,"" ),m=o.replace( k,"" );this.$root.find( "a" ).each( function(){var q=this.href.replace( n,"" ),r=a( this );if ( q==o||q==m ){r.addClass( "current" );if ( j.opts.markCurrentTree ){r.parent().parentsUntil( "[data-smartmenus-id]","li" ).children( "a" ).addClass( "current" )}}} )}},destroy:function(){this.menuHideAll(); var k=".smartmenus";this.$root.removeData( "smartmenus" ).removeAttr( "data-smartmenus-id" ).removeDataSM( "level" ).unbind( k ).undelegate( k );k+=this.rootId;a( document ).unbind( k );a( window ).unbind( k );if ( this.opts.subIndicators ){this.$subArrow=null}var j=this;a.each( this.subMenus,function(){if ( this.hasClass( "mega-menu" ) ){this.find( "ul" ).removeDataSM( "in-mega" )}if ( this.dataSM( "shown-before" ) ){if ( j.opts.subMenusMinWidth||j.opts.subMenusMaxWidth ){this.css( {width:"",minWidth:"",maxWidth:""} ).removeClass( "sm-nowrap" )}if ( this.dataSM( "scroll-arrows" ) ){this.dataSM( "scroll-arrows" ).remove()}this.css( {zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""} )}if ( j.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}b.splice( a.inArray( this,b ),1 )},disable:function( j ){if ( !this.disabled ){this.menuHideAll();if ( !j&&!this.opts.isPopup&&this.$root.is( ":visible" ) ){var k=this.$root.offset();this.$disableOverlay=a( '
' ).css( {position:"absolute",top:k.top,left:k.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex( true ),opacity:0} ).appendTo( document.body )}this.disabled=true}},docClick:function( j ){if ( this.isTouchScrolling ){this.isTouchScrolling=false;return}if ( this.visibleSubMenus.length&&!a.contains( this.$root[0],j.target )||a( j.target ).is( "a" ) ){this.menuHideAll()}},docTouchEnd:function( k ){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||!a.contains( this.$root[0],this.lastTouch.target ) ) ){if ( this.hideTimeout ){clearTimeout( this.hideTimeout ); this.hideTimeout=0}var j=this;this.hideTimeout=setTimeout( function(){j.menuHideAll()},350 )}this.lastTouch=null},docTouchMove:function( k ){if ( !this.lastTouch ){return}var j=k.originalEvent.touches[0];this.lastTouch.x2=j.pageX;this.lastTouch.y2=j.pageY},docTouchStart:function( k ){var j=k.originalEvent.touches[0];this.lastTouch={x1:j.pageX,y1:j.pageY,target:j.target}},enable:function(){if ( this.disabled ){if ( this.$disableOverlay ){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function( k ){var j=a( k ).closest( "ul" );while( j.dataSM( "in-mega" ) ){j=j.parent().closest( "ul" )}return j[0]||null},getHeight:function( j ){return this.getOffset( j,true )},getOffset:function( l,j ){var k;if ( l.css( "display" )=="none" ){k={position:l[0].style.position,visibility:l[0].style.visibility};l.css( {position:"absolute",visibility:"hidden"} ).show()}var m=l[0].getBoundingClientRect&&l[0].getBoundingClientRect(),n=m&&( j?m.height||m.bottom-m.top:m.width||m.right-m.left );if ( !n&&n!==0 ){n=j?l[0].offsetHeight:l[0].offsetWidth }if ( k ){l.hide().css( k )}return n},getStartZIndex:function( j ){var k=parseInt( this[j?"$root":"$firstSub"].css( "z-index" ) );if ( !j&&isNaN( k ) ){k=parseInt( this.$root.css( "z-index" ) )}return !isNaN( k )?k:1},getTouchPoint:function( j ){return j.touches&&j.touches[0]||j.changedTouches&&j.changedTouches[0]||j},getViewport:function( j ){var k=j?"Height":"Width",m=document.documentElement["client"+k],l=window["inner"+k];if ( l ){m=Math.min( m,l )}return m},getViewportHeight:function(){return this.getViewport( true )},getViewportWidth:function(){return this.getViewport()},getWidth:function( j ){return this.getOffset( j )},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function( j ){return this.handleEvents()&&!this.isLinkInMegaMenu( j )},isCollapsible:function(){return this.$firstSub.css( "position" )=="static"},isCSSOn:function(){return this.$firstLink.css( "display" )=="block"},isFixed:function(){var j=this.$root.css( "position" )=="fixed";if ( !j ){this.$root.parentsUntil( "body" ).each( function(){if ( a( this ).css( "position" )=="fixed" ){j=true; return false}} )}return j},isLinkInMegaMenu:function( j ){return !j.parent().parent().dataSM( "level" )},isTouchMode:function(){return !e||this.isCollapsible()},itemActivate:function( m ){var o=m.parent(),k=o.parent(),n=k.dataSM( "level" );if ( n>1&&( !this.activatedItems[n-2]||this.activatedItems[n-2][0]!=k.dataSM( "parent-a" )[0] ) ){var j=this;a( k.parentsUntil( "[data-smartmenus-id]","ul" ).get().reverse() ).add( k ).each( function(){j.itemActivate( a( this ).dataSM( "parent-a" ) )} )}if ( this.visibleSubMenus.length>n ){this.menuHideSubMenus( !this.activatedItems[n-1]||this.activatedItems[n-1][0]!=m[0]?n-1:n )}this.activatedItems[n-1]=m;this.visibleSubMenus[n-1]=k;if ( this.$root.triggerHandler( "activate.smapi",m[0] )===false ){return}var l=o.dataSM( "sub" );if ( l&&( this.isTouchMode()||( !this.opts.showOnClick||this.clickActivated ) ) ){this.menuShow( l )}},itemBlur:function( k ){var j=a( k.currentTarget );if ( !this.handleItemEvents( j ) ){return}this.$root.triggerHandler( "blur.smapi",j[0] )},itemClick:function( l ){if ( this.isTouchScrolling ){this.isTouchScrolling=false; l.stopPropagation();return false}var k=a( l.currentTarget );if ( !this.handleItemEvents( k ) ){return}k.removeDataSM( "mousedown" );if ( this.$root.triggerHandler( "click.smapi",k[0] )===false ){return false}var j=k.parent().dataSM( "sub" );if ( this.isTouchMode() ){if ( k.dataSM( "href" ) ){k.attr( "href",k.dataSM( "href" ) ).removeDataSM( "href" )}if ( j&&( !j.dataSM( "shown-before" )||!j.is( ":visible" ) ) ){this.itemActivate( k );if ( j.is( ":visible" ) ){return false}}}else{if ( this.opts.showOnClick&&k.parent().parent().dataSM( "level" )==1&&j ){this.clickActivated=true;this.menuShow( j );return false}}if ( k.hasClass( "disabled" ) ){return false}if ( this.$root.triggerHandler( "select.smapi",k[0] )===false ){return false}},itemDown:function( k ){var j=a( k.currentTarget );if ( !this.handleItemEvents( j ) ){return}j.dataSM( "mousedown",true )},itemEnter:function( l ){var k=a( l.currentTarget );if ( !this.handleItemEvents( k ) ){return}if ( !this.isTouchMode() ){if ( this.showTimeout ){clearTimeout( this.showTimeout );this.showTimeout=0}var j=this;this.showTimeout=setTimeout( function(){j.itemActivate( k ) },this.opts.showOnClick&&k.parent().parent().dataSM( "level" )==1?1:this.opts.showTimeout )}this.$root.triggerHandler( "mouseenter.smapi",k[0] )},itemFocus:function( k ){var j=a( k.currentTarget );if ( !this.handleItemEvents( j ) ){return}if ( ( !this.isTouchMode()||!j.dataSM( "mousedown" ) )&&( !this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=j[0] ) ){this.itemActivate( j )}this.$root.triggerHandler( "focus.smapi",j[0] )},itemLeave:function( k ){var j=a( k.currentTarget );if ( !this.handleItemEvents( j ) ){return}if ( !this.isTouchMode() ){if ( j[0].blur ){j[0].blur()}if ( this.showTimeout ){clearTimeout( this.showTimeout );this.showTimeout=0}}j.removeDataSM( "mousedown" );this.$root.triggerHandler( "mouseleave.smapi",j[0] )},itemTouchEnd:function( l ){var k=a( l.currentTarget );if ( !this.handleItemEvents( k ) ){return}var j=k.parent().dataSM( "sub" );if ( k.attr( "href" ).charAt( 0 )!=="#"&&j&&( !j.dataSM( "shown-before" )||!j.is( ":visible" ) ) ){k.dataSM( "href",k.attr( "href" ) );k.attr( "href","#" )}},menuFixLayout:function( j ){if ( !j.dataSM( "shown-before" ) ){j.hide().dataSM( "shown-before",true ) }},menuHide:function( k ){if ( this.$root.triggerHandler( "beforehide.smapi",k[0] )===false ){return}k.stop( true,true );if ( k.is( ":visible" ) ){var j=function(){k.css( "z-index","" )};if ( this.isCollapsible() ){if ( this.opts.collapsibleHideFunction ){this.opts.collapsibleHideFunction.call( this,k,j )}else{k.hide( this.opts.collapsibleHideDuration,j )}}else{if ( this.opts.hideFunction ){this.opts.hideFunction.call( this,k,j )}else{k.hide( this.opts.hideDuration,j )}}if ( k.dataSM( "ie-shim" ) ){k.dataSM( "ie-shim" ).remove()}if ( k.dataSM( "scroll" ) ){this.menuScrollStop( k );k.css( {"touch-action":"","-ms-touch-action":""} ).unbind( ".smartmenus_scroll" ).removeDataSM( "scroll" ).dataSM( "scroll-arrows" ).hide()}k.dataSM( "parent-a" ).removeClass( "highlighted" );var l=k.dataSM( "level" );this.activatedItems.splice( l-1,1 );this.visibleSubMenus.splice( l-1,1 );this.$root.triggerHandler( "hide.smapi",k[0] )}},menuHideAll:function(){if ( this.showTimeout ){clearTimeout( this.showTimeout );this.showTimeout=0}this.menuHideSubMenus();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},menuHideSubMenus:function( k ){if ( !k ){k=0}for( var j=this.visibleSubMenus.length-1;j>k;j-- ){this.menuHide( this.visibleSubMenus[j] )}},menuIframeShim:function( j ){if ( d&&this.opts.overlapControlsInIE&&!j.dataSM( "ie-shim" ) ){j.dataSM( "ie-shim",a( "