if(window.NodeList&&! NodeList.prototype.forEach){
NodeList.prototype.forEach=function(callback, thisArg){
thisArg=thisArg||window;
for(var i=0; i < this.length; i++){
callback.call(thisArg, this[ i ], i, this);
}};}
window.alxMediaMenu={
init: function(args){
var self=this,
navs=document.querySelectorAll(args.selector);
if(! navs.length){
return;
}
navs.forEach(function(nav){
var menuToggler=nav.querySelector('.menu-toggle');
if(! nav.querySelector('ul')&&nav.querySelector('.menu-toggle') ){
nav.querySelector('.menu-toggle').style.display='none';
}
if(! nav.classList.contains('nav-menu') ){
nav.classList.add('nav-menu');
}
self.toggleHoverEventListeners(nav);
nav.querySelectorAll('a,button').forEach(function(link){
link.addEventListener('focus', window.alxMediaMenu.toggleFocus, true);
link.addEventListener('blur', window.alxMediaMenu.toggleFocus, true);
});
menuToggler.addEventListener('click', function(){
if(nav.classList.contains('toggled') ){
menuToggler.setAttribute('aria-expanded', 'false');
nav.classList.remove('toggled');
}else{
menuToggler.setAttribute('aria-expanded', 'true');
nav.classList.add('toggled');
}});
document.addEventListener('click', function(event){
if(! nav.contains(event.target) ){
nav.classList.remove('toggled');
nav.querySelectorAll('button.active,.sub-menu.active').forEach(function(el){
el.classList.remove('active');
});
menuToggler.setAttribute('aria-expanded', 'false');
}});
});
window.alxMediaMenu.toggleMobile(args.selector, args.breakpoint);
var resizeTimer;
window.addEventListener('resize', function(){
clearTimeout(resizeTimer);
resizeTimer=setTimeout(function(){
requestAnimationFrame(function(){
window.alxMediaMenu.toggleMobile(args.selector, args.breakpoint);
});
}, 250);
}, { passive: true });
document.querySelectorAll(args.selector).forEach(function(el){
window.alxMediaMenu.toggleFocusTouch(el);
});
},
toggleItem: function(el){
var parentLi=this.helper.firstAncestorMatch(el, 'li'),
parentUl=this.helper.firstAncestorMatch(el, 'ul'),
ul=parentLi.querySelector('ul.sub-menu');
parentLi.classList.remove('hover');
ul.setAttribute('tabindex', '-1');
this.helper.toggleClass(ul, 'active');
this.helper.toggleClass(el, 'active');
parentUl.querySelectorAll('ul.sub-menu').forEach(function(subMenu){
var subMenuButton;
if(! parentLi.contains(subMenu) ){
subMenu.classList.remove('active');
subMenuButton=subMenu.parentNode.querySelector('button.active');
if(subMenuButton){
subMenuButton.classList.remove('active');
}}
});
},
toggleMobile: function(selector, breakpoint){
var self=this,
screenWidth=(function(){
if(typeof window.innerWidth!=='undefined'){
return window.innerWidth;
}
var cached=window._cachedInnerWidth;
if(!cached){
cached=document.documentElement.clientWidth||document.body.clientWidth;
window._cachedInnerWidth=cached;
requestAnimationFrame(function(){
window._cachedInnerWidth=null;
});
}
return cached;
})(),
navs=document.body.querySelectorAll(selector),
isMobile;
breakpoint=breakpoint||720;
isMobile=breakpoint > screenWidth;
if(isMobile){
navs.forEach(function(nav){
if(! nav.classList.contains('mobile') ){
nav.classList.add('mobile');
self.toggleHoverEventListeners(nav);
}});
}else{
navs.forEach(function(nav){
if(nav.classList.contains('mobile') ){
nav.classList.remove('mobile');
self.toggleHoverEventListeners(nav);
}});
}},
liMouseEnterEvent: function(){
this.classList.add('hover');
},
liMouseLeaveEvent: function(){
this.classList.remove('hover');
},
toggleHoverEventListeners: function(nav){
if(nav.classList.contains('mobile') ){
this.removeHoverEventListeners(nav);
}else{
this.addHoverEventListeners(nav);
}},
addHoverEventListeners: function(nav){
nav.querySelectorAll('li').forEach(function(li){
li.addEventListener('mouseenter', window.alxMediaMenu.liMouseEnterEvent);
li.addEventListener('mouseleave', window.alxMediaMenu.liMouseLeaveEvent);
});
},
removeHoverEventListeners: function(nav){
nav.querySelectorAll('li').forEach(function(li){
li.removeEventListener('mouseenter', window.alxMediaMenu.liMouseEnterEvent);
li.removeEventListener('mouseleave', window.alxMediaMenu.liMouseLeaveEvent);
});
},
toggleFocus: function(){
var self=this;
while(-1===self.className.indexOf('nav-menu') ){
if('li'===self.tagName.toLowerCase()){
if(-1!==self.className.indexOf('focus') ){
self.className=self.className.replace(' focus', '');
}else{
self.className +=' focus';
}}
self=self.parentElement;
}},
toggleFocusTouch: function(el){
var touchStartFn,
parentLinks=el.querySelectorAll('.menu-item-has-children > a, .page_item_has_children > a');
if('ontouchstart' in window){
touchStartFn=function(e){
var menuItem=this.parentNode;
if(! menuItem.classList.contains('focus') ){
e.preventDefault();
menuItem.parentNode.children.forEach(function(child){
if(menuItem!==child){
child.classList.remove('focus');
}});
menuItem.classList.add('focus');
}else{
menuItem.classList.remove('focus');
}};
parentLinks.forEach(function(parentLink){
parentLink.addEventListener('touchstart', touchStartFn, false);
});
}},
helper: {
toggleClass: function(el, className){
if(el.classList.contains(className) ){
el.classList.remove(className);
}else{
el.classList.add(className);
}},
firstAncestorMatch: function(el, selector){
if(el.parentNode.matches(selector) ){
return el.parentNode;
}
return this.firstAncestorMatch(el.parentNode, selector);
}}
};
window.alxMediaMenu.init({
selector: '.main-navigation.nav-menu',
breakpoint: 720
});