{"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 += `
  • ${element.innerHTML}
  • `;\n });\n\n if(lastMenuItem) {\n const extraMenuHtml = `\n
  • \n \n
    \n \n
  • `;\n\n lastMenuItem.insertAdjacentHTML(\"afterend\", extraMenuHtml);\n }\n\n document.querySelector('ul.list--mega.level-1 .menu-link')?.addEventListener('click', function(e) {\n if(htmlElm.classList.contains(\"global-search--opening\") || htmlElm.classList.contains(\"global-reach--opening\")) return;\n let cursorElm = this.querySelector(\".button-nav__link\");\n if (this.classList.contains('open')) {\n if (e.target && !e.target.classList.contains('sub-menu'))\n this.classList.remove('open');\n cursorElm?.setAttribute(\"aria-expanded\", false);\n GT.Overlays.hideHeaderOverlay();\n } else {\n GT.hideHyperLinkAnimation();\n this.classList.add('open');\n cursorElm?.setAttribute(\"aria-expanded\", true);\n GT.Overlays.showHeaderOverlay();\n }\n });\n }\n }\n\n function bindOutsideClick() {\n document.addEventListener('click', (e) => {\n const onPageNav = document.querySelector('.onpage-navigation');\n if (e.target && !e.target.closest('.onpage-navigation')) {\n if (!e.target.closest('.nav3') && !htmlElm.classList.contains(\"global-reach--opening\")) {\n document.querySelectorAll('ul.list--mega.level-1 .menu-link').forEach(link => link.classList.remove('open'));\n \n // Hide header overlay if click on header, except search input\n if (\n e.target.id !== 'searchField' &&\n !document.querySelector('.global-search.search-open')\n ) {\n GT.Overlays.hideHeaderOverlay();\n }\n if (onPageNav?.classList.contains('expanded')) {\n onPageNav.classList.remove('expanded')\n }\n }\n }\n }); \n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.PrimaryMenuV3();\n});\nGT.Reach = function() {\n let isInited = false,\n htmlElm = document.firstElementChild,\n globalReachElm = document.querySelector(\".global-reach\"),\n globalReachToggleBtn = GT.headerElm.querySelector(\".global-reach__toggle\"),\n globalReachTabElms,\n isDesktop = GT.isDesktopView();\n\n \n if(typeof isNav3 == \"undefined\") {\n globalReachToggleBtn = GT.isMobileView() ? GT.headerElm.querySelector(\".global-toggle-m\") : GT.headerElm.querySelector(\".global-reach__toggle\");\n }\n\n function disableScroll(isDisable){\n if(isDesktop) {\n if(isDisable) {\n typeof isNav3 != \"undefined\" && GT.Overlays.showHeaderOverlay();\n GT.headerElm.querySelector(\".menu-link.open\")?.classList.remove(\"open\");\n } else {\n GT.preventHeaderFromFlickeringWhileBodyHeightIsChanging();\n GT.headerElm.style.setProperty(\"--globalreach-height\", 0);\n GT.headerElm.classList.remove(\"trigger-animation\");\n setTimeout(() => {\n typeof isNav3 != \"undefined\" && GT.Overlays.hideHeaderOverlay();\n }, 350);\n }\n }\n\n if(isDisable) {\n htmlElm.classList.add(\"global-reach--opening\");\n } else {\n htmlElm.classList.remove(\"global-reach--opening\");\n setTimeout(e => {\n globalReachToggleBtn?.focus();\n }, 1000)\n }\n }\n\n function calcActivatedTabHeight() {\n GT.headerElm.style.setProperty(\"--globalreach-height\", (globalReachElm.querySelector(\".global-reach__list.active ul\")?.offsetHeight || 0) + \"px\");\n }\n\n function initReachToggle() {\n if(globalReachToggleBtn.dataset.inited)\n return;\n\n globalReachToggleBtn.dataset.inited = true;\n\n function pressESCToClose(e){\n if(e.key == \"Escape\") {\n globalReachToggleBtn.click();\n }\n }\n\n function handleElementRole() {\n if(GT.isMobileCached) {\n globalReachElm.querySelector(\".global-reach__tabs\").setAttribute(\"role\", \"navigation\");\n globalReachElm.querySelector(\".reach-region-selector\").removeAttribute(\"role\");\n }\n globalReachTabElms.forEach(tabItem => {\n const parentTab = tabItem.closest(\"ul\");\n if(GT.isMobileCached) {\n tabItem.setAttribute(\"tabindex\", 0);\n tabItem.setAttribute(\"aria-expanded\", false);\n tabItem.removeAttribute(\"role\");\n parentTab.removeAttribute(\"role\");\n parentTab.querySelector(\".global-reach__list\").removeAttribute(\"role\");\n } else {\n tabItem.setAttribute(\"role\", \"tab\");\n tabItem.setAttribute(\"aria-selected\", false);\n tabItem.removeAttribute(\"aria-expanded\");\n tabItem.setAttribute(\"tabindex\", -1);\n parentTab.setAttribute(\"role\", \"tablist\");\n parentTab.querySelector(\".global-reach__list\").setAttribute(\"role\", \"tabpanel\");\n\n if(tabItem.classList.contains(\"active\")) {\n tabItem.setAttribute(\"tabindex\", 0);\n tabItem.setAttribute(\"aria-selected\", true);\n setTimeout(() => {\n TabPanelActionHandler(tabItem.closest(\"ul\"));\n }, 500);\n }\n }\n })\n }\n\n const globalReachHeadTitle = globalReachElm.querySelector('.global-reach__head .title');\n\n globalReachHeadTitle?.addEventListener('keydown', keyPressHandle);\n\n GT.headerElm.querySelectorAll('.header-menu-mobile .nav-toggle, .global-reach .nav-level-toggle').forEach(btn => {\n btn.addEventListener('click', () => {\n if (globalReachElm.classList.contains(\"open\")) {\n globalReachElm.querySelectorAll('.reach-region-selector button.active, .reach-region-selector .global-reach__list.active').forEach(item => item.classList.remove('active'));\n }\n })\n })\n \n globalReachToggleBtn.addEventListener('click', function(e) {\n e.preventDefault();\n // if ($(e.target).hasClass('lang-dropdown-arrow')) {\n // e.stopPropagation();\n // return;\n // }\n \n if(isDesktop) {\n GT.headerElm.querySelector(\".header-group-btn.open\")?.click();\n }\n\n if (globalReachElm.classList.contains(\"open\")) {\n globalReachElm.classList.remove(\"open\");\n globalReachToggleBtn.setAttribute(\"aria-expanded\", false);\n globalReachElm.setAttribute(\"aria-hidden\", true);\n disableScroll();\n window.removeEventListener(\"keydown\", pressESCToClose);\n } else {\n window.addEventListener(\"keydown\", pressESCToClose);\n globalReachElm.classList.add(\"open\");\n globalReachElm.removeAttribute(\"aria-hidden\");\n globalReachToggleBtn.setAttribute(\"aria-expanded\", true);\n\n\n if(!isInited) {\n GT.headerElm.classList.add(\"fetching\");\n isInited = true;\n \n globalReachElm.querySelectorAll('.global-reach__close, .nav-level-toggle').forEach(closeElm => {\n closeElm.addEventListener(\"click\", () => {\n globalReachElm.classList.remove(\"open\");\n globalReachElm.setAttribute(\"aria-hidden\", true);\n globalReachToggleBtn.setAttribute(\"aria-expanded\", false);\n disableScroll();\n })\n });\n\n\n httpService = new HttpService();\n httpService.getHtmlContent(globalReachLink, null, {\"Content-type\": \"application/x-www-form-urlencoded\"}, true).then(response => {\n\n let globalReachRegionsMoileLV1Elm = document.querySelector(\".mobile__global--level-1 .list\");\n if(globalReachRegionsMoileLV1Elm)\n globalReachRegionsMoileLV1Elm.classList.remove(\"hide\");\n\n globalReachElm.querySelector(\"#global-reach-regions\").insertAdjacentHTML(\"beforeend\", `\n
    \n
    \n ${response}\n
    \n
    \n `);\n GT.hideHyperLinkAnimation();\n calcActivatedTabHeight();\n setTimeout(function() {\n GT.headerElm.classList.add(\"trigger-animation\");\n globalReachTabElms = document.querySelectorAll('.reach-region-selector li button');\n \n globalReachTabElms.forEach(tabItem => {\n tabItem.addEventListener(\"click\", keyPressHandle);\n tabItem.addEventListener(\"keydown\", keyPressHandle);\n })\n\n if(isDesktop)\n globalReachTabElms[0].click();\n \n handleElementRole();\n GT.GTMGlobal.megaMenu();\n }, 100);\n })\n .catch((rej) => {\n isInited = false;\n })\n .finally(() => {\n GT.headerElm.classList.remove(\"fetching\");\n });\n\n } else {\n GT.headerElm.classList.add(\"trigger-animation\");\n calcActivatedTabHeight();\n \n handleElementRole();\n }\n\n disableScroll(true);\n setTimeout(function() {\n globalReachElm.querySelector(\".global-reach__head a\")?.focus();\n linkHandle();\n }, 1000);\n }\n });\n\n }\n\n function keyPressHandle(e) {\n if (e.key != \"Tab\") {\n e.preventDefault();\n }\n\n if (e.key == \"Tab\") {\n if (isDesktop) {\n const target = e.target;\n const activeLinks = globalReachElm.querySelectorAll('.global-reach__list.active .local-site-link');\n const firstActiveLink = activeLinks[0];\n const lastActiveLink = activeLinks[activeLinks.length - 1];\n\n if (e.shiftKey) {\n if (target.closest('.global-reach__head')) {\n e.preventDefault();\n lastActiveLink && lastActiveLink.focus();\n }\n } else {\n if (target.getAttribute('aria-selected') == \"false\") {\n e.preventDefault();\n firstActiveLink && firstActiveLink.focus();\n }\n }\n }\n }\n\n if (!e.keyCode || e.key == \"Enter\" || e.key == \" \") {\n GT.hideHyperLinkAnimation();\n const currentTab = e.target,\n activeEl = currentTab.dataset.tab;\n\n if (!currentTab.classList.contains(\"active\")) {\n globalReachTabElms.forEach(tabItem => {\n tabItem.setAttribute(\"aria-selected\", false);\n })\n\n if(!GT.isMobileCached) {\n globalReachTabElms.forEach(tabItem => {\n tabItem.removeAttribute(\"aria-expanded\");\n tabItem.setAttribute(\"tabindex\", -1);\n })\n currentTab.setAttribute(\"tabindex\", 0);\n currentTab.setAttribute(\"aria-selected\", true);\n } else {\n globalReachTabElms.forEach(tabItem => {\n tabItem.setAttribute(\"aria-expanded\", false);\n })\n currentTab.setAttribute(\"aria-expanded\", true);\n }\n\n globalReachTabElms.forEach(tabItem => {\n tabItem.classList.remove(\"active\");\n })\n currentTab.classList.add(\"active\");\n\n document.querySelectorAll(\".global-reach .global-reach__list\").forEach(listPanelItem => {\n listPanelItem.classList.remove(\"active\");\n listPanelItem.querySelectorAll('a')?.forEach(item => {\n item.setAttribute('tabindex', -1);\n })\n \n if (listPanelItem.classList.contains(activeEl)) {\n listPanelItem.classList.add(\"active\");\n listPanelItem.querySelectorAll('a')?.forEach(item => {\n item.setAttribute('tabindex', 0);\n })\n calcActivatedTabHeight();\n }\n })\n\n if(!isDesktop)\n setTimeout(() => {\n currentTab.scrollIntoView({behavior: 'auto', block: 'nearest', inline: 'start'});\n }, 400);\n } else {\n if(!isDesktop) {\n currentTab.classList.remove(\"active\");\n document.querySelector(\".global-reach .global-reach__list.active\")?.classList.remove(\"active\");\n GT.headerElm.style.setProperty(\"--globalreach-height\", 0);\n currentTab.setAttribute(\"aria-expanded\", false);\n }\n }\n }\n }\n\n function linkHandle() {\n document.querySelectorAll('.global-reach__list a').forEach(item => {\n let parentElm = item.closest('li');\n item.addEventListener('keydown', function(e) {\n if (e.key == 'Tab' && !e.shiftKey && !parentElm.nextElementSibling && isDesktop) {\n e.preventDefault();\n document.querySelector('.global-reach__head .title').focus();\n }\n });\n });\n }\n\n initReachToggle();\n \n GT.windowResizeFncList.globalReach = function(){\n isDesktop = GT.isDesktopView();\n if(htmlElm.classList.contains(\"global-reach--opening\"))\n globalReachToggleBtn.click();\n\n if(typeof isNav3 == \"undefined\") {\n globalReachToggleBtn = GT.isMobileView() ? GT.headerElm.querySelector(\".global-toggle-m\") : GT.headerElm.querySelector(\".global-reach__toggle\");\n }\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.Reach();\n})\nGT.SearchOverlayV3 = function() {\n let htmlElm = document.firstElementChild;\n let searchWrapper = document.querySelector('.btn-search');\n let searchButtonToggle = searchWrapper?.querySelector('.global-search__toggle');\n let globalSearch = document.querySelector('.global-search');\n let searchForm = globalSearch.querySelector('.header-search__form');\n let searchOverlayModal = globalSearch.querySelector('.search-overlay__modal');\n let searchboxInput = searchForm.querySelector('input[name=\"q\"]');\n let searchButton = globalSearch.querySelector('.header-search__icon');\n let submitButton = globalSearch.querySelector('form.header-search__form input[name=\"search-submit__button\"]');\n let popularSearchResults = null;\n let prevSuggestionResults = null;\n let searchResultsContainer = globalSearch.querySelector('.search-overlay__contents');\n let disabledSearchOverlayAtrr = searchboxInput.getAttribute('disabled-searchoverlay');\n let disabledPopularSearchAtrr = searchboxInput.getAttribute('disabled-popularsearch');\n let disabledPreviousSearchAtrr = searchboxInput.getAttribute('disable-previoussearch');\n let userPreviousSearchesDataAtrr = null;\n let oldSearchKeyword = \"\";\n let isInitialized = false;\n const bleedWrapperElm = document.querySelector('.btn-search .bleed-wrapper');\n\n const INPUT_START_TYPING_LENGTH = 3;\n const MAX_PREVIOUS_SEARCH_ITEMS = 6;\n let httpService = new HttpService();\n\n init();\n\n function processPreviousSearch() {\n\n if(isDisabledPreviousSearch()) return;\n\n let searchPageUrl = searchForm.getAttribute('action');\n let previousSearchTitle = searchOverlayModal.getAttribute('previous-search-title');\n let userPreviousSearches = JSON.parse(localStorage.getItem('user_previous_searches'));\n // Show previous search section\n if(userPreviousSearches != null && userPreviousSearches.length > 0) {\n userPreviousSearchesDataAtrr = userPreviousSearches;\n let previousSearchHtml = '
    ';\n previousSearchHtml += '
    ' + previousSearchTitle +'
    ';\n previousSearchHtml += '
    ';\n previousSearchHtml += ' ';\n previousSearchHtml += '
    ';\n previousSearchHtml += '
    ';\n \n let previousSearchesSection = document.getElementById('previous-search__container');\n if(previousSearchesSection != null) {\n previousSearchesSection.remove();\n }\n\n let wrapPreviousSearchesHtml = document.createElement('div');\n wrapPreviousSearchesHtml.id = 'previous-search__container';\n wrapPreviousSearchesHtml.className = 'search-contents__container';\n\n wrapPreviousSearchesHtml.innerHTML = previousSearchHtml;\n searchResultsContainer.insertBefore(wrapPreviousSearchesHtml, searchResultsContainer.firstChild);\n }\n }\n\n function triggerInitializeSearchOverlay() {\n openGlobalSearch();\n\n toggleSearchModal(false);\n \n // Process to display user's previous searches\n\n if(!isInitialized) {\n processPreviousSearch();\n\n // Show modal in case second time user focus to search box when input length > 3\n let _searchKeyword = this.value?.trim() || \"\";\n if(_searchKeyword.length >= INPUT_START_TYPING_LENGTH) {\n // Send ajax request if only input new keyword \n if(_searchKeyword != oldSearchKeyword.trim()) {\n oldSearchKeyword = _searchKeyword;\n getSuggestionSearch(encodeURIComponent(_searchKeyword));\n } else {\n if(prevSuggestionResults) {\n searchResultsContainer.innerHTML = prevSuggestionResults;\n }\n openGlobalSearch();\n toggleSearchModal(true);\n }\n } else {\n if((popularSearchResults != null && popularSearchResults.length > 0)\n || (userPreviousSearchesDataAtrr != null && userPreviousSearchesDataAtrr.length > 0)\n ) {\n toggleSearchModal(true);\n }\n }\n isInitialized = true;\n }\n\n if(isDisabledPopularSearch()) {\n // Hide search overlay modal in case input length < 3\n if((searchboxInput.value.length < INPUT_START_TYPING_LENGTH) \n && (userPreviousSearchesDataAtrr == null || userPreviousSearchesDataAtrr.length <= 0)) {\n\n toggleSearchModal(false);\n }\n\n return;\n }\n\n // Show popular search on modal when first time user focus to search box\n if(popularSearchResults == null || popularSearchResults.length <= 0) {\n getPopularSearch();\n }\n searchResultsContainer.classList.add('show');\n toggleLoading(false);\n GT.headerElm.style.setProperty('--bleed-height', bleedWrapperElm.offsetHeight + 'px');\n }\n\n function initSearchOverlay() {\n searchboxInput.addEventListener('click', function() {\n triggerInitializeSearchOverlay();\n });\n\n };\n\n function isDisabledPreviousSearch() {\n return (!disabledPreviousSearchAtrr || disabledPreviousSearchAtrr.toLowerCase() == 'true');\n }\n\n function isDisabledPopularSearch() {\n return (!disabledPopularSearchAtrr || disabledPopularSearchAtrr.toLowerCase() == 'true');\n }\n\n function openGlobalSearch() {\n if(document.querySelector('.global-reach.open')) return;\n\n if(!globalSearch.classList.contains('open')) {\n globalSearch.querySelectorAll('input, a, button').forEach(item => {\n item.removeAttribute('tabindex');\n })\n globalSearch.classList.add('open');\n }\n\n if (GT.isDesktopView())\n htmlElm.classList.add(\"global-search--opening\");\n }\n\n function toggleSearchModal(_isShow) {\n if(_isShow) {\n setTimeout(e => {\n GT.GTMGlobal.globalSearch();\n }, 100);\n }\n }\n\n function toggleLoading(enable) {\n const header = document.querySelector('.header');\n if (enable) {\n header.classList.add('fetching');\n } else\n header.classList.remove('fetching');\n }\n\n function escapeQueryChars(url) {\n return url\n .replace(/\\s/gi, '+')\n .replace(/\\%20/gi, '+')\n .replace(/\\%(3C|3E)/gi, function (match, dec) {\n return encodeURI('%') + dec;\n });\n }\n\n function getPopularSearch() {\n let popularSearchEndpoint = searchboxInput.getAttribute('data-endpoint-popularsearch');\n if(popularSearchEndpoint == null || popularSearchEndpoint.length <= 0) return;\n popularSearchEndpoint = escapeQueryChars(popularSearchEndpoint);\n\n let recentIds = GT.Cookies.getCookie(\"recentIds\");\n popularSearchEndpoint += \"&recentIds=\" + recentIds;\n \n httpService.getHtmlContent(popularSearchEndpoint, null, { \"Content-type\": \"application/x-www-form-urlencoded\" }, true).then(data => {\n if (data.trim() == null || data.trim().length <= 0) {\n if (!userPreviousSearchesDataAtrr) {\n toggleSearchModal(false);\n } else {\n toggleSearchModal(true);\n }\n } else {\n popularSearchResults = data;\n searchResultsContainer.innerHTML = data;\n processPreviousSearch();\n linkKeyPressHandle();\n toggleSearchModal(true);\n }\n\n \n })\n .catch((rej) => {\n console.log(rej)\n })\n .finally(() => {\n GT.headerElm.style.setProperty('--bleed-height', bleedWrapperElm.offsetHeight + 'px');\n });\n\n }\n\n function getSuggestionSearch(_searchTerm) {\n let suggestionSearchEndpoint = searchboxInput.getAttribute('data-endpoint-searchsuggestion');\n\n if(suggestionSearchEndpoint == null || suggestionSearchEndpoint.length <= 0) return;\n\n suggestionSearchEndpoint = suggestionSearchEndpoint + _searchTerm;\n\n suggestionSearchEndpoint = escapeQueryChars(suggestionSearchEndpoint);\n \n httpService.getHtmlContent(suggestionSearchEndpoint, null, { \"Content-type\": \"application/x-www-form-urlencoded\" }, true).then(data => {\n if(data.trim() == null || data.trim().length <= 0) {\n toggleSearchModal(false);\n } else {\n prevSuggestionResults = data;\n searchResultsContainer.innerHTML = data;\n openGlobalSearch();\n linkKeyPressHandle();\n toggleSearchModal(true);\n }\n })\n .catch((rej) => {\n console.log(rej)\n })\n .finally(() => {\n GT.headerElm.style.setProperty('--bleed-height', bleedWrapperElm.offsetHeight + 'px');\n toggleLoading(false);\n });\n }\n\n function linkKeyPressHandle() {\n const CONTAINER_SELECTORS = [\n '.recently-visited__container',\n '.search-contents__container.popular-search__container',\n '.results-search__container.has-search__results',\n '.popular-search__container.results-search__container'\n ];\n \n const searchOverlayLinks = document.querySelectorAll('.search-suggestion__list a, .search-results__list a');\n\n searchOverlayLinks.forEach(item => {\n // Only process last links in their list\n if (item.closest('li').nextElementSibling) return;\n\n // Find the parent container\n let parentContainer = item.closest('#previous-search__container');\n if (!parentContainer) {\n parentContainer = CONTAINER_SELECTORS\n .map(selector => item.closest(selector))\n .find(element => element !== null);\n }\n\n // Add tab handler for last link in last container\n if (parentContainer && !parentContainer.nextElementSibling) {\n item.addEventListener('keydown', (e) => {\n if ((e.key === 'Tab' || e.keyCode === 9) && !e.shiftKey && GT.isDesktopView()) {\n e.preventDefault();\n searchButtonToggle?.focus();\n }\n });\n }\n });\n }\n\n function init() {\n if(!disabledSearchOverlayAtrr || disabledSearchOverlayAtrr.toLowerCase() == 'true') {\n return;\n }\n\n initSearchOverlay();\n\n globalSearch.addEventListener(\"keydown\", (e) => {\n const { key, target } = e;\n\n if (key === \"Tab\" && GT.isDesktopView()) {\n if (target === searchboxInput || target === searchButton) {\n e.preventDefault();\n \n if (target === searchboxInput) {\n e.shiftKey ? searchButtonToggle?.focus() : searchButton.focus();\n } else {\n if (e.shiftKey) {\n searchboxInput.focus();\n } else {\n const firstLink = globalSearch.querySelector('.search-overlay__contents a');\n (firstLink || searchButtonToggle)?.focus();\n }\n }\n }\n }\n\n if (key === \"Escape\" && document.querySelector('.global-search.open')) {\n GT.isScreenReader = true;\n closeAction();\n }\n });\n\n searchboxInput.addEventListener('input', GT.debounce(function(){\n searchboxOnChange();\n }, 500));\n\n searchButton.addEventListener('click', function(e) {\n if(searchboxInput.value.length <= 0) {\n searchboxInput.focus();\n return;\n }\n submitButton.click();\n });\n\n\n\n function handleFirstFocusableElm() {\n let _firstFocusable = GT.getFirstFocusableVisible();\n\n if(!_firstFocusable.dataset.initialized)\n _firstFocusable.addEventListener('keydown', function(e) {\n let _keycode = e.keyCode || e.which;\n if (9 == _keycode && e.shiftKey) {\n e.preventDefault();\n document.querySelector('#searchField').focus();\n }\n });\n\n _firstFocusable.dataset.initialized = true;\n // #175120 - Remove focusing on first element when user close the Global search when scrolling the page\n if(window.scrollY < 10)\n setTimeout(function() {\n _firstFocusable.focus();\n },500);\n }\n\n function closeAction(){\n closeSearchOverlay();\n // handleFirstFocusableElm();\n }\n\n\n searchForm.addEventListener('submit', e => {\n\n if(isDisabledPreviousSearch()) return;\n\n let searchkeyword = searchboxInput.value;\n \n if(searchkeyword == null || searchkeyword.trim().length <= 0) {\n return false;\n }\n \n //Process to save search keyword into local stograde before submit search form\n GT.processSearchKeywordBeforeSubmit(searchkeyword.trim(), userPreviousSearchesDataAtrr, MAX_PREVIOUS_SEARCH_ITEMS);\n dataLayer.push({ 'event': 'global_search', 'eventAction': 'navigation_search', 'eventLabel': searchkeyword });\n });\n }\n\n function searchboxOnChange(){\n let inputValue = searchboxInput.value.trim();\n if(inputValue.length >= INPUT_START_TYPING_LENGTH) {\n toggleLoading(true);\n getSuggestionSearch(encodeURIComponent(inputValue));\n oldSearchKeyword = inputValue;\n } else {\n if((isDisabledPopularSearch() || popularSearchResults == null) && (userPreviousSearchesDataAtrr == null || userPreviousSearchesDataAtrr.length <= 0)) {\n toggleSearchModal(false);\n } else {\n searchResultsContainer.innerHTML = popularSearchResults;\n \n // Add previous search section\n processPreviousSearch();\n GT.headerElm.style.setProperty('--bleed-height', bleedWrapperElm.offsetHeight + 'px');\n toggleSearchModal(true);\n }\n }\n }\n\n function closeSearchOverlay() {\n globalSearch.classList.remove('open');\n globalSearch.querySelectorAll('input, a, button').forEach(item => {\n item.setAttribute('tabindex', -1);\n })\n\n if (GT.isDesktopView()) {\n GT.MegaMenuV3.closeSecondary();\n setTimeout(() => {\n searchButtonToggle.focus();\n });\n }\n }\n\n return {\n triggerInitializeSearchOverlay\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.SearchOverlayV3 = GT.SearchOverlayV3();\n});\n\nGT.TopBannerMessageForNoStickyHeader = function($elem) {\n var isStickyDisabled = !$('header').data('sticky');\n var header = $elem[0];\n\n $(document).ready(function() {\n if (isStickyDisabled) {\n window.onscroll = function() { handleTopBannderMessageOnMobile(); };\n window.onwheel = function() { handleTopBannderMessageOnMobile(); };\n window.onresize = function() { handleTopBannderMessageOnMobile(); };\n handleTopBannderMessageOnMobile();\n }\n });\n function isMessageTopBannerExist() {\n return $(header).find('.header-message-top-banner-wrapper').length;\n }\n function handleTopBannderMessageOnMobile() {\n if(isMessageTopBannerExist()) {\n if($(window).width() < 961){\n // if (window.pageYOffset > 0) {\n // // $(header).find('.header-top').css('top', '0');\n // $('.mobile').css('top', '63px');\n // // $(header).find('.header-message-top-banner-wrapper').addClass('hidden-message');\n // //recalculate header's height\n // // if($(header).hasClass('campaign-header')) {\n // // $(header).css('height', '');\n // // } else if ($(header).hasClass('main-header')){\n // // $(header).css('height', '64px');\n // // }\n // } else if ($('html').css('position') != 'fixed') {\n // var topBannerMessageHeight = $(header).find('.header-message-top-banner-wrapper').height();\n // // $(header).find('.header-top').css('top', topBannerMessageHeight +'px');\n // $('.mobile').css('top', topBannerMessageHeight+63 +'px');\n // // $(header).find('.header-message-top-banner-wrapper').removeClass('hidden-message');\n // //recalculate header's height\n // // if($(header).hasClass('campaign-header')) {\n // // $(header).css('height', (topBannerMessageHeight) + 'px');\n // // } else if ($(header).hasClass('main-header')){\n // // $(header).css('height', (topBannerMessageHeight+64) + 'px');\n // // }\n // }\n } else {\n // reset when resize to desktop \n // $(header).find('.header-message-top-banner-wrapper').removeClass('hidden-message');\n // $(header).find('.header-top').css('top', '0');\n // $(header).css('height', '');\n $('.insight-page').find('.breadcrumbs').css('padding-top', '30px'); \n }\n }\n }\n}\n\n\nGT.UtilityNavigation = function (elem) {\n let me = this;\n me.init = function () {\n\n function pressESCToClose(e){\n if(e.key == \"Escape\") {\n langDropdown.btnToggle.focus();\n langDropdown.btnToggle.click();\n }\n\n if(e.key == \"Tab\" && e.shiftKey && (e.target || e.currentTarget).classList.contains(\"header-lang__select\")) {\n if(langDropdown.itemsLength) {\n e.preventDefault();\n langDropdown.items[langDropdown.itemsLength - 1].focus();\n }\n }\n }\n\n\n let langDropdown = {\n btnToggle: document.querySelector('.header-lang__select'),\n items: document.querySelectorAll('.header-lang__dropdown a'),\n doToggle: function() {\n let headerLangBtn = document.querySelector('.header-lang');\n \n headerLangBtn.classList.toggle('open');\n if ( headerLangBtn.classList.contains('open') ) {\n GT.hideHyperLinkAnimation();\n this.btnToggle.setAttribute('aria-expanded', 'true');\n window.addEventListener(\"keydown\", pressESCToClose);\n } else {\n this.btnToggle.setAttribute('aria-expanded', 'false');\n window.removeEventListener(\"keydown\", pressESCToClose);\n }\n }\n };\n\n if(langDropdown.btnToggle) {\n langDropdown.itemsLength = langDropdown.items.length;\n langDropdown.btnToggle.addEventListener('click', function() { \n langDropdown.doToggle(); \n });\n\n if(langDropdown.itemsLength) {\n langDropdown.items[langDropdown.itemsLength - 1].addEventListener(\"keydown\", e => {\n if(e.key == \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n langDropdown.btnToggle.focus();\n }\n })\n }\n }\n }\n me.init();\n};\nGT.isNav2 = true;\n\nGT.Initiator = function (__object) {\n // if test passed (selector present on site) - fire function form current object on obj context (passing as argument selector and arguments or empty)\n var __$tmp = __object.settings && __object.settings.nojquery ? document.querySelectorAll(__object.test) : $(__object.test);\n try {\n if (__$tmp.length && __object.constr)\n new __object.constr(__$tmp, __object);\n } catch (exp) {\n console.warn(exp);\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n\n GT.Cookies = new GTCookies();\n GT.Cookies.cookieNotify();\n\n GT.GTObjects = [\n { constr: GT.StickyHeaderV2, test: '.main-header', settings: { }},\n { constr: GT.PrimaryNavV2, test: '.header-menu', settings: { } },\n { constr: GT.FakeHyperlink, test: '[data-anchor]' },\n { constr: GT.SearchOverlayV2, test: '.global-search' },\n { constr: GT.MegaNavigationV2, test: '.mega-wrapper', settings: { } },\n { constr: GT.MobileNavigationV2, test: '.menu-toggle', settings: { } },\n { constr: GT.UtilityNavigation, test: '.header-utils', settings: { } }\n ];\n\n if(typeof isV1GT == \"undefined\") \n GT.GTObjects.push({ constr: GT.Reach, test: '.global-reach' });\n\n GT.GTObjects.map(GT.Initiator);\n});\nGT.freezeVp = function (e) {\n e.preventDefault();\n};\n\n\nwindow.addEventListener(\"DOMContentLoaded\", function(){\n GT.headerElm = document.querySelector(\"header\");\n if(GT.headerElm)\n GT.topBannerMsgElm = document.querySelector(\".header-message-top-banner-wrapper\");\n \n GT.mainHeaderElm = document.querySelector(\".main-header\");\n GT.wHeight = window.innerHeight;\n GT.wWidth = window.innerWidth;\n GT.bodyWidth = document.body.clientWidth;\n document.documentElement.style.setProperty('--window-height', GT.wHeight + 'px');\n\n if(typeof isV1GT == \"undefined\") {\n GT.isTouchDevice = GT.isTouchDevice();\n GT.domContentLoadedFncList.forEach(function(fnc){\n try {\n fnc();\n } catch (e) {\n console.log(e);\n }\n })\n }\n\n\tinitTabPanelActionHandler();\n\n function triggerFunctionsAfterMainLogoLoaded(){\n setTimeout(function() {\n Object.keys(GT.triggerFnListAfterMainLogoLoaded).forEach(function(k) {\n GT.triggerFnListAfterMainLogoLoaded[k]();\n })\n setTimeout(function(){\n if(GT.headerElm) {\n GT.headerElmHeight = GT.headerElm.clientHeight;\n document.documentElement.style.setProperty('--header-height', GT.headerElmHeight + 'px');\n }\n\n if(GT.scrollTop() < 100 && !location.hash)\n window.scrollTo(0,0);\n }, 50)\n })\n }\n\n let desktopLogo = document.querySelector(\".desktop-logo img\");\n if(desktopLogo) {\n desktopLogo.onload = function(){\n triggerFunctionsAfterMainLogoLoaded();\n }\n desktopLogo.onerror = function(){\n triggerFunctionsAfterMainLogoLoaded();\n }\n if(desktopLogo.complete) {\n triggerFunctionsAfterMainLogoLoaded();\n }\n } else\n triggerFunctionsAfterMainLogoLoaded();\n\n if(GT.topBannerMsgElm) {\n document.documentElement.style.setProperty('--top-banner-msg-height', GT.topBannerMsgElm.clientHeight + 'px');\n }\n\n if(GT.mainHeaderElm) {\n GT.mainHeaderElmHeight = GT.mainHeaderElm.clientHeight;\n document.documentElement.style.setProperty('--main-header-height', GT.mainHeaderElmHeight + 'px');\n }\n});\n\nlet isOrientationChange = false;\nif(window.screen.orientation)\n window.screen.orientation.addEventListener('change', function(){\n isOrientationChange = true;\n });\nelse\n window.addEventListener(\"orientationchange\", function() {\n isOrientationChange = true;\n });\n\nGT.recalculateHeaderHeight = function(){\n setTimeout(function(){\n if(GT.headerElm) {\n\t\t\tGT.stickyHeaderOffsetTop = GT.headerElm.firstElementChild.offsetHeight - (GT.isMobileView() ? 64 : 88);\n GT.headerElmHeight = GT.headerElm.clientHeight;\n document.documentElement.style.setProperty('--header-height', GT.headerElmHeight + 'px');\n }\n\n if(GT.topBannerMsgElm) {\n GT.topBannerMsgElmHeight = GT.topBannerMsgElm.clientHeight;\n document.documentElement.style.setProperty('--top-banner-msg-height', GT.topBannerMsgElmHeight + 'px');\n }\n\n if(GT.mainHeaderElm) {\n GT.mainHeaderElmHeight = GT.mainHeaderElm.clientHeight;\n document.documentElement.style.setProperty('--main-header-height', GT.mainHeaderElmHeight + 'px');\n }\n }, 500)\n}\n\nwindow.addEventListener(\"resize\", function(){\n GT.wHeight = window.innerHeight;\n GT.wWidth = window.innerWidth;\n GT.bodyWidth = document.body.clientWidth;\n document.documentElement.style.setProperty('--window-height', GT.wHeight + 'px');\n GT.recalculateHeaderHeight();\n \n GT.isMobileCached = GT.isMobile();\n});\n\nwindow.addEventListener(\"resize\", GT.debounce(function(){\n //resize event always fires in Mobile browser if scrolling, because of browser's menu bar\n if(!GT.isMobileCached || isOrientationChange) {\n GT.hideHyperLinkAnimation();\n Object.keys(GT.windowResizeFncList).forEach(function(k) {\n if(typeof GT.windowResizeFncList[k] == \"function\")\n GT.windowResizeFncList[k]();\n })\n GT.recalculateHeaderHeight();\n }\n isOrientationChange = false;\n}, 250));\n\ndocument.addEventListener('touchmove', function(e){\n Object.keys(GT.touchMoveFncList).forEach(function(k) {\n GT.touchMoveFncList[k](e);\n })\n}, {passive: false});"],"names":["GT","MegaMenuV3","isNav3","let","linkLv1","document","querySelectorAll","closeMegaIcons","htmlElm","firstElementChild","headerMenu","querySelector","closeTimerLst","isDesktop","isDesktopView","windowResizeFncList","desktopMegaMenuV2","closeSecondary","registerEvtForOpeningSecondary","promoteArticle","i","length","addEventListener","focus","keypressNav","forEach","item","e","headerElm","contains","target","classList","langDropdownElm","remove","Overlays","hideHeaderOverlay","push","setTimeout","bleedItem","setAttribute","removeAttribute","getAttribute","lv2Item","style","setProperty","_featuredMega","_promoteArticles","call","_promoteArticle","_articleHeader","_articleContents","height","getBoundingClientRect","clampArticle","handleNavOpenEvents","isGlobalSearchBtn","closest","globalSearch","globalSearchInput","type","this","add","t","panelID","showHeaderOverlay","timerItem","clearTimeout","_extraMenu","_globalSearch","blur","bleedHeight","bleedItems","offsetHeight","activeMenuTier2","wHeight","liItem","group","aElm","scrollIntoView","behavior","block","inline","isMobileCached","click","keycode","keyCode","which","_this","currentTarget","shiftKey","preventDefault","dataOpen","openBleed","focusItems","previousLi","previousElementSibling","previousNavLink","allCurrentBleedLinks","lastLink","focusOnNavDropdown","element","currentBleed","currentNavLink","searchOverlayInput","searchResultLinks","lastSearchLink","key","bleedContainer","parentNavLink","triggerNavLink","navLevel1","removeEventListener","isTouchDevice","subMenuLinks","domContentLoadedFncList","MobileMenuV3","toggleMenuBtns","searchWrap","searchInput","classOpeningMegaMenu","classOpeningMobileMenu","classOpeningMobileSearch","primaryMenu","primaryMenuFirstItem","activateSearchInput","newInput","createElement","parentNode","insertBefore","nextSibling","toggleRoleToPrimaryMenu","isAdding","updateBleedHeight","openingBleed","closeAllMegaMenu","toggleMegaMenuLv2","parentElm","isOpening","oldActiveLv2","lv2","lv3Height","lv3Item","initializedMegaMenuLv2","textContent","trim","dataset","setEvent","btn","currentMenuToggleBtn","searchToggleBtn","onPageNav","disableDetectScrollUpOrDown","SearchOverlayV3","triggerInitializeSearchOverlay","menuToggleBtn","lockScrollBehindOverlay","mobileMenuV3","PrimaryMenuV3","documentElement","submenuTimer","triggerFnListAfterMainLogoLoaded","prepareSubMenuLink","link","id","initSearchBox","searchButton","closeButton","isIOS","humbergerMenu","toggle","searchField","isMobile","isMobileView","isLargeDesktopView","submit","forceRecheck","menu","menuItem","appendMenuIndex","lastMenuItem","hasExtraItems","visibleElms","hideHyperLinkAnimation","el","checkElmVisible","timer","visibleElmsLength","index","appendSubMenu","extraMenuItemsHtml","extraMenuHtml","innerHTML","morelabel","insertAdjacentHTML","cursorElm","window","Reach","isInited","globalReachElm","globalReachToggleBtn","globalReachTabElms","disableScroll","isDisable","preventHeaderFromFlickeringWhileBodyHeightIsChanging","calcActivatedTabHeight","keyPressHandle","activeLinks","firstActiveLink","lastActiveLink","currentTab","activeEl","tab","tabItem","listPanelItem","inited","globalReachHeadTitle","pressESCToClose","handleElementRole","parentTab","TabPanelActionHandler","closeElm","httpService","HttpService","getHtmlContent","globalReachLink","Content-type","then","response","globalReachRegionsMoileLV1Elm","GTMGlobal","megaMenu","catch","finally","nextElementSibling","globalReach","searchWrapper","searchButtonToggle","searchForm","searchOverlayModal","searchboxInput","submitButton","popularSearchResults","prevSuggestionResults","searchResultsContainer","disabledSearchOverlayAtrr","disabledPopularSearchAtrr","disabledPreviousSearchAtrr","userPreviousSearchesDataAtrr","oldSearchKeyword","isInitialized","bleedWrapperElm","INPUT_START_TYPING_LENGTH","processPreviousSearch","isDisabledPreviousSearch","searchPageUrl","previousSearchTitle","userPreviousSearches","JSON","parse","localStorage","getItem","previousSearchHtml","previousSearchesSection","_keyword","encodeURIComponent","replace","getElementById","wrapPreviousSearchesHtml","className","firstChild","recentIds","openGlobalSearch","toggleSearchModal","_searchKeyword","value","getSuggestionSearch","isDisabledPopularSearch","getPopularSearch","popularSearchEndpoint","escapeQueryChars","Cookies","getCookie","data","linkKeyPressHandle","console","log","rej","toggleLoading","toLowerCase","_isShow","enable","header","url","match","dec","encodeURI","_searchTerm","suggestionSearchEndpoint","CONTAINER_SELECTORS","searchOverlayLinks","parentContainer","map","selector","find","firstLink","isScreenReader","debounce","inputValue","searchkeyword","processSearchKeywordBeforeSubmit","dataLayer","event","eventAction","eventLabel","TopBannerMessageForNoStickyHeader","$elem","isStickyDisabled","$","handleTopBannderMessageOnMobile","width","css","ready","onscroll","onwheel","onresize","UtilityNavigation","elem","init","langDropdown","btnToggle","itemsLength","items","doToggle","headerLangBtn","isNav2","Initiator","__object","__$tmp","settings","nojquery","test","constr","exp","warn","GTCookies","cookieNotify","GTObjects","StickyHeaderV2","PrimaryNavV2","FakeHyperlink","SearchOverlayV2","MegaNavigationV2","MobileNavigationV2","isV1GT","freezeVp","triggerFunctionsAfterMainLogoLoaded","Object","keys","k","headerElmHeight","clientHeight","scrollTop","location","hash","scrollTo","topBannerMsgElm","mainHeaderElm","innerHeight","wWidth","innerWidth","bodyWidth","body","clientWidth","fnc","initTabPanelActionHandler","desktopLogo","onload","onerror","complete","mainHeaderElmHeight","isOrientationChange","screen","orientation","recalculateHeaderHeight","stickyHeaderOffsetTop","topBannerMsgElmHeight","touchMoveFncList","passive"],"mappings":"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"}