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