{"version":3,"file":"nav-v2.js","sources":["nav-v2.js"],"sourcesContent":["GT.MobileNavigationV2 = function ($element) {\n let me = this,\n globalReachElm = document.querySelector(\".global-reach\"),\n back2mainElm = globalReachElm.querySelector(\".global-reach-toggle-header\"),\n headerTileElm = globalReachElm.querySelector(\".global-reach-mobile-header__title\"),\n globalSearch = document.querySelector(\".global-search\"),\n toggleElm = document.querySelector('.global-toggle-m'),\n gReachText = \"\",\n megaNavWrapper = document.querySelector('.mega-wrapper');\n\n me.init = function () {\n let hamburger = {\n headerMenu: document.querySelector('.header-menu'),\n navToggle: document.querySelector('.menu-toggle'),\n doToggle: function(e, isClose) {\n e.preventDefault();\n \n setTimeout(function() {\n\n if(isClose)\n hamburger.headerMenu.classList.add('open');\n \n if(globalReachElm.classList.contains(\"open\")) {\n globalReachElm.classList.remove(\"open\");\n globalReachElm.classList.remove(\"global-reach-mobile\");\n }\n\n // Close search form when mobile menu is open\n if(globalSearch.classList.contains('search-open')) {\n globalSearch.classList.remove('search-open');\n globalSearch.closest('.main-header').classList.remove('search-open');\n }\n\n }, 100);\n }\n };\n\n\n hamburger.navToggle.addEventListener('click', function(e) { \n\n let isClose = true;\n if(hamburger.navToggle.classList.contains('open')) {\n megaNavWrapper.classList.remove('open');\n hamburger.headerMenu.classList.remove('open');\n document.firstElementChild.classList.remove(\"opening-mobile-menu\");\n document.firstElementChild.classList.remove(\"opening-megamenu\");\n document.firstElementChild.classList.remove(\"overflowHidden\");\n isClose = false;\n document.querySelector(\".gt-wrapper\").removeAttribute(\"inert\");\n hamburger.headerMenu.removeAttribute(\"inert\");\n hamburger.navToggle.setAttribute(\"aria-expanded\", false);\n } else {\n let onPageNav = document.querySelector(\".onpage-navigation.expanded\");\n if (onPageNav) {\n document.firstElementChild.classList.remove(\"showing-overlay\");\n onPageNav.classList.remove(\"expanded\");\n }\n defaultPossitionMobileMenu();\n GT.lockScrollBehindOverlay(\".header-menu\");\n document.firstElementChild.classList.add(\"opening-mobile-menu\");\n document.firstElementChild.classList.add(\"overflowHidden\");\n \n GT.touchMoveFncList.preventTouchMoveOnHeaderMenu = function(e){\n if(!e.target.closest(\".header-menu\") && !e.target.closest(\".global-reach\") && !e.target.closest(\".mega-wrapper\")) {\n if(hamburger.navToggle.classList.contains('open'))\n e.preventDefault();\n }\n }\n document.querySelector(\".gt-wrapper\").setAttribute(\"inert\", true);\n hamburger.navToggle.setAttribute(\"aria-expanded\", true);\n } \n\n let lv3OpeningItem = document.querySelector('.mega__level--3.open'),\n lv2OpeningItem = document.querySelector('.bleed.open');\n \n if(lv2OpeningItem) {\n lv2OpeningItem.classList.remove('open');\n lv2OpeningItem.classList.remove('slide-left');\n }\n\n if(lv3OpeningItem) \n lv3OpeningItem.classList.remove('open');\n\n document.querySelector('.mega__level').classList.remove('open');\n hamburger.navToggle.classList.toggle('open');\n\n hamburger.doToggle(e, isClose);\n });\n\n document.querySelectorAll('.global-toggle-m').forEach(function(elm, idx){\n if(idx == 0) {\n elm.addEventListener('click', function(e) {\n if(!gReachText) {\n gReachText = toggleElm.innerText;\n }\n \n if(!globalReachElm.classList.contains(\"global-reach-mobile\")) {\n let activeElm = document.querySelector(\".reach-region-selector li.active\");\n if(activeElm)\n activeElm.classList.remove(\"active\");\n \n headerTileElm.innerText = gReachText;\n globalReachElm.classList.remove(\"opening-lv2\");\n globalReachElm.classList.add(\"global-reach-mobile\");\n\n GT.lockScrollBehindOverlay(\".global-reach-mobile\");\n \n hamburger.headerMenu.setAttribute(\"inert\", true);\n megaNavWrapper.setAttribute(\"inert\", true);\n } else\n globalReachElm.classList.remove(\"global-reach-mobile\");\n })\n } else {\n elm.addEventListener('click', function(e) {\n // If the click is on the mega-wrapper, trigger click for the first global-toggle-m to load the global reach content\n if(e.target.closest('.mega-wrapper')) {\n document.querySelector('.global-toggle-m').click();\n }\n })\n }\n }) \n\n document.querySelectorAll(\".reach-region-selector li\").forEach(function(elm){\n GT.clickEvt(elm, e => {\n headerTileElm.innerText = e.target.innerText;\n setTimeout(e => {\n globalReachElm.classList.add(\"opening-lv2\");\n }, GT.isMobileCached ? 500 : 0)\n })\n })\n\n back2mainElm.addEventListener(\"click\", function(){\n let activeElm = document.querySelector(\".reach-region-selector li.active\");\n if(activeElm) {\n activeElm.setAttribute(\"aria-expanded\", \"false\");\n activeElm.classList.remove(\"active\");\n }\n\n if(globalReachElm.classList.contains(\"opening-lv2\")) {\n headerTileElm.innerText = gReachText;\n globalReachElm.classList.remove(\"opening-lv2\");\n } else {\n if(globalReachElm.classList.contains(\"open\")) {\n globalReachElm.classList.remove(\"open\");\n globalReachElm.classList.remove(\"global-reach-mobile\");\n setTimeout(e => {\n toggleElm.focus();\n }, 100)\n }\n headerTileElm.innerText = \"\";\n if(!document.querySelector('.bleed.open'))\n hamburger.headerMenu.removeAttribute(\"inert\");\n megaNavWrapper.removeAttribute(\"inert\");\n }\n })\n\n var nav = {\n navItems : document.querySelectorAll('.nav-link--dropdown'),\n secondNavItems: document.querySelectorAll('.bleed .mega-link:not(a)'),\n backButton: megaNavWrapper.querySelector('.nav-level-toggle'),\n navSlideLeft: function() {\n // nav.backButton.focus(); does not work on Safari\n setTimeout(e => {\n if(GT.wWidth < GT.breakPoints.tablet_lg) {\n hamburger.headerMenu.setAttribute(\"inert\", true);\n }\n megaNavWrapper.classList.add('open');\n document.querySelector('.mobile__level-header').classList.remove('hide');\n setTimeout(e => {\n (document.querySelector('.bleed.open .bleed__col--left .mega-header a') || document.querySelector('.bleed.open .bleed__col--left .mega-link'))?.focus();\n },50)\n }, 100)\n },\n navSlideLeft2x: function() {\n // nav.backButton.focus(); does not work on Safari\n setTimeout(e => {\n document.querySelector('.bleed.open').classList.add('slide-left');\n setTimeout(e => {\n document.querySelector('.bleed.open .mega__level--3.open .mega-header a')?.focus();\n }, 50)\n }, 100)\n },\n navSlideRight: function(e) {\n let openedBleed = document.querySelector('.bleed.open');\n if ( openedBleed?.classList.contains('slide-left') ) {\n openedBleed.classList.remove('slide-left');\n document.querySelector('.bleed.open .selected button')?.setAttribute(\"aria-expanded\", false);\n document.querySelector('.bleed.open .selected')?.classList.remove('selected');\n (document.querySelector('.bleed.open .bleed__col--left .mega-header a') || document.querySelector('.bleed.open .bleed__col--left .mega-link'))?.focus();\n } else {\n document.querySelector('.nav-link--dropdown.open')?.setAttribute(\"aria-expanded\", false);\n megaNavWrapper.classList.remove('open');\n document.querySelector('.bleed.open').classList.remove('open');\n document.querySelector('.mobile__level-header').classList.add('hide');\n hamburger.headerMenu.removeAttribute(\"inert\");\n document.querySelector(\".nav-link\")?.focus();\n // hamburger.navToggle.focus(); does not work on Safari\n }\n }\n };\n\n if(GT.wWidth < GT.breakPoints.tablet_lg) {\n nav.navItems.forEach(item => {\n item.addEventListener(\"click\", function(e) {\n if(GT.wWidth < GT.breakPoints.tablet_lg)\n e.preventDefault();\n \n nav.navSlideLeft(e);\n });\n })\n \n nav.secondNavItems.forEach(item => {\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n nav.navSlideLeft2x(e);\n })\n })\n\n nav.backButton.addEventListener(\"click\", (e) => {\n nav.navSlideRight(e);\n });\n\n GT.windowResizeFncList.mobileNav2 = function(){\n hamburger.navToggle.classList.remove('open');\n hamburger.headerMenu.classList.remove('open');\n hamburger.headerMenu.removeAttribute(\"inert\");\n document.firstElementChild.classList.remove(\"overflowHidden\");\n megaNavWrapper.classList.remove('open');\n globalReachElm.classList.remove(\"open\");\n globalReachElm.classList.remove(\"global-reach-mobile\");\n document.firstElementChild.classList.remove(\"global-reach--opening\");\n }\n }\n\n window.addEventListener(\"resize\", function() {\n defaultPossitionMobileMenu();\n })\n }\n\n function defaultPossitionMobileMenu() {\n let headerElmH = 64,\n topPosition = document.querySelector('.main-header').getBoundingClientRect().y,\n _primaryNav = document.querySelector('.header-menu');\n\n if(GT.isMobileView()) {\n const elmHeight = 'calc(var(--window-height) - '+ (topPosition + headerElmH) +'px)';\n\n _primaryNav.style.height = elmHeight;\n \n megaNavWrapper.style.height = elmHeight;\n megaNavWrapper.style.maxHeight = 'auto';\n \n globalReachElm.style.height = elmHeight;\n \n } else {\n // Calculate height of mobile menu\n // _primaryNav.style.top = 'auto';\n _primaryNav.style.height = 'auto';\n \n // megaNavWrapper.style.top = 'auto';\n megaNavWrapper.style.height = 'auto';\n // globalReachElm.style.top = '0';\n }\n }\n \n me.init();\n};\nGT.MegaNavigationV2 = function($element) {\n if(typeof isNav3 != \"undefined\") return;\n\n let _activeMenuTier2 = null;\n let _linkLv1 = document.querySelectorAll('.nav-link');\n let _level2 = document.querySelector('.mega__level--2');\n let _closeMegaIcons = document.querySelectorAll('.close-mega__menu'),\n _megaWrapper = document.querySelector('.mega-wrapper');\n\n init();\n function closeSecondary() {\n _level2.classList.remove('open');\n document.firstElementChild.classList.remove(\"opening-megamenu\");\n\n _megaWrapper.setAttribute(\"inert\", true);\n [].forEach.call(_linkLv1, function(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 let _bleedItems = _level2.querySelectorAll('.bleed');\n for(let i = 0; i < _bleedItems.length; i++) {\n let _bleed = _bleedItems[i];\n _bleed.classList.remove('open');\n }\n };\n\n function openSecondary(t) {\n let htmlElm = document.firstElementChild;\n if(htmlElm.classList.contains(\"global-reach--opening\"))\n return;\n let _key = t;\n\n htmlElm.classList.add(\"opening-megamenu\");\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 _globalSearch.classList.remove('open');\n _globalSearch.querySelector('input[name=\"q\"]').blur();\n\n let _bleedItems = _level2.querySelectorAll('.bleed');\n\n for(let i = 0; i < _bleedItems.length; i++) {\n let _bleedItem = _bleedItems[i];\n _bleedItem.classList.remove('open');\n if(_bleedItem.getAttribute('data-content') == _key) {\n _activeMenuTier2 = _bleedItem;\n _bleedItem.classList.add('open');\n _megaWrapper.removeAttribute(\"inert\");\n } else {\n _bleedItem.classList.remove('open');\n }\n }\n\n let _navLinksLevl2 = _activeMenuTier2.querySelectorAll('.mega-link--level-2');\n for (let i = 0; i < _navLinksLevl2.length; i++) {\n let _navLink2 = _navLinksLevl2[i];\n _navLink2.addEventListener(\"click\", openTertiery);\n _navLink2.addEventListener(\"mouseenter\", GT.throttle(function(){ \n\t\t const context = this, args = arguments;\n openTertiery.apply(context, args);\n }));\n }\n\n let highlightElm = _level2.querySelector(\".highlight\"),\n selectedElms = _level2.querySelectorAll(\".selected:not(.mega-content__item)\");\n\n if(selectedElms.length) {\n selectedElms.forEach(function(selectedElm) {\n selectedElm.classList.remove(\"selected\");\n })\n }\n\n if(highlightElm) {\n highlightElm.classList.add(\"selected\");\n }\n\n defaultSelectedItem(_activeMenuTier2);\n \n setTimeout(function() {\n promoteArticle();\n }, 100);\n\n setMegaPossition();\n _level2.classList.add('open');\n };\n\n function openTertiery() {\n let _this = this;\n if(_this.classList.contains('not-arrow')) return;\n let _key = this.getAttribute('data-id');\n\n let parentListMenu = _this.closest('ul.list');\n\n let listMenus = parentListMenu.querySelectorAll('li.selected');\n [].forEach.call(listMenus, function(item) {\n item.classList.remove('selected');\n item.querySelector(\"button\")?.setAttribute(\"aria-expanded\", false);\n });\n\n _this.closest(\".bleed\").querySelector(\".group-name-text.selected\")?.classList.remove(\"selected\");\n\n if(_activeMenuTier2 == null || _activeMenuTier2.length <= 0) return;\n \n let _megaLevl3Items = _activeMenuTier2.querySelectorAll('.mega__level--3');\n for(let i = 0; i < _megaLevl3Items.length; i++) {\n let _megaLevl3 = _megaLevl3Items[i];\n _megaLevl3.classList.remove('open');\n if(_megaLevl3.getAttribute('data-feature') == _key) {\n _megaLevl3.classList.add('open');\n _this.parentNode.classList.add('selected');\n _this.setAttribute(\"aria-expanded\", true);\n } else {\n _megaLevl3.classList.remove('open');\n }\n }\n\n promoteArticle();\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 isTablet = GT.isTabletView();\n if(e.target.classList.contains(\"open\") && isTablet) {\n if(e.type == \"click\" && GT.wWidth >= GT.breakPoints.tablet_lg) {\n closeSecondary();\n }\n return;\n }\n\n [].forEach.call(_linkLv1, function(item) {\n item.classList.remove('open');\n });\n\n if(isTablet)\n document.querySelectorAll(\".mega__level--3.open\").forEach(function(lv3item){\n lv3item.classList.remove(\"open\");\n })\n\n if(e.type != \"click\")\n closeSecondary();\n\n\n if(this.classList.contains('nav-link--dropdown') && this.getAttribute('aria-expanded') == 'false') {\n this.classList.add('open');\n openSecondary(this.getAttribute('data-open'));\n this.setAttribute('aria-expanded', 'true');\n\n if(!GT.isMobileCached) {\n _linkLv1.forEach(function(item) {\n item.setAttribute('tabindex', -1);\n });\n this.removeAttribute('tabindex');\n }\n }\n };\n\n function keypressNav(e) {\n let keycode = e.keyCode || e.which,\n _this = e.currentTarget,\n _isLastLv3Item = false,\n _key = _this.dataset.id;\n //TAB keypress\n if (keycode == 9 && !GT.isMobileCached) {\n \n if ( _this.getAttribute('aria-expanded') == 'true' ) {\n // menu lv 1 && mega menu is open\n e.preventDefault();\n if (e.shiftKey) {\n const currentBleedLinks = document.querySelector('.mega__level--3.open')?.querySelectorAll('a, .article-tile');\n const lastLink = currentBleedLinks[currentBleedLinks.length -1];\n lastLink && lastLink.focus();\n } else {\n document.querySelector('.mega__level--2.open .close-mega__menu').focus();\n }\n }\n \n if (_this.classList.contains('close-mega__menu') ) {\n e.preventDefault();\n if (e.shiftKey) {\n document.querySelector('.nav-link[aria-expanded=\"true\"]')?.focus();\n } else {\n let _openBleed = document.querySelector('.bleed.open');\n if (_openBleed)\n _openBleed.querySelector('a.group-name-text, .mega-link--level-2').focus();\n }\n }\n\n if (_this.classList.contains('mega-link--level-2') || _this.matches('.group-name-text.selected')) {\n\n if (e.shiftKey) {\n let previousLIElm = _this.closest('li').previousElementSibling;\n if (previousLIElm) {\n e.preventDefault();\n if(previousLIElm.classList.contains(\"group-name-line\"))\n previousLIElm = previousLIElm.previousElementSibling;\n if(previousLIElm.classList.contains(\"group-name-text\"))\n previousLIElm = previousLIElm.previousElementSibling;\n\n if(previousLIElm)\n previousLIElm.querySelector('.mega-link--level-2')?.focus();\n else {\n _this.closest('.bleed').querySelector('.group-name-text.mega-link, .mega__level--2.open .close-mega__menu')?.focus();\n }\n }\n } else {\n if (this.closest(\".selected\")) {\n e.preventDefault();\n let _parent = _this.closest('.bleed');\n _menuContainerLv3 = _parent.querySelector('.mega__level--3[data-feature=\"' + _key + '\"]');\n _menuContainerLv3.querySelector('a').focus();\n }\n // check if current level 2 menu is the last menu\n else if (!_this.closest('li').nextElementSibling) {\n e.preventDefault();\n let _parentContent = _this.closest('.bleed').getAttribute('data-content');\n if (_parentContent)\n document.querySelector('.nav-link[aria-expanded=\"true\"]')?.focus();\n }\n }\n }\n\n if (_this.parentElement.classList.contains('mega-header__title')) {\n if (e.shiftKey) {\n e.preventDefault();\n let _key = _this.closest('.mega__level--3').getAttribute('data-feature');\n _this.closest('.bleed').querySelector('.mega-link--level-2[data-id=\"' + _key + '\"], .group-name-text.selected').focus();\n }\n // check if current is see overview link and does not have the mega lv3 listing\n } else if (!e.shiftKey && _this.classList.contains(\"mega-see__overview\") && !_this.closest('.mega__level--3').querySelector('.mega__level--3__listing')) {\n _isLastLv3Item = true;\n }\n\n if ( _this.classList.contains('mega-link--level-3')) {\n let _parentItem = _this.closest('.mega-content__item'),\n _featuredMega = this.closest('.mega__level--3--container').querySelector('.mega-featured');\n // check if current level 3 menu is the last menu\n if ( !_parentItem.nextElementSibling && !_featuredMega ) {\n _isLastLv3Item = true;\n }\n }\n\n if ( _this.classList.contains('article-tile') && _this.closest('.mega-featured__contents') )\n _isLastLv3Item = true;\n \n if (_isLastLv3Item && !e.shiftKey) {\n e.preventDefault();\n let _key = _this.closest('.mega__level--3').getAttribute('data-feature'),\n _parentBleed = _this.closest('.bleed'),\n currentMegaLinkLv2 = _parentBleed.querySelector('.mega-link--level-2[data-id=\"' + _key + '\"], .mega-link[data-id=\"' + _key + '\"]'),\n nextMegaLinkLv2 = currentMegaLinkLv2.classList.contains(\"mega-link--level-2\") \n ? currentMegaLinkLv2?.closest('li').nextElementSibling\n : _parentBleed.querySelector(\".mega__content li:not(.selected) .mega-link--level-2\");\n \n if ( nextMegaLinkLv2 ) { \n // if current level 2 menu is NOT the last menu\n // focus on next mega link lv2\n if(nextMegaLinkLv2.classList.contains(\"group-name-text\"))\n nextMegaLinkLv2 = nextMegaLinkLv2.nextElementSibling;\n if(nextMegaLinkLv2.classList.contains(\"group-name-line\"))\n nextMegaLinkLv2 = nextMegaLinkLv2.nextElementSibling;\n\n (nextMegaLinkLv2.classList.contains('mega-link--level-2') ? nextMegaLinkLv2 : nextMegaLinkLv2.querySelector('.mega-link--level-2'))?.focus();\n } else {\n document.querySelector('.nav-link[aria-expanded=\"true\"]')?.focus();\n }\n _isLastLv3Item = false;\n }\n }\n \n }\n\n function defaultSelectedItem(_currentBleedItem) {\n if (GT.isTabletView()) {\n //if group text on left nav is contain link, it should be selected item\n let groupLinkElements = _currentBleedItem.querySelectorAll('a.group-name-text.highlight'); \n let _defaultSelectedItem = _currentBleedItem.querySelectorAll('.list li.highlight');\n var _firstSelected = null;\n if (_defaultSelectedItem.length <= 0 && groupLinkElements.length <= 0) {\n var megaLevel3Id = null;\n if (_currentBleedItem.querySelectorAll('a.group-name-text').length > 0) {\n _firstSelected = _currentBleedItem.querySelectorAll('a.group-name-text')[0];\n megaLevel3Id = _firstSelected.getAttribute('data-id');\n }\n else { \n _firstSelected = _currentBleedItem.querySelector('.list li:first-child');\n let _megaLevl3 = _firstSelected.querySelector('.mega-link--level-2');\n megaLevel3Id = _megaLevl3 != null ? _megaLevl3.getAttribute('data-id') : null;\n }\n _firstSelected.classList.add('selected');\n _firstSelected.querySelector(\"button\")?.setAttribute(\"aria-expanded\", true); \n if (megaLevel3Id != null) {\n let _dataFeatured = megaLevel3Id;\n let _megaLevl3Item = _currentBleedItem.querySelector('.mega__level--3:first-child');\n if(_megaLevl3Item != null && _megaLevl3Item.getAttribute('data-feature') == _dataFeatured) {\n _megaLevl3Item.classList.add('open');\n }\n }\n } else {\n var megaLevel3Id = null;\n var _megaLevl3;\n if (groupLinkElements.length > 0) {\n _megaLevl3 = groupLinkElements[0];\n megaLevel3Id = groupLinkElements[0].getAttribute('data-id');\n } else {\n _megaLevl3 = _defaultSelectedItem[0].querySelector('.mega-link--level-2');\n megaLevel3Id = _megaLevl3 != null ? _megaLevl3.getAttribute('data-id') : null;\n }\n \n if (megaLevel3Id != null) {\n let _dataFeatured = megaLevel3Id;\n \n let _parentMenu = _megaLevl3.closest('.bleed');\n \n if(!_parentMenu) return;\n\n let _megaLevl3Items = _parentMenu.querySelectorAll('.mega__level--3');\n for(let i = 0; i < _megaLevl3Items.length; i++) {\n let _megaLevl3 = _megaLevl3Items[i];\n _megaLevl3.classList.remove('open');\n if(_megaLevl3.getAttribute('data-feature') == _dataFeatured) {\n _megaLevl3.classList.add('open');\n }\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(GT.isMobileView()) {\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.isMobileCached)\n _navLevel1.addEventListener(\"mouseenter\", handleNavOpenEvents);\n _navLevel1.addEventListener(\"keydown\", keypressNav);\n _navLevel1.addEventListener(\"click\", handleNavOpenEvents);\n }\n }\n \n let _subMenuLinks = document.querySelectorAll('.mega-wrapper .mega-link, .mega-header__title a, .mega-header .mega-see__overview');\n if (_subMenuLinks) {\n [].forEach.call(_subMenuLinks, function(item) {\n item.addEventListener('keydown', keypressNav);\n });\n }\n }\n\n function setMegaPossition() {\n let _windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n if(_windowWidth >= 960) {\n let _headerUtils = document.querySelector('.header-utils');\n let _topBannerMessage = document.querySelector('.header-message-top-banner-wrapper');\n let _mainHeader = document.querySelector('.main-header');\n\n let _headerUtilHeight = 0, _topBannerMessageHeight = 0, _mainHeaderHeight = 0;\n\n if(_topBannerMessage != null) _topBannerMessageHeight = _topBannerMessage.getBoundingClientRect().height;\n if(_headerUtils != null) _headerUtilHeight = _headerUtils.getBoundingClientRect().height;\n if(_mainHeader != null) _mainHeaderHeight = _mainHeader.getBoundingClientRect().height;\n\n let _topPos = _topBannerMessageHeight + _headerUtilHeight + _mainHeaderHeight;\n\n if(_megaWrapper != null) {\n // _megaWrapper.style.top = _topPos + 'px';\n let _megaMenuMaxHeight = 'calc(100vh - '+ (document.body.classList.contains(\"scroll-down\") ? 88 : _topPos) +'px)';\n _megaWrapper.style.maxHeight = _megaMenuMaxHeight;\n let bleed = _megaWrapper.querySelector(\".bleed.open\");\n if(bleed)\n bleed.style.maxHeight = _megaMenuMaxHeight;\n }\n } else {\n _megaWrapper.style.maxHeight = \"100vh\";\n }\n }\n\n function init() {\n GT.windowResizeFncList.desktopMegaMenuV2 = function(){\n closeSecondary();\n registerEvtForOpeningSecondary();\n setMegaPossition();\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 let _featuredArticles = document.querySelectorAll('.mega-wrapper .article-tile');\n [].forEach.call(_featuredArticles, function(item) {\n item.addEventListener('keydown', keypressNav);\n });\n\n \n //Close mega nav when click outside mega menu\n if(GT.wWidth >= GT.breakPoints.tablet_lg) {\n clickOutsideMenu();\n\n if(GT.headerElm)\n GT.headerElm.addEventListener(\"mouseleave\", function(){\n if(GT.wWidth >= GT.breakPoints.tablet_lg)\n closeSecondary();\n })\n }\n }\n\n function clickOutsideMenu() {\n document.addEventListener('mouseup', function(e) {\n if (!_megaWrapper.contains(e.target) && !e.target.classList.contains(\"nav-link--dropdown\") && GT.wWidth >= GT.breakPoints.tablet_lg) {\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};\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.PrimaryNavV2 = function ($elem) {\n if(typeof isNav3 != \"undefined\") return;\n GT.triggerFnListAfterMainLogoLoaded.prepareSubMenuLink = prepareSubMenuLink;\n\n bindOutsideClick();\n initSearchBox();\n let submenuTimer = [];\n\n window.addEventListener(\"resize\", e => {\n if(document.documentElement.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 let onPageNav = document.querySelector(\".onpage-navigation.expanded\");\n if (onPageNav) {\n document.firstElementChild.classList.remove(\"showing-overlay\");\n onPageNav.classList.remove(\"expanded\");\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 let onPageNav = document.querySelector(\".onpage-navigation.expanded\");\n if (onPageNav) {\n document.firstElementChild.classList.remove(\"showing-overlay\");\n onPageNav.classList.remove(\"expanded\");\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 let $menuItem = $menu.querySelectorAll('.level-1 > li:not(.menu-link):not(.hide-webex)');\n let appendMenuIndex = $menuItem.length;\n let lastMenuItem = null;\n \n let hasExtraItems = false,\n visibleElms = [];\n \n $menu.querySelectorAll('li.menu-link').forEach(item => {\n item.remove();\n })\n\n if(document.documentElement.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(.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 += '