{"version":3,"sources":["blocks/o-masthead.js"],"names":["define","utility","mNotificationBadge","oMastheadFn","settings","closeMenu","FRAMEWORK","locale","oMasthead","closeText","loadingText","animationSpeed","busy","init","wholePageElm","elm","closest","menuId","makeId","menuLinkHtml","menuText","classList","add","currentBreakpoint","current","mastheadElm","querySelector","logoElm","navContainerElm","pageWrapperElm","wholeNavElm","navLinkElm","isNode","navLinkHidden","remove","navElm","getAttribute","skipLinksElm","prepend","htmlStringToElement","append","orphanPrimaryNavElm","navSectionHeadingLinks","querySelectorAll","navSubSections","navBasicLinks","processSkipLink","topBarElm","countryLinkElm","mastheadNotification","mastheadNotificationInstance","processOtherSkipLinks","allSkipLinks","window","innerWidth","changeInProgress","extraContentAreaElm","document","setupSiteSwitcher","insertAdjacentElement","setupLink","loginLinkElm","loggedInLinkElm","searchLinkElm","narrowMenu","positionNav","loggedInElm","loginElm","searchElm","buildPrimaryNav","displayType","ariaHidden","instantHideShow","element","hide","fadeOnly","style","opacity","validHref","linkName","loginLinkHidden","queryString","loggedInLinkName","hasAttribute","urlAnchorRegExp","test","loggedInLinkHidden","loginLinkUrl","searchInputElm","searchLinkHidden","removeAttribute","parentNode","insertBefore","scrollTargetHref","linkElm","substring","scrollTarget","searchLinkUrl","setAttribute","forEach","siteSwitcherLink","siteSwitcherUrl","e","preventDefault","siteSwitcherContent","top","timings","t350ms","matches","validSiteSwitcherHref","updateSiteSwitcherText","toggleSiteSwitcher","siteSwitcherContentInner","children","setAttributes","role","aria-controls","replace","aria-expanded","hasSiteSwitcher","siteSwitcherOpen","close","fade","variant","setTimeout","addEventListener","slideToggle","buttonElm","contains","callback","complete","t200ms","t300ms","show","selectedOption","target","siteName","siteSwitcherTabbing","shiftKey","allLinksInSiteSwitcher","innerHTML","switcherInitial","disabled","getVisibleLinks","switcherSelection","listener","key","focus","visibleLinkElm","allNonDisabledLinks","length","isVisible","currentLinkElm","visibleLinks","bindEvents","wait","newBreakpoint","resetPosition","allLinks","targetElm","isButton","push","debounce","newWindowWidth","resizeRedraw","windowWidth","smallTag","onResize","reDraw","linkHref","tempAreaElm","setFocusFunc","tagName","match","isMastheadButton","test2","sizeNavElements","areaElm","tempAreaHeight","offsetHeight","contentHref","cloneNode","status","tempAreaPos","offset","timeoutFn","windowHeight","innerHeight","windowPos","smoothScroll","t150ms","setupCountryLink","setupCloseButton","buildPrimaryNavBasic","sectionId","sectionTitle","sectionHeadingElm","selectedSectionClass","adjustNavPositions","currentSectionArea","wrapInner","countryElm","subSectionId","subSectionContentElm","subSectionLinkElm","currentSubSectionElm","response","minHeight","convertToPx","t500ms","newNavElm","landingPageLinkTop","sectionAllLinkElm","section","allColumns","basicLink","buttonCloseFunc","accordionSubSections","buttonHtml","allNavSectionDescriptions","closeButtonBottom","sectionOpen","thisLinkElm","testLinkElm","currentSectionUrl","checkAllLinks","columnContainer","linkOpen","open","sameSection","transitionBetweenMenus","test1","openPart2","textContent","insertAdjacentHTML","loggedInLinkUrl","closeButtonTop","wrap","openSection","vars","checkSection","testLinkUrl","countryLinkUrl","transitionSection","animationDirection","currentHeight","newHeight","thisAreaElm","display","customStartHeight","removeProperty","waitForFade","closeAll","closeSections","closeSearchLoginLoggedIn","closeOverlay","openSectionPart2","overlapMargin","alignDescriptions","sectionElm","linkSelector","openAreaElm","openLinkElm","sectionLinkElm","navigationInteval","sectionContentElm","item","clearInterval","windowOffset","animationLoops","repositionNavigation","newAnimationLoops","sectionOffset","newWindowOffset","onKeydown","hasHeaderLink","currentIndex","allHeaderLinks","prevLinkElm","visibleNavLinks","el","visibleMenuLinks","concat","lastHeaderLinkElm","pageYOffset","keydownHeaderLink","Number","keydownNotBodyLink","event","slice","call","filter","tabbableLink","breakpoint","loginOpen","bodyLinkElm","listItemElm","tabsShowing","tabNowShowing","positionNavPart2","indexOf","visibleDescriptions","start","rowLoop","mediumTag","descriptionsInRow","end","findTallestDescription","thisRowElm","removeClass","menuOpen","maxMenuHeight","itemElm","positionNavPart3","initInstance","descriptionElm","i","rows","Math","ceil","rowElm","fitNavigation","allClasses"],"mappings":"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","file":"blocks/o-masthead.js","sourcesContent":["/* eslint-disable max-lines */\r\n// eslint-disable-next-line max-lines-per-function\r\ndefine( [ 'utility', 'blocks/m-notification-badge' ], function run( utility, mNotificationBadge ) {\r\n\t'use strict';\r\n\r\n\tvar oMastheadFn = {\r\n\r\n\t\tsettings : {\r\n\t\t\tcloseMenu : FRAMEWORK.locale.settings.oMasthead.closeMenu,\r\n\t\t\tcloseText : FRAMEWORK.locale.settings.oMasthead.closeText,\r\n\t\t\tloadingText : FRAMEWORK.locale.settings.oMasthead.loadingText,\r\n\t\t\tanimationSpeed : FRAMEWORK.timings.current.t350ms,\r\n\t\t\tbusy : false,\r\n\t\t},\r\n\r\n\t\t// eslint-disable-next-line complexity\r\n\t\tinit : function( elm ) {\r\n\t\t\t// Get the wrapping div for the page.\r\n\t\t\tvar wholePageElm = elm.closest( '.l-whole-page' ),\r\n\t\t\t\tmenuId = utility.makeId( 'nav' ),\r\n\t\t\t\tmenuLinkHtml = '
  • ' + FRAMEWORK.locale.settings.oMasthead.menuText + '
  • ',\r\n\t\t\t\tskipLinksElm;\r\n\r\n\t\t\t// Check if the masthead has already been setup. If so do nothing more.\r\n\t\t\tif ( !wholePageElm.classList.contains( 'js-o-masthead' ) ) {\r\n\t\t\t\t// Add class to page so that setup is not run again.\r\n\t\t\t\twholePageElm.classList.add( 'js-o-masthead' );\r\n\r\n\t\t\t\t// Store all common element searches as settings for quick reuse\r\n\t\t\t\telm.oMasthead = {\r\n\t\t\t\t\tsettings : {\r\n\t\t\t\t\t\tcurrentBreakpoint : null,\r\n\t\t\t\t\t\tcurrent : null,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t\telm.oMasthead.settings.wholePageElm = wholePageElm;\r\n\t\t\t\telm.oMasthead.settings.mastheadElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead' );\r\n\t\t\t\telm.oMasthead.settings.logoElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead-logo' );\r\n\t\t\t\telm.oMasthead.settings.navContainerElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead__navigation-container' );\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm = elm.oMasthead.settings.wholePageElm.querySelector( '.l-page-wrapper' );\r\n\t\t\t\telm.oMasthead.settings.wholeNavElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead-navigation' );\r\n\t\t\t\telm.oMasthead.settings.navLinkElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead__menu-link a' );\r\n\t\t\t\tif ( utility.isNode( elm.oMasthead.settings.navLinkElm ) ) {\r\n\t\t\t\t\telm.oMasthead.settings.navLinkHidden = elm.oMasthead.settings.navLinkElm.querySelector( '.u-hidden--visually' );\r\n\t\t\t\t\tif ( elm.oMasthead.settings.navLinkHidden ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.navLinkHidden.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telm.oMasthead.settings.navElm = elm.oMasthead.settings.wholePageElm.querySelector( elm.oMasthead.settings.navLinkElm.getAttribute( 'href' ) );\r\n\t\t\t\t} else if ( elm.oMasthead.settings.wholeNavElm ) {\r\n\t\t\t\t\tskipLinksElm = elm.oMasthead.settings.mastheadElm.querySelector( '.o-masthead__skip-links' );\r\n\t\t\t\t\tif ( skipLinksElm ) {\r\n\t\t\t\t\t\tskipLinksElm.prepend( utility.htmlStringToElement( menuLinkHtml ) );\r\n\t\t\t\t\t\telm.oMasthead.settings.navLinkElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead__menu-link a' );\r\n\t\t\t\t\t\t// Create a dummy primary nav element and append it to the masthead navigation area\r\n\t\t\t\t\t\telm.oMasthead.settings.navElm = utility.htmlStringToElement( '
    ' );\r\n\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.querySelector( '.l-content-container' ).append( elm.oMasthead.settings.navElm );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Do nothing\r\n\t\t\t\t}\r\n\t\t\t\telm.oMasthead.settings.orphanPrimaryNavElm = elm.oMasthead.settings.wholePageElm.querySelector( '.m-primary-navigation' );\r\n\t\t\t\telm.oMasthead.settings.navSectionHeadingLinks = elm.oMasthead.settings.wholePageElm.querySelectorAll( '.m-primary-navigation__section-heading a' );\r\n\t\t\t\telm.oMasthead.settings.navSubSections = [];\r\n\t\t\t\telm.oMasthead.settings.navBasicLinks = elm.oMasthead.settings.wholePageElm.querySelectorAll( '.m-primary-navigation__link-list a' );\r\n\r\n\t\t\t\toMastheadFn.processSkipLink( elm, '.o-masthead__login-link a', 'login' );\r\n\t\t\t\toMastheadFn.processSkipLink( elm, '.o-masthead__logged-in-link a', 'loggedIn' );\r\n\t\t\t\toMastheadFn.processSkipLink( elm, '.o-masthead__search-link a', 'search' );\r\n\r\n\t\t\t\telm.oMasthead.settings.topBarElm = elm.oMasthead.settings.wholePageElm.querySelector( '.m-site-country-selection' );\r\n\t\t\t\tif ( utility.isNode( elm.oMasthead.settings.topBarElm ) ) {\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--has-top-bar' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\telm.oMasthead.settings.countryLinkElm = elm.oMasthead.settings.wholePageElm.querySelector( '.m-site-country-selection__country a' );\r\n\t\t\t\telm.oMasthead.settings.countryLinkUrl = '';\r\n\r\n\t\t\t\telm.oMasthead.settings.mastheadNotification = elm.oMasthead.settings.wholePageElm.querySelector( '.m-site-country-selection__notification' );\r\n\t\t\t\tif ( elm.oMasthead.settings.mastheadNotification ) {\r\n\t\t\t\t\telm.oMasthead.settings.mastheadNotificationInstance = mNotificationBadge.initInstance( elm.oMasthead.settings.mastheadNotification.querySelector( '.m-notification-badge' ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\telm.oMasthead.settings.allSkipLinks = elm.oMasthead.settings.wholePageElm.querySelectorAll( '.o-masthead-main-content a, .o-masthead__skip-links a' );\r\n\t\t\t\toMastheadFn.processOtherSkipLinks( elm );\r\n\t\t\t\telm.oMasthead.settings.extraContentAreaElm = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead__extra-content' );\r\n\t\t\t\tif ( utility.isNode( elm.oMasthead.settings.extraContentAreaElm ) ) {\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--has-extra-content' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\telm.oMasthead.settings.currentBreakpoint = utility.getBreakpoint( elm );\r\n\t\t\t\telm.oMasthead.settings.windowWidth = window.innerWidth;\r\n\r\n\t\t\t\telm.oMasthead.settings.changeInProgress = false;\r\n\r\n\r\n\t\t\t\t// If no navigation area has been included because there is no login, search or menu then add one to the page before the footer\r\n\t\t\t\tif ( utility.isNode( elm.oMasthead.settings.wholeNavElm ) ) {\r\n\t\t\t\t\telm.oMasthead.settings.wholeNavElm.classList.add( 't-accent-light' );\r\n\t\t\t\t\telm.oMasthead.settings.wholeNavElm.classList.add( 't-accent-light--1' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.oMasthead.settings.wholeNavElm = utility.htmlStringToElement( '
    ' );\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.querySelector( '.m-footer' ).insertAdjacentElement( 'beforebegin', elm.oMasthead.settings.wholeNavElm );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move Navigation to just below the masthead to maintain content ordering for when CSS is off but JavaScript is on\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm.prepend( elm.oMasthead.settings.wholeNavElm );\r\n\t\t\t\tif ( utility.isNode( document.querySelector( '.framework-wrapper' ) ) ) {\r\n\t\t\t\t\tutility.wrap( elm.oMasthead.settings.wholeNavElm, utility.htmlStringToElement( '
    ' ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\telm.oMasthead.settings.narrowMenu = false;\r\n\r\n\t\t\t\toMastheadFn.setupSiteSwitcher( elm );\r\n\r\n\t\t\t\t// Run setup on the main links that can be in the header\r\n\t\t\t\toMastheadFn.setupLink( elm, elm.oMasthead.settings.navLinkElm, elm.oMasthead.settings.navElm );\r\n\t\t\t\toMastheadFn.setupLink( elm, elm.oMasthead.settings.loginLinkElm, elm.oMasthead.settings.loginElm );\r\n\t\t\t\toMastheadFn.setupLink( elm, elm.oMasthead.settings.loggedInLinkElm, elm.oMasthead.settings.loggedInElm );\r\n\t\t\t\toMastheadFn.setupLink( elm, elm.oMasthead.settings.searchLinkElm, elm.oMasthead.settings.searchElm );\r\n\t\t\t\toMastheadFn.setupCountryLink( elm );\r\n\r\n\t\t\t\t// Build up the primary navigation system\r\n\t\t\t\toMastheadFn.buildPrimaryNav( elm );\r\n\r\n\t\t\t\t// Correctly size and position elements with in the header area\r\n\t\t\t\toMastheadFn.sizeNavElements( elm, elm.oMasthead.settings.currentBreakpoint );\r\n\t\t\t\toMastheadFn.positionNav( elm, elm.oMasthead.settings.currentBreakpoint );\r\n\r\n\t\t\t\tif ( utility.isNode( elm.oMasthead.settings.loggedInElm ) ) {\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'has-logged-in' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\toMastheadFn.bindEvents( elm );\r\n\t\t\t}\r\n\r\n\t\t\treturn elm.oMasthead;\r\n\t\t},\r\n\r\n\t\tinstantHideShow : function( element, hide, fadeOnly ) {\r\n\t\t\tvar ariaHidden = 'false',\r\n\t\t\t\tdisplayType = 'block',\r\n\t\t\t\topacity = 1;\r\n\t\t\tif ( utility.isNode( element ) ) {\r\n\t\t\t\tif ( hide ) {\r\n\t\t\t\t\tariaHidden = 'true';\r\n\t\t\t\t\tdisplayType = 'none';\r\n\t\t\t\t\tif ( fadeOnly ) {\r\n\t\t\t\t\t\tdisplayType = 'block';\r\n\t\t\t\t\t\topacity = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telement.setAttribute( 'aria-hidden', ariaHidden );\r\n\t\t\t\telement.style.display = displayType;\r\n\t\t\t\tif ( fadeOnly ) {\r\n\t\t\t\t\telement.style.opacity = opacity;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// eslint-disable-next-line complexity\r\n\t\tprocessSkipLink : function( elm, queryString, linkName ) {\r\n\t\t\tvar validHref;\r\n\r\n\t\t\telm.oMasthead.settings[ linkName + 'LinkElm' ] = elm.oMasthead.settings.wholePageElm.querySelector( queryString );\r\n\t\t\t// Only do more if the link is available\r\n\t\t\tif ( utility.isNode( elm.oMasthead.settings[ linkName + 'LinkElm' ] ) ) {\r\n\t\t\t\telm.oMasthead.settings[ linkName + 'LinkUrl' ] = elm.oMasthead.settings[ linkName + 'LinkElm' ].getAttribute( 'href' );\r\n\r\n\t\t\t\tvalidHref = utility.urlAnchorRegExp.test( elm.oMasthead.settings[ linkName + 'LinkUrl' ] );\r\n\r\n\t\t\t\tif ( validHref ) {\r\n\t\t\t\t\telm.oMasthead.settings[ linkName + 'Elm' ] = elm.oMasthead.settings.wholeNavElm.querySelector( elm.oMasthead.settings[ linkName + 'LinkUrl' ] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( linkName === 'login' ) {\r\n\t\t\t\t\telm.oMasthead.settings.loginLinkUrl = validHref ? elm.oMasthead.settings.loginLinkUrl : '';\r\n\t\t\t\t\tif ( elm.oMasthead.settings.loginLinkUrl !== '' ) {\r\n\t\t\t\t\t\tutility.wrapInner( elm.oMasthead.settings.loginLinkElm, utility.htmlStringToElement( '' ) );\r\n\t\t\t\t\t\telm.oMasthead.settings.loginLinkHidden = elm.oMasthead.settings.loginLinkElm.querySelector( '.u-hidden--visually' );\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.loginLinkHidden ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.loginLinkHidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if ( linkName === 'loggedIn' ) {\r\n\t\t\t\t\telm.oMasthead.settings.loggedInLinkName = elm.oMasthead.settings.wholePageElm.querySelector( '.o-masthead-logged-in-link__name' );\r\n\t\t\t\t\tif ( elm.oMasthead.settings.loggedInLinkName ) {\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.loggedInLinkName.hasAttribute( 'aria-hidden' ) ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.loggedInLinkName.removeAttribute( 'aria-hidden' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telm.oMasthead.settings.loggedInLinkElm.parentNode.insertBefore( elm.oMasthead.settings.loggedInLinkName, elm.oMasthead.settings.loggedInLinkElm );\r\n\t\t\t\t\t}\r\n\t\t\t\t\telm.oMasthead.settings.loggedInLinkHidden = elm.oMasthead.settings.loggedInLinkElm.querySelector( '.u-hidden--visually' );\r\n\t\t\t\t\tif ( elm.oMasthead.settings.loggedInLinkHidden ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.loggedInLinkHidden.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if ( linkName === 'search' ) {\r\n\t\t\t\t\tif ( elm.oMasthead.settings.searchElm ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.searchInputElm = elm.oMasthead.settings.searchElm.querySelector( 'input[type=\"text\"], input[type=\"search\"]' );\r\n\t\t\t\t\t} else if ( validHref ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.searchInputElm = document.querySelector( elm.oMasthead.settings.searchLinkUrl );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t}\r\n\t\t\t\t\telm.oMasthead.settings.searchLinkElm.append( utility.htmlStringToElement( '' ) );\r\n\r\n\t\t\t\t\telm.oMasthead.settings.searchLinkHidden = elm.oMasthead.settings.searchLinkElm.querySelector( '.u-hidden--visually' );\r\n\t\t\t\t\tif ( elm.oMasthead.settings.searchLinkHidden ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.searchLinkHidden.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprocessOtherSkipLinks : function( elm ) {\r\n\t\t\telm.oMasthead.settings.allSkipLinks.forEach( function loop( linkElm ) {\r\n\t\t\t\tvar scrollTargetHref,\r\n\t\t\t\t\tscrollTarget;\r\n\t\t\t\tif ( linkElm.closest( '.o-masthead__menu-link, .o-masthead__login-link, .o-masthead__search-link, .o-masthead__logged-in-link' ) ) {\r\n\t\t\t\t\t// If its the menu, login or search link do nothing\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscrollTargetHref = linkElm.getAttribute( 'href' ).substring( 1 );\r\n\t\t\t\t\tscrollTarget = document.getElementById( scrollTargetHref );\r\n\r\n\t\t\t\t\tif ( scrollTarget ) {\r\n\t\t\t\t\t\tlinkElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tutility.smoothScroll( 0, utility.offset( scrollTarget ).top, FRAMEWORK.timings.current.t350ms, null, function setFocus() {\r\n\t\t\t\t\t\t\t\tscrollTarget.focus(); // Set focus on the target element\r\n\t\t\t\t\t\t\t\tif ( !utility.matches( scrollTarget, ':focus' ) ) {\r\n\t\t\t\t\t\t\t\t\t// If the focus wasn't gained set tab index to minus one and transfer focus again\r\n\t\t\t\t\t\t\t\t\tscrollTarget.setAttribute( 'tabindex', '-1' );\r\n\t\t\t\t\t\t\t\t\tscrollTarget.focus();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tsetupSiteSwitcher : function( elm ) {\r\n\t\t\tvar validSiteSwitcherHref;\r\n\r\n\t\t\telm.oMasthead.settings.siteSwitcherLink = elm.oMasthead.settings.wholePageElm.querySelector( '.m-site-country-selection__site-switcher a' );\r\n\t\t\telm.oMasthead.settings.hasSiteSwitcher = false;\r\n\t\t\telm.oMasthead.settings.siteSwitcherOpen = false;\r\n\t\t\tif ( utility.isNode( elm.oMasthead.settings.siteSwitcherLink ) ) {\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherUrl = elm.oMasthead.settings.siteSwitcherLink.getAttribute( 'href' );\r\n\t\t\t\tvalidSiteSwitcherHref = utility.urlAnchorRegExp.test( elm.oMasthead.settings.siteSwitcherUrl );\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherUrl = validSiteSwitcherHref ? elm.oMasthead.settings.siteSwitcherUrl : '';\r\n\r\n\t\t\t\tif ( elm.oMasthead.settings.siteSwitcherUrl !== '' ) {\r\n\t\t\t\t\telm.oMasthead.settings.siteSwitcherContent = document.querySelector( elm.oMasthead.settings.siteSwitcherUrl );\r\n\t\t\t\t\tif ( elm.oMasthead.settings.siteSwitcherContent ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.hasSiteSwitcher = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elm.oMasthead.settings.hasSiteSwitcher ) {\r\n\t\t\t\tif ( elm.oMasthead.settings.siteSwitcherContent.getAttribute( 'data-highlight' ) === 'true' ) {\r\n\t\t\t\t\telm.oMasthead.settings.siteSwitcherLink.parentNode.classList.add( 'm-site-country-selection__site-switcher--highlight' );\r\n\t\t\t\t}\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherContentInner = elm.oMasthead.settings.siteSwitcherContent.children[ 0 ];\r\n\t\t\t\tutility.setAttributes( elm.oMasthead.settings.siteSwitcherLink, {\r\n\t\t\t\t\trole : 'button',\r\n\t\t\t\t\t'aria-controls' : elm.oMasthead.settings.siteSwitcherUrl.replace( '#', '' ),\r\n\t\t\t\t\t'aria-expanded' : 'false',\r\n\t\t\t\t});\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherContent.classList.add( 'm-site-switcher--header' );\r\n\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.siteSwitcherContent, true, false );\r\n\t\t\t\telm.oMasthead.settings.topBarElm.insertAdjacentElement( 'afterend', elm.oMasthead.settings.siteSwitcherContent );\r\n\t\t\t\toMastheadFn.updateSiteSwitcherText( elm, elm.oMasthead.settings.siteSwitcherContent.querySelector( '.m-site-switcher__selected-option' ) );\r\n\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherLink.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tif ( elm.oMasthead.settings.busy ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\t\toMastheadFn.toggleSiteSwitcher( elm, false, true ); // Close any open masthead element;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherContent.querySelectorAll( '.a-button' ).forEach( function loop( buttonElm ) {\r\n\t\t\t\t\tbuttonElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.busy || buttonElm.classList.contains( 'm-site-switcher__selected-option' ) ) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\t\t\toMastheadFn.updateSiteSwitcherText( elm, buttonElm );\r\n\t\t\t\t\t\t\toMastheadFn.toggleSiteSwitcher( elm, true, true );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\toMastheadFn.siteSwitcherTabbing( elm );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttoggleSiteSwitcher : function( elm, close, complete ) {\r\n\t\t\tif ( elm.oMasthead.settings.hasSiteSwitcher ) {\r\n\t\t\t\tif ( elm.oMasthead.settings.siteSwitcherOpen || close ) {\r\n\t\t\t\t\tutility.fade( elm.oMasthead.settings.siteSwitcherContentInner, FRAMEWORK.timings.current.t200ms, { variant : 'out' });\r\n\t\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.siteSwitcherContent, FRAMEWORK.timings.current.t300ms, {\r\n\t\t\t\t\t\t\tvariant : 'up',\r\n\t\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherLink.classList.remove( 'is-open' );\r\n\t\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherLink.setAttribute( 'aria-expanded', 'false' );\r\n\t\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherOpen = false;\r\n\t\t\t\t\t\t\t\tif ( complete ) {\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif ( elm.oMasthead.settings.mastheadNotification ) {\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.mastheadNotificationInstance.show();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}, FRAMEWORK.timings.current.t100ms );\r\n\t\t\t\t} else {\r\n\t\t\t\t\toMastheadFn.close( elm, true, true ); // Close any open masthead element;\r\n\t\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.siteSwitcherContentInner, false, false );\r\n\t\t\t\t\telm.oMasthead.settings.siteSwitcherContentInner.style.opacity = 0;\r\n\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.siteSwitcherContent, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\tutility.fade( elm.oMasthead.settings.siteSwitcherContentInner, FRAMEWORK.timings.current.t200ms, {\r\n\t\t\t\t\t\t\t\tvariant : 'in',\r\n\t\t\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherLink.classList.add( 'is-open' );\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherLink.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherOpen = true;\r\n\t\t\t\t\t\t\t\t\tif ( complete ) {\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif ( elm.oMasthead.settings.mastheadNotification ) {\r\n\t\t\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.mastheadNotificationInstance.hide();\r\n\t\t\t\t\t\t}, 10 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateSiteSwitcherText : function( elm, target ) {\r\n\t\t\tvar selectedOption = elm.oMasthead.settings.siteSwitcherContent.querySelector( '.m-site-switcher__selected-option' ),\r\n\t\t\t\tsiteName;\r\n\t\t\tif ( selectedOption ) {\r\n\t\t\t\tselectedOption.classList.remove( 'm-site-switcher__selected-option' );\r\n\t\t\t\tselectedOption.classList.remove( 'is-disabled' );\r\n\t\t\t\tselectedOption.removeAttribute( 'disabled' );\r\n\t\t\t\tselectedOption.removeAttribute( 'aria-current' );\r\n\t\t\t\tselectedOption.removeAttribute( 'tabIndex' );\r\n\t\t\t}\r\n\r\n\t\t\tif ( target === null ) {\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherLink.innerHTML = FRAMEWORK.locale.settings.oMasthead.switcherInitial;\r\n\t\t\t} else {\r\n\t\t\t\ttarget.classList.add( 'm-site-switcher__selected-option' );\r\n\t\t\t\ttarget.classList.add( 'is-disabled' );\r\n\t\t\t\ttarget.disabled = true;\r\n\t\t\t\ttarget.setAttribute( 'tabIndex', -1 );\r\n\t\t\t\ttarget.setAttribute( 'aria-current', 'true' );\r\n\r\n\t\t\t\tsiteName = '' + target.getAttribute( 'data-value' ) + '';\r\n\t\t\t\telm.oMasthead.settings.siteSwitcherLink.innerHTML = FRAMEWORK.locale.settings.oMasthead.switcherSelection.replace( '{option}', siteName );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsiteSwitcherTabbing : function( elm ) {\r\n\t\t\telm.oMasthead.settings.siteSwitcherLink.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t// When tab has been pressed and site switcher is open transfer focus to first focusable element in site switcher\r\n\t\t\t\tif ( e.key === 'Tab' && !e.shiftKey && elm.oMasthead.settings.siteSwitcherOpen ) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\telm.oMasthead.settings.siteSwitcherContent.querySelector( '.a-button:not(.is-disabled)' ).focus();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Do nothing\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telm.oMasthead.settings.siteSwitcherContent.querySelectorAll( '.a-button, a' ).forEach( function loop( linkElm ) {\r\n\t\t\t\tlinkElm.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t\tvar allLinksInSiteSwitcher = elm.oMasthead.settings.siteSwitcherContent.querySelectorAll( '.a-button:not(.is-disabled), a:not(.is-disabled)' );\r\n\t\t\t\t\tif ( e.key === 'Tab' ) {\r\n\t\t\t\t\t\t// Tab pressed\r\n\t\t\t\t\t\tif ( e.shiftKey && linkElm === allLinksInSiteSwitcher[ 0 ] ) {\r\n\t\t\t\t\t\t\t// If shift also pressed and on first link in site switcher tranfer to site switcher link\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\telm.oMasthead.settings.siteSwitcherLink.focus();\r\n\t\t\t\t\t\t} else if ( !e.shiftKey && linkElm === allLinksInSiteSwitcher[ allLinksInSiteSwitcher.length - 1 ] ) {\r\n\t\t\t\t\t\t\t// If no shift and on last link in site switcher tranfer focus to coutnry selector of first element in masthead\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tif ( elm.oMasthead.settings.countryLinkElm ) {\r\n\t\t\t\t\t\t\t\telm.oMasthead.settings.countryLinkElm.focus();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Make first visible link focused\r\n\t\t\t\t\t\t\t\toMastheadFn.getVisibleLinks( elm.oMasthead.settings.mastheadElm.querySelectorAll( 'a' ) )[ 0 ].focus();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif ( elm.oMasthead.settings.countryLinkElm ) {\r\n\t\t\t\telm.oMasthead.settings.countryLinkElm.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t\tvar allNonDisabledLinks;\r\n\t\t\t\t\t// When tab has been pressed and site switcher is open transfer focus to first focusable element in site switcher\r\n\t\t\t\t\tif ( e.key === 'Tab' && elm.oMasthead.settings.siteSwitcherOpen ) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif ( e.shiftKey ) {\r\n\t\t\t\t\t\t\tallNonDisabledLinks = elm.oMasthead.settings.siteSwitcherContent.querySelectorAll( '.a-button:not(.is-disabled), a:not(.is-disabled)' );\r\n\t\t\t\t\t\t\tallNonDisabledLinks[ allNonDisabledLinks.length - 1 ].focus();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Make first visible link focused\r\n\t\t\t\t\t\t\toMastheadFn.getVisibleLinks( elm.oMasthead.settings.mastheadElm.querySelectorAll( 'a' ) )[ 0 ].focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\toMastheadFn.getVisibleLinks( elm.oMasthead.settings.mastheadElm.querySelectorAll( 'a' ) ).forEach( function loop( visibleLinkElm ) {\r\n\t\t\t\tvisibleLinkElm.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t\tvar allNonDisabledLinks;\r\n\t\t\t\t\tif ( e.key === 'Tab' && e.shiftKey && elm.oMasthead.settings.siteSwitcherOpen ) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.countryLinkElm ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.countryLinkElm.focus();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallNonDisabledLinks = elm.oMasthead.settings.siteSwitcherContent.querySelectorAll( '.a-button:not(.is-disabled), a:not(.is-disabled)' );\r\n\t\t\t\t\t\t\tallNonDisabledLinks[ allNonDisabledLinks.length - 1 ].focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetVisibleLinks : function( allLinks ) {\r\n\t\t\tvar visibleLinks = [];\r\n\t\t\tallLinks.forEach( function loop( currentLinkElm ) {\r\n\t\t\t\tif ( utility.isVisible( currentLinkElm ) ) {\r\n\t\t\t\t\tvisibleLinks.push( currentLinkElm );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn visibleLinks;\r\n\t\t},\r\n\r\n\t\tbindEvents : function( elm ) {\r\n\t\t\tvar onResize,\r\n\t\t\t\tresizeRedraw = function() {\r\n\t\t\t\t\tvar newBreakpoint = utility.getBreakpoint( elm ),\r\n\t\t\t\t\t\twait = 0;\r\n\r\n\t\t\t\t\t// Check if the breakpoint has changed. If it had close any open nav items\r\n\t\t\t\t\tif ( newBreakpoint !== elm.oMasthead.settings.currentBreakpoint ) {\r\n\t\t\t\t\t\tif ( newBreakpoint === utility.smallTag && elm.oMasthead.settings.navLinkElm && elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.navLinkElm.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.countryLinkElm && elm.oMasthead.settings.countryLinkElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\t\twait = oMastheadFn.settings.animationSpeed;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t\t\telm.oMasthead.settings.currentBreakpoint = newBreakpoint;\r\n\t\t\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t\t\toMastheadFn.resetPosition( elm, newBreakpoint );\r\n\t\t\t\t\t\t}, wait );\r\n\t\t\t\t\t} else if ( newBreakpoint === utility.smallTag ) {\r\n\t\t\t\t\t\toMastheadFn.resetPosition( elm, newBreakpoint );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toMastheadFn.positionNav( elm, newBreakpoint );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tisMastheadButton = function( targetElm ) {\r\n\t\t\t\t\tvar isButton = false;\r\n\t\t\t\t\tif ( targetElm.classList.contains( 'o-masthead-support__link' ) || utility.isNode( targetElm.closest( '.o-masthead-support__link' ) ) ) {\r\n\t\t\t\t\t\tisButton = true;\r\n\t\t\t\t\t} else if ( ( targetElm.classList.contains( 'a-button' ) || utility.isNode( targetElm.closest( '.a-button' ) ) ) && ( utility.isNode( targetElm.closest( '.m-primary-navigation-sub-section__link-list' ) ) || utility.isNode( targetElm.closest( '.m-primary-navigation-sub-section__link' ) ) || utility.isNode( targetElm.closest( '.m-primary-navigation .m-card' ) ) ) ) { // eslint-disable-line max-len\r\n\t\t\t\t\t\tisButton = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn isButton;\r\n\t\t\t\t};\r\n\r\n\t\t\t// Set debounce function to stop resize function running too often\r\n\t\t\tonResize = utility.debounce( function listener() {\r\n\t\t\t\tvar newWindowWidth = window.innerWidth;\r\n\t\t\t\tif ( newWindowWidth !== elm.oMasthead.settings.windowWidth ) {\r\n\t\t\t\t\telm.oMasthead.settings.windowWidth = newWindowWidth;\r\n\t\t\t\t\tresizeRedraw();\r\n\t\t\t\t}\r\n\t\t\t}, 10 );\r\n\t\t\telm.oMasthead.reDraw = utility.debounce( function listener() {\r\n\t\t\t\tresizeRedraw();\r\n\t\t\t}, 10 ); // Function to call if extraContent area is updated dynamically and requires the nav to be redrawn\r\n\t\t\twindow.addEventListener( 'resize', onResize );\r\n\r\n\t\t\t// Keep the user within the header and open nav item when a nav item is open\r\n\t\t\tdocument.body.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t// If any visible anchor, input or button is hit then fire keydown function\r\n\t\t\t\tif ( ( e.key === 'Escape' || e.key === 'Esc' ) && elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) && !elm.oMasthead.settings.busy ) {\r\n\t\t\t\t\t// If escape key is pressed then close the menu\r\n\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t} else if ( e.target.tagName.match( /^(A|INPUT|BUTTON)$/g ) && utility.isVisible( e.target ) ) {\r\n\t\t\t\t\toMastheadFn.onKeydown( e, e.target, elm );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tdocument.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t// If the page wrapper is currently open\r\n\t\t\t\tif ( elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\tif ( e.target.closest( 'header' ) === null && e.target.closest( '.o-masthead-navigation' ) === null ) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t\t} else if ( isMastheadButton( e.target ) || e.target.closest( '.o-masthead-main-content' ) ) {\r\n\t\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tdocument.addEventListener( 'focusin', function listener( e ) {\r\n\t\t\t\tvar test2 = utility.isNode( e.target ) && e.target.closest( 'header' ) === null && e.target.closest( '.o-masthead-navigation' ) === null;\r\n\t\t\t\t// If the page wrapper is currently open and focus has moved off the menu\r\n\t\t\t\tif ( elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) && test2 ) {\r\n\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tresetPosition : function( elm, newBreakpoint ) {\r\n\t\t\toMastheadFn.sizeNavElements( elm, newBreakpoint );\r\n\t\t\toMastheadFn.positionNav( elm, newBreakpoint );\r\n\t\t},\r\n\r\n\t\tsetupLink : function( elm, linkElm, areaElm ) {\r\n\t\t\tvar linkHref,\r\n\t\t\t\tvalidHref,\r\n\t\t\t\ttempAreaElm,\r\n\t\t\t\tsetFocusFunc;\r\n\r\n\t\t\t// If the link and its connected navigation area exist do the following\r\n\t\t\tif ( utility.isNode( linkElm ) && utility.isNode( areaElm ) ) {\r\n\t\t\t\tlinkHref = linkElm.getAttribute( 'href' );\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * Add area to the link and navigation area and preset the minimum link width\r\n\t\t\t\t * for when link text is switched out.\r\n\t\t\t\t */\r\n\t\t\t\tutility.setAttributes( linkElm, {\r\n\t\t\t\t\trole : 'button',\r\n\t\t\t\t\t'aria-controls' : linkHref.replace( '#', '' ),\r\n\t\t\t\t\t'aria-expanded' : 'false',\r\n\t\t\t\t});\r\n\t\t\t\toMastheadFn.instantHideShow( areaElm, true, false );\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * Set onclick function that closes the navigation if this links navigation\r\n\t\t\t\t * is already open, otherwise opens the navigation\r\n\t\t\t\t */\r\n\t\t\t\tlinkElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif ( elm.oMasthead.settings.busy || elm.oMasthead.settings.changeInProgress ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = true;\r\n\r\n\t\t\t\t\t\tif ( linkHref === elm.oMasthead.settings.current ) {\r\n\t\t\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toMastheadFn.open( elm, linkElm, areaElm );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// If this is the login link setup the login and register buttons for desktop\r\n\t\t\t\tif ( utility.isNode( linkElm ) && linkElm === elm.oMasthead.settings.loginLinkElm ) {\r\n\t\t\t\t\telm.oMasthead.settings.loginLinkElm.insertAdjacentElement( 'beforebegin', elm.oMasthead.settings.loginElm.querySelector( '.o-masthead-login__link-list' ).cloneNode( true ) );\r\n\t\t\t\t}\r\n\t\t\t} else if ( linkElm === null ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else {\r\n\t\t\t\tlinkHref = linkElm.getAttribute( 'href' );\r\n\t\t\t\tvalidHref = utility.urlAnchorRegExp.test( linkHref );\r\n\r\n\t\t\t\tif ( validHref ) {\r\n\t\t\t\t\ttempAreaElm = document.querySelector( linkHref );\r\n\t\t\t\t\tif ( utility.isNode( tempAreaElm ) ) {\r\n\t\t\t\t\t\tsetFocusFunc = function() {\r\n\t\t\t\t\t\t\ttempAreaElm.focus(); // Set focus on the target element\r\n\t\t\t\t\t\t\tif ( !utility.matches( tempAreaElm, ':focus' ) ) {\r\n\t\t\t\t\t\t\t\t// If the focus wasn't gained set tab index to minus one and transfer focus again\r\n\t\t\t\t\t\t\t\ttempAreaElm.setAttribute( 'tabindex', '-1' );\r\n\t\t\t\t\t\t\t\ttempAreaElm.focus();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tlinkElm.classList.add( 'js-tabbable' );\r\n\t\t\t\t\t\tlinkElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\t\t\tvar tempAreaPos = utility.offset( tempAreaElm ).top,\r\n\t\t\t\t\t\t\t\ttempAreaHeight = tempAreaElm.offsetHeight,\r\n\t\t\t\t\t\t\t\twindowHeight = window.innerHeight,\r\n\t\t\t\t\t\t\t\twindowPos = window.pageYOffset;\r\n\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\tif ( tempAreaPos < windowPos || tempAreaPos > ( windowPos + windowHeight - tempAreaHeight ) ) {\r\n\t\t\t\t\t\t\t\tutility.smoothScroll( 0, tempAreaPos, FRAMEWORK.timings.current.t150ms, null, setFocusFunc );\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tsetFocusFunc();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetupCountryLink : function( elm ) {\r\n\t\t\t// Run setup for the country selector link if one exists\r\n\t\t\tif ( utility.isNode( elm.oMasthead.settings.countryLinkElm ) ) {\r\n\t\t\t\telm.oMasthead.settings.countryLinkUrl = elm.oMasthead.settings.countryLinkElm.getAttribute( 'href' );\r\n\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--has-country-selector' );\r\n\r\n\t\t\t\t// Add aria and onclick cunfction\r\n\t\t\t\telm.oMasthead.settings.countryLinkElm.setAttribute( 'role', 'button' );\r\n\t\t\t\telm.oMasthead.settings.countryLinkElm.setAttribute( 'aria-expanded', 'false' );\r\n\t\t\t\telm.oMasthead.settings.countryLinkElm.classList.add( 'js-m-site-country-selection__country' );\r\n\r\n\t\t\t\telm.oMasthead.settings.countryLinkElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\tvar contentHref;\r\n\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif ( elm.oMasthead.settings.busy || elm.oMasthead.settings.changeInProgress ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = true;\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.countryLinkUrl === elm.oMasthead.settings.current ) {\r\n\t\t\t\t\t\t\t// Close country selector if currently open\r\n\t\t\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t\t\t} else if ( utility.isNode( elm.oMasthead.settings.countryElm ) ) {\r\n\t\t\t\t\t\t\t// If the country options are already on the page, open the country selector\r\n\t\t\t\t\t\t\toMastheadFn.open( elm, elm.oMasthead.settings.countryLinkElm, elm.oMasthead.settings.countryElm );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// If the country options are not on the page load them into the overall navigation area and add appropriate aria\r\n\t\t\t\t\t\t\telm.oMasthead.settings.countryLinkElm.setAttribute( 'aria-controls', 'o-masthead-navigation__country-listing' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.countryElm = utility.htmlStringToElement( '
    ' +\r\n\t\t\t\t\t\t\t'
    ' +\r\n\t\t\t\t\t\t\toMastheadFn.settings.loadingText + '
    ' );\r\n\r\n\t\t\t\t\t\t\tcontentHref = elm.oMasthead.settings.countryLinkElm.getAttribute( 'href' ) + ' .m-country-selection';\r\n\r\n\t\t\t\t\t\t\tutility.requestLoadInto( elm.oMasthead.settings.countryElm, contentHref, function cb( response, status ) {\r\n\t\t\t\t\t\t\t\tif ( status >= 200 && status < 400 ) {\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.querySelector( '.l-content-container' ).append( elm.oMasthead.settings.countryElm );\r\n\t\t\t\t\t\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.pageWrapperElm.style.minHeight = utility.convertToPx( elm.oMasthead.settings.wholeNavElm.offsetHeight );\r\n\t\t\t\t\t\t\t\t\t\t// Open the country selector\r\n\t\t\t\t\t\t\t\t\t\toMastheadFn.open( elm, elm.oMasthead.settings.countryLinkElm, elm.oMasthead.settings.countryElm );\r\n\t\t\t\t\t\t\t\t\t}, FRAMEWORK.timings.current.t500ms );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\telm.oMasthead.settings.countryElm = null; // Errored so clear the variable\r\n\t\t\t\t\t\t\t\t\toMastheadFn.close( elm, true, true ); // If error then just close the menu\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbuildPrimaryNav : function( elm ) {\r\n\t\t\tvar newNavElm = '',\r\n\t\t\t\tlandingPageLinkTop = !elm.classList.contains( 'o-masthead--landing-page-bottom' );\r\n\r\n\t\t\toMastheadFn.setupCloseButton( elm );\r\n\r\n\t\t\tif ( elm.oMasthead.settings.navBasicLinks.length > 0 ) {\r\n\t\t\t\t// Build basic version of primary nav\r\n\t\t\t\toMastheadFn.buildPrimaryNavBasic( elm );\r\n\t\t\t} else {\r\n\t\t\t\tif ( landingPageLinkTop ) {\r\n\t\t\t\t\t// Do nothing\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.querySelectorAll( '.m-primary-navigation--landing-page-bottom' );\r\n\t\t\t\t}\r\n\t\t\t\t/*\r\n\t\t\t\t * Loop through the primary nav section.\r\n\t\t\t\t * Create a unique ID for each main menu item and add it to the menu item\r\n\t\t\t\t * Use the heading text for the menu item for the primary nav tab text and create a primary nav tab link\r\n\t\t\t\t */\r\n\t\t\t\telm.oMasthead.settings.wholePageElm.querySelectorAll( '.m-primary-navigation__section' ).forEach( function loop( currentSectionArea ) {\r\n\t\t\t\t\tvar sectionId = utility.makeId( 'primary-nav-' ),\r\n\t\t\t\t\t\tsectionHeadingElm = currentSectionArea.querySelector( '.m-primary-navigation__section-heading' ),\r\n\t\t\t\t\t\tsectionAllLinkElm = currentSectionArea.querySelector( '.m-primary-navigation-sub-section__link' ),\r\n\t\t\t\t\t\tsectionTitle = sectionHeadingElm.textContent,\r\n\t\t\t\t\t\tselectedSectionClass = '';\r\n\r\n\t\t\t\t\toMastheadFn.adjustNavPositions( elm, currentSectionArea );\r\n\r\n\t\t\t\t\tif ( sectionHeadingElm.querySelector( 'a' ) === null && utility.isNode( sectionAllLinkElm ) ) {\r\n\t\t\t\t\t\tutility.wrapInner( sectionHeadingElm, utility.htmlStringToElement( '' ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( currentSectionArea.classList.contains( 'is-selected' ) ) {\r\n\t\t\t\t\t\tselectedSectionClass = 'is-selected';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewNavElm = newNavElm + '
  • ' + sectionTitle + '
  • ';\r\n\r\n\t\t\t\t\tcurrentSectionArea.setAttribute( 'id', sectionId );\r\n\r\n\t\t\t\t\t// Loop through all sub sections and setup for mobile view show/hide functionality\r\n\t\t\t\t\tcurrentSectionArea.querySelectorAll( '.m-primary-navigation-sub-section__heading' ).forEach( function innerLoop( currentSubSectionElm ) {\r\n\t\t\t\t\t\tvar subSectionId = utility.makeId( 'primary-nav-sub-' ),\r\n\t\t\t\t\t\t\tsubSectionLinkElm,\r\n\t\t\t\t\t\t\tsubSectionContentElm;\r\n\r\n\t\t\t\t\t\tutility.wrapInner( currentSubSectionElm, utility.htmlStringToElement( '' ) );\r\n\t\t\t\t\t\tsubSectionLinkElm = currentSubSectionElm.querySelector( 'a' );\r\n\r\n\t\t\t\t\t\tsubSectionContentElm = currentSubSectionElm.closest( '.m-primary-navigation-sub-section' ).querySelector( '.m-primary-navigation-sub-section__link-list' );\r\n\t\t\t\t\t\toMastheadFn.instantHideShow( subSectionContentElm, true, false );\r\n\r\n\t\t\t\t\t\t// Make sure all the links are tertiary links\r\n\t\t\t\t\t\tsubSectionContentElm.querySelectorAll( 'a:not(.a-button)' ).forEach( function innerLoop2( linkElm ) {\r\n\t\t\t\t\t\t\tlinkElm.classList.add( 'a-button' );\r\n\t\t\t\t\t\t\tlinkElm.classList.add( 'a-button--tertiary' );\r\n\t\t\t\t\t\t\tutility.wrapInner( linkElm, utility.htmlStringToElement( '' ) );\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\telm.oMasthead.settings.navSubSections.push( [ subSectionLinkElm, subSectionContentElm ] );\r\n\r\n\t\t\t\t\t\tsubSectionLinkElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tif ( elm.oMasthead.settings.busy ) {\r\n\t\t\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\t\t\t\toMastheadFn.accordionSubSections( elm, subSectionLinkElm, subSectionContentElm, e );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// If the landing page link exists and should be displayed at the top (default) then move to below the section heading\r\n\t\t\t\t\tif ( landingPageLinkTop && sectionAllLinkElm ) {\r\n\t\t\t\t\t\tsectionHeadingElm.insertAdjacentElement( 'afterend', sectionAllLinkElm );\r\n\t\t\t\t\t\tcurrentSectionArea.classList.add( 'm-primary-navigation__section--landing-page-link' );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\telm.oMasthead.settings.allNavSectionDescriptions = elm.oMasthead.settings.wholePageElm.querySelectorAll( '.m-primary-navigation-sub-section__description' );\r\n\t\t\t\telm.oMasthead.settings.navSectionHeadingLinks = elm.oMasthead.settings.wholePageElm.querySelectorAll( '.m-primary-navigation__section-heading a' );\r\n\r\n\t\t\t\tif ( utility.isNode( elm.oMasthead.settings.navLinkElm ) && newNavElm !== '' ) {\r\n\t\t\t\t\t// Using the built up primary nav links add this to the masthead\r\n\t\t\t\t\telm.oMasthead.settings.navLinkElm.insertAdjacentElement( 'afterend', utility.htmlStringToElement( '' ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Loop through all the links in the new primary nav and run link setup on them\r\n\t\t\t\telm.oMasthead.settings.wholePageElm.querySelectorAll( '.o-masthead__primary-nav-link' ).forEach( function loop( thisLinkElm ) {\r\n\t\t\t\t\toMastheadFn.setupLink( elm, thisLinkElm, document.querySelector( thisLinkElm.getAttribute( 'href' ) ) );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tadjustNavPositions : function( elm, section ) {\r\n\t\t\tvar columnContainer = section.querySelector( '.l-columns' ),\r\n\t\t\t\tallColumns = section.querySelectorAll( '.l-columns__column' );\r\n\t\t\tif ( allColumns.length >= 3 ) {\r\n\t\t\t\t// Adjust layout for tablet to avoid the close button\r\n\t\t\t\tsection.classList.add( 'm-primary-navigation__section--close-adjust-medium' );\r\n\t\t\t}\r\n\r\n\t\t\tif ( allColumns.length < 4 || ( allColumns.length > 3 && allColumns[ allColumns.length - 1 ].classList.contains( 'm-card' ) ) ) {\r\n\t\t\t\t// If less than 4 columns or the last column is a card, do nothing\r\n\t\t\t} else if ( ( columnContainer.classList.contains( 'l-columns--4-large' ) && allColumns.length === 4 ) ||\r\n\t\t\t\t( columnContainer.classList.contains( 'l-columns--5-large' ) && allColumns.length === 5 ) ) {\r\n\t\t\t\t// If 4 of 5 columns and last is not a card, adjust the layout at desktop to avoid the close button\r\n\t\t\t\tsection.classList.add( 'm-primary-navigation__section--close-adjust' );\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbuildPrimaryNavBasic : function( elm ) {\r\n\t\t\tvar newNavElm = '';\r\n\r\n\t\t\t/*\r\n\t\t\t * Loop through the primary nav section.\r\n\t\t\t * Create a unique ID for each main menu item and add it to the menu item\r\n\t\t\t * Use the heading text for the menu item for the primary nav tab text and create a primary nav tab link\r\n\t\t\t */\r\n\t\t\telm.oMasthead.settings.navBasicLinks.forEach( function loop( basicLink ) {\r\n\t\t\t\tvar selectedSectionClass = '';\r\n\r\n\t\t\t\tif ( basicLink.classList.contains( 'is-selected' ) ) {\r\n\t\t\t\t\tselectedSectionClass = 'is-selected';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewNavElm = newNavElm + '
  • ' + basicLink.textContent + '
  • ';\r\n\t\t\t});\r\n\r\n\t\t\telm.oMasthead.settings.allNavSectionDescriptions = document.querySelectorAll( '.m-primary-navigation-sub-section__description' );\r\n\r\n\t\t\t// Using the built up primary nav links add this to the masthead\r\n\t\t\tif ( newNavElm === '' ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else {\r\n\t\t\t\telm.oMasthead.settings.navLinkElm.insertAdjacentHTML( 'afterend', '' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetupCloseButton : function( elm ) {\r\n\t\t\t// Add close button tc\r\n\t\t\tvar buttonHtml = '',\r\n\t\t\t\tbuttonCloseFunc = function( e ) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tif ( elm.oMasthead.settings.busy ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\telm.oMasthead.settings.busy = true;\r\n\t\t\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t// Button for mobile view\r\n\t\t\telm.oMasthead.settings.closeButtonTop = utility.htmlStringToElement( buttonHtml );\r\n\t\t\telm.oMasthead.settings.wholeNavElm.querySelector( '.l-content-container' ).prepend( elm.oMasthead.settings.closeButtonTop );\r\n\t\t\tutility.wrap( elm.oMasthead.settings.closeButtonTop, utility.htmlStringToElement( '
    ' ) );\r\n\r\n\t\t\telm.oMasthead.settings.closeButtonTop.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\tbuttonCloseFunc( e );\r\n\t\t\t});\r\n\r\n\t\t\t// Button for tablet and desktop view\r\n\t\t\telm.oMasthead.settings.closeButtonBottom = utility.htmlStringToElement( buttonHtml );\r\n\t\t\telm.oMasthead.settings.wholeNavElm.querySelector( '.l-content-container' ).append( elm.oMasthead.settings.closeButtonBottom );\r\n\t\t\tutility.wrap( elm.oMasthead.settings.closeButtonBottom, utility.htmlStringToElement( '
    ' ) );\r\n\r\n\t\t\telm.oMasthead.settings.closeButtonBottom.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\tbuttonCloseFunc( e );\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcheckSection : function( linkElm, currentSectionUrl, testLinkElm, testLinkUrl ) {\r\n\t\t\tvar sectionOpen = false;\r\n\t\t\tif ( linkElm === testLinkElm || currentSectionUrl === testLinkUrl ) {\r\n\t\t\t\tsectionOpen = true;\r\n\t\t\t}\r\n\t\t\treturn sectionOpen;\r\n\t\t},\r\n\r\n\t\tcheckAllLinks : function( elm, linkElm ) {\r\n\t\t\tvar linkOpen = linkElm === elm.oMasthead.settings.navLinkElm || linkElm === elm.oMasthead.settings.searchLinkElm;\r\n\t\t\tlinkOpen = linkOpen || linkElm === elm.oMasthead.settings.loggedInLinkElm;\r\n\r\n\t\t\treturn linkOpen;\r\n\t\t},\r\n\r\n\t\topen : function( elm, linkElm, areaElm ) {\r\n\t\t\tvar vars = {\r\n\t\t\t\t\tcurrentSectionUrl : null,\r\n\t\t\t\t\tsameSection : false,\r\n\t\t\t\t\ttransitionBetweenMenus : null,\r\n\t\t\t\t},\r\n\t\t\t\ttest1,\r\n\t\t\t\ttest2;\r\n\r\n\t\t\toMastheadFn.toggleSiteSwitcher( elm, true ); // Close siteswitcher\r\n\r\n\t\t\tif ( elm.oMasthead.settings.current ) {\r\n\t\t\t\tvars.currentSectionUrl = elm.oMasthead.settings.current;\r\n\t\t\t}\r\n\t\t\tvars.sameSection = vars.currentSectionUrl === linkElm.getAttribute( 'href' );\r\n\t\t\tvars.transitionBetweenMenus = !vars.sameSection && vars.currentSectionUrl !== null;\r\n\t\t\ttest1 = oMastheadFn.checkSection( linkElm, vars.currentSectionUrl, elm.oMasthead.settings.loginLinkElm, elm.oMasthead.settings.loginLinkUrl );\r\n\t\t\ttest2 = oMastheadFn.checkSection( linkElm, vars.currentSectionUrl, elm.oMasthead.settings.countryLinkElm, elm.oMasthead.settings.countryLinkUrl );\r\n\r\n\t\t\tif ( test1 || test2 ) {\r\n\t\t\t\tvars.transitionBetweenMenus = false;\r\n\t\t\t} else if ( elm.oMasthead.settings.currentBreakpoint === utility.smallTag ) {\r\n\t\t\t\tvars.transitionBetweenMenus = true;\r\n\t\t\t} else if ( oMastheadFn.checkSection( linkElm, vars.currentSectionUrl, elm.oMasthead.settings.loggedInLinkElm, elm.oMasthead.settings.loggedInLinkUrl ) ) {\r\n\t\t\t\tvars.transitionBetweenMenus = false;\r\n\t\t\t} else if ( vars.transitionBetweenMenus ) {\r\n\t\t\t\telm.oMasthead.settings.wholeNavElm.style.minHeight = utility.convertToPx( elm.oMasthead.settings.wholeNavElm.offsetHeight );\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\r\n\t\t\toMastheadFn.openPart2( elm, linkElm, areaElm, vars );\r\n\t\t},\r\n\r\n\t\topenPart2 : function( elm, linkElm, areaElm, vars ) {\r\n\t\t\tvar test1,\r\n\t\t\t\ttest2;\r\n\t\t\t// If the current open link is not the same as the link being opened do the following\r\n\t\t\tif ( vars.sameSection ) {\r\n\t\t\t\toMastheadFn.close( elm, !vars.transitionBetweenMenus, true );\r\n\t\t\t} else {\r\n\t\t\t\toMastheadFn.close( elm, !vars.transitionBetweenMenus, false );\r\n\r\n\t\t\t\t/* eslint-disable-next-line complexity */\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\tif ( !( elm.oMasthead.settings.navElm && elm.oMasthead.settings.navElm.classList.contains( 'm-primary-navigation' ) ) && elm.oMasthead.settings.orphanPrimaryNavElm ) {\r\n\t\t\t\t\t\t// If the login or country selection link and there is no primary nav make sure any get support links are hidden\r\n\t\t\t\t\t\tif ( linkElm === elm.oMasthead.settings.loginLinkElm || linkElm === elm.oMasthead.settings.countryLinkElm ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.orphanPrimaryNavElm.style.display = 'none';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.orphanPrimaryNavElm.style.display = 'block';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( linkElm === elm.oMasthead.settings.loginLinkElm || linkElm === elm.oMasthead.settings.loggedInLinkElm ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--narrow-megamenu' );\r\n\t\t\t\t\t\telm.oMasthead.settings.narrowMenu = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.wholeNavElm, false, false );\r\n\r\n\t\t\t\t\tif ( elm.oMasthead.settings.currentBreakpoint === utility.smallTag && oMastheadFn.checkAllLinks( elm, linkElm ) ) {\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * If at mobile and the link is either menu or search and the current open link is NOT menu or search then\r\n\t\t\t\t\t\t * open the search menu and then open the main menu as well\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\ttest1 = vars.currentSectionUrl !== elm.oMasthead.settings.navLinkElm && vars.currentSectionUrl !== elm.oMasthead.settings.searchLinkUrl;\r\n\t\t\t\t\t\ttest2 = vars.currentSectionUrl !== elm.oMasthead.settings.loggedInLinkUrl;\r\n\t\t\t\t\t\tif ( test1 && test2 ) {\r\n\t\t\t\t\t\t\tutility.fade( elm.oMasthead.settings.searchElm, oMastheadFn.settings.animationSpeed, { variant : 'in' });\r\n\t\t\t\t\t\t\tutility.fade( elm.oMasthead.settings.loggedInElm, oMastheadFn.settings.animationSpeed, { variant : 'in' });\r\n\r\n\t\t\t\t\t\t\toMastheadFn.openSection( elm, elm.oMasthead.settings.navLinkElm, elm.oMasthead.settings.navElm, vars.transitionBetweenMenus );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.navLinkElm.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toMastheadFn.openSection( elm, linkElm, areaElm, vars.transitionBetweenMenus );\r\n\t\t\t\t\t}\r\n\t\t\t\t}, oMastheadFn.settings.animationSpeed + 100 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\topenSection : function( elm, linkElm, areaElm, transitionSection ) {\r\n\t\t\tvar currentHeight,\r\n\t\t\t\tanimationDirection;\r\n\r\n\t\t\t// If both the link and area provided can be found on the page do the following\r\n\t\t\tif ( utility.isNode( linkElm ) && utility.isNode( areaElm ) ) {\r\n\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--is-open' );\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm.classList.add( 'is-open' );\r\n\t\t\t\telm.oMasthead.settings.current = linkElm.getAttribute( 'href' );\r\n\r\n\t\t\t\tif ( elm.oMasthead.settings.searchLinkElm && linkElm === elm.oMasthead.settings.searchLinkElm ) {\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--search-open' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !( elm.oMasthead.settings.currentBreakpoint !== utility.smallTag && !elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--wont-fit-extra-content' ) ) ) {\r\n\t\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.extraContentAreaElm, true, false );\r\n\t\t\t\t}\r\n\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.wholeNavElm, false, false );\r\n\t\t\t\tcurrentHeight = elm.oMasthead.settings.wholeNavElm.offsetHeight;\r\n\t\t\t\telm.oMasthead.settings.wholeNavElm.style.minHeight = 0;\r\n\r\n\t\t\t\t// Update the aria attributes\r\n\t\t\t\tlinkElm.classList.add( 'is-open' );\r\n\t\t\t\tlinkElm.setAttribute( 'aria-expanded', 'true' );\r\n\r\n\t\t\t\tif ( linkElm === elm.oMasthead.settings.countryLinkElm ) {\r\n\t\t\t\t\tif ( elm.oMasthead.settings.mastheadNotification ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.mastheadNotificationInstance.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.mastheadElm, true, false );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( linkElm.classList.contains( 'o-masthead__primary-nav-link' ) ) {\r\n\t\t\t\t\t// If the link forms part of the primary nav set all the aria attributes for the whole of nav and show\r\n\t\t\t\t\telm.oMasthead.settings.navLinkElm.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\telm.oMasthead.settings.navLinkElm.classList.add( 'is-open' );\r\n\t\t\t\t\tutility.fade( elm.oMasthead.settings.navElm, oMastheadFn.settings.animationSpeed, { variant : 'in' });\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Do nothing\r\n\t\t\t\t}\r\n\r\n\t\t\t\toMastheadFn.openSectionPart2( elm, {\r\n\t\t\t\t\tareaElm : areaElm,\r\n\t\t\t\t\ttransitionSection : transitionSection,\r\n\t\t\t\t\tanimationDirection : animationDirection,\r\n\t\t\t\t\tcurrentHeight : currentHeight,\r\n\t\t\t\t\tlinkElm : linkElm,\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\topenSectionPart2 : function( elm, vars ) {\r\n\t\t\tvar newHeight,\r\n\t\t\t\twaitForFade = 0;\r\n\r\n\t\t\t// If the link is the main menu link. Loop through all the primary nav items, setting the aria attributes correctly and fade them all in\r\n\t\t\tif ( vars.linkElm === elm.oMasthead.settings.navLinkElm ) {\r\n\t\t\t\twaitForFade = ( oMastheadFn.settings.animationSpeed / 3 ) + 100;\r\n\t\t\t\tif ( elm.oMasthead.settings.navBasicLinks.length === 0 ) {\r\n\t\t\t\t\tdocument.querySelectorAll( '.o-masthead__primary-nav-link' ).forEach( function loop( thisLinkElm ) {\r\n\t\t\t\t\t\tvar thisAreaElm = document.querySelector( thisLinkElm.getAttribute( 'href' ) );\r\n\r\n\t\t\t\t\t\tthisLinkElm.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\t\tutility.fade( thisAreaElm, ( oMastheadFn.settings.animationSpeed / 3 ), { variant : 'in' });\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.oMasthead.settings.navLinkElm.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\telm.oMasthead.settings.navLinkElm.classList.add( 'is-open' );\r\n\t\t\t\t\tutility.fade( elm.oMasthead.settings.navElm, ( oMastheadFn.settings.animationSpeed / 3 ), { variant : 'in' });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Show the nav area, get the final height then hide again.\r\n\t\t\toMastheadFn.instantHideShow( vars.areaElm, false, false );\r\n\t\t\tif ( elm.oMasthead.settings.currentBreakpoint !== utility.smallTag && elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--fit-tabs' ) ) {\r\n\t\t\t\toMastheadFn.alignDescriptions( elm, elm.oMasthead.settings.currentBreakpoint );\r\n\t\t\t}\r\n\t\t\tnewHeight = elm.oMasthead.settings.wholeNavElm.offsetHeight;\r\n\t\t\telm.oMasthead.settings.pageWrapperElm.style.minHeight = utility.convertToPx( newHeight );\r\n\t\t\toMastheadFn.instantHideShow( vars.areaElm, true, false );\r\n\r\n\t\t\t// Update aria and then slide in the nav area\r\n\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\tif ( vars.transitionSection ) {\r\n\t\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.wholeNavElm, false, false );\r\n\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.wholeNavElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\tcustomStartHeight : vars.currentHeight,\r\n\t\t\t\t\t\tcustomEndHeight : newHeight,\r\n\t\t\t\t\t});\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--show-close' );\r\n\t\t\t\t\tutility.fade( vars.areaElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'in',\r\n\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.style.removeProperty( 'height' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.style.removeProperty( 'max-height' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = false;\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if ( elm.oMasthead.settings.narrowMenu ) {\r\n\t\t\t\t\tutility.slideToggle( vars.areaElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.style.removeProperty( 'height' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.style.removeProperty( 'max-height' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = false;\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvars.areaElm.style.opacity = 0;\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--show-close' );\r\n\t\t\t\t\tutility.slideToggle( vars.areaElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\tfade : true,\r\n\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.style.removeProperty( 'height' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholeNavElm.style.removeProperty( 'max-height' );\r\n\t\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = false;\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}, waitForFade );\r\n\r\n\t\t\t// If the section being opened is search transfer the focus straight to the search input/\r\n\t\t\tif ( vars.linkElm === elm.oMasthead.settings.searchLinkElm && elm.oMasthead.settings.searchInputElm !== null ) {\r\n\t\t\t\telm.oMasthead.settings.searchInputElm.focus();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclose : function( elm, closeAll, closeOverlay ) {\r\n\t\t\tvar navigationInteval;\r\n\r\n\t\t\telm.oMasthead.settings.current = null;\r\n\r\n\t\t\toMastheadFn.closeSections( elm, oMastheadFn.settings.animationSpeed );\r\n\t\t\toMastheadFn.closeSearchLoginLoggedIn( elm.oMasthead.settings.searchElm, true );\r\n\t\t\toMastheadFn.closeSearchLoginLoggedIn( elm.oMasthead.settings.loginElm, true );\r\n\t\t\toMastheadFn.closeSearchLoginLoggedIn( elm.oMasthead.settings.loggedInElm, true );\r\n\r\n\t\t\tif ( closeAll ) {\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\tif ( closeOverlay ) {\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\t\tif ( elm.oMasthead.settings.wholeNavElm.classList.contains( 'is-animating' ) ) {\r\n\t\t\t\t\t\t\t\tnavigationInteval = setInterval( function intervalFn() {\r\n\t\t\t\t\t\t\t\t\tif ( elm.oMasthead.settings.wholeNavElm.classList.contains( 'is-animating' ) ) {\r\n\t\t\t\t\t\t\t\t\t\t// Do nothing still animating\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tclearInterval( navigationInteval );\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.pageWrapperElm.classList.remove( 'is-open' );\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.remove( 'js-o-masthead--is-open' );\r\n\t\t\t\t\t\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.extraContentAreaElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\t\t\t\t\t\toverlapMargin : true,\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = false;\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}, 10 );\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.wholeNavElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\t\t\t\tvariant : 'up',\r\n\t\t\t\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.pageWrapperElm.classList.remove( 'is-open' );\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.remove( 'js-o-masthead--is-open' );\r\n\t\t\t\t\t\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.extraContentAreaElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\t\t\t\t\t\toverlapMargin : true,\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.changeInProgress = false;\r\n\t\t\t\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Do nothing - close being forced by third parameter, but not needed since wholeNavElm is already closed!\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tutility.slideToggle( elm.oMasthead.settings.wholeNavElm, oMastheadFn.settings.animationSpeed, { variant : 'up' });\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 20 );\r\n\t\t\t}\r\n\r\n\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.mastheadElm, false, false );\r\n\r\n\t\t\telm.oMasthead.settings.pageWrapperElm.style.minHeight = 'auto';\r\n\t\t\telm.oMasthead.settings.wholePageElm.classList.remove( 'js-o-masthead--show-close' );\r\n\t\t\telm.oMasthead.settings.wholePageElm.classList.remove( 'js-o-masthead--search-open' );\r\n\t\t\telm.oMasthead.settings.wholePageElm.classList.remove( 'js-o-masthead--narrow-megamenu' );\r\n\t\t\telm.oMasthead.settings.narrowMenu = false;\r\n\t\t},\r\n\r\n\t\tcloseSearchLoginLoggedIn : function( sectionElm, fade ) {\r\n\t\t\tif ( utility.isNode( sectionElm ) ) {\r\n\t\t\t\tif ( fade ) {\r\n\t\t\t\t\tutility.fade( sectionElm, oMastheadFn.settings.animationSpeed, { variant : 'out' });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tutility.slideToggle( sectionElm, oMastheadFn.settings.animationSpeed, { variant : 'up' });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcloseSections : function( elm, speed ) {\r\n\t\t\tvar linkSelector = '.o-masthead__skip-links a.is-open, .o-masthead__primary-nav:not(.o-masthead__primary-nav--basic) a, .js-m-site-country-selection__country.is-open';\r\n\t\t\t// Loop through all open sections a reset the aria attributes and text, then hide the area associated to them.\r\n\t\t\tdocument.querySelectorAll( linkSelector ).forEach( function loop( openLinkElm ) {\r\n\t\t\t\tvar openAreaElm;\r\n\r\n\t\t\t\topenLinkElm.classList.remove( 'is-open' );\r\n\t\t\t\topenLinkElm.setAttribute( 'aria-expanded', 'false' );\r\n\r\n\t\t\t\tif ( elm.oMasthead.settings.mastheadNotification ) {\r\n\t\t\t\t\telm.oMasthead.settings.mastheadNotificationInstance.show();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( openLinkElm.classList.contains( 'js-m-site-country-selection__country' ) ) {\r\n\t\t\t\t\topenAreaElm = elm.oMasthead.settings.countryElm;\r\n\t\t\t\t} else {\r\n\t\t\t\t\topenAreaElm = document.querySelector( openLinkElm.getAttribute( 'href' ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( elm.oMasthead.settings.narrowMenu ) {\r\n\t\t\t\t\tutility.slideToggle( openAreaElm, speed, { variant : 'up' });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tutility.fade( openAreaElm, speed, { variant : 'out' });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\taccordionSubSections : function( elm, sectionLinkElm, sectionContentElm ) {\r\n\t\t\t// If on small screen or tabs not fitting allow accordion of sub sections\r\n\t\t\tif ( elm.oMasthead.settings.currentBreakpoint === utility.smallTag || !elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--fit-tabs' ) ) {\r\n\t\t\t\tif ( sectionLinkElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\tsectionLinkElm.classList.remove( 'is-open' );\r\n\t\t\t\t\tsectionLinkElm.setAttribute( 'aria-expanded', 'false' );\r\n\t\t\t\t\tutility.slideToggle( sectionContentElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'up',\r\n\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Hide all open sections\r\n\t\t\t\t\telm.oMasthead.settings.navSubSections.forEach( function loop( item ) {\r\n\t\t\t\t\t\tif ( item[ 0 ].classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\t\titem[ 0 ].classList.remove( 'is-open' );\r\n\t\t\t\t\t\t\titem[ 0 ].setAttribute( 'aria-expanded', 'false' );\r\n\t\t\t\t\t\t\tutility.slideToggle( item[ 1 ], oMastheadFn.settings.animationSpeed, { variant : 'up' });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsectionLinkElm.classList.add( 'is-open' );\r\n\t\t\t\t\tsectionLinkElm.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\tutility.slideToggle( sectionContentElm, oMastheadFn.settings.animationSpeed, {\r\n\t\t\t\t\t\tvariant : 'down',\r\n\t\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t\tvar sectionOffset = utility.offset( sectionLinkElm ).top,\r\n\t\t\t\t\t\t\t\twindowOffset = window.pageYOffset,\r\n\t\t\t\t\t\t\t\tanimationLoops;\r\n\r\n\t\t\t\t\t\t\tif ( sectionOffset < windowOffset ) {\r\n\t\t\t\t\t\t\t\tanimationLoops = oMastheadFn.settings.animationSpeed / 20;\r\n\t\t\t\t\t\t\t\tanimationLoops = Number.parseInt( animationLoops, 10 );\r\n\r\n\t\t\t\t\t\t\t\toMastheadFn.repositionNavigation( sectionLinkElm, animationLoops, windowOffset );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telm.oMasthead.settings.navSectionHeadingLinks.forEach( function loop( linkElm ) {\r\n\t\t\t\t\tlinkElm.removeAttribute( 'tabindex' );\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\telm.oMasthead.settings.pageWrapperElm.style.minHeight = utility.convertToPx( elm.oMasthead.settings.wholeNavElm.offsetHeight );\r\n\t\t\t\t}, oMastheadFn.settings.animationSpeed + 20 );\r\n\t\t\t} else {\r\n\t\t\t\telm.oMasthead.settings.navSectionHeadingLinks.forEach( function loop( linkElm ) {\r\n\t\t\t\t\tlinkElm.setAttribute( 'tabindex', '-1' );\r\n\t\t\t\t\tlinkElm.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t});\r\n\t\t\t\toMastheadFn.instantHideShow( sectionContentElm, false, false );\r\n\t\t\t\telm.oMasthead.settings.busy = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\trepositionNavigation : function( sectionLinkElm, animationLoops, windowOffset ) {\r\n\t\t\tvar newWindowOffset = windowOffset,\r\n\t\t\t\tnewAnimationLoops = animationLoops;\r\n\r\n\t\t\tif ( newAnimationLoops > 0 ) {\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\tvar sectionOffset = utility.offset( sectionLinkElm ).top;\r\n\r\n\t\t\t\t\tif ( newAnimationLoops === 1 ) {\r\n\t\t\t\t\t\tnewWindowOffset = sectionOffset;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewWindowOffset -= ( ( newWindowOffset - sectionOffset ) / newAnimationLoops );\r\n\t\t\t\t\t}\r\n\t\t\t\t\twindow.scrollTo( 0, newWindowOffset );\r\n\t\t\t\t\tnewAnimationLoops -= 1;\r\n\t\t\t\t\toMastheadFn.repositionNavigation( sectionLinkElm, newAnimationLoops, newWindowOffset );\r\n\t\t\t\t}, 10 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonKeydown : function( e, linkElm, elm ) {\r\n\t\t\tvar hasHeaderLink,\r\n\t\t\t\tallHeaderLinks,\r\n\t\t\t\tvisibleNavLinks,\r\n\t\t\t\tvisibleMenuLinks,\r\n\t\t\t\tcurrentLinkElm,\r\n\t\t\t\tbodyLinkElm,\r\n\t\t\t\tcurrentIndex,\r\n\t\t\t\tprevLinkElm,\r\n\t\t\t\tlastHeaderLinkElm;\r\n\r\n\t\t\t// When tab has been pressed and a nav item is open do the following\r\n\t\t\tif ( e.key === 'Tab' && elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\thasHeaderLink = linkElm.closest( 'header' ) !== null;\r\n\t\t\t\tallHeaderLinks = [].slice.call( elm.oMasthead.settings.wholePageElm.querySelectorAll( '.o-masthead a, .m-site-country-selection a' ) ).filter( function filterFn( el ) {\r\n\t\t\t\t\tvar isVisible = false;\r\n\t\t\t\t\tif ( utility.isVisible( el ) && el.getAttribute( 'tabindex' ) !== '-1' ) {\r\n\t\t\t\t\t\tisVisible = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn isVisible;\r\n\t\t\t\t});\r\n\t\t\t\tvisibleNavLinks = [].slice.call( elm.oMasthead.settings.wholeNavElm.querySelectorAll( 'a, input, button' ) ).filter( function filterFn( el ) {\r\n\t\t\t\t\tvar isVisible = false;\r\n\t\t\t\t\tif ( utility.isVisible( el ) && el.getAttribute( 'tabindex' ) !== '-1' ) {\r\n\t\t\t\t\t\tisVisible = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn isVisible;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif ( hasHeaderLink ) {\r\n\t\t\t\t\t// If the link is part of the header area...\r\n\t\t\t\t\toMastheadFn.keydownHeaderLink({\r\n\t\t\t\t\t\tevent : e,\r\n\t\t\t\t\t\tcurrentIndex : currentIndex,\r\n\t\t\t\t\t\tallHeaderLinks : allHeaderLinks,\r\n\t\t\t\t\t\tlinkElm : linkElm,\r\n\t\t\t\t\t\tprevLinkElm : prevLinkElm,\r\n\t\t\t\t\t\tvisibleNavLinks : visibleNavLinks,\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// If the link is not part of the header area...\r\n\t\t\t\t\tbodyLinkElm = linkElm.closest( '.o-masthead-navigation' ).length === 0;\r\n\t\t\t\t\tvisibleMenuLinks = [].slice.call( elm.oMasthead.settings.wholePageElm.querySelectorAll( '.o-masthead__skip-links li' ) ).filter( function filterFn( el ) {\r\n\t\t\t\t\t\tvar isVisible = false;\r\n\t\t\t\t\t\tif ( utility.isVisible( el ) && el.getAttribute( 'tabindex' ) !== '-1' ) {\r\n\t\t\t\t\t\t\tisVisible = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn isVisible;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvisibleMenuLinks.forEach( function loop( listItemElm ) {\r\n\t\t\t\t\t\tvisibleMenuLinks.concat( [].slice.call( listItemElm.querySelectorAll( 'a' ) ) );\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif ( bodyLinkElm ) {\r\n\t\t\t\t\t\t// If the link is not part of the header or navigation areas move the user back into the header system.\r\n\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\tlastHeaderLinkElm = allHeaderLinks[ allHeaderLinks.length - 1 ];\r\n\t\t\t\t\t\tif ( lastHeaderLinkElm.classList.add( 'is-open' ) ) {\r\n\t\t\t\t\t\t\tvisibleMenuLinks[ visibleMenuLinks.length - 1 ].focus();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlastHeaderLinkElm.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toMastheadFn.keydownNotBodyLink( elm, {\r\n\t\t\t\t\t\t\tcurrentLinkElm : currentLinkElm,\r\n\t\t\t\t\t\t\tallHeaderLinks : allHeaderLinks,\r\n\t\t\t\t\t\t\tevent : e,\r\n\t\t\t\t\t\t\tvisibleNavLinks : visibleNavLinks,\r\n\t\t\t\t\t\t\tlinkElm : linkElm,\r\n\t\t\t\t\t\t\tcurrentIndex : currentIndex,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeydownHeaderLink : function( vars ) {\r\n\t\t\tif ( vars.event.shiftKey ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * If the shift key has also been pressed\r\n\t\t\t\t * Get the index of the link in comparison to other links within the header\r\n\t\t\t\t */\r\n\t\t\t\tvars.currentIndex = vars.allHeaderLinks.indexOf( vars.linkElm );\r\n\t\t\t\t/*\r\n\t\t\t\t * If the link is not the first link in the header check if the previous link is open.\r\n\t\t\t\t * If is open then move to the last link within the open navigation. Otherwise just move to the previous link.\r\n\t\t\t\t */\r\n\t\t\t\tif ( vars.currentIndex > 0 ) {\r\n\t\t\t\t\tvars.prevLinkElm = vars.allHeaderLinks[ vars.currentIndex - 1 ];\r\n\t\t\t\t\tif ( vars.prevLinkElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\tvars.event.preventDefault();\r\n\t\t\t\t\t\tvars.visibleNavLinks[ vars.visibleNavLinks.length - 1 ].focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if ( vars.linkElm.classList.contains( 'is-open' ) && vars.visibleNavLinks.length > 0 ) {\r\n\t\t\t/*\r\n\t\t\t * If the current link is set to open and the contents of the open area has links within it.\r\n\t\t\t * Move the user into the open navigation.\r\n\t\t\t * If the current link is not set to open and the last link in the header move the user back to the first link in the header.\r\n\t\t\t */\r\n\t\t\t\tvars.event.preventDefault();\r\n\t\t\t\tvars.visibleNavLinks[ 0 ].focus();\r\n\t\t\t} else if ( vars.allHeaderLinks.indexOf( vars.linkElm ) >= vars.allHeaderLinks.length - 1 ) {\r\n\t\t\t\tvars.event.preventDefault();\r\n\t\t\t\tvars.allHeaderLinks[ 0 ].focus();\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeydownNotBodyLink : function( elm, vars ) {\r\n\t\t\tvars.currentLinkElm = vars.allHeaderLinks.filter( function filterFn( el ) {\r\n\t\t\t\treturn el.getAttribute( 'href' ) === elm.oMasthead.settings.current;\r\n\t\t\t})[ 0 ];\r\n\t\t\tif ( vars.event.shiftKey && vars.visibleNavLinks.indexOf( vars.linkElm ) === 0 ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * If the shift key has also been pressed and the link is the first one in the visible navigation move\r\n\t\t\t\t * the user back onto the link that opened the navigation.\r\n\t\t\t\t */\r\n\t\t\t\tvars.event.preventDefault();\r\n\t\t\t\tvars.currentLinkElm.focus();\r\n\t\t\t} else if ( vars.event.shiftKey && vars.visibleNavLinks.indexOf( vars.linkElm ) === vars.visibleNavLinks.length - 1 ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else if ( vars.visibleNavLinks.indexOf( vars.linkElm ) === vars.visibleNavLinks.length - 1 ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * If the link is the last link in the visible navigation move the user to the last link in the header unless the\r\n\t\t\t\t * user opened the navigation from the last link, then move the user to the first link in the header\r\n\t\t\t\t */\r\n\t\t\t\tvars.event.preventDefault();\r\n\r\n\t\t\t\tvars.currentIndex = vars.allHeaderLinks.indexOf( vars.currentLinkElm );\r\n\t\t\t\tif ( vars.currentIndex >= vars.allHeaderLinks.length - 1 ) {\r\n\t\t\t\t\tvars.allHeaderLinks[ 0 ].focus();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvars.allHeaderLinks[ vars.currentIndex + 1 ].focus();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsizeNavElements : function( elm, breakpoint ) {\r\n\t\t\t// If mobile then make link not tabbable\r\n\t\t\toMastheadFn.tabbableLink( elm.oMasthead.settings.searchLinkElm, breakpoint );\r\n\t\t\toMastheadFn.tabbableLink( elm.oMasthead.settings.loggedInLinkElm, breakpoint );\r\n\t\t},\r\n\r\n\t\ttabbableLink : function( linkElm, breakpoint ) {\r\n\t\t\t// If mobile then make link not tabbable\r\n\t\t\tif ( utility.isNode( linkElm ) ) {\r\n\t\t\t\tif ( breakpoint === utility.smallTag && !linkElm.classList.contains( 'js-tabbable' ) ) {\r\n\t\t\t\t\tlinkElm.setAttribute( 'tabindex', '-1' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlinkElm.removeAttribute( 'tabindex' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpositionNav : function( elm, breakpoint ) {\r\n\t\t\tvar menuOpen = false,\r\n\t\t\t\tloginOpen = false,\r\n\t\t\t\ttabsShowing,\r\n\t\t\t\ttabNowShowing;\r\n\r\n\t\t\t// If the menu is open then make sure the page is tall enough to contain the open menu\r\n\t\t\tif ( elm.oMasthead.settings.pageWrapperElm.classList.contains( 'is-open' ) ) {\r\n\t\t\t\tmenuOpen = true;\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm.classList.remove( 'is-open' );\r\n\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.extraContentAreaElm, false, false );\r\n\t\t\t}\r\n\t\t\t// If the login menu is open\r\n\t\t\tif ( menuOpen && elm.oMasthead.settings.loginLinkUrl === elm.oMasthead.settings.current ) {\r\n\t\t\t\tloginOpen = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Store if tabs are currently being shown and then reset the masthead back to basics\r\n\t\t\ttabsShowing = elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--fit-tabs' );\r\n\r\n\t\t\toMastheadFn.fitNavigation( elm, breakpoint );\r\n\r\n\t\t\ttabNowShowing = elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--fit-tabs' );\r\n\r\n\t\t\t// If the menu is open then make sure the page is tall enough to contain the open menu\r\n\t\t\tif ( menuOpen ) {\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm.classList.add( 'is-open' );\r\n\r\n\t\t\t\tif ( elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--wont-fit-extra-content' ) ) {\r\n\t\t\t\t\toMastheadFn.instantHideShow( elm.oMasthead.settings.extraContentAreaElm, true, false );\r\n\t\t\t\t}\r\n\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm.style.minHeight = utility.convertToPx( elm.oMasthead.settings.wholeNavElm );\r\n\t\t\t}\r\n\r\n\t\t\toMastheadFn.positionNavPart2( elm, breakpoint, tabsShowing, tabNowShowing );\r\n\r\n\t\t\t// Reset heights on the section descriptions\r\n\t\t\telm.oMasthead.settings.allNavSectionDescriptions.forEach( function loop( itemElm ) {\r\n\t\t\t\titemElm.style.minHeight = 0;\r\n\t\t\t});\r\n\r\n\t\t\toMastheadFn.positionNavPart3( elm, breakpoint, tabsShowing, tabNowShowing, loginOpen );\r\n\t\t},\r\n\r\n\t\tpositionNavPart2 : function( elm, breakpoint, tabsShowing, tabNowShowing ) {\r\n\t\t\t// If on mobile or tabs are not showing allow heading to be clickable\r\n\t\t\tif ( breakpoint === utility.smallTag || tabsShowing !== tabNowShowing ) {\r\n\t\t\t\tif ( breakpoint !== utility.smallTag && tabNowShowing ) {\r\n\t\t\t\t\telm.oMasthead.settings.navSectionHeadingLinks.forEach( function loop( linkElm ) {\r\n\t\t\t\t\t\tlinkElm.setAttribute( 'tabindex', '-1' );\r\n\t\t\t\t\t});\r\n\t\t\t\t\telm.oMasthead.settings.navSubSections.forEach( function loop( item ) {\r\n\t\t\t\t\t\titem[ 0 ].setAttribute( 'tabindex', '-1' );\r\n\t\t\t\t\t\titem[ 0 ].setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\t\toMastheadFn.instantHideShow( item[ 1 ], false, false );\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.oMasthead.settings.navSectionHeadingLinks.forEach( function loop( item ) {\r\n\t\t\t\t\t\titem.removeAttribute( 'tabindex' );\r\n\t\t\t\t\t});\r\n\t\t\t\t\telm.oMasthead.settings.navSubSections.forEach( function loop( item ) {\r\n\t\t\t\t\t\titem[ 0 ].classList.remove( 'is-open' );\r\n\t\t\t\t\t\titem[ 0 ].removeAttribute( 'tabindex' );\r\n\t\t\t\t\t\titem[ 0 ].setAttribute( 'aria-expanded', 'false' );\r\n\t\t\t\t\t\toMastheadFn.instantHideShow( item[ 1 ], true, false );\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpositionNavPart3 : function( elm, breakpoint, tabsShowing, tabNowShowing, loginOpen ) {\r\n\t\t\t// If at desktop and the display of primary tabs has changed then close any menu currently open\r\n\t\t\tif ( ( breakpoint !== utility.smallTag && tabsShowing !== tabNowShowing ) || ( loginOpen && elm.oMasthead.settings.wholePageElm.classList.contains( 'js-o-masthead--wont-fit-login' ) ) ) {\r\n\t\t\t\toMastheadFn.close( elm, true, true );\r\n\t\t\t} else {\r\n\t\t\t\tif ( breakpoint !== utility.smallTag && tabNowShowing ) {\r\n\t\t\t\t\t// If not on small screen or tabs fit match the height of the descriptions across a row\r\n\t\t\t\t\toMastheadFn.alignDescriptions( elm, breakpoint );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Do nothing\r\n\t\t\t\t}\r\n\t\t\t\telm.oMasthead.settings.pageWrapperElm.style.minHeight = utility.convertToPx( elm.oMasthead.settings.wholeNavElm.offsetHeight );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\talignDescriptions : function( elm, breakpoint ) {\r\n\t\t\tvar visibleDescriptions = [].slice.call( elm.oMasthead.settings.allNavSectionDescriptions ).filter( function filterFn( el ) {\r\n\t\t\t\t\treturn utility.isVisible( el );\r\n\t\t\t\t}),\r\n\t\t\t\tdescriptionsInRow,\r\n\t\t\t\tstart,\r\n\t\t\t\tend,\r\n\t\t\t\trows = 1,\r\n\t\t\t\ti,\r\n\t\t\t\tminHeight,\r\n\t\t\t\trowLoop = function( descriptionElm ) {\r\n\t\t\t\t\tdescriptionElm.style.minHeight = utility.convertToPx( minHeight ); // Set the min height on all items within the row\r\n\t\t\t\t};\r\n\r\n\t\t\tif ( visibleDescriptions.length > 0 ) {\r\n\t\t\t\tif ( breakpoint === utility.mediumTag ) {\r\n\t\t\t\t\t// Calculate the number of rows there are to align\r\n\t\t\t\t\trows = Math.ceil( visibleDescriptions.length / 3 );\r\n\t\t\t\t}\r\n\t\t\t\tfor ( i = 0; i < rows; i++ ) {\r\n\t\t\t\t\tdescriptionsInRow = visibleDescriptions.slice( 0 );\r\n\r\n\t\t\t\t\tif ( breakpoint === utility.mediumTag ) {\r\n\t\t\t\t\t\tstart = i * 3; // Start of slice\r\n\t\t\t\t\t\tend = start + 3; // End of slice\r\n\t\t\t\t\t\tif ( end > visibleDescriptions.length ) {\r\n\t\t\t\t\t\t\tend = visibleDescriptions.length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdescriptionsInRow = visibleDescriptions.slice( start, end );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( descriptionsInRow.length > 0 ) {\r\n\t\t\t\t\t\tminHeight = oMastheadFn.findTallestDescription( descriptionsInRow );\r\n\t\t\t\t\t\tdescriptionsInRow.forEach( rowLoop );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfindTallestDescription : function( rowElm ) {\r\n\t\t\tvar minHeight = 0;\r\n\t\t\trowElm.forEach( function loop( thisRowElm ) {\r\n\t\t\t\tvar newHeight = thisRowElm.offsetHeight;\r\n\t\t\t\tif ( newHeight > minHeight ) {\r\n\t\t\t\t\tminHeight = newHeight; // If the description is the tallest in this set so far store the min height\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn minHeight;\r\n\t\t},\r\n\r\n\t\tfitNavigation : function( elm, breakpoint ) {\r\n\t\t\tvar allClasses = 'js-o-masthead--wont-fit-extra-content js-o-masthead--wont-fit-search js-o-masthead--wont-fit-login js-o-masthead--fit-tabs',\r\n\t\t\t\tmaxMenuHeight;\r\n\r\n\t\t\t// Reset all classes controlling the layout\r\n\t\t\tutility.removeClass( elm.oMasthead.settings.wholePageElm, allClasses );\r\n\r\n\t\t\t// If at desktop check for if the tabs and the extra content can fit and add styles appropriately\r\n\t\t\tif ( breakpoint !== utility.smallTag ) {\r\n\t\t\t\t// Get the base height of the masthead\r\n\t\t\t\tmaxMenuHeight = elm.oMasthead.settings.logoElm.offsetHeight + 2; // Add two pixel to allow for rounding errors when using browser zoom\r\n\r\n\t\t\t\t// Show the primary nav tabs\r\n\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--fit-tabs' );\r\n\r\n\t\t\t\t// Test if the primary nav tabs fit by checking if they have wrapped\r\n\t\t\t\tif ( elm.oMasthead.settings.mastheadElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t// If the tabs don't fit move the extra content below\r\n\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--wont-fit-extra-content' );\r\n\t\t\t\t\t// Test if the primary nav tabs fit by checking if they have wrapped and if they still won't fit reduce the search button size\r\n\t\t\t\t\tif ( elm.oMasthead.settings.navContainerElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--wont-fit-search' );\r\n\t\t\t\t\t\t// Test if the primary nav tabs fit by checking if they have wrapped and if they still won't fit reduce the login register area size\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.navContainerElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--wont-fit-login' );\r\n\t\t\t\t\t\t\t// Test if the primary nav tabs fit by checking if they have wrapped and if they still won't fit set to use menu button\r\n\t\t\t\t\t\t\tif ( elm.oMasthead.settings.navContainerElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t\t\t\tutility.removeClass( elm.oMasthead.settings.wholePageElm, allClasses );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Test if the extra content still does not fit and push below\r\n\t\t\t\t\tif ( elm.oMasthead.settings.mastheadElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--wont-fit-extra-content' );\r\n\t\t\t\t\t\t// Test if the search still does not fit and reduce size\r\n\t\t\t\t\t\tif ( elm.oMasthead.settings.navContainerElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--wont-fit-search' );\r\n\t\t\t\t\t\t\t// Test if the login register still does not fit and reduce in size\r\n\t\t\t\t\t\t\tif ( elm.oMasthead.settings.navContainerElm.offsetHeight > maxMenuHeight ) {\r\n\t\t\t\t\t\t\t\telm.oMasthead.settings.wholePageElm.classList.add( 'js-o-masthead--wont-fit-login' );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\r\n\treturn {\r\n\t\tinitInstance : function( elm ) {\r\n\t\t\toMastheadFn.init( elm );\r\n\t\t},\r\n\t};\r\n});\r\n"]}