(function() { // Check if target matches to an element. function awpbusinesspressTargetMatches(selector) { return event.target.matches ? event.target.matches(selector) : event.target.msMatchesSelector(selector); } // Get next sibling. function awpbusinesspressNextSibling(element) { do { element = element.nextSibling; } while (element && element.nodeType !== 1); return element; } // Handle sub-menu arrow clicks. function awpbusinesspressSubMenuArrowClick(subMenuArrow, subMenuArrows, subMenus) { var awpbusinesspressSubMenu = awpbusinesspressNextSibling(subMenuArrow); if(awpbusinesspressSubMenu) { // Accessibility support for dropdown menu. var awpbusinesspressSubMenuLink = subMenuArrow.previousSibling; awpbusinesspressSetTabIndex(subMenus, -1); if(awpbusinesspressSubMenu.classList.contains('sub-menu--open')) { subMenuArrow.classList.remove('sub-menu-show'); awpbusinesspressSubMenu.classList.remove('sub-menu--open'); awpbusinesspressSubMenuLink.setAttribute('aria-expanded', 'false'); subMenuArrow.getElementsByClassName('menu-arrow-button-hide')[0].setAttribute('aria-hidden', 'true'); subMenuArrow.getElementsByClassName('menu-arrow-button-show')[0].setAttribute('aria-hidden', 'false'); } else { if(subMenus.length) { [].forEach.call(subMenus, function(el) { el.classList.remove('sub-menu--open'); }); } if(subMenuArrows.length) { for(var i = 0; i < subMenuArrows.length; i++) { subMenuArrows[i].classList.remove('sub-menu-show'); subMenuArrows[i].previousSibling.setAttribute('aria-expanded', 'false'); subMenuArrows[i].getElementsByClassName('menu-arrow-button-hide')[0].setAttribute('aria-hidden', 'true'); subMenuArrows[i].getElementsByClassName('menu-arrow-button-show')[0].setAttribute('aria-hidden', 'false'); } } subMenuArrow.classList.add('sub-menu-show'); awpbusinesspressSubMenu.classList.add('sub-menu--open'); awpbusinesspressSubMenuLink.setAttribute('aria-expanded', 'true'); subMenuArrow.getElementsByClassName('menu-arrow-button-hide')[0].setAttribute('aria-hidden', 'false'); subMenuArrow.getElementsByClassName('menu-arrow-button-show')[0].setAttribute('aria-hidden', 'true'); awpbusinesspressSetTabIndex(awpbusinesspressSubMenu, 0); awpbusinesspressSetTabIndex(awpbusinesspressSubMenu.querySelectorAll('.sub-menu'), -1); } } } // Setup mobile menu. function awpbusinesspressMobileMenu() { document.addEventListener('click', function(event) { if(awpbusinesspressTargetMatches('.menu-toggle')) { event.preventDefault(); var awpbusinesspressNavIcon = event.target || event.srcElement; var awpbusinesspressMainNav = document.querySelector('.main-navigation > .primary-menu-container'); // Slide mobile menu. awpbusinesspressNavIcon.classList.toggle('menu-toggle--open'); awpbusinesspressMainNav.classList.toggle('primary-menu-container--open'); if(awpbusinesspressNavIcon.classList.contains('menu-toggle--open')) { awpbusinesspressNavIcon.setAttribute('aria-expanded', 'true'); awpbusinesspressSetTabIndex(document.querySelector('.main-navigation .menu'), 0); awpbusinesspressSetTabIndex(document.querySelectorAll('.main-navigation .sub-menu'), -1); } else { awpbusinesspressNavIcon.setAttribute('aria-expanded', 'false'); } } else if(awpbusinesspressTargetMatches('.main-navigation .menu .sub-menu li.menu-item-has-children > .menu-arrow-button')) { event.preventDefault(); var awpbusinesspressSubMenuArrow1 = event.target || event.srcElement; var awpbusinesspressSubMenuArrows1 = document.querySelectorAll('.main-navigation .menu .sub-menu > li.menu-item-has-children > .menu-arrow-button'); var awpbusinesspressSubMenus1 = document.querySelectorAll('.main-navigation .menu .sub-menu > li.menu-item-has-children > .sub-menu'); awpbusinesspressSubMenuArrowClick(awpbusinesspressSubMenuArrow1, awpbusinesspressSubMenuArrows1, awpbusinesspressSubMenus1); } else if(awpbusinesspressTargetMatches('.main-navigation .menu li.menu-item-has-children > .menu-arrow-button')) { event.preventDefault(); var awpbusinesspressSubMenuArrow2 = event.target || event.srcElement; var awpbusinesspressSubMenuArrows2 = document.querySelectorAll('.main-navigation .menu > li.menu-item-has-children > .menu-arrow-button'); var awpbusinesspressSubMenus2 = document.querySelectorAll('.main-navigation .menu > li.menu-item-has-children > .sub-menu'); awpbusinesspressSubMenuArrowClick(awpbusinesspressSubMenuArrow2, awpbusinesspressSubMenuArrows2, awpbusinesspressSubMenus2); } else { var awpbusinesspressSubMenuArrows3 = document.querySelectorAll('.main-navigation .menu > li.menu-item-has-children > .menu-arrow-button'); var awpbusinesspressSubMenus3 = document.querySelectorAll('.main-navigation .menu > li.menu-item-has-children > .sub-menu'); if(awpbusinesspressSubMenus3.length) { [].forEach.call(awpbusinesspressSubMenus3, function(el) { el.classList.remove('sub-menu--open'); }); } if(awpbusinesspressSubMenuArrows3.length) { for(var i = 0; i < awpbusinesspressSubMenuArrows3.length; i++) { awpbusinesspressSubMenuArrows3[i].classList.remove('sub-menu-show'); awpbusinesspressSubMenuArrows3[i].previousSibling.setAttribute('aria-expanded', 'false'); awpbusinesspressSubMenuArrows3[i].getElementsByClassName('menu-arrow-button-hide')[0].setAttribute('aria-hidden', 'true'); awpbusinesspressSubMenuArrows3[i].getElementsByClassName('menu-arrow-button-show')[0].setAttribute('aria-hidden', 'false'); } } awpbusinesspressSetTabIndex(document.querySelectorAll('.main-navigation .sub-menu'), -1); } }); } // Mobile menu. awpbusinesspressMobileMenu(); var awpbusinesspressFocusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'; // Set tabindex of focusable elements. function awpbusinesspressSetTabIndex(element, value) { if(NodeList.prototype.isPrototypeOf(element)) { [].forEach.call(element, function(el) { [].forEach.call(el.querySelectorAll(awpbusinesspressFocusableElements), function(el) { el.setAttribute('tabindex', value); }); }); } else { [].forEach.call(element.querySelectorAll(awpbusinesspressFocusableElements), function(el) { el.setAttribute('tabindex', value); }); } } awpbusinesspressSetTabIndex(document.querySelectorAll('.main-navigation .sub-menu'), -1); document.addEventListener('keydown', function(event) { var awpbusinesspressIsTabPressed = ('Tab' === event.key || 9 === event.keyCode); if(!awpbusinesspressIsTabPressed) { return; } var awpbusinesspressNavIcon = document.querySelector('.menu-toggle'); if(awpbusinesspressNavIcon && ('none' !== getComputedStyle(awpbusinesspressNavIcon, null).display)) { if(!awpbusinesspressNavIcon.classList.contains('menu-toggle--open')) { awpbusinesspressSetTabIndex(document.querySelector('.main-navigation .menu'), -1); } if(!event.shiftKey) { if(!document.activeElement.classList || !document.activeElement.classList.contains('sub-menu-show')) { var awpbusinesspressActiveElementArrow = awpbusinesspressNextSibling(document.activeElement); if(!awpbusinesspressActiveElementArrow || (awpbusinesspressActiveElementArrow.classList && !awpbusinesspressActiveElementArrow.classList.contains('menu-arrow-button'))) { var awpbusinesspressActiveElementSibling = awpbusinesspressNextSibling(document.activeElement.parentNode); if(!awpbusinesspressActiveElementSibling && document.activeElement.parentNode.parentNode.id && 'primary-menu' === document.activeElement.parentNode.parentNode.id) { var awpbusinesspressMenuFocusableElements = document.activeElement.parentNode.parentNode.querySelectorAll(awpbusinesspressFocusableElements); if(awpbusinesspressMenuFocusableElements.length > 0) { event.preventDefault(); awpbusinesspressNavIcon.focus(); } } } } } else { if(document.activeElement.classList && document.activeElement.classList.contains('menu-toggle--open')) { var awpbusinesspressLastMenuItemArrowButton = document.querySelector('.main-navigation .menu > li:last-child > .menu-arrow-button'); if(awpbusinesspressLastMenuItemArrowButton) { awpbusinesspressLastMenuItemArrowButton.focus(); event.preventDefault(); } else { var awpbusinesspressLastMenuItemAnchor = document.querySelector('.main-navigation .menu > li:last-child > a'); if(awpbusinesspressLastMenuItemAnchor) { awpbusinesspressLastMenuItemAnchor.focus(); event.preventDefault(); } } } } } if(!event.shiftKey) { if(!document.activeElement.classList || !document.activeElement.classList.contains('sub-menu-show')) { var awpbusinesspressActiveElementArrow = awpbusinesspressNextSibling(document.activeElement); if(!awpbusinesspressActiveElementArrow || (awpbusinesspressActiveElementArrow.classList && !awpbusinesspressActiveElementArrow.classList.contains('menu-arrow-button'))) { var awpbusinesspressActiveElementSibling = awpbusinesspressNextSibling(document.activeElement.parentNode); if(!awpbusinesspressActiveElementSibling && document.activeElement.parentNode.parentNode.classList && document.activeElement.parentNode.parentNode.classList.contains('sub-menu--open')) { var subMenuFocusableElements = document.activeElement.parentNode.parentNode.querySelectorAll(awpbusinesspressFocusableElements); if(subMenuFocusableElements.length > 0) { event.preventDefault(); subMenuFocusableElements[0].focus(); } } } } } }); // Sticky menu. var awpbusinesspressMainMenuSticky = document.querySelector('.site-menu-content--sticky'); if(awpbusinesspressMainMenuSticky) { var awpbusinesspressAfterMainMenu = awpbusinesspressNextSibling(awpbusinesspressMainMenuSticky); if(awpbusinesspressAfterMainMenu) { var awpbusinesspressSiteContent = awpbusinesspressAfterMainMenu; } else { var awpbusinesspressSiteContent = document.querySelector('.site-content'); } var awpbusinesspressSiteContentMarginTop = window.getComputedStyle(awpbusinesspressSiteContent).marginTop; var awpbusinesspressStickyMenuHeight = awpbusinesspressMainMenuSticky.offsetHeight; var awpbusinesspressStickyMenuClass = 'sticky-menu'; var awpbusinesspressContainerMenuClass = 'container'; var awpbusinesspressStickyMenuInViewClass = 'sticky-menu-in-view'; var awpbusinesspressHeaderHeight = document.querySelector('.site-header').offsetHeight; window.addEventListener('scroll', function() { if(window.pageYOffset > awpbusinesspressHeaderHeight) { awpbusinesspressMainMenuSticky.classList.add(awpbusinesspressStickyMenuClass); awpbusinesspressSiteContent.style.marginTop = awpbusinesspressStickyMenuHeight + 'px'; } else { awpbusinesspressMainMenuSticky.classList.remove(awpbusinesspressStickyMenuClass); awpbusinesspressSiteContent.style.marginTop = awpbusinesspressSiteContentMarginTop; } if(window.pageYOffset > (awpbusinesspressHeaderHeight * 3)) { awpbusinesspressMainMenuSticky.classList.add(awpbusinesspressStickyMenuInViewClass); awpbusinesspressMainMenuSticky.classList.remove(awpbusinesspressContainerMenuClass); } else { awpbusinesspressMainMenuSticky.classList.remove(awpbusinesspressStickyMenuInViewClass); awpbusinesspressMainMenuSticky.classList.add(awpbusinesspressContainerMenuClass); } }); } // Utility function. function awpbusinesspressUtil() {} // Smooth scroll. awpbusinesspressUtil.scrollTo = function(final, duration, cb) { var awpbusinesspressStart = window.scrollY || document.documentElement.scrollTop, awpbusinesspressCurrentTime = null; var awpbusinesspressAnimateScroll = function(timestamp) { if(!awpbusinesspressCurrentTime) { awpbusinesspressCurrentTime = timestamp; } var awpbusinesspressProgress = timestamp - awpbusinesspressCurrentTime; if(awpbusinesspressProgress > duration) { awpbusinesspressProgress = duration; } var awpbusinesspressVal = Math.easeInOutQuad(awpbusinesspressProgress, awpbusinesspressStart, final - awpbusinesspressStart, duration); window.scrollTo(0, awpbusinesspressVal); if(awpbusinesspressProgress < duration) { window.requestAnimationFrame(awpbusinesspressAnimateScroll); } else { cb && cb(); } }; window.requestAnimationFrame(awpbusinesspressAnimateScroll); }; // Animation curves. Math.easeInOutQuad = function (t, b, c, d) { t /= d/2; if(t < 1) return c/2*t*t + b; t--; return -c/2 * (t*(t-2) - 1) + b; }; // Back to top. var awpbusinesspressBackTop = document.querySelector('.back-to-top'); if(awpbusinesspressBackTop) { var awpbusinesspressOffset = 300; var awpbusinesspressOffsetOpacity = 1200; var awpbusinesspressScrollDuration = 700; var awpbusinesspressScrolling = false; window.addEventListener('scroll', function() { if(!awpbusinesspressScrolling) { awpbusinesspressScrolling = true; (!window.requestAnimationFrame) ? setTimeout(awpbusinesspressCheckBackToTop, 250) : window.requestAnimationFrame(awpbusinesspressCheckBackToTop); } }); document.addEventListener('click', function(event) { if(awpbusinesspressTargetMatches('.back-to-top')) { event.preventDefault(); (!window.requestAnimationFrame) ? window.scrollTo(0, 0) : awpbusinesspressUtil.scrollTo(0, awpbusinesspressScrollDuration); } }); } function awpbusinesspressCheckBackToTop() { var awpbusinesspressWindowTop = window.scrollY || document.documentElement.scrollTop; ( awpbusinesspressWindowTop > awpbusinesspressOffset ) ? awpbusinesspressBackTop.classList.add('back-to-top--show') : awpbusinesspressBackTop.classList.remove('back-to-top--show', 'back-to-top--fade-out'); ( awpbusinesspressWindowTop > awpbusinesspressOffsetOpacity ) && awpbusinesspressBackTop.classList.add('back-to-top--fade-out'); awpbusinesspressScrolling = false; } })();