{"version":3,"sources":["blocks/o-masthead.js"],"names":["define","utility","oMastheadFn","settings","FRAMEWORK","locale","oMasthead","closeMenu","closeText","loadingText","animationSpeed","init","elm","wholePageElm","closest","menuId","makeId","menuLinkHtml","menuText","classList","contains","add","currentBreakpoint","current","navContainerElm","querySelector","pageWrapperElm","wholeNavElm","navLinkElm","navLinkHidden","navElm","getAttribute","skipLinksElm","mastheadElm","prepend","htmlStringToElement","append","orphanPrimaryNavElm","navSectionHeadingLinks","querySelectorAll","navSubSections","navBasicLinks","processSkipLink","topBarElm","countryLinkElm","countryLinkUrl","allSkipLinks","processOtherSkipLinks","extraContentAreaElm","getBreakpoint","windowWidth","window","innerWidth","insertAdjacentElement","document","isNode","wrap","setupSiteSwitcher","setupLink","searchLinkElm","setupCountryLink","loginLinkElm","loginElm","loggedInLinkElm","loggedInElm","buildPrimaryNav","searchElm","sizeNavElements","positionNav","instantHideShow","opacity","element","hide","fadeOnly","ariaHidden","displayType","setAttribute","style","queryString","linkName","validHref","urlAnchorRegExp","test","loginLinkUrl","loginLinkHidden","remove","loggedInLinkName","hasAttribute","removeAttribute","parentNode","insertBefore","loggedInLinkHidden","searchLinkUrl","searchLinkHidden","forEach","linkElm","scrollTarget","scrollTargetHref","substring","getElementById","addEventListener","listener","e","smoothScroll","offset","top","timings","t350ms","matches","validSiteSwitcherHref","siteSwitcherOpen","siteSwitcherLink","siteSwitcherUrl","siteSwitcherContent","hasSiteSwitcher","siteSwitcherContentInner","children","setAttributes","role","updateSiteSwitcherText","preventDefault","busy","buttonElm","toggleSiteSwitcher","siteSwitcherTabbing","variant","close","fade","t200ms","setTimeout","slideToggle","t300ms","callback","complete","t100ms","target","selectedOption","innerHTML","switcherInitial","disabled","switcherSelection","replace","siteName","key","shiftKey","focus","allLinksInSiteSwitcher","length","getVisibleLinks","allNonDisabledLinks","visibleLinkElm","allLinks","visibleLinks","currentLinkElm","bindEvents","resizeRedraw","newBreakpoint","wait","smallTag","timeoutFn","resetPosition","onResize","debounce","newWindowWidth","body","tagName","match","isVisible","onKeydown","targetElm","isButton","isMastheadButton","test2","areaElm","linkHref","tempAreaElm","aria-controls","aria-expanded","changeInProgress","open","cloneNode","setFocusFunc","windowHeight","pageYOffset","tempAreaHeight","offsetHeight","tempAreaPos","innerHeight","windowPos","t150ms","contentHref","requestLoadInto","status","countryElm","t500ms","response","minHeight","convertToPx","newNavElm","landingPageLinkTop","setupCloseButton","sectionHeadingElm","currentSectionArea","sectionId","sectionTitle","textContent","subSectionLinkElm","wrapInner","currentSubSectionElm","sectionAllLinkElm","subSectionContentElm","selectedSectionClass","subSectionId","accordionSubSections","section","allNavSectionDescriptions","buildPrimaryNavBasic","primaryNavigationLabel","thisLinkElm","columnContainer","allColumns","buttonCloseFunc","basicLink","closeButtonBottom","sectionOpen","insertAdjacentHTML","sameSection","transitionBetweenMenus","buttonHtml","closeButtonTop","vars","currentSectionUrl","checkSection","testLinkElm","testLinkUrl","openPart2","checkAllLinks","test1","narrowMenu","loggedInLinkUrl","openSection","currentHeight","animationDirection","display","openSectionPart2","transitionSection","newHeight","waitForFade","thisAreaElm","alignDescriptions","customEndHeight","removeProperty","searchInputElm","customStartHeight","navigationInteval","closeSearchLoginLoggedIn","closeAll","clearInterval","overlapMargin","closeOverlay","setInterval","sectionElm","closeSections","linkSelector","loop","openAreaElm","openLinkElm","sectionLinkElm","speed","sectionContentElm","sectionOffset","animationLoops","parseInt","item","repositionNavigation","newWindowOffset","windowOffset","newAnimationLoops","hasHeaderLink","allHeaderLinks","slice","keydownHeaderLink","currentIndex","prevLinkElm","scrollTo","bodyLinkElm","visibleNavLinks","visibleMenuLinks","lastHeaderLinkElm","call","filter","el","keydownNotBodyLink","event","listItemElm","indexOf","tabbableLink","breakpoint","loginOpen","tabNowShowing","menuOpen","tabsShowing","positionNavPart3","positionNavPart2","fitNavigation","itemElm","mediumTag","rows","ceil","visibleDescriptions","start","end","descriptionsInRow","rowElm","rowLoop","descriptionElm","maxMenuHeight","allClasses","Math","i","findTallestDescription","thisRowElm","initInstance","removeClass","logoElm"],"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' ], function run( utility ) {\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\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 {\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}\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.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.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},\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}\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' && 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 ) ) {\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\telm.oMasthead.settings.navLinkElm.insertAdjacentHTML( 'afterend', '' );\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\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 ( 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 = 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"]}