{"version":3,"file":"nav-v3.js","sources":["nav-v3.js"],"sourcesContent":["GT.MegaMenuV3 = function() {\n if(typeof isNav3 == \"undefined\") return;\n\n let linkLv1 = document.querySelectorAll('.nav-link, .global-search__toggle, .global-reach__toggle'),\n closeMegaIcons = document.querySelectorAll('.close-mega__menu'),\n htmlElm = document.firstElementChild,\n headerMenu = document.querySelector('.header-menu'), \n closeTimerLst = [],\n isDesktop = GT.isDesktopView();\n\n init();\n function closeSecondary() {\n if(htmlElm.classList.contains(\"global-reach--opening\") || GT.headerElm.querySelector(\".menu-link.open\") || !htmlElm.classList.contains(\"opening-header-overlay\")) return;\n\n if(!htmlElm.classList.contains(\"opening-mobile-menu\")) {\n htmlElm.classList.remove(\"opening-megamenu\", \"global-search--opening\");\n }\n\n GT.Overlays.hideHeaderOverlay();\n\n closeTimerLst.push(setTimeout(() => {\n if(!htmlElm.classList.contains(\"global-reach--opening\"))\n GT.headerElm.classList.remove(\"trigger-animation\");\n }, 80))\n\n GT.headerElm.querySelectorAll(\".bleed.open, .bleed .open\").forEach(bleedItem => {\n bleedItem.classList.remove(\"open\");\n\n\n bleedItem.querySelectorAll('a').forEach(item => {\n item.setAttribute('tabindex', -1);\n });\n\n bleedItem.querySelectorAll('.mega__level--2-group').forEach(item => {\n item.removeAttribute('tabindex');\n if(item.getAttribute('aria-expanded') == 'true'){\n item.setAttribute('aria-expanded', 'false');\n }\n })\n })\n\n // megaWrapper.setAttribute(\"inert\", true);\n linkLv1.forEach(item => {\n item.classList.remove('open');\n item.removeAttribute('tabindex');\n if (item.classList.contains('nav-link--dropdown'))\n item.setAttribute('aria-expanded', 'false');\n });\n\n\n GT.headerElm.querySelectorAll(\".mega__level--2.open\").forEach(lv2Item => {\n lv2Item.classList.remove(\"open\");\n })\n\n GT.headerElm.style.setProperty('--bleed-height', 0);\n };\n\n function openSecondary(t) {\n if(htmlElm.classList.contains(\"global-reach--opening\"))\n return;\n let panelID = t;\n\n htmlElm.classList.add(\"opening-megamenu\");\n GT.Overlays.showHeaderOverlay();\n closeTimerLst.forEach(timerItem => {\n clearTimeout(timerItem);\n })\n\n setTimeout(() => {\n GT.headerElm.classList.add(\"trigger-animation\");\n }, 150)\n\n let _extraMenu = document.querySelector('.menu-link');\n if(_extraMenu != null && _extraMenu.classList.contains('open')) {\n _extraMenu.classList.remove('open');\n _extraMenu.querySelector('button.nav-link').blur();\n }\n \n let _globalSearch = document.querySelector('.global-search');\n if(_globalSearch) {\n _globalSearch.classList.remove('open');\n _globalSearch.querySelector('input[name=\"q\"]').blur();\n }\n\n let bleedItems = GT.headerElm.querySelectorAll('.bleed');\n\n for(let i = 0; i < bleedItems.length; i++) {\n let bleedItem = bleedItems[i];\n bleedItem.classList.remove('open');\n\n if(bleedItem.getAttribute('data-content') == panelID) {\n const bleedHeight = bleedItem.querySelector(\".bleed-container\").offsetHeight;\n activeMenuTier2 = bleedItem;\n GT.headerElm.style.setProperty('--bleed-height', (GT.wHeight < bleedHeight && isDesktop ? GT.wHeight : bleedHeight) + 'px');\n bleedItem.classList.add('open');\n // Restore the initial roles for top-level ul/li elements previously hidden from the accessibility tree using code.\n bleedItem.querySelector(\".bleed-container > ul\")?.removeAttribute(\"role\");\n bleedItem.querySelectorAll(\".bleed-container > ul > li\").forEach(liItem => {\n liItem.removeAttribute(\"role\");\n });\n // megaWrapper.removeAttribute(\"inert\");\n if(isDesktop) {\n bleedItem.querySelectorAll('a').forEach(item => {\n item.setAttribute('tabindex', 0);\n })\n // For multi-level menu item groups, hide the top-level ul/li elements from the accessibility tree,\n // to prevent redundant screen reader announcements.\n if(bleedItem.querySelector(\".mega__level--2-group .first-level\")) {\n bleedItem.querySelector(\".bleed-container > ul\").setAttribute(\"role\", \"none\");\n bleedItem.querySelectorAll(\".bleed-container > ul > li\").forEach(liItem => {\n liItem.setAttribute(\"role\", \"none\");\n });\n }\n } else {\n bleedItem.querySelectorAll('.mega__level--2-group').forEach(group => {\n group.setAttribute('tabindex', 0);\n })\n bleedItem.querySelectorAll('a.mega-link--level-2, .bleed-container .group-title a.first-level').forEach(aElm => {\n aElm.removeAttribute('tabindex');\n })\n }\n }\n }\n \n setTimeout(function() {\n promoteArticle();\n }, 100);\n\n };\n\n\n function promoteArticle() {\n let _featuredMega = document.querySelector('.mega__level--3.open');\n if(!_featuredMega) return;\n let _promoteArticles = _featuredMega.querySelectorAll('.article-tile');\n [].forEach.call(_promoteArticles, function(_promoteArticle) {\n if(_promoteArticle != null) {\n let _articleHeader = _promoteArticle.querySelector('.article-tile__header');\n let _articleContents = _promoteArticle.querySelector('.article-tile__content-container');\n _promoteArticle.style.height = _articleHeader.getBoundingClientRect().height + _articleContents.getBoundingClientRect().height + 'px';\n }\n });\n\n setTimeout(function() {\n GT.clampArticle(true);\n }, 200);\n }\n\n function handleNavOpenEvents(e) {\n const target = e.target;\n const isGlobalSearchBtn = target.closest('.global-search__toggle');\n const globalSearch = document.querySelector('.global-search');\n const globalSearchInput = globalSearch.querySelector('input[name=\"q\"');\n\n if(target.classList.contains(\"open\")) {\n if(e.type == \"click\") {\n closeSecondary();\n }\n return;\n } else {\n closeSecondary();\n }\n\n\n if(this.classList.contains('nav-link--dropdown') && this.getAttribute('aria-expanded') == 'false') {\n if ((isGlobalSearchBtn && e.type != \"click\") || htmlElm.classList.contains(\"global-reach--opening\")) return;\n this.classList.add('open');\n openSecondary(this.getAttribute('data-open'));\n this.setAttribute('aria-expanded', 'true');\n if(!isDesktop) {\n setTimeout(() => {\n target.scrollIntoView({behavior: 'auto', block: 'nearest', inline: 'start'});\n }, 600);\n }\n\n if(!GT.isMobileCached) {\n linkLv1.forEach(function(item) {\n item.setAttribute('tabindex', -1);\n });\n this.removeAttribute('tabindex');\n }\n if (isGlobalSearchBtn && globalSearchInput) {\n globalSearchInput.click();\n setTimeout(e => {\n globalSearchInput.focus();\n }, 500);\n }\n }\n };\n\n \n function focusOnNavDropdown(element) {\n const currentBleed = element.closest('.bleed');\n currentBleed.querySelectorAll('.mega-link, .first-level, input, a')?.forEach(item => {\n item.setAttribute('tabindex', -1);\n })\n const currentNavLink = element.closest('.bleed').closest('li')?.querySelector('.nav-link--dropdown');\n currentNavLink?.focus();\n }\n\n function keypressNav(e) {\n let keycode = e.keyCode || e.which,\n _this = e.currentTarget;\n //TAB keypress\n if (keycode == 9 && !GT.isMobileCached) {\n if (_this.classList.contains('nav-link')) {\n if (e.shiftKey) {\n e.preventDefault();\n if (_this.getAttribute('aria-expanded') == 'true') {\n // If mega menu is open, focus on last item in the menu\n const dataOpen = _this.getAttribute('data-open');\n const openBleed = document.querySelector('.bleed.open[data-content=\"' + dataOpen + '\"]');\n const focusItems = openBleed?.querySelectorAll('.mega-link, span.first-level, input, a');\n \n if (focusItems?.length) {\n focusItems.forEach(item => {\n item.setAttribute('tabindex', 0);\n });\n focusItems[focusItems.length - 1]?.focus();\n return;\n }\n }\n \n // If no mega menu or couldn't focus on menu items, go to previous nav item\n const previousLi = _this.closest('li').previousElementSibling;\n if (previousLi) {\n const previousNavLink = previousLi.querySelector('.nav-link--dropdown, .nav-link');\n previousNavLink?.focus();\n } else {\n // If no previous nav item, focus on desktop logo\n document.querySelector('header .desktop-logo')?.focus();\n }\n } else if (_this.getAttribute('aria-expanded') == 'true') {\n // Forward tab with mega menu open\n e.preventDefault();\n const dataOpen = _this.getAttribute('data-open');\n const openBleed = document.querySelector('.bleed.open[data-content=\"' + dataOpen + '\"]');\n const focusItems = openBleed?.querySelectorAll('.mega-link, span.first-level, input, a');\n \n focusItems?.forEach(item => {\n item.setAttribute('tabindex', 0);\n });\n focusItems?.[0]?.focus();\n }\n }\n\n const openBleed = _this.closest('.bleed.open');\n if (openBleed) {\n const allCurrentBleedLinks = openBleed.querySelectorAll('a, button, [tabindex=\"0\"]');\n const lastLink = allCurrentBleedLinks?.[allCurrentBleedLinks.length - 1];\n // On tabbing forward (without Shift key) from the last focusable element in the mega menu, refocus on the current nav link\n if (lastLink && _this === lastLink && !e.shiftKey) {\n e.preventDefault();\n focusOnNavDropdown(_this);\n }\n }\n\n if (_this.classList.contains('global-search__toggle') && _this.getAttribute('aria-expanded') === 'true') {\n e.preventDefault();\n const globalSearch = document.querySelector('.global-search');\n const searchOverlayInput = globalSearch?.querySelector('#searchField');\n \n if (e.shiftKey) {\n const searchResultLinks = globalSearch?.querySelectorAll('.search-overlay__contents a');\n const lastSearchLink = searchResultLinks[searchResultLinks.length - 1];\n (lastSearchLink || searchOverlayInput)?.focus();\n } else {\n searchOverlayInput?.focus();\n }\n }\n }\n\n if (e.key === 'Escape' || e.keyCode === 27) {\n const bleedContainer = _this.closest('.bleed');\n if (bleedContainer) {\n // Find the parent nav link that opened this mega menu\n const parentNavLink = bleedContainer.getAttribute('data-content');\n const triggerNavLink = document.querySelector(`.nav-link--dropdown[data-open=\"${parentNavLink}\"]`);\n \n // Reset all focusable items\n const focusItems = headerMenu?.querySelectorAll('.mega-link, .mega-link--level-2, .first-level, input, a');\n focusItems?.forEach(item => {\n item.setAttribute('tabindex', -1);\n });\n\n // Close mega menu and focus on trigger nav link\n closeSecondary();\n triggerNavLink?.focus();\n }\n }\n \n }\n\n\n function registerEvtForOpeningSecondary() {\n for (let i = 0; i < linkLv1.length; i++) {\n let navLevel1 = linkLv1[i];\n if(!isDesktop) {\n navLevel1.removeEventListener(\"mouseenter\", handleNavOpenEvents);\n navLevel1.removeEventListener(\"click\", handleNavOpenEvents);\n navLevel1.addEventListener(\"click\", handleNavOpenEvents);\n } else {\n navLevel1.removeEventListener(\"click\", handleNavOpenEvents);\n navLevel1.removeEventListener(\"mouseenter\", handleNavOpenEvents);\n if(!GT.isTouchDevice)\n navLevel1.addEventListener(\"mouseenter\", handleNavOpenEvents);\n navLevel1.addEventListener(\"keydown\", keypressNav);\n navLevel1.addEventListener(\"click\", handleNavOpenEvents);\n }\n }\n \n let subMenuLinks = document.querySelectorAll('.header-menu-wrapper .mega-link, .header-menu-wrapper .first-level');\n if (subMenuLinks) {\n [].forEach.call(subMenuLinks, function(item) {\n item.addEventListener('keydown', keypressNav);\n });\n }\n }\n\n function init() {\n GT.windowResizeFncList.desktopMegaMenuV2 = function(){\n isDesktop = GT.isDesktopView();\n closeSecondary();\n registerEvtForOpeningSecondary();\n promoteArticle();\n }\n\n registerEvtForOpeningSecondary();\n\n for(let i = 0; i < closeMegaIcons.length; i++) {\n closeMegaIcons[i].addEventListener(\"click\", function() {\n if (document.querySelector('.nav-link.open'))\n document.querySelector('.nav-link.open').focus();\n\n closeSecondary();\n });\n closeMegaIcons[i].addEventListener('keydown', keypressNav);\n }\n \n document.querySelectorAll('.mega-wrapper .article-tile').forEach(item => {\n item.addEventListener('keydown', keypressNav);\n });\n\n \n //Close mega nav when click outside mega menu\n if(isDesktop) {\n clickOutsideMenu();\n\n if(GT.headerElm)\n GT.headerElm.addEventListener(\"mouseleave\", function(e){\n if(isDesktop)\n closeSecondary();\n })\n }\n }\n\n function clickOutsideMenu() {\n document.addEventListener('mouseup', function(e) {\n if (!GT.headerElm.contains(e.target) && !e.target.classList.contains(\"nav-link--dropdown\") && isDesktop) {\n closeSecondary();\n }\n\n let langDropdownElm = document.querySelector(\".header-lang\");\n if (langDropdownElm && !langDropdownElm.contains(e.target)) {\n langDropdownElm.classList.remove(\"open\")\n }\n });\n }\n return {\n closeSecondary: closeSecondary\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.MegaMenuV3 = GT.MegaMenuV3();\n});\nGT.MobileMenuV3 = function () {\n\n if(typeof isNav3 == \"undefined\") return;\n\n let toggleMenuBtns = GT.headerElm.querySelectorAll(\".menu-toggle\"),\n htmlElm = document.firstElementChild;\n const searchWrap = GT.headerElm.querySelector('.global-search');\n const searchInput = searchWrap?.querySelector('input[name=\"q\"]');\n const searchOverlayModal = searchWrap.querySelector('.search-overlay__modal');\n const classOpeningMegaMenu = \"opening-megamenu\";\n const classOpeningMobileMenu = \"opening-mobile-menu\";\n const classOpeningMobileSearch = \"opening-mobile-search\";\n const primaryMenu = GT.headerElm.querySelector(\".primary-menu\");\n const primaryMenuFirstItem = primaryMenu?.querySelector('a, button');\n\n function activateSearchInput() {\n const newInput = document.createElement('input');\n newInput.style = 'position: absolute; top: 0; left: 0; opacity: 0; height:0;';\n searchInput.parentNode.insertBefore(newInput, searchInput.nextSibling);\n\n setTimeout(e => {\n searchInput.focus();\n }, 500)\n setTimeout(() => {\n newInput.remove();\n }, 1000);\n }\n\n function toggleRoleToPrimaryMenu(isAdding = true) {\n const primaryMenu = htmlElm.querySelector(\".primary-menu\");\n if(!primaryMenu) return;\n isAdding ? primaryMenu.setAttribute(\"role\", \"none\") : primaryMenu.removeAttribute(\"role\");\n }\n\n toggleMenuBtns.forEach(btn => {\n btn.addEventListener(\"click\", e => {\n const currentMenuToggleBtn = e.target.closest(\".menu-toggle\");\n const isOpening = htmlElm.classList.contains(\"opening-megamenu\");\n const searchToggleBtn = currentMenuToggleBtn.closest(\".mobile-search-toggle\");\n const onPageNav = htmlElm.querySelector(\".onpage-navigation\");\n\n // Reset expanded state on all toggle buttons\n toggleMenuBtns.forEach(btn => btn.setAttribute(\"aria-expanded\", false));\n\n // Handle onpage navigation if expanded\n if (onPageNav?.classList.contains(\"expanded\")) {\n htmlElm.classList.remove(\"showing-overlay\");\n onPageNav.classList.remove(\"expanded\");\n }\n\n // Handle search toggle\n if (searchToggleBtn) {\n handleSearchToggle(searchToggleBtn, isOpening);\n } else {\n handleMenuToggle(currentMenuToggleBtn, isOpening); \n }\n\n // Handle overlay and scroll behavior\n if (!isOpening) {\n GT.lockScrollBehindOverlay(\".header-menu-wrapper\");\n GT.Overlays.showHeaderOverlay();\n !searchToggleBtn && initializedMegaMenuLv2();\n } else {\n GT.Overlays.hideHeaderOverlay();\n document.querySelector(\".nav-level-toggle\")?.click();\n }\n });\n });\n\n function handleSearchToggle(searchToggleBtn, isOpening) {\n if (!isOpening) {\n GT.SearchOverlayV3.triggerInitializeSearchOverlay();\n // Opening search for first time\n htmlElm.classList.add(classOpeningMegaMenu, classOpeningMobileMenu, classOpeningMobileSearch);\n toggleRoleToPrimaryMenu();\n activateSearchInput();\n GT.disableDetectScrollUpOrDown = true;\n searchToggleBtn.setAttribute(\"aria-expanded\", true);\n } else {\n closeAllMegaMenu();\n if (htmlElm.classList.contains(classOpeningMobileSearch)) {\n // Closing search\n toggleRoleToPrimaryMenu(false);\n htmlElm.classList.remove(classOpeningMegaMenu, classOpeningMobileMenu);\n setTimeout(() => {\n htmlElm.classList.remove(classOpeningMobileSearch);\n }, 250);\n GT.disableDetectScrollUpOrDown = false;\n } else if (htmlElm.classList.contains(classOpeningMobileMenu)) {\n GT.SearchOverlayV3.triggerInitializeSearchOverlay();\n // Switching from menu to search\n toggleRoleToPrimaryMenu();\n htmlElm.classList.add(classOpeningMobileSearch);\n searchToggleBtn.setAttribute(\"aria-expanded\", true);\n activateSearchInput();\n }\n }\n }\n\n function handleMenuToggle(menuToggleBtn, isOpening) {\n toggleRoleToPrimaryMenu(false);\n if (!isOpening) {\n // Opening menu\n htmlElm.classList.add(classOpeningMegaMenu, classOpeningMobileMenu);\n GT.disableDetectScrollUpOrDown = true;\n menuToggleBtn.setAttribute(\"aria-expanded\", true);\n primaryMenuFirstItem?.focus();\n } else {\n if (htmlElm.classList.contains(classOpeningMobileSearch)) {\n // Switching from search to menu\n htmlElm.classList.remove(classOpeningMobileSearch);\n menuToggleBtn.setAttribute(\"aria-expanded\", true);\n primaryMenuFirstItem?.focus();\n } else {\n // Closing menu\n htmlElm.classList.remove(classOpeningMegaMenu, classOpeningMobileMenu);\n closeAllMegaMenu();\n GT.disableDetectScrollUpOrDown = false;\n }\n }\n }\n\n function updateBleedHeight() {\n setTimeout(() => {\n const openingBleed = GT.headerElm.querySelector(\".bleed.open\");\n if(openingBleed) {\n GT.headerElm.style.setProperty(\"--bleed-height\", openingBleed.querySelector(\".bleed-container\").offsetHeight + \"px\");\n }\n }, 250)\n }\n\n function closeAllMegaMenu() {\n GT.headerElm.querySelectorAll(\".nav-link--dropdown.open, .bleed.open, .bleed .open\").forEach(item => {\n if (item.classList.contains(\"nav-link--dropdown\")) {\n item.setAttribute(\"aria-expanded\", false);\n }\n item.classList.remove(\"open\");\n });\n GT.headerElm.querySelectorAll(\".bleed [tabindex='0']\").forEach(item => {\n item.removeAttribute(\"tabindex\");\n if(item.getAttribute('aria-expanded') == 'true'){\n item.setAttribute('aria-expanded', 'false');\n }\n });\n }\n\n function toggleMegaMenuLv2(e) {\n const target = e.target,\n parentElm = target.closest(\".mega__level--2\"),\n isOpening = parentElm.classList.contains(\"open\");\n\n const oldActiveLv2 = GT.headerElm.querySelectorAll(\".mega__level--2.open\");\n oldActiveLv2.forEach(lv2 => {\n lv2.classList.remove(\"open\");\n });\n \n setTimeout(() => {\n target.scrollIntoView({behavior: 'auto', block: 'nearest', inline: 'start'});\n oldActiveLv2.forEach(lv2 => {\n lv2.querySelector(\".mega__level--3__listing\")?.classList.remove(\"open\");\n });\n }, 350);\n\n if(isOpening) { \n target.setAttribute(\"aria-expanded\", false); \n updateBleedHeight(target); \n return; \n } else {\n target.setAttribute(\"aria-expanded\", true);\n }\n\n const lv3Height = parentElm.querySelector(\".mega__content--listing\").offsetHeight;\n parentElm.querySelectorAll(\".mega__level--3__listing a\").forEach(lv3Item => {\n lv3Item.removeAttribute(\"tabindex\");\n })\n parentElm.classList.add(\"open\");\n parentElm.querySelector(\".mega__level--3__listing\")?.classList.add(\"open\");\n parentElm.style.setProperty(\"--lv3-height\", lv3Height + \"px\");\n updateBleedHeight(target);\n \n // GT.headerElm.querySelector(\".header-menu-wrapper\").scrollTo({top: (GT.getElementOffset(target).top) - 200, behavior: 'smooth'});\n }\n\n function initializedMegaMenuLv2() {\n const isDesktopView = GT.isDesktopView();\n GT.headerElm.querySelectorAll(\".mega__level--2-group\").forEach(item => {\n const aElm = item.querySelector(\"a\");\n item.removeAttribute(\"role\");\n item.removeAttribute(\"tabindex\");\n if(aElm) {\n aElm.removeAttribute(\"tabindex\");\n aElm.removeAttribute(\"aria-hidden\");\n item.removeAttribute(\"aria-label\");\n item.removeAttribute(\"aria-expanded\");\n }\n \n if(!isDesktopView) {\n item.setAttribute(\"role\", \"button\");\n if(aElm) {\n aElm.setAttribute(\"tabindex\", -1);\n aElm.setAttribute(\"aria-hidden\", \"true\");\n item.setAttribute(\"aria-label\", aElm.textContent.trim());\n item.setAttribute(\"aria-expanded\", false);\n }\n }\n\n if(!item.dataset.setEvent) {\n item.addEventListener(\"click\", e => {\n toggleMegaMenuLv2(e);\n })\n item.addEventListener(\"keydown\", e => {\n if(e.key === \"Enter\") {\n toggleMegaMenuLv2(e);\n }\n })\n item.dataset.setEvent = true;\n }\n })\n }\n\n GT.windowResizeFncList.mobileMenuV3 = () => {\n initializedMegaMenuLv2();\n };\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.MobileMenuV3();\n});\nGT.PrimaryMenuV3 = function () {\n if(typeof isNav3 == \"undefined\") return;\n\n const htmlElm = document.documentElement,\n submenuTimer = [];\n\n GT.triggerFnListAfterMainLogoLoaded.prepareSubMenuLink = prepareSubMenuLink;\n\n bindOutsideClick();\n initSearchBox();\n\n window.addEventListener(\"resize\", e => {\n if(htmlElm.classList.contains(\"opening-header-overlay\")) \n GT.Overlays.hideHeaderOverlay();\n })\n GT.windowResizeFncList.prepareSubMenuLink = function(){\n prepareSubMenuLink(true);\n }\n\n function initSearchBox() {\n let globalSearch = document.querySelector('.global-search');\n let searchButton = globalSearch?.querySelector('.header-search__icon');\n let closeButton = globalSearch?.querySelector('.header-search__close');\n\n if(GT.isIOS()) {\n searchButton?.addEventListener('touchstart', function(e) {\n let _this = this;\n // Close humberger menu when search box is openned\n let humbergerMenu = document.querySelector('.menu-toggle');\n if(humbergerMenu.classList.contains('open')) {\n humbergerMenu.click();\n }\n\n setTimeout(function() { \n globalSearch.classList.toggle('search-open');\n globalSearch.closest('.main-header').classList.toggle('search-open');\n \n if(globalSearch.classList.contains('search-open')) {\n GT.Overlays.showHeaderOverlay();\n } else {\n GT.Overlays.hideHeaderOverlay();\n }\n\n _this.addEventListener('touchend', function(e) {\n let searchField = globalSearch.querySelector('input[name=\"q\"]');\n if(globalSearch.classList.contains('search-open')) {\n searchField.setAttribute('autofocus', 'autofocus');\n searchField.focus();\n } else {\n searchField.blur();\n }\n });\n }, 100);\n });\n } else {\n searchButton?.addEventListener('click', function(e) {\n if(GT.isMobile() || GT.isMobileView()) {\n // Close humberger menu when search box is openned\n let humbergerMenu = document.querySelector('.menu-toggle');\n if(humbergerMenu.classList.contains('open')) {\n humbergerMenu.click();\n }\n\n setTimeout(function() {\n globalSearch.classList.toggle('search-open');\n globalSearch.closest('.main-header').classList.toggle('search-open');\n if(globalSearch.classList.contains('search-open')) {\n let searchField = globalSearch.querySelector('input[name=\"q\"]');\n searchField.setAttribute('autofocus', 'autofocus');\n searchField.focus();\n GT.Overlays.showHeaderOverlay();\n } else\n GT.Overlays.hideHeaderOverlay();\n }, 100);\n }\n });\n }\n \n searchButton?.addEventListener('click', function(e) {\n if(GT.isLargeDesktopView() || (!GT.isMobileView() && (e.currentTarget || e.target)?.closest(\".global-search.open\")))\n document.querySelector(\".header-search__form\")?.submit();\n })\n\n closeButton?.addEventListener('click', function(e) {\n if(GT.isMobile() || GT.isMobileView()) {\n if(globalSearch.classList.contains('search-open')) {\n globalSearch.classList.remove('search-open');\n globalSearch.closest('.main-header').classList.remove('search-open');\n GT.Overlays.hideHeaderOverlay();\n }\n }\n })\n }\n\n function prepareSubMenuLink(forceRecheck) {\n let menu = document.querySelector('.main-header'),\n menuItem = menu.querySelectorAll('.level-1 > li:not(.menu-link):not(.btn-search):not(.hide-webex)'),\n appendMenuIndex = menuItem.length,\n lastMenuItem;\n \n let hasExtraItems = false,\n visibleElms = [];\n \n menu.querySelectorAll('li.menu-link').forEach(item => {\n item.remove();\n })\n\n if(htmlElm.classList.contains(\"opening-header-overlay\")) \n GT.Overlays.hideHeaderOverlay();\n\n GT.hideHyperLinkAnimation();\n \n menuItem.forEach(function(el){\n el.classList.remove('extra');\n })\n\n GT.checkElmVisible('.level-1 > li:not(.menu-link):not(.btn-search):not(.hide-webex)', e => {\n visibleElms.push(e);\n submenuTimer.forEach(timer => {\n clearTimeout(timer);\n })\n submenuTimer.push(setTimeout(() => {\n let visibleElmsLength = visibleElms.length;\n hasExtraItems = false,\n lastMenuItem = null;\n menuItem.forEach(function(el, index){\n if (index >= visibleElmsLength) {\n if (index == appendMenuIndex - 1 && !lastMenuItem) {\n lastMenuItem = el;\n }\n el.classList.add('extra');\n hasExtraItems = true;\n }\n });\n \n if (hasExtraItems || forceRecheck) {\n appendSubMenu();\n }\n }, 200));\n });\n\n function appendSubMenu() {\n GT.hideHyperLinkAnimation();\n let extraMenuItemsHtml = '';\n menu.querySelectorAll('li.extra').forEach(function(element){\n extraMenuItemsHtml += `