{"version":3,"sources":["../../../ScriptsSource/Scripts/cmsv2/v15.6/new-nav/new-nav.js"],"names":["window","Element","prototype","closest","s","i","matches","this","document","ownerDocument","querySelectorAll","el","length","item","parentElement","nav","init","element","Boolean","getAttribute","setAttribute","navItemsWithQuaternary","returnNavItemsWithQuaternary","createTabs","createCloseLinks","createMobileElements","createDimmer","resetNav","addEventListener","debounce","resetIfEnvironmentChanged","clearStylesOnResize","setNavListWidth","setNavHeights","navClicks","lastRenderingDesktop","isDesktopNav","hideOnScroll","detectHover","addScrollClue","hideScrollClue","querySelector","classList","remove","windowWidth","innerWidth","documentElement","clientWidth","togglingSecondary","bounding","getBoundingClientRect","right","elementPaddingLeft","parseInt","getComputedStyle","getPropertyValue","left","add","canHover","hasAttribute","Headroom","cutsTheMustard","headroomInstance","offset","matchMedia","showDesktopNav","setupTertiary","desktopTertiaryItems","Array","slice","call","resetItems","startingStyle","shift","setupTertiaryStyling","items","isShown","selector","target","setTimeout","togglingTertiary","togglingQuaternary","dimmer","unlockScroll","unfreeze","list","style","width","Math","ceil","height","max","clientHeight","innerHeight","top","secondaryNavs","j","tertiaryNavs","k","quaternaryNavs","tabs","tabsArray","container","createElement","containerInner","clone","cloneNode","appendChild","secondary","insertBefore","firstChild","togglingTertiaryDesktop","text","textContent","closeText","titleElement","innerHTML","removeAttribute","secondaryClose","returnTitle","navItem","type","createBackElement","backText","relevantQuaternaryNavs","backElements","dimmerElement","getElementsByTagName","setStateAndScroll","expanded","result","scrollTop","toggle","existing","isSecondary","freeze","lockScroll","togglingSecondaryClick","e","clearTimeout","closeTimer","preventDefault","togglingSecondaryKeyDown","keyPressed","getKeyPressed","togglingSecondaryHover","togglingSecondaryHoverOff","togglingTertiaryClick","togglingTertiaryDesktopClick","tabHoverTimer","closestSecondaryNav","parentNode","togglingTertiaryDesktopKeyDown","togglingTertiaryDesktopHover","click","togglingTertiaryDesktopHoverOut","togglingQuaternaryClick","togglingQuaternaryKeyDown","secondaryCloseClick","controls","secondaryCloseKeyDown","backElementClick","l","m","n","link","contains","push","lastScrollTop","scrollY","body","marginTop","scrollTo","html","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","key","undefined","keyCode"],"mappings":"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","file":"new-nav.min.js","sourcesContent":["/* global Headroom */\r\n\r\n// Polyfill for closest (IE support)\r\n\r\nif (window.Element && !Element.prototype.closest) {\r\n\r\n Element.prototype.closest = function (s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s), i, el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) { }\r\n } while ((i < 0) && (el = el.parentElement));\r\n return el;\r\n };\r\n\r\n}\r\n\r\nvar nav = function () {\r\n\r\n // elements\r\n\r\n var element = document.querySelector('[data-nav]');\r\n var list = document.querySelector('[data-nav-list]');\r\n var secondaryNavs = document.querySelectorAll('[data-nav-secondary]');\r\n var tertiaryNavs = document.querySelectorAll('[data-nav-tertiary]');\r\n var quaternaryNavs = document.querySelectorAll('[data-nav-quaternary]');\r\n\r\n var togglingSecondary = document.querySelectorAll('[data-nav-toggling=\"secondary\"]');\r\n var togglingTertiary = document.querySelectorAll('[data-nav-toggling=\"tertiary\"]');\r\n var togglingQuaternary = document.querySelectorAll('[data-nav-toggling=\"quaternary\"]');\r\n\r\n var togglingTertiaryDesktop;\r\n var secondaryClose;\r\n var backElements;\r\n\r\n var dimmer;\r\n\r\n var navItemsWithQuaternary;\r\n\r\n var html = document.getElementsByTagName('html')[0];\r\n var body = document.getElementsByTagName('body')[0];\r\n\r\n // settings\r\n\r\n var showDesktopNav = '(min-width: 980px)';\r\n var lastRenderingDesktop;\r\n var lastScrollTop = 0;\r\n var canHover = true;\r\n\r\n // instances\r\n\r\n var headroomInstance = false;\r\n\r\n // timers\r\n\r\n var closeTimer;\r\n var tabHoverTimer;\r\n\r\n // init()\r\n\r\n function init() {\r\n\r\n if (!element) { return; }\r\n\r\n if (Boolean(element.getAttribute('data-initialized')) === true) { return; }\r\n\r\n element.setAttribute('data-initialized', true);\r\n\r\n navItemsWithQuaternary = returnNavItemsWithQuaternary();\r\n\r\n createTabs();\r\n createCloseLinks();\r\n createMobileElements();\r\n createDimmer();\r\n\r\n resetNav();\r\n window.addEventListener('resize', debounce(function () { resetIfEnvironmentChanged(); }, 500));\r\n\r\n window.addEventListener('resize', clearStylesOnResize);\r\n\r\n window.addEventListener('load', setNavListWidth);\r\n window.addEventListener('resize', debounce(function () { setNavListWidth(); }, 250));\r\n\r\n window.addEventListener('load', setNavHeights);\r\n window.addEventListener('resize', debounce(function () { setNavHeights(); }, 750));\r\n\r\n window.addEventListener('load', navClicks);\r\n\r\n lastRenderingDesktop = isDesktopNav();\r\n\r\n hideOnScroll();\r\n\r\n detectHover();\r\n\r\n addScrollClue();\r\n\r\n }\r\n\r\n // hideScrollClue()\r\n\r\n function hideScrollClue() {\r\n\r\n element.querySelector('.nav__inner').addEventListener('scroll', function () { element.classList.remove('nav--with-scroll-clue'); });\r\n\r\n }\r\n\r\n // addScrollClue()\r\n\r\n function addScrollClue() {\r\n\r\n if (!isDesktopNav()) {\r\n\r\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\r\n for (var i = 0; i < togglingSecondary.length; i++) {\r\n\r\n var bounding = togglingSecondary[i].getBoundingClientRect();\r\n\r\n if (bounding.right > windowWidth) {\r\n\r\n //element.classList.add('nav--with-scroll-clue');\r\n\r\n hideScrollClue();\r\n\r\n var elementPaddingLeft = parseInt(window.getComputedStyle(togglingSecondary[i], null).getPropertyValue('padding-left'));\r\n\r\n if (windowWidth - bounding.left < (elementPaddingLeft * 2)) {\r\n\r\n element.classList.add('nav--with-scroll-clue');\r\n\r\n hideScrollClue();\r\n\r\n }\r\n\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // detectHover()\r\n\r\n function detectHover() {\r\n\r\n window.addEventListener('touchstart', function () { canHover = false; }, false);\r\n element.addEventListener('mouseover', debounce(function () { canHover = true; }, 500));\r\n\r\n }\r\n\r\n // hideOnScroll()\r\n\r\n function hideOnScroll() {\r\n\r\n if (!element.hasAttribute('data-nav-hide-on-scroll') || typeof Headroom === 'undefined' || !Headroom.cutsTheMustard) { return; }\r\n\r\n headroomInstance = new Headroom(element, {\r\n offset: 100\r\n });\r\n\r\n headroomInstance.init();\r\n\r\n }\r\n\r\n // resetIfEnvironmentChanged()\r\n\r\n function resetIfEnvironmentChanged() {\r\n\r\n if (isDesktopNav() !== lastRenderingDesktop) {\r\n\r\n resetNav();\r\n lastRenderingDesktop = isDesktopNav();\r\n\r\n } else {\r\n\r\n setNavHeights();\r\n\r\n }\r\n\r\n }\r\n\r\n // isDesktopNav()\r\n\r\n function isDesktopNav() {\r\n\r\n return matchMedia(showDesktopNav).matches;\r\n\r\n }\r\n\r\n // setupTertiary()\r\n // Ensure only the first tertiary item is shown on desktop - e.g. \"Motor\" under \"Insurance\"\r\n\r\n function setupTertiary() {\r\n\r\n for (var i = 0; i < navItemsWithQuaternary.length; i++) {\r\n\r\n // cache desktop items\r\n\r\n var desktopTertiaryItems = Array.prototype.slice.call(navItemsWithQuaternary[i].querySelectorAll('[data-nav-toggling=\"tertiary|desktop\"]'));\r\n\r\n // make sure the first one is active\r\n\r\n resetItems([desktopTertiaryItems[0]], true);\r\n\r\n // apply appropriate style\r\n\r\n var startingStyle = desktopTertiaryItems[0].getAttribute('data-style');\r\n navItemsWithQuaternary[i].setAttribute('data-style', startingStyle);\r\n\r\n // remove the first item from the array\r\n\r\n desktopTertiaryItems.shift();\r\n\r\n // set all items other than the first to be hidden\r\n\r\n resetItems(desktopTertiaryItems, false);\r\n\r\n }\r\n\r\n }\r\n\r\n // setupTertiaryStyling()\r\n\r\n function setupTertiaryStyling() {\r\n\r\n for (var i = 0; i < navItemsWithQuaternary.length; i++) {\r\n\r\n var startingStyle = navItemsWithQuaternary[i].querySelectorAll('[data-nav-toggling=\"tertiary\"]')[0].getAttribute('data-style');\r\n navItemsWithQuaternary[i].setAttribute('data-style', startingStyle);\r\n\r\n }\r\n\r\n }\r\n\r\n // resetItems()\r\n // Reset nav items so that they are correctly hidden or shown\r\n\r\n function resetItems(items, isShown) {\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n\r\n var selector = '#' + items[i].getAttribute('aria-controls');\r\n\r\n var target = document.querySelector(selector);\r\n\r\n if (isShown) {\r\n\r\n items[i].setAttribute('aria-expanded', 'true');\r\n target.classList.add('is-shown');\r\n\r\n } else {\r\n\r\n items[i].setAttribute('aria-expanded', 'false');\r\n target.classList.remove('is-shown');\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // resetNav()\r\n\r\n function resetNav() {\r\n\r\n element.classList.add('nav--no-animations');\r\n\r\n resetItems(togglingSecondary, false);\r\n\r\n setTimeout(function () {\r\n\r\n if (isDesktopNav()) {\r\n\r\n resetItems(togglingTertiary, true);\r\n resetItems(togglingQuaternary, true);\r\n\r\n setupTertiary();\r\n\r\n } else {\r\n\r\n resetItems(togglingTertiary, false);\r\n resetItems(togglingQuaternary, false);\r\n\r\n setupTertiaryStyling();\r\n\r\n }\r\n\r\n dimmer.classList.remove('is-shown');\r\n\r\n unlockScroll();\r\n\r\n setNavHeights();\r\n\r\n }, 100);\r\n\r\n setTimeout(function () { element.classList.remove('nav--no-animations'); }, 110);\r\n\r\n if (headroomInstance) { headroomInstance.unfreeze(); }\r\n\r\n }\r\n\r\n // clearStylesOnResize()\r\n // Immediately clear defined style on resize that cause layout issues\r\n\r\n function clearStylesOnResize() {\r\n\r\n list.style.width = null;\r\n element.classList.remove('nav--with-scroll-clue');\r\n\r\n }\r\n\r\n // setNavListWidth()\r\n // Override the excessive width for the nav set in CSS with a calculated value\r\n\r\n function setNavListWidth() {\r\n\r\n if (isDesktopNav()) {\r\n\r\n list.style.width = 'auto';\r\n\r\n } else {\r\n\r\n var width = 0;\r\n for (var i = 0; i < togglingSecondary.length; i++) { width += togglingSecondary[i].getBoundingClientRect().width; }\r\n list.style.width = Math.ceil(width) + 'px';\r\n\r\n }\r\n\r\n }\r\n\r\n // setNavHeight()\r\n // Set the height of secondary nav items for mobile\r\n\r\n function setNavHeights() {\r\n\r\n if (isDesktopNav()) { return; }\r\n\r\n var height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n height -= element.getBoundingClientRect().top;\r\n\r\n var top;\r\n\r\n for (var i = 0; i < secondaryNavs.length; i++) { secondaryNavs[i].style.height = height + 'px'; }\r\n\r\n for (var j = 0; j < tertiaryNavs.length; j++) {\r\n\r\n top = parseInt(window.getComputedStyle(tertiaryNavs[j]).getPropertyValue('top')) || 0;\r\n tertiaryNavs[j].style.height = (height - top) + 'px';\r\n\r\n }\r\n\r\n for (var k = 0; k < quaternaryNavs.length; k++) {\r\n\r\n top = parseInt(window.getComputedStyle(tertiaryNavs[k]).getPropertyValue('top')) || 0;\r\n quaternaryNavs[k].style.height = (height - top) + 'px';\r\n\r\n }\r\n\r\n }\r\n\r\n // createTabs()\r\n // Create tabs for desktop navigation where necessary\r\n\r\n function createTabs() {\r\n\r\n for (var i = 0; i < navItemsWithQuaternary.length; i++) {\r\n\r\n var tabs = navItemsWithQuaternary[i].querySelectorAll('[data-nav-toggling=\"tertiary\"]');\r\n var tabsArray = Array.prototype.slice.call(tabs);\r\n\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'nav__tabs is-injected');\r\n\r\n var containerInner = document.createElement('div');\r\n containerInner.setAttribute('class', 'nav__tabs__inner');\r\n\r\n for (var j = 0; j < tabsArray.length; j++) {\r\n\r\n var clone = tabsArray[j].cloneNode(true);\r\n clone.setAttribute('class', 'nav__tab');\r\n clone.setAttribute('data-nav-toggling', 'tertiary|desktop');\r\n containerInner.appendChild(clone);\r\n\r\n }\r\n\r\n container.appendChild(containerInner);\r\n\r\n var secondary = navItemsWithQuaternary[i].querySelector('[data-nav-secondary]');\r\n secondary.insertBefore(container, secondary.firstChild);\r\n\r\n }\r\n\r\n togglingTertiaryDesktop = document.querySelectorAll('[data-nav-toggling=\"tertiary|desktop\"]');\r\n\r\n }\r\n\r\n // createClose()\r\n // Create close links used on desktop and mobile\r\n\r\n function createCloseLinks() {\r\n\r\n for (var i = 0; i < togglingSecondary.length; i++) {\r\n\r\n var selector = '#' + togglingSecondary[i].getAttribute('aria-controls');\r\n var target = document.querySelector(selector);\r\n\r\n\r\n var text = togglingSecondary[i].textContent;\r\n var closeText = 'Close ' + text + ' navigation';\r\n\r\n var titleElement = document.createElement('div');\r\n titleElement.setAttribute('class', 'nav__title is-injected');\r\n titleElement.innerHTML = '' + text + '';\r\n\r\n var clone = togglingSecondary[i].cloneNode(true);\r\n clone.setAttribute('class', 'nav__title__close nav__title__close--pressure');\r\n clone.removeAttribute('data-nav-toggling');\r\n clone.setAttribute('aria-expanded', 'true'); // when this element is visible the corresponding nav item is always expanded\r\n clone.setAttribute('data-nav-close', '');\r\n clone.innerHTML = closeText;\r\n\r\n titleElement.appendChild(clone);\r\n\r\n target.insertBefore(titleElement, target.firstChild);\r\n\r\n }\r\n\r\n secondaryClose = document.querySelectorAll('[data-nav-close]');\r\n\r\n }\r\n\r\n // createMobileElements()\r\n // Create additional elements required for mobile navigation\r\n\r\n function createMobileElements() {\r\n\r\n function returnTitle(text, navItem, type) {\r\n\r\n var titleElement = document.createElement('div');\r\n titleElement.setAttribute('class', 'nav__back is-injected');\r\n\r\n var clone = navItem.cloneNode(true);\r\n clone.setAttribute('class', 'nav__back__link');\r\n clone.removeAttribute('data-nav-toggling');\r\n clone.setAttribute('aria-expanded', 'true'); // when this element is visible the corresponding nav item is always expanded\r\n clone.setAttribute('data-nav-back', type);\r\n clone.innerHTML = text;\r\n\r\n titleElement.appendChild(clone);\r\n\r\n return titleElement;\r\n\r\n }\r\n\r\n function createBackElement(navItem, type) {\r\n\r\n var selector = '#' + navItem.getAttribute('aria-controls');\r\n\r\n var target = document.querySelector(selector);\r\n\r\n\r\n var backText = navItem.textContent;\r\n\r\n var titleElement;\r\n\r\n if (type === 'tertiarySkip') {\r\n\r\n var relevantQuaternaryNavs = target.querySelectorAll('[data-nav-quaternary]');\r\n\r\n for (var i = 0; i < relevantQuaternaryNavs.length; i++) {\r\n\r\n titleElement = returnTitle(backText, navItem, 'tertiary|skip');\r\n relevantQuaternaryNavs[i].insertBefore(titleElement, relevantQuaternaryNavs[i].firstChild);\r\n\r\n }\r\n\r\n } else {\r\n\r\n titleElement = returnTitle(backText, navItem, type);\r\n target.insertBefore(titleElement, target.firstChild);\r\n\r\n }\r\n\r\n }\r\n\r\n for (var i = 0; i < togglingTertiary.length; i++) { createBackElement(togglingTertiary[i], 'tertiary'); }\r\n for (var j = 0; j < togglingQuaternary.length; j++) { createBackElement(togglingQuaternary[j], 'quaternary'); }\r\n for (var k = 0; k < togglingTertiary.length; k++) { createBackElement(togglingTertiary[k], 'tertiarySkip'); }\r\n\r\n backElements = document.querySelectorAll('[data-nav-back]');\r\n\r\n }\r\n\r\n // createDimmer()\r\n // Create dimmer for desktop navigation\r\n\r\n function createDimmer() {\r\n\r\n var dimmerElement = document.createElement('div');\r\n dimmerElement.setAttribute('class', 'nav-dimmer is-injected');\r\n dimmerElement.setAttribute('data-nav-dimmer', '');\r\n\r\n document.getElementsByTagName('body')[0].appendChild(dimmerElement);\r\n\r\n dimmer = document.querySelector('[data-nav-dimmer]');\r\n\r\n }\r\n\r\n // navClicks()\r\n\r\n function navClicks() {\r\n\r\n // setStateAndScroll\r\n // Assigns the current nav state to a data attribute and scrolls all sections to the top\r\n\r\n function setStateAndScroll(type, expanded) {\r\n\r\n if (type === 'secondary' && !expanded) {\r\n\r\n element.setAttribute('data-nav', '');\r\n\r\n } else {\r\n\r\n if (expanded) {\r\n\r\n element.setAttribute('data-nav', type);\r\n\r\n } else {\r\n\r\n var result = (type === 'quaternary') ? 'tertiary' : 'secondary';\r\n element.setAttribute('data-nav', result);\r\n\r\n }\r\n\r\n }\r\n\r\n for (var i = 0; i < secondaryNavs.length; i++) { secondaryNavs[i].querySelector('.nav__secondary__inner').scrollTop = 0; }\r\n for (var j = 0; j < tertiaryNavs.length; j++) { tertiaryNavs[j].scrollTop = 0; }\r\n for (var k = 0; k < quaternaryNavs.length; k++) { quaternaryNavs[k].scrollTop = 0; }\r\n\r\n }\r\n\r\n // toggle()\r\n\r\n function toggle(item, existing) {\r\n\r\n var expanded = item.getAttribute('aria-expanded') === 'true' ? true : false;\r\n\r\n var selector = '#' + item.getAttribute('aria-controls');\r\n var target = document.querySelector(selector);\r\n\r\n\r\n var isSecondary = item.getAttribute('data-nav-toggling') === 'secondary';\r\n\r\n\r\n if (expanded) {\r\n\r\n target.classList.remove('is-shown');\r\n dimmer.classList.remove('is-shown');\r\n\r\n if (isSecondary && headroomInstance) { headroomInstance.unfreeze(); }\r\n\r\n if (isSecondary && !isDesktopNav()) { setTimeout(function () { resetNav(); }, 250); }\r\n\r\n } else {\r\n\r\n if (isSecondary && isDesktopNav()) {\r\n\r\n setupTertiary();\r\n setupTertiaryStyling();\r\n\r\n }\r\n\r\n if (existing) {\r\n\r\n existing.classList.remove('is-shown');\r\n\r\n var link = document.querySelector('[aria-controls=\"' + existing.getAttribute('id') + '\"]');\r\n\r\n link.setAttribute('aria-expanded', false);\r\n\r\n }\r\n\r\n target.classList.add('is-shown');\r\n dimmer.classList.add('is-shown');\r\n\r\n if (isSecondary && headroomInstance) { headroomInstance.freeze(); }\r\n\r\n if (isSecondary && !isDesktopNav()) { lockScroll(); }\r\n\r\n }\r\n\r\n setStateAndScroll(item.getAttribute('data-nav-toggling'), !expanded);\r\n\r\n item.setAttribute('aria-expanded', !expanded);\r\n\r\n }\r\n\r\n // toggling secondary clicks / hovers\r\n\r\n function togglingSecondaryClick(e) {\r\n\r\n var existing = document.querySelector('[data-nav-secondary].is-shown');\r\n\r\n clearTimeout(closeTimer);\r\n\r\n toggle(e.target, existing);\r\n\r\n e.preventDefault();\r\n\r\n }\r\n\r\n function togglingSecondaryKeyDown(e) {\r\n\r\n var keyPressed = getKeyPressed(e);\r\n\r\n if (keyPressed === 13 || keyPressed === 'Enter') { togglingSecondaryClick(e); }\r\n\r\n }\r\n\r\n function togglingSecondaryHover(e) {\r\n\r\n if (isDesktopNav() && canHover) {\r\n\r\n clearTimeout(closeTimer);\r\n\r\n var existing = document.querySelector('[data-nav-secondary].is-shown');\r\n\r\n if (e.target.querySelector('[data-nav-secondary]') !== existing) {\r\n\r\n toggle(e.target.querySelector('[data-nav-toggling]'), existing);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function togglingSecondaryHoverOff(e) {\r\n\r\n if (isDesktopNav() && canHover) {\r\n\r\n closeTimer = setTimeout(function () {\r\n\r\n var target = e.target.querySelector('[data-nav-toggling]');\r\n var expanded = target.getAttribute('aria-expanded') === 'true' ? true : false;\r\n\r\n if (expanded) { toggle(e.target.querySelector('[data-nav-toggling]')); }\r\n\r\n }, 350);\r\n\r\n }\r\n\r\n }\r\n\r\n for (var i = 0; i < togglingSecondary.length; i++) {\r\n\r\n togglingSecondary[i].addEventListener('click', togglingSecondaryClick);\r\n togglingSecondary[i].addEventListener('keydown', togglingSecondaryKeyDown);\r\n togglingSecondary[i].closest('.nav__item').addEventListener('mouseenter', togglingSecondaryHover);\r\n togglingSecondary[i].closest('.nav__item').addEventListener('mouseleave', togglingSecondaryHoverOff);\r\n\r\n }\r\n\r\n // toggling tertiary clicks\r\n\r\n function togglingTertiaryClick(e) {\r\n\r\n if (!isDesktopNav()) {\r\n\r\n toggle(e.target);\r\n e.preventDefault();\r\n\r\n }\r\n\r\n }\r\n\r\n for (var j = 0; j < togglingTertiary.length; j++) {\r\n\r\n togglingTertiary[j].addEventListener('click', togglingTertiaryClick);\r\n\r\n }\r\n\r\n // toggling terrtiary desktop clicks\r\n\r\n function togglingTertiaryDesktopClick(e) {\r\n\r\n clearTimeout(tabHoverTimer);\r\n\r\n if (e.target.getAttribute('aria-expanded') === 'false') {\r\n\r\n var closestSecondaryNav = e.target.closest('[data-nav-secondary]');\r\n var existing = closestSecondaryNav.querySelector('[data-nav-tertiary].is-shown');\r\n\r\n // apply appropriate style\r\n\r\n closestSecondaryNav.parentNode.setAttribute('data-style', e.target.getAttribute('data-style'));\r\n\r\n toggle(e.target, existing);\r\n\r\n }\r\n\r\n e.preventDefault();\r\n\r\n }\r\n\r\n function togglingTertiaryDesktopKeyDown(e) {\r\n\r\n var keyPressed = getKeyPressed(e);\r\n\r\n if (keyPressed === 13 || keyPressed === 'Enter') { togglingTertiaryDesktopClick(e); }\r\n\r\n }\r\n\r\n function togglingTertiaryDesktopHover(e) {\r\n\r\n clearTimeout(tabHoverTimer);\r\n\r\n if (isDesktopNav() && canHover) {\r\n\r\n tabHoverTimer = setTimeout(function () { e.target.click(); }, 250);\r\n\r\n }\r\n\r\n }\r\n\r\n function togglingTertiaryDesktopHoverOut() {\r\n\r\n clearTimeout(tabHoverTimer);\r\n\r\n }\r\n\r\n for (var k = 0; k < togglingTertiaryDesktop.length; k++) {\r\n\r\n togglingTertiaryDesktop[k].addEventListener('click', togglingTertiaryDesktopClick);\r\n togglingTertiaryDesktop[k].addEventListener('keydown', togglingTertiaryDesktopKeyDown);\r\n togglingTertiaryDesktop[k].addEventListener('mouseenter', togglingTertiaryDesktopHover);\r\n togglingTertiaryDesktop[k].addEventListener('mouseleave', togglingTertiaryDesktopHoverOut);\r\n\r\n }\r\n\r\n // toggling quaternary clicks\r\n\r\n function togglingQuaternaryClick(e) {\r\n\r\n if (!isDesktopNav()) {\r\n\r\n toggle(e.target);\r\n e.preventDefault();\r\n\r\n }\r\n\r\n }\r\n\r\n function togglingQuaternaryKeyDown(e) {\r\n\r\n var keyPressed = getKeyPressed(e);\r\n\r\n if (keyPressed === 13 || keyPressed === 'Enter') { togglingQuaternaryClick(e); }\r\n\r\n }\r\n\r\n for (var l = 0; l < togglingQuaternary.length; l++) {\r\n\r\n togglingQuaternary[l].addEventListener('click', togglingQuaternaryClick);\r\n togglingQuaternary[l].addEventListener('keydown', togglingQuaternaryKeyDown);\r\n\r\n }\r\n\r\n // secondary close clicks\r\n\r\n function secondaryCloseClick(e) {\r\n\r\n var controls = e.target.getAttribute('aria-controls');\r\n var link = document.querySelector('[data-nav-toggling=\"secondary\"][aria-controls=\"' + controls + '\"]');\r\n link.click();\r\n\r\n unlockScroll();\r\n\r\n e.preventDefault();\r\n\r\n }\r\n\r\n function secondaryCloseKeyDown(e) {\r\n\r\n var keyPressed = getKeyPressed(e);\r\n\r\n if (keyPressed === 13 || keyPressed === 'Enter') { secondaryCloseClick(e); }\r\n\r\n }\r\n\r\n for (var m = 0; m < secondaryClose.length; m++) {\r\n\r\n secondaryClose[m].addEventListener('click', secondaryCloseClick);\r\n secondaryClose[m].addEventListener('keydown', secondaryCloseKeyDown);\r\n\r\n }\r\n\r\n // back element clicks\r\n\r\n function backElementClick(e) {\r\n\r\n var controls = e.target.getAttribute('aria-controls');\r\n var type = e.target.getAttribute('data-nav-back');\r\n\r\n if (type === 'tertiary|skip') {\r\n\r\n var linkOne = document.querySelector('[data-nav-toggling=\"quaternary\"][aria-expanded=\"true\"]');\r\n linkOne.click();\r\n\r\n var linkTwo = document.querySelector('[data-nav-toggling=\"tertiary\"][aria-controls=\"' + controls + '\"]');\r\n linkTwo.click();\r\n\r\n } else {\r\n\r\n var link = document.querySelector('[data-nav-toggling=\"' + type + '\"][aria-controls=\"' + controls + '\"]');\r\n link.click();\r\n\r\n }\r\n\r\n e.preventDefault();\r\n\r\n }\r\n\r\n for (var n = 0; n < backElements.length; n++) {\r\n\r\n backElements[n].addEventListener('click', backElementClick);\r\n\r\n }\r\n\r\n // document clicks\r\n\r\n document.addEventListener('click', function (e) {\r\n\r\n var link = document.querySelector('[data-nav-secondary].is-shown [data-nav-close]');\r\n if (!link) { return; }\r\n if (e.target !== element && !element.contains(e.target)) { link.click(); }\r\n\r\n });\r\n\r\n }\r\n\r\n // returnNavItemsWithQuaternary()\r\n\r\n function returnNavItemsWithQuaternary() {\r\n\r\n var result = [];\r\n\r\n for (var i = 0; i < togglingSecondary.length; i++) {\r\n\r\n if (togglingSecondary[i].parentNode.querySelectorAll('[data-nav-toggling=\"quaternary\"]').length) { result.push(togglingSecondary[i].parentNode); }\r\n\r\n }\r\n\r\n return result;\r\n\r\n }\r\n\r\n // lockScroll()\r\n\r\n function lockScroll() {\r\n\r\n if (headroomInstance) {\r\n\r\n lastScrollTop = window.scrollY;\r\n body.style.marginTop = '-' + lastScrollTop + 'px';\r\n\r\n } else {\r\n\r\n window.scrollTo(0, 0);\r\n\r\n }\r\n\r\n html.classList.add('is-locked');\r\n\r\n }\r\n\r\n // unlockScroll()\r\n\r\n function unlockScroll() {\r\n\r\n if (headroomInstance) { headroomInstance.freeze(); }\r\n\r\n html.classList.remove('is-locked');\r\n\r\n if (headroomInstance) {\r\n\r\n body.style.marginTop = '0px';\r\n if (!isDesktopNav()) { window.scrollTo(0, lastScrollTop); }\r\n\r\n setTimeout(function () { headroomInstance.unfreeze(); }, 100);\r\n\r\n }\r\n\r\n }\r\n\r\n // debounce()\r\n\r\n function debounce(func, wait, immediate) {\r\n\r\n var timeout;\r\n\r\n return function executedFunction() {\r\n var context = this;\r\n var args = arguments;\r\n\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) { func.apply(context, args); }\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) { func.apply(context, args); }\r\n };\r\n\r\n }\r\n\r\n function getKeyPressed(e) {\r\n\r\n var key = e.key;\r\n\r\n if (key !== undefined) { return key; }\r\n\r\n var keyCode = e.keyCode;\r\n\r\n if (keyCode !== undefined) { return keyCode; }\r\n\r\n }\r\n\r\n return {\r\n init: init\r\n };\r\n\r\n}();\r\n\r\nnav.init();"]}