/** * @module RD Navbar * @author Evgeniy Gusarov * @version 2.2.5 */ (function(){var l="ontouchstart"in window;(function(c,n,h){var m=function(){function b(a,e){this.options=c.extend(!0,{},this.Defaults,e);this.$element=c(a);this.$clone=null;this.$win=c(h);this.$doc=c(n);this.currentLayout=this.options.layout;this.loaded=!1;this.focusOnHover=this.options.focusOnHover;this.isStuck=this.cloneTimer=this.focusTimer=!1;this.initialize()}b.prototype.Defaults={layout:"rd-navbar-static",deviceLayout:"rd-navbar-fixed",focusOnHover:!0,focusOnHoverTimeout:800,linkedElements:["html"], domAppend:!0,stickUp:!0,stickUpClone:!0,stickUpOffset:"100%",anchorNav:!0,anchorNavSpeed:400,anchorNavOffset:0,anchorNavEasing:"swing",autoHeight:!0,responsive:{0:{layout:"rd-navbar-fixed",deviceLayout:"rd-navbar-fixed",focusOnHover:!1,stickUp:!1},992:{layout:"rd-navbar-static",deviceLayout:"rd-navbar-static",focusOnHover:!0,stickUp:!0}},callbacks:{onToggleSwitch:!1,onToggleClose:!1,onDomAppend:!1,onDropdownOver:!1,onDropdownOut:!1,onDropdownToggle:!1,onDropdownClose:!1,onStuck:!1,onUnstuck:!1,onAnchorChange:!1}}; b.prototype.initialize=function(){this.$element.addClass("rd-navbar").addClass(this.options.layout);l&&this.$element.addClass("rd-navbar--is-touch");this.options.domAppend&&this.createNav(this);this.options.stickUpClone&&this.createClone(this);this.$element.addClass("rd-navbar-original");this.addAdditionalClassToToggles(".rd-navbar-original","toggle-original","toggle-original-elements");this.applyHandlers(this);this.offset=this.$element.offset().top;this.height=this.$element.outerHeight();this.loaded= !0;return this};b.prototype.resize=function(a,e){var d=l?a.getOption("deviceLayout"):a.getOption("layout");var g=a.$element.add(a.$clone);d===a.currentLayout&&a.loaded||(a.switchClass(g,a.currentLayout,d),null!=a.options.linkedElements&&c.grep(a.options.linkedElements,function(e,c){return a.switchClass(e,a.currentLayout+"-linked",d+"-linked")}),a.currentLayout=d);a.focusOnHover=a.getOption("focusOnHover");return a};b.prototype.stickUp=function(a,e){var d=a.getOption("stickUp");if(c("html").hasClass("ios")|| a.$element.hasClass("rd-navbar-fixed"))d=!1;var g=a.$doc.scrollTop();var b=null!=a.$clone?a.$clone:a.$element;var f=a.getOption("stickUpOffset");f="string"===typeof f?0=f&&!a.isStuck||g=f&&!a.isStuck&&!a.$element.hasClass("rd-navbar-fixed"))a.options.callbacks.onStuck&& a.options.callbacks.onStuck.call(a),setTimeout(function(){"resize"===e.type?a.switchClass(b,"","rd-navbar--is-stuck"):b.addClass("rd-navbar--is-stuck");a.isStuck=!0},navigator.platform.match(/(Mac)/i)?10:0);else{if("resize"===e.type)a.switchClass(b,"rd-navbar--is-stuck","");else b.removeClass("rd-navbar--is-stuck").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",c.proxy(a.resizeWrap,a,e));a.isStuck=!1;a.options.callbacks.onUnstuck&&a.options.callbacks.onUnstuck.call(a)}}else a.$element.find(".rd-navbar-submenu").removeClass("opened").removeClass("focus"), a.isStuck&&(a.switchClass(b,"rd-navbar--is-stuck",""),a.isStuck=!1,a.resizeWrap(e));return a};b.prototype.resizeWrap=function(a){if(null==this.$clone&&!this.isStuck){var e=this.$element.parent();if(this.getOption("autoHeight"))return this.height=this.$element.outerHeight(),"resize"===a.type?(e.addClass("rd-navbar--no-transition").css("height",this.height),e[0].offsetHeight,e.removeClass("rd-navbar--no-transition")):e.css("height",this.height);e.css("height","auto")}};b.prototype.createNav=function(a){a.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function(){var a= c(this);this.getBoundingClientRect();return a.hasClass("rd-navbar-megamenu")?a.parent().addClass("rd-navbar--has-megamenu"):a.parent().addClass("rd-navbar--has-dropdown")}).parents("li").addClass("rd-navbar-submenu");c('').insertAfter(".rd-navbar-nav li.rd-navbar-submenu > a");a.options.callbacks.onDomAppend&&a.options.callbacks.onDomAppend.call(this);return a};b.prototype.createClone=function(a){a.$clone=a.$element.clone().insertAfter(a.$element).addClass("rd-navbar--is-clone"); a.addAdditionalClassToToggles(".rd-navbar--is-clone","toggle-cloned","toggle-cloned-elements");return a};b.prototype.closeToggle=function(a,e){var d=c(e.target);var g=!1;var b=this.getAttribute("data-rd-navbar-toggle");if(a.options.stickUpClone&&a.isStuck){var f=".toggle-cloned";var k=".toggle-cloned-elements";var h=!d.hasClass("toggle-cloned")}else f=".toggle-original",k=".toggle-original-elements",h=!d.hasClass("toggle-original");e.target!==this&&!d.parents(f+"[data-rd-navbar-toggle]").length&& !d.parents(k).length&&b&&h&&(d=c(this).parents("body").find(b).add(c(this).parents(".rd-navbar")[0]),d.each(function(){if(!g)return g=!0===(e.target===this||c.contains(this,e.target))}),g||(d.add(this).removeClass("active"),a.options.callbacks.onToggleClose&&a.options.callbacks.onToggleClose.call(this,a)));return this};b.prototype.switchToggle=function(a,e){var d;e.preventDefault();if(c(this).hasClass("toggle-cloned")){var g=".rd-navbar--is-clone";var b=".toggle-cloned-elements"}else g=".rd-navbar-original", b=".toggle-original-elements";if(d=this.getAttribute("data-rd-navbar-toggle"))c(g+" [data-rd-navbar-toggle]").not(this).each(function(){var a;if(a=this.getAttribute("data-rd-navbar-toggle"))return c(this).parents("body").find(g+" "+a+b).add(this).add(-1b-50){b=c('[data-type="anchor"]').last();if(b.length&&b.offset().top>=e){var h="#"+b.attr("id");var f=c('.rd-navbar-nav a[href^="'+h+'"]').parent();f.hasClass("active")||(f.addClass("active").siblings().removeClass("active"),this.options.callbacks.onAnchorChange&&this.options.callbacks.onAnchorChange.call(b[0],this))}return b}d=c('.rd-navbar-nav a[href^="#"]').get();for(f in d){b= d[f];var k=c(b);h=k.attr("href");b=c(h);b.length&&b.offset().top+a<=e&&b.offset().top+b.outerHeight()>e&&(k.parent().addClass("active").siblings().removeClass("active"),this.options.callbacks.onAnchorChange&&this.options.callbacks.onAnchorChange.call(b[0],this))}return null};b.prototype.getAnchor=function(){return history&&history.state?history.state.id:null};b.prototype.changeAnchor=function(a){history&&(history.state?history.state.id!==a?history.replaceState({anchorId:a},null,a):history.pushState({anchorId:a}, null,a):history.pushState({anchorId:a},null,a));return this};b.prototype.applyHandlers=function(a){null!=a.options.responsive&&a.$win.on("resize.navbar",c.proxy(a.resize,a.$win[0],a)).on("resize.navbar",c.proxy(a.resizeWrap,a)).on("resize.navbar",c.proxy(a.stickUp,null!=a.$clone?a.$clone:a.$element,a)).on("orientationchange.navbar",c.proxy(a.resize,a.$win[0],a)).trigger("resize.navbar");a.$doc.on("scroll.navbar",c.proxy(a.stickUp,null!=a.$clone?a.$clone:a.$element,a)).on("scroll.navbar",c.proxy(a.activateAnchor, a));a.$element.add(a.$clone).find("[data-rd-navbar-toggle]").each(function(){var b=c(this);b.on("click",c.proxy(a.switchToggle,this,a));return b.parents("body").on("click",c.proxy(a.closeToggle,this,a))});a.$element.add(a.$clone).find(".rd-navbar-submenu").each(function(){var b=c(this);var d=b.parents(".rd-navbar--is-clone").length?a.cloneTimer:a.focusTimer;b.on("mouseleave.navbar",c.proxy(a.dropdownOut,this,a,d));b.find("> a").on("mouseenter.navbar",c.proxy(a.dropdownOver,this,a,d));b.find("> a").on("touchstart.navbar", c.proxy(a.dropdownTouch,this,a,d));b.find("> .rd-navbar-submenu-toggle").on("click",c.proxy(a.dropdownToggle,this,a));return b.parents("body").on("click",c.proxy(a.dropdownClose,this,a))});a.$element.add(a.$clone).find('.rd-navbar-nav a[href^="#"]').each(function(){return c(this).on("click",c.proxy(a.goToAnchor,this,a))});a.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function(){var a=c(this);var b=this.getBoundingClientRect();b.left+a.outerWidth()>=h.innerWidth-10?this.className+= " rd-navbar-open-left":10>=b.left-a.outerWidth()&&(this.className+=" rd-navbar-open-right")});return a};b.prototype.switchClass=function(a,b,d){a=a instanceof jQuery?a:c(a);a.addClass("rd-navbar--no-transition").removeClass(b).addClass(d);a[0].offsetHeight;return a.removeClass("rd-navbar--no-transition")};b.prototype.getOption=function(a){var b,c;for(b in this.options.responsive)b<=h.innerWidth&&(c=b);return null!=this.options.responsive&&null!=this.options.responsive[c][a]?this.options.responsive[c][a]: this.options[a]};b.prototype.addAdditionalClassToToggles=function(a,b,d){return c(a).find("[data-rd-navbar-toggle]").each(function(){c(this).addClass(b);var e=this.getAttribute("data-rd-navbar-toggle");return c(this).parents("body").find(a).find(e).addClass(d)})};return b}();c.fn.extend({RDNavbar:function(b){var a=c(this);if(!a.data("RDNavbar"))return a.data("RDNavbar",new m(this,b))}});return h.RDNavbar=m})(window.jQuery,document,window);"undefined"!==typeof module&&null!==module?module.exports= window.RDNavbar:"function"===typeof define&&define.amd&&define(["jquery"],function(){return window.RDNavbar})}).call(this);