{"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 += '
  • ' + element.innerHTML + '
  • ';\n });\n\n if(lastMenuItem) {\n lastMenuItem.insertAdjacentHTML(\"afterend\", '
  • ');\n }\n\n document.querySelectorAll('.sub-menu .nav-link--dropdown').forEach(function(navLink){\n navLink.classList.remove(\"nav-link--dropdown\");\n });\n\n let menuLinkItem = document.querySelector('ul.list--mega.level-1 .menu-link');\n if(menuLinkItem) {\n menuLinkItem.addEventListener('click', function(e) {\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\n function bindOutsideClick() {\n $(document).on('click', function(e) {\n if (e.target) {\n $menuLink = $('ul.list--mega.level-1 .menu-link');\n if ($menuLink &&\n !$(e.target).hasClass('sub-menu') &&\n !$(e.target).hasClass('menu-link') &&\n !$(e.target).hasClass('nav-link') &&\n !$(e.target).hasClass('remove_file') &&\n !(e.target.parentNode && e.target.parentNode.parentNode && e.target.parentNode.parentNode.className == \"nav-link\" && e.target.nodeName == \"FONT\")) {\n $menuLink.removeClass('open');\n //hide header overlay if click on header excepts serch input\n if ( (e.target.id !== 'searchField') && !(document.querySelector('.global-search.search-open')) )\n GT.Overlays.hideHeaderOverlay();\n }\n }\n });\n }\n};\n\nGT.SearchOverlayV2 = function($element) {\n let htmlElm = document.firstElementChild;\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 _closeButton = _globalSearch.querySelector('.close-button');\n let _isDisabledSearchOverlay = _searchboxInput.getAttribute('disabled-searchoverlay');\n let _isDisabledPopularSearch = _searchboxInput.getAttribute('disabled-popularsearch');\n let _isDisabledPreviousSearch = _searchboxInput.getAttribute('disable-previoussearch');\n let _userPreviousSearchesData = null;\n let _oldSearchKeyword = \"\";\n\n const _INPUT_START_TYPING_LENGTH = 3;\n const _MAX_PREVIOUS_SEARCH_ITEMS = 6;\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 _userPreviousSearchesData = _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 initSearchOverlay() { \n _searchboxInput.addEventListener('focus', function() {\n \n openGlobalSearch();\n\n toggleSearchModal(false);\n \n // Process to display user's previous searches\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 || (_userPreviousSearchesData != null && _userPreviousSearchesData.length > 0)\n ) {\n toggleSearchModal(true);\n }\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 && (_userPreviousSearchesData == null || _userPreviousSearchesData.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 });\n\n // Handle shift-tab keypress when outside of search box modal or search input text\n window.addEventListener('keydown', handleKey);\n function handleKey(e) {\n if (e.keyCode === 9) {\n let shift = e.shiftKey;\n if (shift) {\n let _closeModal = false;\n if (!_globalSearch.contains(e.target)) {\n _closeModal = true;\n } else {\n if(e.target == _searchboxInput) {\n _closeModal = true;\n }\n }\n\n if(_closeModal) closeSearchOverlay();\n }\n }\n }\n };\n\n function isDisabledPreviousSearch() {\n return (!_isDisabledPreviousSearch || _isDisabledPreviousSearch.toLowerCase() == 'true');\n }\n\n function isDisabledPopularSearch() {\n return (!_isDisabledPopularSearch || _isDisabledPopularSearch.toLowerCase() == 'true');\n }\n\n function openGlobalSearch() {\n let _globalReach = document.querySelector('.global-reach');\n let _timeout = 0;\n if(_globalReach?.classList.contains('open')) {\n _globalReach?.classList.remove('open');\n htmlElm.classList.remove(\"global-reach--opening\");\n _timeout = 300;\n }\n\n // Set timeout in case global reach is open.\n setTimeout(function() {\n if(!_globalSearch.classList.contains('open')) {\n _globalSearch.classList.add('open');\n _searchOverlayModal.removeAttribute('inert');\n htmlElm.classList.add('search-box__modal--open');\n }\n htmlElm.classList.add(\"global-search--opening\");\n }, _timeout);\n }\n\n function toggleSearchModal(_isShow) { \n if(_isShow) {\n _searchOverlayModal.classList.remove('hide');\n \n setTimeout(e => {\n GT.GTMGlobal.globalSearch();\n }, 100);\n } else {\n _searchOverlayModal.classList.add('hide');\n }\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 $.ajax({\n url: _popularSearchEndpoint,\n type: \"get\",\n success: function (data) {\n if(data.trim() == null || data.trim().length <= 0) {\n if(!_userPreviousSearchesData) {\n _searchOverlayModal.classList.add('hide');\n toggleSearchModal(false);\n } else {\n toggleSearchModal(true);\n }\n } else {\n _searchOverlayModal.classList.remove('hide');\n _popularSearchResults = data;\n _searchResultsContainer.innerHTML = data;\n processPreviousSearch();\n linkKeyPressHandle();\n toggleSearchModal(true);\n }\n },\n error: function (xhr) {\n console.error(xhr);\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 $.ajax({\n url: _suggestionSearchEndpoint,\n type: \"get\",\n success: function (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 toggleSearchModal(true);\n }\n },\n error: function (xhr) {\n console.error(xhr);\n }\n });\n }\n\n function linkKeyPressHandle() {\n \n let searchOverlayLinks = document.querySelectorAll('.search-suggestion__list a, .search-results__list a');\n\n [].forEach.call(searchOverlayLinks, function(item) {\n let _parent = item.closest('#previous-search__container');\n if (!item.closest('li').nextElementSibling) {\n if (item.closest('.recently-visited__container'))\n _parent = item.closest('.recently-visited__container');\n else if (item.closest('.search-contents__container.popular-search__container'))\n _parent = item.closest('.search-contents__container.popular-search__container');\n\n if (!_parent.nextElementSibling) {\n item.addEventListener('keydown', function(e) {\n let keycode = e.keyCode || e.which;\n if (9 == keycode) {\n e.preventDefault();\n _closeButton.focus();\n }\n });\n }\n }\n });\n }\n\n function init() {\n let _isDesktopView = GT.isTabletView();\n if(_isDesktopView) {\n if(!_isDisabledSearchOverlay || _isDisabledSearchOverlay.toLowerCase() == 'true') {\n return;\n }\n\n initSearchOverlay();\n\n document.addEventListener('mouseup', function(e) {\n if (!_globalSearch.contains(e.target)) {\n if(document.activeElement != _searchboxInput) {\n closeSearchOverlay();\n }\n }\n });\n\n _globalSearch.addEventListener(\"keydown\", (e) => {\n if(e.key == \"Escape\") {\n if(document.querySelector('.global-search.open')) {\n GT.isScreenReader = true;\n closeAction();\n }\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 _closeButton.addEventListener('click', closeAction);\n _closeButton.addEventListener('keypress', function(e){\n if(e.key == \"Enter\")\n closeAction();\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(), _userPreviousSearchesData, _MAX_PREVIOUS_SEARCH_ITEMS);\n dataLayer.push({ 'event': 'global_search', 'eventAction': 'navigation_search', 'eventLabel': _searchkeyword }); \n });\n }\n }\n\n function searchboxOnChange(){\n let _inputValue = _searchboxInput.value.trim();\n if(_inputValue.length >= _INPUT_START_TYPING_LENGTH) {\n getSuggestionSearch(encodeURIComponent(_inputValue));\n _oldSearchKeyword = _inputValue;\n } else {\n if((isDisabledPopularSearch() || _popularSearchResults == null) && (_userPreviousSearchesData == null || _userPreviousSearchesData.length <= 0)) {\n toggleSearchModal(false);\n } else {\n _searchResultsContainer.innerHTML = _popularSearchResults;\n \n // Add previous search section\n processPreviousSearch();\n toggleSearchModal(true);\n }\n }\n }\n\n function closeSearchOverlay() {\n _globalSearch.classList.remove('open');\n htmlElm.classList.remove(\"global-search--opening\");\n _searchOverlayModal.setAttribute('inert', 'true');\n setTimeout(function() {\n htmlElm.classList.remove('search-box__modal--open');\n }, 500);\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.StickyHeaderV2 = function ($elem) {\n var allowSticky = allowStickyHeaderV2();\n var isIE = GT.isIE();\n var onT45 = isT45V2();\n let topHeaderWrapper,\n isAnimating = false,\n scrollTimers = [],\n lastScrollTop = 0,\n isScrollDown = null,\n htmlElm = document.documentElement;\n\n if (allowSticky) {\n var header = document.querySelector('header');\n var $stickyHeaderContainer = $(header).find('.header-top');\n var $headerLang = $stickyHeaderContainer.find('.header__lang');\n var $globalReach = $(header).find('.global-reach');\n var $globalReachToggle = $(header).find('.header__global-reach-toggle');\n var $searchIcon = $stickyHeaderContainer.find('.header__search button.icon-link');\n var $dropdownArrow = $stickyHeaderContainer.find('i.lang-dropdown-arrow');\n var headerOriginalHeight = undefined;\n var topBannerMSGElm = document.querySelector(\".header-message-top-banner-wrapper\"),\n headerElmHeight = 0;\n var sticky = 0; \n\n var isPageTooShort = checkIfPageTooShort();\n if (!isPageTooShort) {\n GT.listFunctionsTriggerInScrollEvent.doStickyHeader = doSticky;\n doSticky();\n } else {\n $('.mega__level--2').unwrap();\n }\n $(window).on('user-translate', onUserTranslate);\n $(window).on('resize', GT.debounce(function(){\n onUserResize();\n }, 200));\n\n bindOutsideClick();\n prepareGlobalReach();\n prepareLangDropdown();\n }\n\n function isMessageTopBannerExist() {\n return $(header).find('.header-message-top-banner-wrapper').length;\n }\n\n function isMobileWidth() {\n return GT.wWidth < 961;\n }\n \n function doSticky() {\n if (isMobileWidth() || htmlElm.classList.contains(\"global-reach--opening\")) {\n return;\n } else { \n let pageYOffset = htmlElm.scrollTop;\n\n if(!isAnimating) {\n if (pageYOffset > lastScrollTop)\n isScrollDown = true;\n else\n isScrollDown = false;\n }\n\n if(!isAnimating) {\n if (pageYOffset > 10){\n if (topBannerMSGElm && isIE) topHeaderWrapper.style.paddingTop = \"0\";\n if (!header.classList.contains('animate')) header.classList.add(\"animate\");\n if (!header.classList.contains('sticky')) {\n header.classList.add(\"sticky\");\n document.body.classList.add(\"header-is-sticking\");\n \n if (isIE) header.style.height = \"80px\";\n isAnimating = true;\n setTimeout(function(){\n isAnimating = false;\n }, 200)\n }\n } else if (pageYOffset <= 0 && !isScrollDown && !isAnimating && header.classList.contains(\"sticky\")){\n header.classList.remove(\"sticky\");\n document.body.classList.remove(\"header-is-sticking\");\n if (topBannerMSGElm && isIE) topHeaderWrapper.style.paddingTop = \"32px\";\n if (isIE) header.style.height = headerElmHeight + \"px\";\n isAnimating = false;\n }\n } \n \n if(scrollTimers.length) {\n scrollTimers.forEach(function(timer){\n clearTimeout(timer);\n })\n scrollTimers = [];\n }\n\n let tmpTimer = setTimeout(function(){\n if(header.classList.contains('sticky') && pageYOffset <= 1) {\n htmlElm.scrollTop = 1;\n }\n }, 100);\n scrollTimers.push(tmpTimer);\n lastScrollTop = pageYOffset <= 0 ? 0 : pageYOffset; // For Mobile or negative scrolling\n \n if ($menuLink) {\n $menuLink.removeClass('open')\n }\n if ($headerLang.length > 0) {\n $stickyHeaderContainer.css('overflow', 'hidden');\n $headerLang.removeClass('open');\n $originalLogo.removeClass('hidden');\n }\n }\n }\n\n function onUserTranslate() {\n setTimeout(function() {\n checkIfPageTooShort();\n }, 1000);\n }\n\n function onUserResize() {\n setTimeout(function() {\n var allowSticky = allowStickyHeaderV2();\n if (allowSticky) {\n checkIfPageTooShort();\n\n header.style.transform = \"translateY(0)\";\n if(isMobileWidth()) {\n header.classList.remove(\"sticky\");\n document.body.classList.remove(\"header-is-sticking\");\n \n if(header.classList.contains('will-change-to-insight-header')) {\n header.classList.remove(\"insight-sticky\");\n header.classList.remove(\"insight-header\");\n } else {\n header.classList.remove(\"sticky\");\n }\n\n } else {\n doSticky();\n }\n }\n\n }, 100);\n }\n\n function prepareLangDropdown() {\n if ($headerLang.length === 0) {\n $(header).addClass('no-language');\n return;\n }\n var $languageLinks = $headerLang.find('.site-language').not('.active');\n if ($languageLinks.length === 0) {\n $(header).addClass('no-language');\n return;\n }\n var $activeLang = $headerLang.find('.header-lang__dropdown');\n if($activeLang.hasClass('active')) {\n var languageLinkHtml = '';\n $.each($languageLinks, function(index, element) {\n languageLinkHtml += '
  • ' + element.outerHTML + '
  • ';\n });\n $activeLang.after('')\n $activeLang.on('click', function() {\n GT.hideHyperLinkAnimation();\n toggleLangDropdown();\n });\n }\n }\n\n function prepareGlobalReach() {\n if ($globalReach.length > 0) {\n if ($dropdownArrow.length > 0) {\n $dropdownArrow.on('click', function(e) {\n if ($headerLang.length > 0) {\n toggleLangDropdown();\n }\n });\n }\n }\n }\n\n function bindOutsideClick() {\n $(document).on('click', function(e) {\n if (e.target) {\n if ($menuLink &&\n !$(e.target).hasClass('sub-menu') &&\n !$(e.target).hasClass('menu-link') &&\n !$(e.target).hasClass('nav-link') &&\n !$(e.target).hasClass('remove_file') &&\n !(e.target.parentNode && e.target.parentNode.parentNode && e.target.parentNode.parentNode.className == \"nav-link\" && e.target.nodeName == \"FONT\")) {\n $menuLink.removeClass('open');\n }\n\n if ($headerLang.length > 0 && !$(e.target).hasClass('.header__lang') &&\n !$(e.target).closest('.header__lang').length > 0 && !$(e.target).hasClass('ic-lang-dropdown-arrow')) {\n $headerLang.removeClass('open');\n }\n }\n });\n }\n\n function toggleLangDropdown() {\n if ( ($(header).hasClass('sticky')) || (onT45) ) {\n if ($headerLang.hasClass('open')) {\n $headerLang.removeClass('open');\n $stickyHeaderContainer.css('overflow', 'hidden');\n } else {\n $originalLogo.addClass('hidden');\n $stickyHeaderContainer.css('overflow', 'visible');\n $headerLang.addClass('open');\n }\n }\n }\n\n function bindTabEvent(lastMenuItem) {\n var $lastMenuItem = lastMenuItem;\n var $subMenuItems = $lastMenuItem.find('.sub-menu a');\n var $nav = $(header).find('nav');\n $nav.on('keydown', function(e) {\n if (e.keyCode == 9 && !e.shiftKey) {\n var activeEl = document.activeElement;\n if (activeEl && ($(activeEl).closest('nav').length === 0 || $(activeEl).hasClass('mega')) &&\n $(activeEl).closest('.header__utils').length === 0) {\n e.preventDefault();\n var $firstLink = $nav.find('a.nav-link').first();\n var $miniLogo = $('.mini-logo');\n $firstLink.off('keydown');\n $miniLogo.on('keydown', function(e2) {\n if (e2.keyCode == 9 && !e2.shiftKey) {\n e2.preventDefault();\n $firstLink.focus();\n }\n });\n $firstLink.off('keydown');\n $firstLink.on('keydown', function(e3) {\n if (e3.shiftKey && e3.keyCode == 9) {\n e3.preventDefault();\n $miniLogo.focus();\n }\n });\n $miniLogo.focus();\n }\n }\n });\n $lastMenuItem.on('keydown', function(e) {\n if ($(e.target).closest('.sub-menu').length !== 0) return;\n if (e.keyCode == 9 && !e.shiftKey && $(header).hasClass('sticky')) {\n e.preventDefault();\n if (!$(this).hasClass('open')) {\n if ($loginLink.length > 0) {\n $loginLink.focus();\n return;\n } else if ($headerLang.length > 0) {\n $headerLang.find('span.active').focus();\n return;\n } else if ($globalReachToggle.length > 0) {\n var $button = $globalReachToggle.find('.global-reach__toggle');\n $button.focus();\n return;\n }\n } else {\n var $subMenuLink = $subMenuItems.first();\n $subMenuLink.focus();\n }\n }\n });\n if ($subMenuItems.length > 0) {\n $subMenuItems.on('keydown', function(e) {\n if (!e.shiftKey && e.keyCode == 9) {\n e.preventDefault();\n var index = $subMenuItems.index($(this));\n if (index !== $subMenuItems.length - 1) {\n $subMenuItems.eq(index + 1).focus();\n } else {\n if ($loginLink.length > 0) $loginLink.focus();\n else if ($headerLang.length > 0) $headerLang.focus();\n else if ($globalReachToggle.length > 0) {\n var $button = $globalReachToggle.find('.global-reach__toggle');\n $button.focus();\n }\n }\n }\n });\n }\n if ($loginLink.length > 0) {\n $loginLink.on('keydown', function(e) {\n if (e.shiftKey && e.keyCode == 9 && $(header).hasClass('sticky')) {\n e.preventDefault();\n if ($lastMenuItem.length > 0) {\n var $link = $lastMenuItem.find('a');\n var $span = $lastMenuItem.find('span');\n if ($link.length > 0) $link.focus();\n if ($span.length > 0) $span.focus();\n }\n }\n if (e.keyCode == 9 && !e.shiftKey && !$(header).hasClass('sticky')) {\n if ($headerLang.length > 0) {\n e.preventDefault();\n var $languageLinks = $headerLang.find('.site-language');\n for (var i = 0; i < $languageLinks.length; i++) {\n var languageLink = $languageLinks.eq(i);\n if (!languageLink.parent().parent().hasClass('lang-dropdown')) {\n languageLink.focus();\n languageLink.off('keydown');\n languageLink.on('keydown', function(e2) {\n if (e2.shiftKey && e2.keyCode == 9 && !$(header).hasClass('sticky')) {\n e2.preventDefault();\n $loginLink.focus();\n }\n });\n break;\n }\n }\n\n }\n }\n });\n }\n\n if ($headerLang.length > 0) {\n var $headerLangActive = $headerLang.find('span.active');\n $headerLangActive.on('keydown', function(e) {\n if (e.keyCode == 9 && $(header).hasClass('sticky')) {\n e.preventDefault();\n if (e.shiftKey) {\n if ($loginLink.length > 0) {\n $loginLink.focus();\n } else if ($lastMenuItem.length > 0) {\n var $link = $lastMenuItem.find('a');\n var $span = $lastMenuItem.find('span');\n if ($link.length > 0) $link.focus();\n if ($span.length > 0) $span.focus();\n }\n } else {\n if (!$headerLang.hasClass('open')) {\n $globalReachToggle.find('.global-reach__toggle').focus();\n } else {\n var $firstLang = $headerLang.find('ul.lang-dropdown a').first();\n var $lastLang = $headerLang.find('ul.lang-dropdown a').last();\n $firstLang.focus();\n $lastLang.on('keydown', function(e2) {\n if (e2.keyCode == 9 && !e2.shiftKey) {\n e2.preventDefault();\n $globalReachToggle.find('.global-reach__toggle').focus();\n }\n });\n }\n }\n }\n });\n }\n\n if ($globalReachToggle.length > 0) {\n var $button = $globalReachToggle.find('.global-reach__toggle');\n $button.on('keydown', function(e) {\n if ( ( e.keyCode == 9 && $(header).hasClass('sticky') ) || ( e.keyCode == 9 && onT45) ) {\n if (e.shiftKey) {\n e.preventDefault();\n if ($headerLang.length > 0) {\n if (!$headerLang.hasClass('open')) {\n $headerLang.find('span.active').focus();\n } else {\n var $lastLang = $headerLang.find('ul.lang-dropdown a').last();\n $lastLang.focus();\n }\n } else if ($loginLink.length > 0) {\n $loginLink.focus();\n } else if ($lastMenuItem.hasClass('open')) {\n $lastMenuItem.find('.sub-menu a').last().focus();\n } else {\n $lastMenuItem.focus();\n }\n }\n }\n });\n }\n\n if ($searchIcon.length > 0) {\n $searchIcon.on('keydown', function(e) {\n if (e.keyCode == 9 && !e.shiftKey && $(header).hasClass('sticky')) {\n e.preventDefault();\n focusNextElement();\n }\n });\n }\n\n }\n\n function isRTL() {\n return $('body').hasClass('RTL');\n }\n\n function appendStyleDom(style, id) {\n if (!id) id = new Date().getTime();\n else {\n var $existingStyle = $('#' + id);\n if ($existingStyle.length > 0) $existingStyle.remove();\n }\n var styleDom = $('');\n $('body').append(styleDom);\n }\n\n function checkIfPageTooShort() {\n var id = 'gt-head';\n var $existingStyle = $('#' + id);\n if ($existingStyle.length > 0) $existingStyle.remove();\n var documentHeight = $(document).height();\n var windowHeight = window.screen.height;\n var $topWrapper = $(header).find('.header-top-wrapper');\n headerOriginalHeight = $topWrapper.height();\n\n if (headerOriginalHeight < 192) headerOriginalHeight = 192;\n else if (headerOriginalHeight > 200 && headerOriginalHeight < 257) headerOriginalHeight = 256;\n var headerNewHeight = 80;\n if (allowSticky) {\n var style = '.mega__level--1 .nav-link[data-sub=\"true\"]:hover:before {height: ' + $(header).find('.mega__level--1').height() + 'px}';\n if(isIE)\n style += ' header .mega-wrapper {top: ' + headerOriginalHeight + 'px;}';\n appendStyleDom(style, id);\n }\n\n if(document.querySelector(\".event-registration-page-v2\"))\n return false;\n else\n return documentHeight - (headerOriginalHeight - headerNewHeight) <= windowHeight;\n }\n\n function focusNextElement() {\n var focussableElements = 'a:not([disabled]), button:not([disabled]), input[type=text]:not([disabled]), [tabindex]:not([disabled]):not([tabindex=\"-1\"])';\n if (document.activeElement) {\n var focussable = Array.prototype.filter.call(document.querySelectorAll(focussableElements),\n function(element) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element === document.activeElement\n });\n var index = focussable.indexOf(document.activeElement);\n while (index < focussable.length - 1) {\n var nextElement = $(focussable[index + 1]);\n if (nextElement.closest('nav').length == 0) {\n focussable[index + 1].focus();\n break;\n }\n index++;\n }\n }\n }\n};\n\nfunction allowStickyHeaderV2() {\n var enableSticky = $('.main-header').data('sticky') || $('.insight-page header').hasClass(\"insight-sticky\");\n return enableSticky;\n}\n\nfunction isT45V2() {\n return document.querySelector(\".insight-page header\") && document.querySelector(\".insight-page header\").classList.contains(\"insight-sticky\");\n}\n\nGT.Reach = function() {\n let htmlElm = document.firstElementChild;\n let globalReachElm = htmlElm.querySelector(\".global-reach\");\n if (!globalReachElm) return;\n let isInited = false;\n let globalReachToggleBtn = GT.headerElm.querySelector(\".global-reach__toggle\");\n let globalReachTabElms = globalReachElm.querySelectorAll('.reach-region-selector li');\n let isDesktop = GT.isDesktopView();\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(GT.wWidth >= 992) {\n if(isDisable) {\n typeof isNav3 != \"undefined\" && GT.Overlays.showHeaderOverlay();\n htmlElm.classList.add(\"global-reach--opening\");\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 htmlElm.classList.remove(\"global-reach--opening\");\n setTimeout(() => {\n typeof isNav3 != \"undefined\" && GT.Overlays.hideHeaderOverlay();\n }, 350);\n }\n }\n\n if(!isDisable)\n setTimeout(e => {\n globalReachToggleBtn?.focus();\n }, 1000)\n }\n\n function calcActivatedTabHeight() {\n GT.headerElm.style.setProperty(\"--globalreach-height\", globalReachElm.querySelector(\".global-reach__list.active\")?.offsetHeight + \"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 const globalReachHeadTitle = globalReachElm.querySelector('.global-reach__head .title');\n\n globalReachHeadTitle?.addEventListener('keydown', tabify);\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 let closeMegaNav2Btn = document.querySelector(\".close-mega__menu\");\n if(GT.isNav2 && closeMegaNav2Btn && GT.wWidth >= GT.breakPoints.tablet_lg) {\n closeMegaNav2Btn.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 globalReachTabElms.forEach(tabItem => {\n if(!isInited) {\n tabItem.addEventListener(\"click\", tabify);\n tabItem.addEventListener(\"keydown\", tabify);\n }\n \n if(GT.isMobileCached) {\n tabItem.setAttribute(\"tabindex\", 0);\n tabItem.setAttribute(\"aria-expanded\", false);\n } else {\n tabItem.setAttribute(\"role\", \"tab\");\n tabItem.setAttribute(\"aria-selected\", false);\n tabItem.removeAttribute(\"aria-expanded\");\n tabItem.setAttribute(\"tabindex\", -1);\n\n if(tabItem.classList.contains(\"active\")) {\n tabItem.setAttribute(\"tabindex\", 0);\n tabItem.setAttribute(\"aria-selected\", true);\n tabItem.closest(\"ul\").setAttribute(\"role\", \"tablist\");\n if(!isInited) {\n setTimeout(() => {\n TabPanelActionHandler(tabItem.closest(\"ul\"));\n }, 500);\n }\n }\n }\n })\n\n\n if(!isInited) {\n GT.headerElm.classList.add(\"fetching\");\n isInited = true;\n \n globalReachElm.querySelector('.global-reach__close').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 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 }, 100);\n GT.GTMGlobal.megaMenu();\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\n disableScroll(true);\n setTimeout(function() {\n globalReachElm.querySelector(\".global-reach__head a\")?.focus();\n linkHandle();\n }, 1000);\n }\n });\n\n }\n\n\n function tabify(e) {\n if (e.key != \"Tab\") {\n e.preventDefault();\n }\n\n if (e.key == \"Tab\" && isDesktop) {\n const target = e.target;\n const activeLinks = globalReachElm.querySelectorAll('.global-reach__list.active .local-site-link');\n const lastActiveLink = activeLinks[activeLinks.length - 1];\n\n if (e.shiftKey && target.closest('.global-reach__head') && lastActiveLink) {\n e.preventDefault();\n lastActiveLink.focus();\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 setTimeout(() => {\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 \n if (listPanelItem.classList.contains(activeEl)) {\n listPanelItem.classList.add(\"active\");\n calcActivatedTabHeight();\n if(GT.isScreenReader && GT.isMobileCached)\n setTimeout(e => {\n document.querySelector(\".global-reach__list.active a\")?.focus();\n }, 500)\n }\n })\n }, GT.isMobileCached ? 500 : 0)\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) {\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 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.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":["allowStickyHeaderV2","$","data","hasClass","isT45V2","document","querySelector","classList","contains","GT","MobileNavigationV2","$element","let","globalReachElm","back2mainElm","headerTileElm","globalSearch","toggleElm","gReachText","megaNavWrapper","defaultPossitionMobileMenu","topPosition","getBoundingClientRect","y","_primaryNav","elmHeight","isMobileView","style","height","maxHeight","this","init","hamburger","headerMenu","navToggle","doToggle","e","isClose","preventDefault","setTimeout","add","remove","closest","addEventListener","firstElementChild","removeAttribute","setAttribute","onPageNav","lockScrollBehindOverlay","touchMoveFncList","preventTouchMoveOnHeaderMenu","target","lv3OpeningItem","lv2OpeningItem","toggle","querySelectorAll","forEach","elm","idx","innerText","activeElm","click","clickEvt","isMobileCached","focus","nav","navItems","secondNavItems","backButton","navSlideLeft","wWidth","breakPoints","tablet_lg","navSlideLeft2x","navSlideRight","openedBleed","item","windowResizeFncList","mobileNav2","window","MegaNavigationV2","isNav3","_activeMenuTier2","_linkLv1","_level2","_closeMegaIcons","_megaWrapper","desktopMegaMenuV2","closeSecondary","registerEvtForOpeningSecondary","setMegaPossition","promoteArticle","i","length","keypressNav","_featuredArticles","call","_bleedItems","_bleed","openSecondary","t","htmlElm","_key","_extraMenu","_globalSearch","blur","_bleedItem","getAttribute","_navLinksLevl2","_navLink2","openTertiery","throttle","apply","arguments","highlightElm","selectedElms","selectedElm","_currentBleedItem","isTabletView","groupLinkElements","_defaultSelectedItem","_firstSelected","megaLevel3Id","_megaLevl3","_dataFeatured","_megaLevl3Item","_parentMenu","_megaLevl3Items","_this","parentListMenu","listMenus","parentNode","_featuredMega","_promoteArticles","_promoteArticle","_articleHeader","_articleContents","clampArticle","handleNavOpenEvents","isTablet","type","lv3item","keycode","keyCode","which","currentTarget","_isLastLv3Item","dataset","id","shiftKey","currentBleedLinks","lastLink","_openBleed","matches","previousLIElm","previousElementSibling","_parent","_menuContainerLv3","nextElementSibling","parentElement","_parentItem","_parentBleed","currentMegaLinkLv2","nextMegaLinkLv2","_navLevel1","removeEventListener","_subMenuLinks","innerWidth","documentElement","clientWidth","body","_headerUtils","_topBannerMessage","_mainHeader","_headerUtilHeight","_topBannerMessageHeight","_mainHeaderHeight","_topPos","_megaMenuMaxHeight","bleed","langDropdownElm","headerElm","TopBannerMessageForNoStickyHeader","$elem","isStickyDisabled","header","handleTopBannderMessageOnMobile","find","width","css","ready","onscroll","onwheel","onresize","PrimaryNavV2","triggerFnListAfterMainLogoLoaded","prepareSubMenuLink","on","$menuLink","className","nodeName","removeClass","Overlays","hideHeaderOverlay","initSearchBox","_searchButton","_closeButton","isIOS","_humbergerMenu","showHeaderOverlay","_searchField","isMobile","isLargeDesktopView","submit","submenuTimer","forceRecheck","$menu","$menuItem","appendMenuIndex","lastMenuItem","hasExtraItems","visibleElms","hideHyperLinkAnimation","el","checkElmVisible","push","timer","clearTimeout","visibleElmsLength","index","appendSubMenu","extraMenuItemsHtml","element","innerHTML","insertAdjacentHTML","morelabel","navLink","menuLinkItem","cursorElm","SearchOverlayV2","_searchForm","_searchOverlayModal","_searchboxInput","_submitButton","_popularSearchResults","_prevSuggestionResults","_searchResultsContainer","_isDisabledSearchOverlay","_isDisabledPopularSearch","_isDisabledPreviousSearch","_userPreviousSearchesData","_oldSearchKeyword","_INPUT_START_TYPING_LENGTH","closeAction","closeSearchOverlay","handleFirstFocusableElm","_firstFocusable","getFirstFocusableVisible","initialized","scrollY","processPreviousSearch","isDisabledPreviousSearch","_searchPageUrl","_previousSearchTitle","_userPreviousSearches","JSON","parse","localStorage","getItem","_previousSearchHtml","_previousSearchesSection","_keyword","encodeURIComponent","replace","getElementById","_wrapPreviousSearchesHtml","createElement","insertBefore","firstChild","toLowerCase","isDisabledPopularSearch","openGlobalSearch","_globalReach","_timeout","toggleSearchModal","_isShow","GTMGlobal","escapeQueryChars","url","match","dec","encodeURI","getSuggestionSearch","_searchTerm","_suggestionSearchEndpoint","ajax","success","trim","error","xhr","console","_searchKeyword","value","getPopularSearch","_popularSearchEndpoint","recentIds","Cookies","getCookie","searchOverlayLinks","_closeModal","activeElement","key","isScreenReader","debounce","_inputValue","_searchkeyword","processSearchKeywordBeforeSubmit","dataLayer","event","eventAction","eventLabel","UtilityNavigation","elem","pressESCToClose","langDropdown","btnToggle","itemsLength","items","headerLangBtn","StickyHeaderV2","$stickyHeaderContainer","$headerLang","headerOriginalHeight","topBannerMSGElm","$languageLinks","$activeLang","languageLinkHtml","allowSticky","isIE","onT45","isAnimating","scrollTimers","lastScrollTop","isScrollDown","isMobileWidth","doSticky","pageYOffset","scrollTop","topHeaderWrapper","paddingTop","headerElmHeight","tmpTimer","$originalLogo","toggleLangDropdown","addClass","checkIfPageTooShort","styleDom","$existingStyle","documentHeight","windowHeight","screen","$topWrapper","Date","getTime","append","$globalReach","$dropdownArrow","undefined","unwrap","listFunctionsTriggerInScrollEvent","doStickyHeader","transform","not","each","outerHTML","after","Reach","isInited","globalReachToggleBtn","globalReachTabElms","isDesktop","isDesktopView","inited","globalReachHeadTitle","tabify","closeMegaNav2Btn","isNav2","disableScroll","tabItem","TabPanelActionHandler","calcActivatedTabHeight","httpService","HttpService","getHtmlContent","globalReachLink","Content-type","then","response","globalReachRegionsMoileLV1Elm","megaMenu","catch","finally","parentElm","isDisable","preventHeaderFromFlickeringWhileBodyHeightIsChanging","setProperty","offsetHeight","activeLinks","lastActiveLink","currentTab","activeEl","tab","listPanelItem","globalReach","domContentLoadedFncList","Initiator","__object","__$tmp","settings","nojquery","test","constr","exp","warn","GTCookies","cookieNotify","GTObjects","FakeHyperlink","isV1GT","map","freezeVp","triggerFunctionsAfterMainLogoLoaded","Object","keys","k","clientHeight","location","hash","scrollTo","topBannerMsgElm","mainHeaderElm","wHeight","innerHeight","bodyWidth","isTouchDevice","fnc","log","initTabPanelActionHandler","desktopLogo","onload","onerror","complete","mainHeaderElmHeight","isOrientationChange","orientation","recalculateHeaderHeight","stickyHeaderOffsetTop","topBannerMsgElmHeight","passive"],"mappings":"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"}