{"version":3,"sources":["1-pagination.js","accordion.js","anchor-links.js","cookie-notice.js","download-sticky.js","expander.js","gift-animated.js","glossary.js","home-news-carousel.js","iframe-blocker.js","image-carousel.js","in-view.js","jumplink.js","links-external.js","main.js","nav-chapters.js","nav-primary.js","news.js","pdf.js","related-links.js","releases.js","scroll-to-top.js","search.js","share.js","table-scroll.js","tabs.js","videos.js"],"names":["$","getUrlVars","vars","hash","hashes","window","location","href","slice","indexOf","split","i","length","push","each","scrollClass","this","data","$this","addClass","$pageBreaks","find","urlParams","removeAttr","pages","html","newHTML","map","page","active","join","$pages","append","jQuery","slick","focusOnChange","focusOnSelect","accessibility","slidesToShow","slidesToScroll","arrows","fade","dots","autoplay","adaptiveHeight","infinite","swipe","draggable","prevArrow","nextArrow","on","event","direction","offset","width","name","animate","scrollTop","position","top","currentSlide","nextSlide","index","element","$element","attr","tabindex","Accordion","selector","selectorHead","buttonSelector","contentSelector","selectorNoDesk","windowSize","innerWidth","duration","destroyDesk","init","bindAccordion","bindChangeEvent","destroyAccordion","TableScroll","addIDs","unbindAllClickEvents","bindClickEvents","clearTimeout","id","setTimeout","updateWindowSize","reset","$thisList","$thisItems","children","$thistHeads","$thisButtons","$thisContent","unbindClickEvents","$accordions","$listItems","$listHead","$listButtons","$listContent","$thisButton","parentId","parents","parent","e","$thisParent","activateAccordion","preventDefault","stopPropagation","off","state","slideToggle","document","ready","String","prototype","startsWith","searchString","messageEditMode","messageNoH3","anchorContainers","getElementsByClassName","j","hTagsName","attributes","getNamedItem","value","elements","getElementsByTagName","isEditMode","toLowerCase","list","createElement","setAttribute","k","l","text","innerText","className","trim","hasClass","getListElement","appendChild","title","titleText","message","linkedElement","link","addEventListener","trigger","getCookie","cname","decodedCookie","decodeURIComponent","cookie","ca","c","charAt","substring","setCookie","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","$cookieNotice","hasConsent","showPanel","bindClickEvent","bindFocusEvent","daysMax","daysMin","consentNecessary","consentAnalytics","thisAttr","addCookie","SetAnalytics","analytics","setTagManager","IframeBlocker","removePanel","removeClass","consentValue","days","$thisTarget","target","clickedOutside","closest","DownloadSticky","selectorButton","isSticky","isEndPoint","isDisabled","classActive","classAbsolute","classOpen","endPointClass","headerHeight","selectorWidth","contentWidth","viewPortHeight","offsetElRound","endStickyPosition","startPosition","rightPosition","footerHeight","footerPosition","winScroll","getWindowSize","getElSize","checkOffsetEl","setPosition","bindHoverEvent","bindKeyboardEvent","offsetEl","Math","round","footerPositionRound","endPointPosition","elRightPosition","removeHideClass","containerPercentage","height","outerWidth","outerHeight","elHeight","addAbsoluteClass","css","winScrollRound","addStickyClass","removeAbsoluteClass","removeStickyClass","addEndPointClass","removeEndPointClass","addOpenClass","removeOpenClass","key","Expander","content","btnClose","setDefaultState","$thisSelector","thisSelectorAttr","unbindClickEvent","findMatchContent","matchedContentAttr","$matchedContentEl","bindClickClose","setAriaAttr","setFocus","$thisBtClose","$thisCloseSelector","stateLink","stateContent","AnimatedGif","selectorText","selectorImg","bindClickOff","$thisContainer","$thisImg","addClassActive","Glossary","buttonClose","pageEditMode","createTitle","bindClickOpen","remove","LinksExternal","thisText","thisTextUppercase","toUpperCase","thisTitle","idLabel","idDescription","descrWrapper","thisContent","prepend","siblings","wrapAll","showModal","hideModal","bindKeyDownClose","bindClickOutside","currentContentainer","removeFocus","$childContainer","$childContent","$focusableElements","firstFocusedEl","lastFocusedEl","isTabPressed","shiftKey","activeElement","dotsContainer","slideContainer","slide","$homeCarousel","autoplaySpeed","before","toggleClass","thisId","matchedSlide","$matchedSlideLink","setAriaAttributes","newAriaLabel","selectedDot","CheckCookies","selectorOverlay","blockerImage","videoPlayer","iframeId","hasConsentAnalytics","$thisIframe","iframeType","iframeOverlay","iframeImage","iframeVideo","videoID","iframeTitle","crateIframe","removeBlocker","buildTableau","thisIframe","tag","src","frameBorder","el","tableauPlaceholder","tableauObj","iframeWidth","iframeHeight","iframeHeightMobile","scriptElement","nav","asNavFor","carousel","featherlightGallery","previousIcon","nextIcon","galleryFadeIn","galleryFadeOut","filter","inView","selection","scrollOffset","selectorNodeList","querySelectorAll","selectorArray","getArrayFromNodelist","inviewElements","getMatchingElements","filteredElements","parentNode","inViewport","isElementInViewport","isVisible","isElementVisible","elClientRect","getBoundingClientRect","offsetHeight","elTop","elBottom","bottom","winHeight","innerHeight","documentElement","clientHeight","viewportTop","viewportBottom","viewportInner","viewportAll","opacity","getStyle","display","visibility","nodeType","prop","getComputedStyle","defaultView","currentStyle","nodeList","nodeArray","JumpLink","contentNav","thisHash","lineBarHeight","contentNavHeight","navHeight","iconExternal","addLinkFeautures","$externalLink","imgButton","imgButtonPlaceholder","$thisLink","$thisLinkContentBlock","$thisLinkAccordion","$thisLinkExpander","$thisLinkBoxwrap","$thisLinkTimeline","$thisLinkModal","vissuallyHiddenText","$linkImg","$linkWithImage","listExcluded","is","touchsupport","navigator","maxTouchPoints","msMaxTouchPoints","val","today","year","getFullYear","datepicker","dateFormat","firstDay","showButtonPanel","closeText","currentText","changeMonth","changeYear","yearRange","Modernizr","objectfit","$imageContainer","imgUrl","imgAlt","NavChapters","selectorContainer","linkNav","classCurrent","lineBar","lineBarIndicator","scrollPercentage","listNav","section","heading","sectionHeading","verticalClass","selectorPublication","contentPublication","stopSticky","isHorizontal","isOpen","navListItem","backLinkNav","navHeightInitial","navNoStickyHeight","contentHeight","navChapersOffset","contentOffset","topOffsetDesk","navBreakPoint","addHorizontalClass","getHeading","addLineBar","showScrollingPercentage","bindScrollEvent","setStickyPosition","setAriaAttrs","bindClickButton","bindExpanderLink","heading2","not","$thisHeading","textH2","$section","eq","createNav","bindClickLink","nextUntil","addBack","bodyEdit","elementH3","$thisH2Id","h2Link","backLinkHTML","$thisMatched","after","$thisH3","thisH3Text","thisH3Id","next","getInViewSection","thisLink","checkOffsetSection","removeClassActive","resetAriaAttrs","resetPosition","unbindClickButton","resetHeight","animateNavChapt","offSetEl","offsetRound","navButtonHeight","lineHeight","navChapBar","combinedHeight","endScroll","endScrollNoSticky","endScrollNoStickyDesk","endScrollDesk","jumpToHeading","jumpToSection","contentHeading","combinedNavHeight","$currentHeading","$currentSection","currentSectionId","$navItem","$navList","currentH2Id","$navItemH2","currentHeading","currentHeadingId","$navItemMatched","body","heightDoc","scrollHeight","scrolled","scrolledRound","addHideClass","combinedNavHead","contentHidden","NavPrimary","navPrimaryUl","selectorMenu","navHasChildren","dropdownToggle","subList","showElClass","openSubMenuClass","hoverClass","hideClass","backMenu","subNavSecondaryButton","subNavPrimaryButton","seconLevelUl","thirdLevelUl","firstSubLink","secondarySubLink","setAttributes","setNavEvents","addCurrentClass","bindMouseEvent","unbindMobileEvent","bindMobileEvents","setAriaMenuMobile","removeAttributes","resetMobileNav","unbindMouseEvent","$thisListItem","type","addShowElClass","removeShowElClasss","$thisSubNav","$thisLi","closeDeskSubNav","openSubNav","resetDeskNav","resetDeskSubNavDropdown","removeHideClasss","$liSiblings","$ulSiblings","$thisMenu","$thisMenuState","primaryNavState","$ulParent","$LiSiblings","$currentPageLink","pathname","addOpenSubMenuClass","removeOpenSubMenuClass","CP","NEWS","cp","loading","IEimages","querySelector","selectorId","dataPlaceholder","customSuggest","query","syncResults","obj","initGetFilters","ajax","url","done","results","valuesFiltered","suggestions","result","inputValueTemplate","suggestionTemplate","onConfirm","accessibleAutocomplete","source","confirmOnBlur","displayMenu","minLength","placeholder","showNoOptionsFound","templates","inputValue","suggestion","input","submit","dataEmpty","clear","error","errorText","which","initFilters","Page","initDirection","elem","thisToggle","$thisSiblings","nextSiblingsToggle","initPagination","pagerDataElement","currentPage","pageCount","parseInt","LoadMore","BOE","InfiniteScrolling","undefined","initClearFilters","reload","initAjaxCall","queryType","queryTypeOptions","queryTaxonomy","dateFrom","dateTo","searchCtrl","typeValues","toArray","NewsTypes","checked","taxonomyValues","taxonomyValuesAvailable","NewsTaxonomies","fromVal","toVal","parseToISOString","setDate","getDate","grid","SearchTerm","Id","NewsPageDataSourceID","PageSize","NewsPageSize","NewsTypesAvailable","Taxonomies","TaxonomiesAvailable","Direction","DateFrom","DateTo","Grid","initGridState","setState","loadResults","replaceWith","Results","fadeIn","empty","hide","textCount","Refiners","fail","history","pushState","isInViewPort","elementTop","elementBottom","InfiniteScroll","initialize","setupEvents","handleScroll","bind","initRefreshTypes","initRefreshTaxonomies","initRefreshSearchbox","initRefreshDirection","initRefreshDate","initRefreshGrid","PerformanceNavigationTiming","delay","typeCheckboxes","typeCheckboxesValues","ajaxTransport","options","originalOptions","jqXHR","FormData","dataType","ArrayBuffer","Blob","send","headers","callback","xhr","XMLHttpRequest","async","responseType","username","password","response","status","statusText","getAllResponseHeaders","open","setRequestHeader","abort","verifiedPdf","isFloating","console","info","form","button","hiddenAlert","defaultHtml","genMsg","ajaxSettings","action","contentType","retries","onFail","textStatus","errorThrown","log","timeout","onSuccess","jqXhr","disposition","getResponseHeader","headerParts","keyValuePairs","keyValuePair","blob","URL","createObjectURL","download","filename","click","SEARCH","initAutocomplete","ContentPageSearchDataSourceID","search","Submit","targetPage","queryParam","extraParams","initSortedBy","sortBy","ContentPageTypes","ContentPageTaxonomies","isUndefined","SortByParameter","ContentPageSize","ReleaseTypes","ReleaseTypesAvailable","ShowResultImage","OrderBy","NumResultsTxt","initRefreshOrderBy","Share","$thisSelectorParent","toggleClassActive","tableRow","tableCol","setTheadPosition","$thisTable","thisRow","thisCol","thisTdHead","thisTh","thisTbody","thisTd","tHeadRowHeight","colHeadWidth","cellTd","cellWidth","cellTdHead","tdHeadWidth","cellTh","cellThWidth","scrollLeftValue","scrollLeft","scrollTopValue","$tabsWrap","$content","tab_id","video","iframe","fadeOut"],"mappings":"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","file":"BoE.min.js","sourcesContent":["(function ($) {\r\n\r\n\tfunction getUrlVars() {\r\n\t\tvar vars = [], hash;\r\n\t\tvar hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');\r\n\t\tfor (var i = 0; i < hashes.length; i++) {\r\n\t\t\thash = hashes[i].split('=');\r\n\t\t\tvars.push(hash[0]);\r\n\t\t\tvars[hash[0]] = hash[1];\r\n\t\t}\r\n\t\treturn vars;\r\n\t}\r\n\r\n\r\n\t// Pagination\r\n\t$('.page-content').each(function () {\r\n\t\tvar scrollClass = \"sc-\" + $(this).data(\"id\");\r\n\t\tvar $this = $(this).addClass('page-carousel').addClass(scrollClass);\r\n\t\tvar $pageBreaks = $this.find('hr');\r\n\t\tvar urlParams = getUrlVars();\r\n\t\tif ($pageBreaks.length === 0 || $('.pagemode-edit').length > 0 || urlParams[\"pdf\"]==\"1\") return;\r\n\r\n\t\t//Solution 1\r\n\t\t/*$this.contents().filter(function () { return this.nodeType === 3 }).wrap('

');\r\n\r\n\t\t$pageBreaks.each(function (i) {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tif (i === 0) $this.prevAll().wrapAll('

');\r\n\t\t\t$this.nextUntil('hr').wrapAll('
');\r\n\t\t\t$this.detach();\r\n\t\t});*/\r\n\r\n\t\t//Solution 2\r\n\t\t$pageBreaks.each(function() {\r\n\t\t\t$(this).removeAttr(\"class\");\r\n\t\t});\r\n\r\n\t\tvar pages = $this.html().split('
');\r\n\t\tvar newHTML = pages.map(function (page, i) {\r\n\t\t\tvar active = (i == 0) ? ' active' : '';\r\n\t\t\treturn '
' + page + '
';\r\n\t\t}).join('');\r\n\t\t$this.html(newHTML);\r\n\r\n\t\tvar $pages = $this.find('.page');\r\n\t\t/* Append footer to each page */\r\n\t\t$pages.each(function (i) {\r\n\t\t\tif (i === 0) {\r\n\t\t\t\t$(this).append('

Page ' + '' + (i + 1) + '' + ' of ' + $pages.length + '

');\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$(this).append('
');\r\n\t\t\t}\r\n\t\t})\r\n\t\t/* Initialise carousel */\r\n\t\tif (jQuery().slick) {\r\n\r\n\t\t\t$this.slick({\r\n\t\t\t\tfocusOnChange: true,\r\n\t\t\t\tfocusOnSelect: false,\r\n\t\t\t\taccessibility: true,\r\n\t\t\t\tslidesToShow: 1,\r\n\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\tarrows: true,\r\n\t\t\t\tfade: false,\r\n\t\t\t\tdots: false,\r\n\t\t\t\tautoplay: false,\r\n\t\t\t\tadaptiveHeight: true,\r\n\t\t\t\tinfinite: false,\r\n\t\t\t\tswipe: false,\r\n\t\t\t\tdraggable: false,\r\n\t\t\t\tprevArrow: '',\r\n\t\t\t\tnextArrow: '',\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$this.on('beforeChange', function (event, slick, direction) {\r\n\t\t\tvar offset = ($(window).width() >= '1024') ? '100' : '30';\r\n\t\t\tvar name;\r\n\r\n\t\t\t(name === 'true') ? 'Y' : 'N';\r\n\t\t\t$(\"body, html\").animate({\r\n\t\t\t\tscrollTop: $(\".\" + scrollClass).position().top - offset\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t$this.on('beforeChange', function (event, slick, currentSlide, nextSlide) {\r\n\t\t\t//get and loop over all the pages within the carousel\r\n\t\t\t$pages = $this.find('.page');\r\n\t\t\tif (pages.length > 0) {\r\n\t\t\t\t$pages.each(function (index, element) {\r\n\t\t\t\t\tvar $element = $(element);\r\n\t\t\t\t\t//the next slide\r\n\t\t\t\t\tif (index === nextSlide) {\r\n\t\t\t\t\t\t//insert pagination text\r\n\t\t\t\t\t\t$element.find('.page-footer').html('

Page ' + '' + (index + 1) + '' + ' of ' + $pages.length + '

');\r\n\t\t\t\t\t\t//make all focusable elements focusable\r\n\t\t\t\t\t\t//$element.find('a, areabutton, details, input, frame, select, textarea').attr({ 'tabindex': '0' })\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t//clear pagination text for all slides except the next slide.\r\n\t\t\t\t\t\t$element.find('.page-footer').html('')\r\n\t\t\t\t\t\t//make all focusable elements not focusable for all slides except the next slide.\r\n\t\t\t\t\t\t//$element.find('a, areabutton, details, input, frame, select, textarea').attr({ 'tabindex': '-1' })\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\t$this.on('afterChange', function (event, slick, direction) {\r\n\t\t\t$pages = $this.find('.page');\r\n\t\t\tif (pages.length > 0) {\r\n\t\t\t\t$pages.attr({ 'tabindex': '-1' });\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n})(jQuery);\r\n","// Accordion\r\nvar Accordion = {\r\n\r\n\tselector: '.accordion',\r\n\tselectorHead: '.accordion-head',\r\n\tbuttonSelector: '.accordion-button',\r\n\tcontentSelector: '.accordion-content',\r\n\tselectorNoDesk: '[data-accordion-mobile]',\r\n\twindowSize: window.innerWidth,\r\n\tduration: 250,\r\n\tdestroyDesk: false,\r\n\r\n\tinit: function () {\r\n\r\n\t\tif (!$(this.selector).length) return;\r\n\r\n\t\tthis.bindAccordion();\r\n\t\tthis.bindChangeEvent();\r\n\t\tif (Accordion.windowSize > 719) {\r\n\t\t\tAccordion.destroyDesk = true;\r\n\t\t\tthis.destroyAccordion();\r\n\t\t} else {\r\n\t\t\tAccordion.destroyDesk = false;\r\n\t\t}\r\n\t},\r\n\r\n\tbindAccordion: function () {\r\n\r\n\t\t// initialize table scroll\r\n\t\tTableScroll.init();\r\n\r\n\t\t// add IDs to the accordion list items\r\n\t\tthis.addIDs();\r\n\r\n\t\t// unbind click event to fix the bug in news&event page where the function is called twice\r\n\t\tthis.unbindAllClickEvents();\r\n\r\n\t\t// bind click events for toggle\r\n\t\tthis.bindClickEvents();\r\n\r\n\t},\r\n\r\n\tbindChangeEvent: function () {\r\n\r\n\t\t$(window).on('orientationchange resize', function () {\r\n\r\n\t\t\t// Throttle the resize event to fix adroid bug\r\n\t\t\tclearTimeout(this.id);\r\n\t\t\tthis.id = setTimeout(function () {\r\n\t\t\t\tif (Accordion.windowSize !== window.innerWidth) {\r\n\r\n\t\t\t\t\t// Update the width variable\r\n\t\t\t\t\tAccordion.updateWindowSize();\r\n\r\n\t\t\t\t\tif (Accordion.windowSize > 719) {\r\n\r\n\t\t\t\t\t\tAccordion.destroyDesk = true;\r\n\t\t\t\t\t\tAccordion.destroyAccordion();\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tAccordion.destroyDesk = false;\r\n\t\t\t\t\t\tAccordion.reset();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 10);\r\n\r\n\t\t});\r\n\t},\r\n\r\n\tupdateWindowSize: function () {\r\n\r\n\t\t// get window width and update the global value\r\n\t\tAccordion.windowSize = window.innerWidth;\r\n\r\n\t},\r\n\r\n\treset: function () {\r\n\t\tAccordion.unbindAllClickEvents();\r\n\t\t$(Accordion.contentSelector).removeAttr('style');\r\n\t\tAccordion.bindAccordion();\r\n\t},\r\n\r\n\tdestroyAccordion: function () {\r\n\r\n\t\tif (Accordion.destroyDesk) {\r\n\r\n\t\t\t$(Accordion.selectorNoDesk).each(function (i) {\r\n\r\n\t\t\t\tvar $thisList = $(this),\r\n\t\t\t\t\t$thisItems = $thisList.children('li'),\r\n\t\t\t\t\t$thistHeads = $thisItems.children('.accordion-head'),\r\n\t\t\t\t\t$thisButtons = $thistHeads.find('.accordion-button'),\r\n\t\t\t\t\t$thisContent = $thisList.find('.accordion-content');\r\n\r\n\t\t\t\t$thisButtons.removeAttr('aria-expanded');\r\n\t\t\t\t$thisButtons.removeAttr('aria-controls');\r\n\t\t\t\t$thisContent.removeAttr('aria-hidden');\r\n\t\t\t\t$thisContent.removeAttr('id');\r\n\r\n\t\t\t\tAccordion.unbindClickEvents($thisButtons);\r\n\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tAccordion.reset();\r\n\t\t}\r\n\t},\r\n\r\n\taddIDs: function () {\r\n\r\n\t\t// get all
  • elements within an accordion\r\n\t\tvar $accordions = $('.accordion'),\r\n\t\t\t$listItems = $accordions.children('li'),\r\n\t\t\t$listHead = $listItems.children('.accordion-head'),\r\n\t\t\t$listButtons = $listHead.find('.accordion-button'),\r\n\t\t\t$listContent = $listItems.find('.accordion-content');\r\n\r\n\t\t// add an IDs to each list\r\n\t\t$listItems.each(function (i) {\r\n\r\n\t\t\tvar $thisList = $(this);\r\n\r\n\t\t\t// add id to list item\r\n\t\t\t$thisList.attr('id', 'item-' + i);\r\n\r\n\t\t});\r\n\r\n\t\t$listButtons.each(function (i) {\r\n\r\n\t\t\tvar $thisButton = $(this),\r\n\t\t\t\tparentId = $thisButton.parents('li').attr('id');\r\n\r\n\t\t\t// add IDs aria attributes\r\n\t\t\t$thisButton.attr('aria-controls', 'content-' + parentId);\r\n\t\t\t$thisButton.attr('aria-expanded', false);\r\n\r\n\t\t});\r\n\r\n\t\t$listContent.each(function (i) {\r\n\r\n\t\t\tvar $thisContent = $(this),\r\n\t\t\t\tparentId = $thisContent.parent('li').attr('id');\r\n\r\n\t\t\t// add IDs to the content \r\n\t\t\t$thisContent.attr('id', 'content-' + parentId);\r\n\t\t\t$thisContent.attr('aria-hidden', true);\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tbindClickEvents: function () {\r\n\r\n\t\t$(Accordion.buttonSelector).on('click', function (e) {\r\n\r\n\t\t\tvar $this = $(this);\r\n\t\t\tvar $thisParent = $this.parents('li');\r\n\t\t\tvar $thisContent = $thisParent.find('.accordion-content');\r\n\r\n\t\t\t// update accordion state\r\n\t\t\tAccordion.activateAccordion($this, $thisContent);\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t});\r\n\t},\r\n\r\n\tunbindClickEvents: function ($thisButtons) {\r\n\t\t$thisButtons.off(\"click\");\r\n\t},\r\n\r\n\tunbindAllClickEvents: function () {\r\n\t\t$(Accordion.buttonSelector).off('click');\r\n\t},\r\n\r\n\tactivateAccordion: function ($this, $thisContent) {\r\n\r\n\t\tvar state = $this.attr('aria-expanded') === 'false' ? true : false;\r\n\r\n\t\t// set aria attribute state\r\n\t\t$this.attr('aria-expanded', state);\r\n\r\n\t\t// animate height\r\n\t\t$thisContent.slideToggle(Accordion.duration, function () {\r\n\r\n\t\t\t// set aria-hidden state and focus\r\n\t\t\t$thisContent.attr('aria-hidden', !state);\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n};\r\n\r\n$(document).ready(function () {\r\n\tAccordion.init();\r\n});","(function () {\r\n\r\n\tif (!String.prototype.startsWith) {\r\n\t\tString.prototype.startsWith = function (searchString, position) {\r\n\t\t\tposition = position || 0;\r\n\t\t\treturn this.indexOf(searchString, position) === position;\r\n\t\t};\r\n\t}\r\n\r\n\t//Anchor Links\t\r\n\tvar messageEditMode = \"Anchor links are only displayed in View mode. Please, preview or publish the page to show them.\";\r\n\tvar messageNoH3 = \"No anchor links found\";\r\n\r\n\tvar anchorContainers = document.getElementsByClassName(\"anchor-links-wrap\");\r\n\r\n\tif (anchorContainers.length > 0) {\r\n\t\tfor (var i = 0, j = anchorContainers.length; i < j; i++) {\r\n\t\t\tvar hTagsName = anchorContainers[i].attributes.getNamedItem(\"data-headerType\").value;\r\n\r\n\t\t\tif (hTagsName !== null && hTagsName !== \"\") {\r\n\t\t\t\t \r\n\t\t\t\tvar elements = document.getElementsByTagName(hTagsName);\r\n\r\n\t\t\t\tvar isEditMode = anchorContainers[i].attributes.getNamedItem(\"data-pageeditor\") != null\r\n\t\t\t\t\t? \"true\" === anchorContainers[i].attributes.getNamedItem(\"data-pageeditor\").value.toLowerCase()\r\n\t\t\t\t\t: false;\r\n\t\t\t\tisEditMode = false;\r\n\t\t\t\tif (!isEditMode) {\r\n\t\t\t\t\tvar list = document.createElement(\"ul\");\r\n\t\t\t\t\tlist.setAttribute(\"class\", \"anchor-links\");\r\n\r\n\t\t\t\t\tfor (var k = 0, l = elements.length; k < l; k++) {\r\n\t\t\t\t\t\tvar text = elements[k].innerText;\r\n\t\t\t\t\t\tif (!text.startsWith(\"{\") &&\r\n\t\t\t\t\t\t\telements[k].className.indexOf(\"exclude-navigation\") < 0 &&\r\n\t\t\t\t\t\t\ttext.trim().length > 0 &&\r\n\t\t\t\t\t\t\t!$(elements[k]).parent().hasClass('slick-slide')) {\r\n\t\t\t\t\t\t\tvar element = getListElement(text, elements[k]);\r\n\t\t\t\t\t\t\tlist.appendChild(element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar title = document.createElement(\"h2\");\r\n\t\t\t\t\tvar titleText = anchorContainers[i].attributes.getNamedItem(\"data-title\").value;\r\n\r\n\t\t\t\t\tif (titleText == null || titleText == \"\"\r\n\t\t\t\t\t) titleText = \"On this page\"; //default fallback original value\r\n\t\t\t\t\ttitle.innerText = titleText;\r\n\r\n\t\t\t\t\tanchorContainers[i].appendChild(title);\r\n\t\t\t\t\tanchorContainers[i].appendChild(list);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar message = document.createElement(\"h4\");\r\n\t\t\t\t\tmessage.innerText = elements.length > 0 ? messageEditMode : messageNoH3;\r\n\t\t\t\t\tanchorContainers[i].appendChild(message);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getListElement(text, linkedElement) {\r\n\t\tvar element = document.createElement(\"li\");\r\n\t\telement.setAttribute(\"class\", \"anchor-links-item\");\r\n\t\tvar link = document.createElement(\"a\");\r\n\t\tlink.setAttribute(\"href\", \"#\");\r\n\t\tlink.setAttribute(\"class\", \"anchor-links-link\");\r\n\t\tlink.innerText = text;\r\n\t\tlink.addEventListener(\"click\", function (event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\t\r\n\t\t\t$('html, body').animate({\r\n\t\t\t\tscrollTop: $(linkedElement).offset().top - 100\r\n\t\t\t}, 500);\r\n\t\t\t// set focus\r\n\t\t\t$(linkedElement).attr('tabindex', '-1');\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t$(linkedElement).trigger('focus');\r\n\t\t\t}, 500);\r\n\t\t});\r\n\r\n\t\telement.appendChild(link);\r\n\t\treturn element;\r\n\t};\r\n\r\n})();","\r\n(function ($) {\r\n\r\n\tfunction getUrlVars() {\r\n\t\tvar vars = [], hash;\r\n\t\tvar hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');\r\n\t\tfor (var i = 0; i < hashes.length; i++) {\r\n\t\t\thash = hashes[i].split('=');\r\n\t\t\tvars.push(hash[0]);\r\n\t\t\tvars[hash[0]] = hash[1];\r\n\t\t}\r\n\t\treturn vars;\r\n\t}\r\n\tfunction getCookie(cname) {\r\n\t\tvar name = cname + \"=\";\r\n\t\tvar decodedCookie = decodeURIComponent(document.cookie);\r\n\t\tvar ca = decodedCookie.split(';');\r\n\t\tfor (var i = 0; i < ca.length; i++) {\r\n\t\t\tvar c = ca[i];\r\n\t\t\twhile (c.charAt(0) === ' ') {\r\n\t\t\t\tc = c.substring(1);\r\n\t\t\t}\r\n\t\t\tif (c.indexOf(name) === 0) {\r\n\t\t\t\treturn c.substring(name.length, c.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\tfunction setCookie(cname, cvalue, exdays) {\r\n\t\tvar d = new Date();\r\n\t\td.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n\t\tvar expires = \"expires=\" + d.toUTCString();\r\n\t\tdocument.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/;\" + \"SameSite=Lax\";\r\n\t}\r\n\r\n\tvar urlParams = getUrlVars();\r\n\tif (urlParams[\"pdf\"] === \"1\") return; // don't display cookie banner when saving to pdf\r\n\r\n\tvar $cookieNotice = $('.cookie-notice');\r\n\tif ($cookieNotice === 0) return; //If cookie doesnt html does not exist then return\r\n\r\n\tvar hasConsent = getCookie('boeconsent');\r\n\tif (hasConsent === \"\") {\r\n\t\t// User has not dismissed the cookie\r\n\t\tsetTimeout(function () {\r\n\t\t\tshowPanel();\r\n\t\t}, 1000);\r\n\r\n\t}\r\n\r\n\t// hide and show panel\r\n\tfunction showPanel() {\r\n\r\n\t\t$cookieNotice.addClass('is-visible');\r\n\t\tbindClickEvent();\r\n\t\tbindFocusEvent();\r\n\t}\r\n\tfunction bindClickEvent() {\r\n\r\n\t\tconst daysMax = 90,\r\n\t\t\tdaysMin = 1,\r\n\t\t\tconsentNecessary = 'necessary',\r\n\t\t\tconsentAnalytics = 'analytics';\r\n\r\n\t\t$('[data-cookie]').on('click', function (e) {\r\n\r\n\t\t\tvar thisAttr = $(this).attr('data-cookie');\r\n\r\n\t\t\tif (thisAttr === 'analytics') {\r\n\t\t\t\taddCookie(consentAnalytics, daysMax);\r\n\t\t\t\tif (typeof (SetAnalytics) != 'undefined') {\r\n\t\t\t\t\tvar analytics = SetAnalytics || {}; // set to SetAnalytics if it exists\r\n\t\t\t\t\tif (analytics.setTagManager) {\r\n\t\t\t\t\t\tSetAnalytics.setTagManager();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// update iFrameBlocker\r\n\t\t\t\tIframeBlocker.init();\r\n\t\t\t} else {\r\n\t\t\t\taddCookie(consentNecessary, daysMin);\r\n\t\t\t}\r\n\r\n\t\t\tremovePanel();\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\r\n\t\t});\r\n\t}\r\n\tfunction removePanel() {\r\n\r\n\t\t$cookieNotice.removeClass('is-visible');\r\n\r\n\t}\r\n\tfunction addCookie(consentValue, days) {\r\n\r\n\t\tsetCookie('boeconsent', consentValue, days);\r\n\t}\r\n\tfunction bindFocusEvent() {\r\n\r\n\t\t// if user tab outside the cookie panel area \r\n\t\t$('body').on('keyup', function (e) {\r\n\r\n\t\t\tvar $thisTarget = $(e.target),\r\n\t\t\t\tclickedOutside = $thisTarget.closest('.cookie-notice').length === 0;\r\n\r\n\t\t\tif (clickedOutside) {\r\n\r\n\t\t\t\t// remove panel\r\n\t\t\t\tif ($('.cookie-notice').hasClass('is-visible')) {\r\n\t\t\t\t\tremovePanel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n})(jQuery);","//----------------------------------------------------------------------\r\n//\tDONWLOAD STICKY\r\n//\tCustom Package\r\n//----------------------------------------------------------------------\r\n\r\nvar DownloadSticky = {\r\n\tselector: '[data-download]',\r\n\tselectorButton: '.button-download',\r\n\tisSticky: false,\r\n\tisEndPoint: false,\r\n\tisDisabled: false,\r\n\tclassActive: 'container-download--active',\r\n\tclassAbsolute: 'container-download--absolute',\r\n\tclassOpen: 'container-download--open',\r\n\tendPointClass: 'endpoint',\r\n\theaderHeight: 0,\r\n\tselectorWidth: 0,\r\n\tcontentWidth: 0,\r\n\tviewPortHeight: 0,\r\n\toffsetElRound: 0,\r\n\tendStickyPosition: 0,\r\n\tstartPosition: 0,\r\n\trightPosition: 0,\r\n\tfooterHeight: 0,\r\n\tfooterPosition: 0,\r\n\twindowSize: 0,\r\n\twinScroll: 0,\r\n\r\n\tinit: function () {\r\n\t\t// return if the container not present\r\n\t\tif (!$(this.selector).length) return;\r\n\t\tthis.bindChangeEvent();\r\n\t\tthis.getWindowSize();\r\n\t\tthis.getElSize();\r\n\t\tthis.checkOffsetEl();\r\n\t\tthis.setPosition();\r\n\t\tthis.bindHoverEvent();\r\n\t\tthis.bindKeyboardEvent();\r\n\t\tthis.bindClickEvent();\r\n\t},\r\n\r\n\tbindChangeEvent: function () {\r\n\r\n\t\t// reset the functions and recalculate the values\r\n\t\t$(window).on('orientationchange resize load', function () {\r\n\r\n\t\t\tif (DownloadSticky.windowSize !== window.innerWidth) {\r\n\r\n\t\t\t\t// Update variables\r\n\t\t\t\tDownloadSticky.getWindowSize();\r\n\t\t\t\tDownloadSticky.getElSize();\r\n\t\t\t\tDownloadSticky.checkOffsetEl();\r\n\t\t\t\tDownloadSticky.setPosition();\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tcheckOffsetEl: function () {\r\n\r\n\t\t// get the section offset position and the height of each top elements\r\n\t\tvar offsetEl = $(DownloadSticky.selector).offset().top;\r\n\t\tDownloadSticky.offsetElRound = Math.round(offsetEl),\r\n\t\tDownloadSticky.startPosition = DownloadSticky.offsetElRound - DownloadSticky.footerHeight - 200;\r\n\t\tvar footerPosition = $('.global-footer').offset().top;\r\n\t\tDownloadSticky.footerPositionRound = Math.round(footerPosition),\r\n\t\tDownloadSticky.endPointPosition = DownloadSticky.footerPositionRound - 400;\r\n\t\tvar elRightPosition = (DownloadSticky.windowSize / 2 - DownloadSticky.contentWidth / 2) - DownloadSticky.selectorWidth - 90;\r\n\t\tDownloadSticky.rightPosition = elRightPosition;\r\n\t},\r\n\r\n\tremoveHideClass: function () {\r\n\t\t$(DownloadSticky.containerPercentage).removeClass('hide');\r\n\t},\r\n\r\n\tgetElSize: function () {\r\n\r\n\t\tDownloadSticky.headerHeight = $('.global-header').height(),\r\n\t\t\tDownloadSticky.contentWidth = $('.container').outerWidth(),\r\n\t\t\tDownloadSticky.footerHeight = $('.global-header').outerHeight(),\r\n\t\t\tDownloadSticky.selectorWidth = $(DownloadSticky.selector).outerWidth(),\r\n\t\t\tDownloadSticky.elHeight = $(DownloadSticky.selector).outerHeight();\r\n\t},\r\n\r\n\tgetWindowSize: function () {\r\n\t\t// get window width and update the global value\r\n\t\tDownloadSticky.windowSize = window.innerWidth;\r\n\t},\r\n\r\n\tsetPosition: function () {\r\n\r\n\t\t// set position if the view is tablet and laptop layout\r\n\t\tif (DownloadSticky.windowSize >= 720 && DownloadSticky.windowSize <= 1580) {\r\n\t\t\tDownloadSticky.addAbsoluteClass();\r\n\t\t\t$(DownloadSticky.selector).css('top', DownloadSticky.offsetElRound);\r\n\t\t}\r\n\r\n\t\t// set the right posion Xlarge desktop layout\r\n\t\tif (DownloadSticky.windowSize >= 1790) {\r\n\t\t\t$(DownloadSticky.selector).css('right', DownloadSticky.rightPosition);\r\n\r\n\t\t} else {\r\n\t\t\t$(DownloadSticky.selector).css('right', '0');\r\n\t\t}\r\n\r\n\r\n\t\t$(window).on('scroll', function () {\r\n\t\t\tif (DownloadSticky.windowSize >= 720) {\r\n\r\n\t\t\t\tif (!DownloadSticky.isDisabled === true) {\r\n\r\n\t\t\t\t\t// get scrolling position\r\n\t\t\t\t\tvar winScroll = $(window).scrollTop(),\r\n\t\t\t\t\t\twinScrollRound = Math.round(winScroll);\r\n\r\n\t\t\t\t\t//add and remove sticky class if the scrolling position is greater than offset position\r\n\t\t\t\t\tif (winScrollRound >= DownloadSticky.startPosition) {\r\n\r\n\r\n\t\t\t\t\t\tif (DownloadSticky.isEndPoint === false) {\r\n\r\n\t\t\t\t\t\t\tDownloadSticky.addStickyClass();\r\n\t\t\t\t\t\t\tDownloadSticky.removeAbsoluteClass();\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (winScrollRound > DownloadSticky.endPointPosition) {\r\n\r\n\t\t\t\t\t\t\tDownloadSticky.removeStickyClass();\r\n\t\t\t\t\t\t\tDownloadSticky.addEndPointClass();\r\n\t\t\t\t\t\t\t$(DownloadSticky.selector).css('top', DownloadSticky.endPointPosition + DownloadSticky.elHeight);\r\n\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tDownloadSticky.removeEndPointClass();\r\n\t\t\t\t\t\t\t$(DownloadSticky.selector).css('top', '200px');\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tDownloadSticky.removeStickyClass();\r\n\t\t\t\t\t\tDownloadSticky.addAbsoluteClass();\r\n\t\t\t\t\t\t$(DownloadSticky.selector).css('top', 'auto');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t$(DownloadSticky.selector).css('top', 'auto');\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tbindHoverEvent: function () {\r\n\r\n\t\t$(DownloadSticky.selectorButton).on('mouseenter keyup', function (e) {\r\n\r\n\t\t\tDownloadSticky.addOpenClass();\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tbindClickEvent: function () {\r\n\r\n\t\t$('.button-close').on('click', function (e) {\r\n\r\n\t\t\tDownloadSticky.isDisabled = true;\r\n\t\t\tDownloadSticky.removeStickyClass();\r\n\t\t\tDownloadSticky.removeOpenClass();\r\n\r\n\t\t\t$(DownloadSticky.selector).attr('style', '');\r\n\t\t\tDownloadSticky.setPosition();\r\n\r\n\t\t\tif (DownloadSticky.windowSize >= 720 && DownloadSticky.windowSize <= 1580) {\r\n\t\t\t\tDownloadSticky.addAbsoluteClass();\r\n\t\t\t\t$(DownloadSticky.selector).css('top', DownloadSticky.offsetElRound);\r\n\t\t\t}\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// if user click outsidde the content area to hide modal\r\n\t\t$('body').on('click', function (e) {\r\n\r\n\t\t\tvar $thisTarget = $(e.target)[0];\r\n\r\n\t\t\tif ($thisTarget.closest('.button-download') !== $(DownloadSticky.selectorButton)[0]) {\r\n\t\t\t\tDownloadSticky.removeOpenClass();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tbindKeyboardEvent: function () {\r\n\r\n\t\t$('.button-close').on('keydown', function (e) {\r\n\r\n\t\t\tif (e.key === 'Enter') {\r\n\t\t\t\tDownloadSticky.isDisabled = true;\r\n\t\t\t\tDownloadSticky.removeStickyClass();\r\n\t\t\t\tDownloadSticky.removeOpenClass();\r\n\r\n\t\t\t\t$(DownloadSticky.selector).attr('style', '');\r\n\t\t\t\tDownloadSticky.setPosition();\r\n\t\t\t}\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t},\r\n\r\n\taddStickyClass: function () {\r\n\t\tDownloadSticky.isSticky = true;\r\n\t\t$(DownloadSticky.selector).addClass(DownloadSticky.classActive);\r\n\t},\r\n\r\n\tremoveStickyClass: function () {\r\n\t\tDownloadSticky.isSticky = false;\r\n\t\t$(DownloadSticky.selector).removeClass(DownloadSticky.classActive);\r\n\t},\r\n\r\n\taddEndPointClass: function () {\r\n\t\tDownloadSticky.isEndPoint = true;\r\n\t\t$(DownloadSticky.selector).addClass(DownloadSticky.endPointClass);\r\n\t},\r\n\r\n\tremoveEndPointClass: function () {\r\n\t\tDownloadSticky.isEndPoint = false;\r\n\t\t$(DownloadSticky.selector).removeClass(DownloadSticky.endPointClass);\r\n\t},\r\n\r\n\taddAbsoluteClass: function () {\r\n\t\t$(DownloadSticky.selector).addClass(DownloadSticky.classAbsolute);\r\n\t},\r\n\r\n\tremoveAbsoluteClass: function () {\r\n\t\t$(DownloadSticky.selector).removeClass(DownloadSticky.classAbsolute);\r\n\t},\r\n\r\n\taddOpenClass: function () {\r\n\t\t$(DownloadSticky.selector).addClass(DownloadSticky.classOpen);\r\n\t},\r\n\r\n\tremoveOpenClass: function () {\r\n\t\t$(DownloadSticky.selector).removeClass(DownloadSticky.classOpen);\r\n\t}\r\n};\r\n\r\n$(document).ready(function () {\r\n\tDownloadSticky.init();\r\n});","var Expander = {\r\n\r\n\tselector: '[data-expander-open]',\r\n\tcontent: '[data-expander-content]',\r\n\tbtnClose: '[data-expander-close]',\r\n\r\n\tinit: function () {\r\n\t\tif (!$(this.selector).length) return;\r\n\t\tthis.setDefaultState();\r\n\t\tthis.bindClickEvent();\r\n\t},\r\n\r\n\tsetDefaultState: function () {\r\n\t\t$(Expander.selector).attr('aria-expanded', 'false');\r\n\t\t$(Expander.content).attr('aria-hidden', 'true');\r\n\t},\r\n\r\n\tbindClickEvent: function () {\r\n\r\n\t\t$(Expander.selector).on('click', function (e) {\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\t// get attribute from button clicked\r\n\t\t\tvar $thisSelector = $(this);\r\n\t\t\tvar thisSelectorAttr = $thisSelector.attr('data-expander-open');\r\n\r\n\t\t\tExpander.unbindClickEvent($thisSelector);\r\n\t\t\tExpander.findMatchContent($thisSelector, thisSelectorAttr);\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tfindMatchContent: function ($thisSelector, thisSelectorAttr) {\r\n\r\n\t\t// get content that matched the attribute in the clicked button\r\n\t\tvar matchedContentAttr = '[data-expander-content=\"' + thisSelectorAttr + '\"]';\r\n\t\tvar $matchedContentEl = $(matchedContentAttr);\r\n\r\n\t\tExpander.bindClickClose($thisSelector, $matchedContentEl);\r\n\t\tExpander.setAriaAttr($thisSelector, $matchedContentEl);\r\n\t\tExpander.setFocus($matchedContentEl);\r\n\r\n\t},\r\n\r\n\tbindClickClose: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\tvar $thisBtClose = $matchedContentEl.find(Expander.btnClose);\r\n\r\n\t\t$thisBtClose.on('click', function (e) {\r\n\r\n\t\t\tvar $thisCloseSelector = $(this);\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tExpander.unbindClickEvent($thisCloseSelector);\r\n\t\t\t$(Expander.selector).off(\"click\");\r\n\t\t\t$(Expander.content).removeAttr('tabindex');\r\n\t\t\tExpander.bindClickEvent();\r\n\t\t\tExpander.setAriaAttr($thisSelector, $matchedContentEl);\r\n\t\t\t// set focus back to the first opening element\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t$thisSelector.trigger('focus');\r\n\t\t\t}, 10);\r\n\r\n\r\n\t\t});\r\n\t},\r\n\r\n\tunbindClickEvent: function ($thisSelector) {\r\n\t\t$thisSelector.off(\"click\");\r\n\t},\r\n\r\n\tsetAriaAttr: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\t// check state and set the opposite attr\r\n\t\tvar stateLink = $thisSelector.attr('aria-expanded') === 'false' ? true : false;\r\n\t\tvar stateContent = $matchedContentEl.attr('aria-hidden') === 'true' ? false : true;\r\n\r\n\t\t// set button state\r\n\t\t$thisSelector.attr('aria-expanded', stateLink);\r\n\t\t// set content state\r\n\t\t$matchedContentEl.attr('aria-hidden', stateContent);\r\n\r\n\t},\r\n\r\n\tsetFocus: function ($matchedContentEl) {\r\n\r\n\t\t// remove the focus\r\n\t\t$(Expander.content).removeAttr('tabindex');\r\n\r\n\r\n\t\t// set focus\r\n\t\tsetTimeout(function () {\r\n\t\t\t$matchedContentEl.attr('tabindex', '-1');\r\n\t\t\t$matchedContentEl.trigger('focus');\r\n\t\t}, 10);\r\n\r\n\t}\r\n\r\n};\r\n\r\n$(document).ready(function () {\r\n\tExpander.init();\r\n});","// Animated gif\r\nvar AnimatedGif = {\r\n\r\n selector: '[data-gif]',\r\n selectorText: '[data-gif-text]',\r\n selectorImg: '[data-gif-img]',\r\n\r\n init: function () {\r\n\r\n if (!$(this.selector).length) return;\r\n\r\n this.bindClickOff();\r\n },\r\n\r\n bindClickOff: function () {\r\n\r\n $(AnimatedGif.selector).on('click', function (event) {\r\n\r\n var $thisContainer = $(this);\r\n var $thisImg = $thisContainer.find(AnimatedGif.selectorImg);\r\n\r\n var thisSelectorAttr = $thisImg.attr('data-gif-img');\r\n $thisImg.attr(\"src\", thisSelectorAttr);\r\n\r\n AnimatedGif.addClassActive($thisContainer);\r\n\r\n event.preventDefault();\r\n\r\n });\r\n },\r\n\r\n addClassActive: function ($thisContainer) {\r\n $thisContainer.addClass('animation-off');\r\n }\r\n}\r\n\r\n\r\n$(document).ready(function () {\r\n\r\n AnimatedGif.init();\r\n\r\n});\r\n","// Glossary tooltip\r\n\r\nvar Glossary = {\r\n\r\n\tselector: '[data-glossary-open]',\r\n\tcontent: '[data-glossary-content]',\r\n\tbuttonClose: '[data-glossary-close]',\r\n\tpageEditMode: '.pagemode-edit',\r\n\r\n\tinit: function () {\r\n\t\tif (!$(this.selector).length) return;\r\n\r\n\t\tthis.createTitle();\r\n\t\tthis.bindClickOpen();\r\n\t},\r\n\r\n\tbindClickOpen: function () {\r\n\r\n\t\t$(Glossary.selector).on('click', function (event) {\r\n\r\n\t\t\tvar $thisSelector = $(this);\r\n\t\t\tvar thisSelectorAttr = $thisSelector.attr('data-glossary-open');\r\n\r\n\t\t\t// Prevent default anchor click behavior\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tGlossary.findMatchContent($thisSelector, thisSelectorAttr);\r\n\t\t\tGlossary.unbindClickEvent($thisSelector);\r\n\r\n\t\t});\r\n\t},\r\n\r\n\tcreateTitle: function () {\r\n\r\n\t\t// remove any existing title - this is to fix the content editor bug \r\n\t\t$('.modal__content').find('h2.h3.exclude-navigation').remove();\r\n\r\n\t\t// return function if you are in edit mode in the cms\r\n\t\tif ($(LinksExternal.pageEditMode).length) return;\r\n\r\n\t\t$(Glossary.selector).each(function () {\r\n\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tthisText = $this.text().trim(),\r\n\t\t\t\tthisTextUppercase = thisText[0].toUpperCase() + thisText.substring(1),\r\n\t\t\t\tthisTitle = '

    ' + thisTextUppercase + '

    ',\r\n\t\t\t\tthisAttr = $this.attr('data-glossary-open'),\r\n\t\t\t\tidLabel = thisAttr + '-label',\r\n\t\t\t\tidDescription = thisAttr + '-desc',\r\n\t\t\t\tdescrWrapper = '
    ',\r\n\r\n\r\n\t\t\t\t// find the content that matches the attribute of the selector\r\n\t\t\t\tmatchedContentAttr = '[data-glossary-content=\"' + thisAttr + '\"]',\r\n\t\t\t\t$matchedContentEl = $(matchedContentAttr),\r\n\t\t\t\tthisContent = $matchedContentEl.find('.modal__content');\r\n\r\n\t\t\t// add aria attributes\r\n\t\t\t$matchedContentEl.attr('aria-labelledby', idLabel);\r\n\t\t\t$matchedContentEl.attr('aria-describedby', idDescription);\r\n\t\t\t$(Glossary.content).attr('aria-modal', true);\r\n\r\n\t\t\t// add title to modal content\r\n\t\t\tthisContent.prepend(thisTitle);\r\n\t\t\tthisContent.find('h2').attr('id', idLabel);\r\n\r\n\t\t\t// add wrapper to the main content\r\n\t\t\tthisContent.find('h2').siblings().wrapAll(descrWrapper);\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tunbindClickEvent: function ($thisSelector) {\r\n\t\t$thisSelector.off(\"click\");\r\n\t},\r\n\r\n\tfindMatchContent: function ($thisSelector, thisSelectorAttr) {\r\n\r\n\t\t// find the content that matches the attribute of the selector\r\n\t\tvar matchedContentAttr = '[data-glossary-content=\"' + thisSelectorAttr + '\"]';\r\n\t\tvar $matchedContentEl = $(matchedContentAttr);\r\n\r\n\t\tGlossary.showModal($thisSelector, $matchedContentEl);\r\n\t\tGlossary.bindClickClose($thisSelector, $matchedContentEl);\r\n\t\tGlossary.setFocus($matchedContentEl);\r\n\t},\r\n\r\n\tbindClickClose: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\tvar $thisBtClose = $matchedContentEl.find(Glossary.buttonClose);\r\n\r\n\t\t$thisBtClose.on('click', function (e) {\r\n\r\n\t\t\t//prevent default clicks\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tGlossary.hideModal($thisSelector, $matchedContentEl);\r\n\t\t\t$thisSelector.trigger('focus');\r\n\t\t\tGlossary.unbindClickEvent($thisBtClose);\r\n\t\t});\r\n\t},\r\n\r\n\tshowModal: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\t$thisSelector.addClass('active');\r\n\t\tGlossary.bindKeyDownClose($thisSelector, $matchedContentEl);\r\n\t\tGlossary.bindClickOutside($thisSelector, $matchedContentEl);\r\n\t},\r\n\r\n\tbindClickOutside: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\t// Get the modal\r\n\t\tvar currentContentainer = $matchedContentEl.find('.modal__container')[0];\r\n\r\n\t\t// if user click outsidde the content area to hide modal\r\n\t\t$('.modal').on('click', function (e) {\r\n\r\n\t\t\tvar $thisTarget = $(e.target)[0];\r\n\r\n\t\t\tif ($thisTarget === currentContentainer) {\r\n\t\t\t\tGlossary.hideModal($thisSelector, $matchedContentEl);\r\n\t\t\t\t$thisSelector.trigger('focus');\r\n\r\n\t\t\t\t//prevent default clicks and stop propagation\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\thideModal: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\t// hide modal window\r\n\t\t$thisSelector.removeClass('active');\r\n\t\tGlossary.removeFocus($thisSelector, $matchedContentEl);\r\n\t\tGlossary.unbindClickEvent($(Glossary.buttonClose));\r\n\t\tGlossary.bindClickOpen();\r\n\t},\r\n\r\n\tsetFocus: function ($matchedContentEl) {\r\n\r\n\t\tvar $childContainer = $matchedContentEl.find('.modal__container'),\r\n\t\t\t$childContent = $childContainer.find('.modal__content'),\r\n\t\t\t$focusableElements = $childContainer.find('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'),\r\n\t\t\tfirstFocusedEl = $focusableElements[0],\r\n\t\t\tlastFocusedEl = $focusableElements[$focusableElements.length - 1];\r\n\r\n\t\t// set aria attributes and remove focus\r\n\t\t$('.modal__content').removeAttr('tabindex');\r\n\t\t$matchedContentEl.attr('aria-hidden', false);\r\n\t\t$childContent.attr('tabindex', '-1');\r\n\r\n\t\t// set focus\r\n\t\tsetTimeout(function () {\r\n\t\t\t$childContent.trigger('focus');\r\n\t\t}, 100);\r\n\r\n\r\n\t\t$('body').on('keydown', function (e) {\r\n\r\n\t\t\tvar isTabPressed = e.key === 'Tab';\r\n\r\n\t\t\tif (!isTabPressed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if shift key pressed for shift + tab combination\r\n\t\t\tif (e.shiftKey) {\r\n\t\t\t\tif (document.activeElement === firstFocusedEl) {\r\n\t\t\t\t\t// add focus for the last focusable element\r\n\t\t\t\t\t$(lastFocusedEl).trigger('focus');\r\n\t\t\t\t}\r\n\t\t\t} else { // if tab key is pressed\r\n\t\t\t\t// if focused has reached to last focusable element then focus first focusable element after pressing tab\r\n\t\t\t\tif (document.activeElement === lastFocusedEl) {\r\n\t\t\t\t\t// add focus for the first focusable element\r\n\t\t\t\t\t$(firstFocusedEl).trigger('focus');\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tremoveFocus: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\t// set aria attributes and remove the focus\r\n\t\t$matchedContentEl.attr('aria-hidden', true);\r\n\t\t$('.modal__content').removeAttr('tabindex');\r\n\r\n\t\t// set focus\r\n\t\tsetTimeout(function () {\r\n\t\t\t$thisSelector.trigger('focus');\r\n\t\t}, 100);\r\n\t},\r\n\r\n\tbindKeyDownClose: function ($thisSelector, $matchedContentEl) {\r\n\r\n\t\t$(document).on('keydown.modal__content', function (e) {\r\n\r\n\t\t\t// if user press key Esc close modal\r\n\t\t\tif (e.key === \"Escape\") {\r\n\r\n\t\t\t\t//prevent default clicks\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tGlossary.hideModal($thisSelector, $matchedContentEl);\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n};\r\n\r\n$(document).ready(function () {\r\n\tGlossary.init();\r\n});","(function ($) {\r\n\tif (jQuery().slick) {\r\n\r\n\t\tvar dots = '.slick-dots button',\r\n\t\t\tdotsContainer = '.slick-dots',\r\n\t\t\tslideContainer = '.slick-track',\r\n\t\t\tslide = '.slick-slide',\r\n\t\t\t$homeCarousel = $('.home-news-carousel').slick({\r\n\t\t\t\tfocusOnChange: false,\r\n\t\t\t\taccessibility: true,\r\n\t\t\t\tslidesToShow: 1,\r\n\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\tarrows: false,\r\n\t\t\t\tfade: true,\r\n\t\t\t\tdots: true,\r\n\t\t\t\tautoplay: true,\r\n\t\t\t\tautoplaySpeed: 7000\r\n\t\t\t});\r\n\r\n\t\t$('.home-news-carousel .slick-dots').before('');\r\n\r\n\t\t$('.slick-play-pause').on('click', function () {\r\n\r\n\t\t\tif ($(this).hasClass('icon-play')) {\r\n\t\t\t\t$('.home-news-carousel').slick('slickPlay');\r\n\t\t\t} else {\r\n\t\t\t\t$('.home-news-carousel').slick('slickPause');\r\n\t\t\t}\r\n\t\t\t$(this).toggleClass('icon-play');\r\n\t\t\t$(this).toggleClass('icon-pause');\r\n\t\t\tif ($(this).hasClass('icon-play')) {\r\n\t\t\t\t$(this).html('
    Start automatic slide show
    ');\r\n\t\t\t} else {\r\n\t\t\t\t$(this).html('
    Stop automatic slide show
    ');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// redirect focus to slides after clicking on the dots buttons \r\n\t\t$(dots).each(function () {\r\n\r\n\t\t\tvar $this = $(this);\r\n\r\n\t\t\t// redirect focus to read the content within the matched slide \r\n\t\t\t$this.on('click', function (e) {\r\n\r\n\t\t\t\tvar thisId = $this.attr('id'),\r\n\t\t\t\t\tmatchedSlide = '[aria-describedby=\"' + thisId + '\"]',\r\n\t\t\t\t\t$matchedSlideLink = $(matchedSlide).find('.home-news-link');\r\n\r\n\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t$matchedSlideLink.attr('tabindex', '-1').trigger('focus');\r\n\t\t\t\t\t$this.attr('aria-selected', 'true');\r\n\t\t\t\t}, 700);\r\n\r\n\t\t\t\t// prevent default click behavior\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tvar setAriaAttributes = function () {\r\n\r\n\t\t\t$(slideContainer).attr('role', 'region');\r\n\t\t\t$(slideContainer).attr('aria-roledescription', 'carousel');\r\n\t\t\t$(slideContainer).attr('aria-label', 'latest news');\r\n\t\t\t$(dotsContainer).attr('aria-label', 'slides');\r\n\t\t\t$(slide).attr('aria-roledescription', 'slide');\r\n\r\n\r\n\t\t\t$(dots).each(function () {\r\n\r\n\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\tthisText = $this.text(),\r\n\t\t\t\t\tnewAriaLabel = 'Slide ' + thisText;\r\n\r\n\t\t\t\t$this.attr('aria-label', newAriaLabel);\r\n\t\t\t\tvar selectedDot = $this.parent().hasClass('slick-active');\r\n\t\t\t\tif (selectedDot) {\r\n\t\t\t\t\t$this.attr('aria-selected', 'true');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$this.attr('aria-selected', 'false');\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// set attributes on load\r\n\t\tsetAriaAttributes();\r\n\r\n\t\t// set attribute on change slide\r\n\t\t$homeCarousel.on('afterChange', function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tsetAriaAttributes();\r\n\t\t\t}, 100);\r\n\r\n\t\t});\r\n\t}\r\n\r\n})(jQuery);","// IframeBlocker\r\n\r\nvar CheckCookies = {\r\n\tgetCookie: function (cname) {\r\n\t\tvar name = cname + \"=\";\r\n\t\tvar decodedCookie = decodeURIComponent(document.cookie);\r\n\t\tvar ca = decodedCookie.split(';');\r\n\t\tfor (var i = 0; i < ca.length; i++) {\r\n\t\t\tvar c = ca[i];\r\n\t\t\twhile (c.charAt(0) === ' ') {\r\n\t\t\t\tc = c.substring(1);\r\n\t\t\t}\r\n\t\t\tif (c.indexOf(name) === 0) {\r\n\t\t\t\treturn c.substring(name.length, c.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n};\r\n\r\nvar IframeBlocker = {\r\n\r\n\tselector: '[data-iframe]',\r\n\tselectorOverlay: '.iframe-blocker__overlay',\r\n\tselectorButton: '.iframe-blocker__button',\r\n\tblockerImage: '.iframe-blocker__image',\r\n\tvideoPlayer: '[data-video]',\r\n\tiframeId: '[data-iframe-id]',\r\n\twindowSize: window.innerWidth,\r\n\tduration: 250,\r\n\r\n\tinit: function () {\r\n\t\tif (!$(this.selector).length) return;\r\n\t\tthis.setDefaultState();\r\n\t},\r\n\r\n\tsetDefaultState: function () {\r\n\r\n\t\tvar hasConsentAnalytics = CheckCookies.getCookie('boeconsent');\r\n\t\tif (hasConsentAnalytics === \"analytics\") {\r\n\t\t\t$(IframeBlocker.selector).each(function (i) {\r\n\t\t\t\tvar $thisIframe = $(this);\r\n\t\t\t\tvar iframeType = $thisIframe.attr('data-iframe');\r\n\t\t\t\tvar iframeOverlay = $thisIframe.find(IframeBlocker.selectorOverlay);\r\n\t\t\t\tvar iframeImage = $thisIframe.find(IframeBlocker.blockerImage);\r\n\r\n\t\t\t\tif (iframeType === \"vimeo\") {\r\n\t\t\t\t\tvar iframeVideo = $thisIframe.find(IframeBlocker.videoPlayer),\r\n\t\t\t\t\t\tvideoID = iframeVideo.attr('data-video'),\r\n\t\t\t\t\t\tiframeTitle = iframeVideo.attr('data-iframe-title');\r\n\r\n\t\t\t\t\tIframeBlocker.crateIframe(videoID, iframeTitle);\r\n\t\t\t\t\tIframeBlocker.removeBlocker(iframeOverlay, iframeImage);\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tIframeBlocker.buildTableau();\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tIframeBlocker.bindClickEvent();\r\n\t\t}\r\n\t},\r\n\r\n\tbindClickEvent: function () {\r\n\r\n\t\t$(IframeBlocker.selectorButton).on('click', function (e) {\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\t// get attribute from button clicked\r\n\t\t\tvar $thisButton = $(this);\r\n\t\t\tvar iframeOverlay = $thisButton.parents(IframeBlocker.selectorOverlay);\r\n\r\n\t\t\tvar thisIframe = $thisButton.parents(IframeBlocker.selector);\r\n\t\t\tvar iframeType = thisIframe.attr('data-iframe');\r\n\r\n\t\t\tif (iframeType === \"vimeo\") {\r\n\t\t\t\tvar iframeImage = thisIframe.find(IframeBlocker.blockerImage);\r\n\t\t\t\tvar videoID = $thisButton.attr('data-video');\r\n\t\t\t\tvar iframeTitle = $thisButton.attr('data-iframe-title');\r\n\t\t\t\tIframeBlocker.crateIframe(videoID, iframeTitle);\r\n\t\t\t\tIframeBlocker.removeBlocker(iframeOverlay, iframeImage);\r\n\t\t\t} else {\r\n\t\t\t\tIframeBlocker.buildTableau();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tcrateIframe: function (videoID, iframeTitle) {\r\n\t\tvar tag = document.createElement('iframe');\r\n\t\ttag.src = \"https://player.vimeo.com/video/\" + videoID;\r\n\t\ttag.frameBorder = 0;\r\n\t\ttag.setAttribute('webkitallowfullscreen', '');\r\n\t\ttag.setAttribute('mozallowfullscreen', '');\r\n\t\ttag.setAttribute('allowfullscreen', '');\r\n\t\ttag.setAttribute('title', iframeTitle);\r\n\r\n\t\tvar el = \"#\" + videoID;\r\n\t\t$(el).prepend(tag);\r\n\r\n\t},\r\n\r\n\tbuildTableau: function () {\r\n\r\n\t\t$(IframeBlocker.selector).each(function (i) {\r\n\t\t\tvar $thisIframe = $(this),\r\n\t\t\t\tiframeType = $thisIframe.attr('data-iframe'),\r\n\t\t\t\ttableauPlaceholder = $thisIframe.find('.tableauPlaceholder'),\r\n\t\t\t\ttableauObj = tableauPlaceholder.find('object'),\r\n\t\t\t\tiframeWidth = tableauPlaceholder.attr('data-iframe-width'),\r\n\t\t\t\tiframeHeight = tableauPlaceholder.attr('data-iframe-height'),\r\n\t\t\t\tiframeHeightMobile = tableauPlaceholder.attr('data-iframe-height-mobile'),\r\n\r\n\t\t\t\tiframeOverlay = $thisIframe.find(IframeBlocker.selectorOverlay),\r\n\t\t\t\tiframeImage = tableauPlaceholder.find(IframeBlocker.blockerImage);\r\n\r\n\t\t\tif (IframeBlocker.windowSize > 500) {\r\n\t\t\t\ttableauObj.css('width', iframeWidth);\r\n\t\t\t\ttableauObj.css('height', iframeHeight);\r\n\t\t\t} else {\r\n\t\t\t\ttableauObj.css('width', '100%');\r\n\t\t\t\ttableauObj.css('height', iframeHeightMobile);\r\n\t\t\t}\r\n\r\n\t\t\tvar scriptElement = document.createElement('script');\r\n\t\t\tscriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';\r\n\t\t\t$(tableauPlaceholder).append(scriptElement, tableauObj);\r\n\r\n\t\t\tif (iframeType === \"tableau\") {\r\n\t\t\t\tIframeBlocker.removeBlocker(iframeOverlay, iframeImage);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tremoveBlocker: function (iframeOverlay, iframeImage) {\r\n\t\tiframeOverlay.css('display', 'none');\r\n\t\tiframeImage.css('display', 'none');\r\n\t}\r\n};\r\n\r\n\r\n$(document).ready(function () {\r\n\tIframeBlocker.init();\r\n});","(function ($) {\r\n // Carousels\r\n if(jQuery().slick && $('.img-carousel').length) {\r\n\t\t\r\n \t$('.img-carousel').each(function () {\r\n \t\tvar nav = $(this).parent().find('.img-carousel-nav').attr('id');\r\n \t\tnav = '#' + nav;\r\n \t\t$(this).slick({\r\n \t\t\tslidesToShow: 1,\r\n \t\t\tslidesToScroll: 1,\r\n \t\t\tarrows: true,\r\n \t\t\tfade: true,\r\n \t\t\tadaptiveHeight: true,\r\n \t\t\tasNavFor: nav\r\n \t\t});\r\n \t});\r\n \r\n \tif ($('body').hasClass('pagemode-edit')) {\r\n \t\t$('.img-carousel-nav').each(function () {\r\n \t\t\tvar carousel = $(this).parent().parent().find('.img-carousel').attr('id');\r\n \t\t\tcarousel = '#' + carousel;\r\n \t\t\t$(this).slick({\r\n \t\t\t\tslidesToShow: 4,\r\n \t\t\t\tslidesToScroll: 1,\r\n \t\t\t\tasNavFor: carousel,\r\n \t\t\t\tarrows: true,\r\n \t\t\t\tfocusOnSelect: true,\r\n \t\t\t\tinfinite: false\r\n \t\t\t});\r\n \t\t});\r\n } else {\r\n \t\t$('.img-carousel-nav').each(function () {\r\n \t\t\tvar carousel = $(this).parent().parent().find('.img-carousel').attr('id');\r\n \t\t\tcarousel = '#' + carousel;\r\n \t\t\t$(this).slick({\r\n \t\t\tslidesToShow: 4,\r\n \t\t\tslidesToScroll: 1,\r\n \t\t\tasNavFor: carousel,\r\n \t\t\tarrows: true,\r\n \t\t\tfocusOnSelect: true\r\n \t\t\t});\r\n \t\t});\r\n\r\n \t\t//Lightbox\r\n \t\t$('.img-carousel').each(function () {\r\n \t\t\t$(this).featherlightGallery({\r\n \t\t\t\tpreviousIcon: '',\r\n \t\t\t\tnextIcon: '',\r\n \t\t\t\tgalleryFadeIn: 100,\r\n \t\t\t\tgalleryFadeOut: 300,\r\n \t\t\t\tfilter: '.img-carousel-link'\r\n \t\t\t});\r\n \t\t});\r\n \t\t\r\n }\r\n\r\n }\r\n})(jQuery);","//----------------------------------------------------------------------\r\n//\tIN VIEW\r\n//\tBase Package\r\n//----------------------------------------------------------------------\r\n\r\nfunction inView(selector, selection, offset) {\r\n\r\n\t// get nodeList from selector and convert to array\r\n\tvar scrollOffset = !!offset ? offset : 0,\r\n\t\tselectorNodeList = document.querySelectorAll(selector),\r\n\t\tselectorArray = getArrayFromNodelist(selectorNodeList),\r\n\t\tinviewElements = getMatchingElements();\r\n\r\n\tfunction getMatchingElements() {\r\n\r\n\t\t// filter non-matching elements\r\n\t\tvar filteredElements = selectorArray.filter(function (el) {\r\n\r\n\t\t\t// determine if element is in viewport and parent node is visible as element may not be due to inView implementation. Usually an element itself would be hidden before fading in, whereas if the parent is hidden this will usually be due to another piece of functionality like a set of tabs/carousel etc. inView can be run on callback of tabs/carousel and will match the hidden element\r\n\t\t\tvar parent = el.parentNode,\r\n\t\t\t\tinViewport = isElementInViewport(el),\r\n\t\t\t\tisVisible = inViewport ? isElementVisible(parent) : false;\r\n\r\n\t\t\t// return if in viewport and visible\r\n\t\t\treturn (inViewport && isVisible);\r\n\t\t});\r\n\r\n\t\treturn filteredElements;\r\n\t}\r\n\r\n\t// detect element properties\r\n\tfunction isElementInViewport(el) {\r\n\r\n\t\t// get boundaries of element and window\r\n\t\tvar elClientRect = el.getBoundingClientRect(),\r\n\t\t\telHeight = el.offsetHeight,\r\n\t\t\telTop = elClientRect.top,\r\n\t\t\telBottom = elClientRect.bottom,\r\n\t\t\twinHeight = window.innerHeight || document.documentElement.clientHeight;\r\n\r\n\t\t// return in view based on selection\r\n\t\tswitch (selection) {\r\n\t\t\tcase 'top':\r\n\t\t\t\treturn viewportTop(elTop, elBottom);\r\n\t\t\tcase 'bottom':\r\n\t\t\t\treturn viewportBottom(elTop, elBottom, elHeight, winHeight);\r\n\t\t\tcase 'inner':\r\n\t\t\t\treturn viewportInner(elTop, elBottom, winHeight);\r\n\t\t\tcase 'all':\r\n\t\t\t\treturn viewportAll(elTop, elBottom, elHeight, winHeight);\r\n\t\t\tdefault:\r\n\t\t\t\treturn viewportAll(elTop, elBottom, elHeight, winHeight);\r\n\t\t}\r\n\t}\r\n\tfunction isElementVisible(el) {\r\n\r\n\t\t// get style properties of element and check element is visible\r\n\t\tvar opacity = getStyle(el, 'opacity') === '0',\r\n\t\t\tdisplay = getStyle(el, 'display') === 'none',\r\n\t\t\tvisibility = getStyle(el, 'visibility') === 'hidden';\r\n\r\n\t\t// if element is not visible, return false\r\n\t\tif (opacity || display || visibility) return false;\r\n\r\n\t\t// if parent is document node, return true\r\n\t\tif (el.parentNode.nodeType === 9) return true;\r\n\r\n\t\t// if parent exists, re-run isElementVisible with parent node to determine if parent is visible\r\n\t\tif (el.parentNode) return isElementVisible(el.parentNode);\r\n\r\n\t\t// otherwise element is visible\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// calculate element position in viewport\r\n\tfunction viewportTop(elTop, elBottom) {\r\n\t\treturn (elTop <= 0 - scrollOffset) && (elBottom >= 0 - scrollOffset);\r\n\t}\r\n\tfunction viewportBottom(elTop, elBottom, elHeight, winHeight) {\r\n\t\treturn elBottom <= (0 + winHeight + elHeight) && elBottom >= winHeight;\r\n\t}\r\n\tfunction viewportAll(elTop, elBottom, elHeight, winHeight) {\r\n\t\treturn elTop >= -(elHeight) - scrollOffset && elBottom <= (winHeight + elHeight) - scrollOffset;\r\n\t}\r\n\tfunction viewportInner(elTop, elBottom, winHeight) {\r\n\t\treturn elTop >= 0 && elBottom <= winHeight;\r\n\t}\r\n\r\n\t// utils\r\n\tfunction getStyle(el, prop) {\r\n\t\t// get style properties\r\n\t\tif (window.getComputedStyle) {\r\n\t\t\treturn document.defaultView.getComputedStyle(el, null)[prop];\r\n\t\t} else if (el.currentStyle) {\r\n\t\t\treturn el.currentStyle[prop];\r\n\t\t}\r\n\t}\r\n\tfunction getArrayFromNodelist(nodeList) {\r\n\t\t// create empty array to push to\r\n\t\tvar nodeArray = [];\r\n\t\t// loop through each item in the nodeList and add to nodeArray\r\n\t\tfor (var i = 0; i < nodeList.length; i++) {\r\n\t\t\tnodeArray.push(nodeList[i]);\r\n\t\t}\r\n\t\t// return nodeList as array\r\n\t\treturn nodeArray;\r\n\t}\r\n\r\n\t// return nodeList of visible elements within the viewport\r\n\treturn inviewElements;\r\n}","// In page jumpLink\r\nvar JumpLink = {\r\n\r\n\tselector: 'a:not(.footnote-link, .list-nav__link, .list-nav-secondary__link, .anchor-links-link)',\r\n\tcontentNav: '.nav-chapters',\r\n\r\n\tinit: function () {\r\n\r\n\t\tif (!$(this.selector).length) return;\r\n\r\n\t\tthis.bindClickEvent();\r\n\t},\r\n\r\n\tbindClickEvent: function () {\r\n\r\n\t\t$(JumpLink.selector).on('click', function (event) {\r\n\r\n\t\t\tvar headerHeight = $('.global-header').height(),\r\n\t\t\t\tthisHash = this.hash;\r\n\r\n\t\t\tif (!$(thisHash).length) return;\r\n\r\n\t\t\t// Prevent default anchor click behavior\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tif (thisHash !== \"\") {\r\n\r\n\t\t\t\t// set focus\r\n\t\t\t\t$(thisHash).attr('tabindex', '-1');\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t$(thisHash).trigger('focus');\r\n\t\t\t\t}, 100);\r\n\r\n\t\t\t\t// Jump to link with smooth animation\r\n\t\t\t\tif ($(JumpLink.contentNav).length) {\r\n\t\t\t\t\t// get height from line bar and top nav\r\n\t\t\t\t\tvar lineBarHeight = $('.nav-chapters__line').height(),\r\n\t\t\t\t\t\tcontentNavHeight = $(JumpLink.contentNav).height(),\r\n\t\t\t\t\t\tnavHeight = lineBarHeight + contentNavHeight + 2;\r\n\r\n\t\t\t\t\tif ($(window).width() < 1023) {\r\n\r\n\t\t\t\t\t\t$('html, body').animate({\r\n\t\t\t\t\t\t\tscrollTop: $(thisHash).offset().top - navHeight\r\n\t\t\t\t\t\t}, 800);\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('html, body').animate({\r\n\t\t\t\t\t\t\tscrollTop: $(thisHash).offset().top - (headerHeight + lineBarHeight + 5)\r\n\t\t\t\t\t\t}, 800);\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($(window).width() < 1023) {\r\n\r\n\t\t\t\t\t\t$('html, body').animate({\r\n\t\t\t\t\t\t\tscrollTop: $(thisHash).offset().top - 5\r\n\t\t\t\t\t\t}, 800);\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('html, body').animate({\r\n\t\t\t\t\t\t\tscrollTop: $(thisHash).offset().top - (headerHeight + 5)\r\n\r\n\t\t\t\t\t\t}, 800);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n};\r\n\r\n$(document).ready(function () {\r\n\tJumpLink.init();\r\n}); ","// External link title tag\r\nvar LinksExternal = {\r\n\r\n\tselector: 'a[target=\"_blank\"]',\r\n\tpageEditMode: '.pagemode-edit',\r\n\ticonExternal: '',\r\n\r\n\tinit: function () {\r\n\r\n\t\tif (!$(this.selector).length) return;\r\n\t\tthis.addLinkFeautures();\r\n\t},\r\n\taddLinkFeautures: function () {\r\n\r\n\t\tvar $externalLink = $(LinksExternal.selector),\r\n\t\t\timgButton = \"img[src^='/assets/img/icon']\",\r\n\t\t\timgButtonPlaceholder = \"img[src^='/assets/img/styleguide/icon']\";\r\n\r\n\t\t// remove alt tag from assets icon\r\n\t\t$(imgButton).attr('alt', '');\r\n\t\t$(imgButtonPlaceholder).attr('alt', '');\r\n\r\n\t\t$externalLink.each(function () {\r\n\r\n\t\t\tvar $thisLink = $(this),\r\n\t\t\t\t$thisLinkContentBlock = $thisLink.parents('.content-block'),\r\n\t\t\t\t$thisLinkAccordion = $thisLink.parents('.accordion-content'),\r\n\t\t\t\t$thisLinkExpander = $thisLink.parents('.expander'),\r\n\t\t\t\t$thisLinkBoxwrap = $thisLink.parents('.box-wrap'),\r\n\t\t\t\t$thisLinkTimeline = $thisLink.parents('.timeline-wrap'),\r\n\t\t\t\t$thisLinkModal = $thisLink.parents('.modal__container'),\r\n\t\t\t\tvissuallyHiddenText = ' Opens in a new window';\r\n\r\n\t\t\t// remove any existing text\r\n\t\t\t$thisLink.find('.visually-hidden').remove();\r\n\r\n\t\t\t// add text and remove title attribute if you not are in edit mode in the cms\r\n\t\t\tif (!$(LinksExternal.pageEditMode).length) {\r\n\t\t\t\t$thisLink.append(vissuallyHiddenText);\r\n\t\t\t\t$thisLink.removeAttr('title');\r\n\t\t\t}\r\n\r\n\t\t\t// if the content block has an external link as an image\r\n\t\t\t$thisLinkContentBlock.each(function () {\r\n\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\t$linkImg = $this.find('img'),\r\n\t\t\t\t\t$linkWithImage = $linkImg.parent('a');\r\n\r\n\t\t\t\t// add a class to any link with an image\r\n\t\t\t\t$linkWithImage.addClass('link-image');\r\n\r\n\t\t\t});\r\n\r\n\t\t\t// list of external links to exclude\r\n\t\t\tvar listExcluded = $thisLink.is(':not(.list-links__link, .btn, .btn-load-video, .link-image, .social-link, .related-links > li > a)');\r\n\r\n\t\t\t// add title tag only if the link has the following parent's containers \r\n\t\t\tif ($thisLinkContentBlock.length || $thisLinkAccordion.length || $thisLinkExpander.length || $thisLinkBoxwrap.length || $thisLinkTimeline.length || $thisLinkModal.length) {\r\n\r\n\t\t\t\tif (listExcluded) {\r\n\r\n\t\t\t\t\t// remove any existing icons\r\n\t\t\t\t\t$thisLink.find('.icon-external').remove();\r\n\r\n\t\t\t\t\t// add icon if you are not in the cms\r\n\t\t\t\t\tif (!$(LinksExternal.pageEditMode).length) {\r\n\t\t\t\t\t\t$thisLink.append(LinksExternal.iconExternal);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n};\r\n\r\n$(document).ready(function () {\r\n\tLinksExternal.init();\r\n});","(function ($) {\r\n\tvar touchsupport = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)\r\n\tif (!touchsupport) {\r\n\t\t$('body').addClass('non-touch');\r\n\t}\r\n\r\n\t//Form\r\n\t$('.form-group input[type=\"text\"], .form-group textarea').on('focus', function () {\r\n\t\t$(this).parent().addClass('focus');\r\n\t}).on('blur', function () {\r\n\t\tif (!$(this).val()) {\r\n\t\t\t$(this).parent().removeClass('focus');\r\n\t\t}\r\n\t});\r\n\t\t\r\n\t$('.form-group input[type=\"checkbox\"]').on('click', function () {\r\n\t\tif ($(this).is(':checked')) {\r\n\t\t\t$(this).parent().addClass('focus');\r\n\t\t} else {\r\n\t\t\t$(this).parent().removeClass('focus');\r\n\t\t}\r\n\t});\r\n\t\r\n\t$('.form-group input[type=\"radio\"]').on('click', function () {\r\n\t\t$(this).closest('.radio').find('.focus').removeClass('focus');\r\n\t\tif ($(this).is(':checked')) {\r\n\t\t\t$(this).parent().addClass('focus');\r\n\t\t}\r\n\t});\r\n\r\n\tvar today = new Date();\r\n\tvar year = today.getFullYear() + 3;\r\n\t$('.date-field input[type=\"text\"]').datepicker({\r\n\t\tdateFormat: \"dd/mm/yy\",\r\n\t\tfirstDay: 1,\r\n\t\tshowButtonPanel: true,\r\n\t\tcloseText: \"Close\",\r\n\t\tcurrentText: \"\",\r\n\t\tchangeMonth: true,\r\n\t\tchangeYear: true,\r\n\t\tyearRange: \"1946:\" + year\r\n\t});\r\n\t//.on('blur',function (){$(this).datepicker(\"hide\");})\r\n\r\n\tif ($('.grid-item').length > 0) {\r\n\t\t$('.grid-item a.small-block-cta').featherlightGallery({\r\n\t\t\tpreviousIcon: '',\r\n\t\t\tnextIcon: '',\r\n\t\t\tgalleryFadeIn: 100,\r\n\t\t\tgalleryFadeOut: 300\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t//Person CTA\r\n\tif (!Modernizr.objectfit) {\r\n\t\t$('.person-cta').each(function () {\r\n\t\t\tvar $imageContainer = $(this).find('.cta-img'),\r\n\t\t\t\timgUrl = $imageContainer.find('img').prop('src');\r\n\t\t\tif (imgUrl) {\r\n\t\t\t\t$imageContainer\r\n\t\t\t\t\t.css('backgroundImage', 'url(' + imgUrl + ')')\r\n\t\t\t\t\t.addClass('object-fit');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// remove default alt from any images\r\n\t$('img').each(function () {\r\n\t\tvar $this = $(this),\r\n\t\t\timgAlt = $this.attr('alt');\r\n\t\tif (imgAlt === \"default-boe-image\") {\r\n\t\t\t$(this).attr('alt', '');\r\n\t\t}\r\n\t});\r\n\r\n})(jQuery);","//----------------------------------------------------------------------\r\n//\tNAVIGATION CHAPTERS\r\n//\tCustom Package\r\n//----------------------------------------------------------------------\r\n\r\nvar NavChapters = {\r\n\tselectorContainer: '[data-chapter]',\r\n\tselector: '[data-chapter-trigger]',\r\n\tlinkNav: '[data-nav-link]',\r\n\tclassCurrent: 'current',\r\n\tlineBar: '.nav-chapters__line',\r\n\tlineBarIndicator: $('.nav-chapters__line-indicator'),\r\n\tcontainerPercentage: '[data-percentage]',\r\n\tscrollPercentage: '[data-percentage-number]',\r\n\twindowSize: 0,\r\n\twinScroll: 0,\r\n\tlistNav: '.list-nav',\r\n\tsection: '[data-section]',\r\n\theading: '[data-heading]',\r\n\tsectionHeading: '[data-section-heading]',\r\n\tverticalClass: 'nav-chapters--vertical',\r\n\tselectorPublication: '[data-publication]',\r\n\tcontentPublication: false,\r\n\tisSticky: false,\r\n\tisEndPoint: false,\r\n\tstopSticky: false,\r\n\tisHorizontal: false,\r\n\tisOpen: false,\r\n\tnavListItem: '.list-nav__item',\r\n\tclassActive: 'active',\r\n\tbackLinkNav: '[data-back]',\r\n\theaderHeight: 0,\r\n\tnavHeightInitial: 0,\r\n\tnavNoStickyHeight: 0,\r\n\tcontentHeight: 0,\r\n\tviewPortHeight: 0,\r\n\tnavChapersOffset: 0,\r\n\tcontentOffset: 0,\r\n\tendStickyPosition: 0,\r\n\ttopOffsetDesk: 0,\r\n\twinScrollRound: 0,\r\n\tnavBreakPoint: 1100,\r\n\r\n\tinit: function () {\r\n\t\t// return if the container not present\r\n\t\tif (!$(this.selectorContainer).length) return;\r\n\t\tif ($(this.selectorPublication).length) {\r\n\t\t\tthis.contentPublication = true;\r\n\t\t} else {\r\n\t\t\tthis.isHorizontal = true;\r\n\t\t\tthis.addHorizontalClass();\r\n\t\t}\r\n\t\tthis.bindChangeEvent();\r\n\t\tthis.getWindowSize();\r\n\t\tthis.getElSize();\r\n\t\tthis.getHeading();\r\n\t\tthis.addLineBar();\r\n\t\tthis.showScrollingPercentage();\r\n\t\tthis.bindScrollEvent();\r\n\t\tthis.setStickyPosition();\r\n\t\tif (this.windowSize < 1024) {\r\n\t\t\tthis.setAriaAttrs();\r\n\t\t\tthis.bindClickButton();\r\n\t\t} else {\r\n\t\t\tNavChapters.bindExpanderLink();\r\n\t\t}\r\n\t},\r\n\r\n\tgetHeading: function () {\r\n\r\n\t\t// find all headings in the page\r\n\t\tvar heading2 = $('.page-section').find('h2').not('.exclude-navigation');\r\n\t\theading2.attr('data-heading', '');\r\n\r\n\t\t// for each heading find its section container\r\n\t\t$(heading2).each(function (i) {\r\n\r\n\t\t\tvar $thisHeading = $(this),\r\n\t\t\t\ttextH2 = $(this).text();\r\n\r\n\t\t\tvar $section = $(this).parent('.page-section');\r\n\r\n\t\t\tif (NavChapters.isHorizontal) {\r\n\t\t\t\t$section = $(this).parents('.page-section');\r\n\t\t\t\t$section.attr('data-section', '');\r\n\t\t\t} else {\r\n\t\t\t\tif ($thisHeading.hasClass('box__h2')) {\r\n\t\t\t\t\t$section = $(this).parents().eq(1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tNavChapters.createNav(textH2, i, $section, $thisHeading);\r\n\t\t});\r\n\r\n\t\tNavChapters.bindClickLink();\r\n\r\n\t\t$(NavChapters.heading).each(function () {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tif (NavChapters.contentPublication) {\r\n\t\t\t\t$this.nextUntil(NavChapters.heading).addBack().wrapAll('
    ');\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tcreateNav: function (textH2, i, $section, $thisHeading) {\r\n\r\n\t\t// do not create the navigation if the CMS content editor is open\r\n\t\tvar bodyEdit = '.pagemode-edit';\r\n\r\n\t\tif ($(bodyEdit).length) return;\r\n\r\n\t\tvar elementH3 = $thisHeading.nextUntil('h2', 'h3:not(.exclude-navigation)');\r\n\r\n\t\t// create the markup for each element found\r\n\t\t$(NavChapters.listNav).append(\"
  • \" + textH2 + \"
  • \");\r\n\r\n\t\t// add IDs to headings\r\n\t\t$thisHeading.attr('id', 'chapter-' + i);\r\n\t\tvar $thisH2Id = $thisHeading.attr('id');\r\n\t\tvar h2Link = '[href=\"#' + $thisH2Id + '\"]';\r\n\r\n\t\t// add back link to section title\r\n\t\tif (!NavChapters.contentPublication) {\r\n\t\t\tvar backLinkHTML = '';\r\n\t\t\t$section.append(backLinkHTML);\r\n\t\t}\r\n\r\n\t\t// add secondary nav to publications\r\n\t\tif (NavChapters.contentPublication) {\r\n\r\n\t\t\t$(h2Link).each(function () {\r\n\r\n\t\t\t\tvar $thisMatched = $(this);\r\n\r\n\t\t\t\t// if link has H3 child add secondary nav\r\n\t\t\t\tif (elementH3.length) {\r\n\r\n\t\t\t\t\t$thisMatched.addClass('has-child');\r\n\t\t\t\t\t$thisMatched.after($(''));\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// for each H3 add id and markup to the secondary nav of the link matched\r\n\t\t\t\telementH3.each(function (i) {\r\n\r\n\t\t\t\t\tvar $thisH3 = $(this),\r\n\t\t\t\t\t\tthisH3Text = $thisH3.text(),\r\n\t\t\t\t\t\tthisH3Id = $thisH2Id + '-' + i;\r\n\r\n\t\t\t\t\t// set ids to headings\r\n\t\t\t\t\t$thisH3.attr('id', thisH3Id);\r\n\t\t\t\t\t$thisH3.attr('data-heading', '');\r\n\t\t\t\t\t$thisMatched.next($('.list-nav-secondary')).append(\"
  • \" + thisH3Text + \"
  • \");\r\n\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// update nav height after being created\r\n\t\tNavChapters.navHeightInitial = $(NavChapters.selectorContainer).height();\r\n\r\n\t\tNavChapters.getInViewSection();\r\n\r\n\t},\r\n\r\n\tbindClickLink: function () {\r\n\r\n\t\t$(NavChapters.linkNav).on('click', function (e) {\r\n\r\n\t\t\tvar thisLink = $(this);\r\n\t\t\tNavChapters.checkOffsetSection(thisLink);\r\n\t\t\tNavChapters.removeClassActive();\r\n\t\t\tNavChapters.addClassActive(thisLink);\r\n\r\n\r\n\t\t\tif (NavChapters.windowSize < 1024) {\r\n\t\t\t\t$(NavChapters.selectorContainer).removeClass('active');\r\n\t\t\t\tNavChapters.resetAriaAttrs();\r\n\t\t\t}\r\n\r\n\t\t\t// set focus for keyboard users\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tNavChapters.setFocus(thisLink);\r\n\t\t\t}, 100);\r\n\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t});\r\n\r\n\t\tif ($(NavChapters.backLinkNav)) {\r\n\t\t\t$(NavChapters.backLinkNav).on('click', function (e) {\r\n\t\t\t\t// prevent default click\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$(\"html, body\").animate({ scrollTop: 0 }, 1000);\r\n\t\t\t\t// set focus back to nav links\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t$(NavChapters.selectorContainer).attr('tabindex', '-1').trigger('focus');\r\n\t\t\t\t}, 100);\r\n\t\t\t});\r\n\t\t};\r\n\t},\r\n\r\n\tbindExpanderLink: function () {\r\n\r\n\t\tif (NavChapters.contentPublication) {\r\n\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t$thisParent = $this.parents('#output');\r\n\r\n\t\t\t$('.accordion-button').on('click', function (e) {\r\n\r\n\t\t\t\tif (NavChapters.windowSize >= 1024) {\r\n\r\n\t\t\t\t\t// if you click on an accordion which is inside an #output container\r\n\t\t\t\t\tif ($thisParent.length) {\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\tNavChapters.removeEndPointClass();\r\n\t\t\t\t\t\t\tNavChapters.addStickyClass();\r\n\t\t\t\t\t\t\t$(NavChapters.selectorContainer).css('top', NavChapters.headerHeight);\r\n\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tNavChapters.getElSize();\r\n\t\t\t\t\t}, 270);\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tNavChapters.setStickyPosition();\r\n\t\t\t\t\t}, 280);\r\n\r\n\t\t\t\t\t// prevent default click behavior\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tNavChapters.resetPosition();\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tbindChangeEvent: function () {\r\n\r\n\t\t// reset the functions and recalculate the values\r\n\t\t$(window).on('orientationchange resize load', function () {\r\n\r\n\t\t\t// Throttle the resize event to fix mobile bug\r\n\t\t\tclearTimeout(this.id);\r\n\t\t\tthis.id = setTimeout(function () {\r\n\t\t\t\tif (NavChapters.windowSize !== $(window).width()) {\r\n\r\n\t\t\t\t\tNavChapters.getWindowSize();\r\n\r\n\t\t\t\t\tif (NavChapters.contentPublication) {\r\n\t\t\t\t\t\tNavChapters.contentHeight = $('[data-publication]').height();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ($(NavChapters.selectorContainer).hasClass('sticky')) {\r\n\t\t\t\t\t\tNavChapters.removeStickyClass();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ($(NavChapters.selectorContainer).hasClass('endpoint')) {\r\n\t\t\t\t\t\tNavChapters.removeEndPointClass();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tNavChapters.resetAriaAttrs();\r\n\r\n\t\t\t\t\tif (NavChapters.windowSize < 1024) {\r\n\t\t\t\t\t\tNavChapters.resetPosition();\r\n\t\t\t\t\t\tNavChapters.unbindClickButton();\r\n\t\t\t\t\t\tNavChapters.bindClickButton();\r\n\t\t\t\t\t\tNavChapters.resetHeight();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tNavChapters.bindExpanderLink();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tNavChapters.getElSize();\r\n\t\t\t\t\tNavChapters.setStickyPosition();\r\n\r\n\t\t\t\t}\r\n\t\t\t}, 10);\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tbindClickButton: function () {\r\n\t\t// on clink event get the parent container and add active class\r\n\t\t$(NavChapters.selector).on('click', function (e) {\r\n\r\n\t\t\tvar $thisSelector = $(this);\r\n\r\n\t\t\t// animate the height of the content and set the aria attributes\r\n\t\t\tNavChapters.animateNavChapt($thisSelector);\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tunbindClickButton: function () {\r\n\r\n\t\t$(NavChapters.selector).off(\"click\");\r\n\t},\r\n\r\n\tcheckOffsetSection: function (thisLink) {\r\n\r\n\t\t// get the section offset position and the height of each top elements\r\n\t\tvar offSetEl = $(thisLink.attr('href')).offset().top,\r\n\t\t\toffsetRound = Math.round(offSetEl),\r\n\t\t\tnavButtonHeight = $(NavChapters.selector).outerHeight(),\r\n\t\t\tlineHeight = $(NavChapters.lineBarIndicator).height(),\r\n\t\t\tnavChapBar = navButtonHeight + lineHeight,\r\n\t\t\tcombinedHeight = NavChapters.navHeightInitial + NavChapters.headerHeight,\r\n\r\n\t\t\t// calculate the end scroll position for horizontal nav layout\r\n\t\t\tendScroll = offsetRound - navChapBar - 15,\r\n\t\t\tendScrollNoSticky = offsetRound - (navChapBar + NavChapters.navNoStickyHeight + 15),\r\n\t\t\tendScrollNoStickyDesk = offsetRound - (combinedHeight + NavChapters.navHeightInitial + 35),\r\n\t\t\tendScrollDesk = offsetRound - combinedHeight - 25;\r\n\r\n\t\tif (NavChapters.contentPublication && NavChapters.windowSize >= 1024) {\r\n\r\n\t\t\tNavChapters.jumpToHeading(offsetRound);\r\n\r\n\t\t} else {\r\n\t\t\t// horizontal nav layout\r\n\t\t\tNavChapters.jumpToSection(endScroll, endScrollDesk, endScrollNoSticky, endScrollNoStickyDesk, navChapBar);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tjumpToHeading: function (offsetRound) {\r\n\r\n\t\tvar contentHeading = offsetRound - (NavChapters.headerHeight + 15);\r\n\r\n\t\t$('html, body').animate({ scrollTop: contentHeading }, 500);\r\n\r\n\t},\r\n\r\n\tjumpToSection: function (endScroll, endScrollDesk, endScrollNoSticky, endScrollNoStickyDesk, navChapBar) {\r\n\r\n\t\tif (NavChapters.windowSize >= 1024) {\r\n\r\n\t\t\tif ($(NavChapters.selectorContainer).hasClass('sticky')) {\r\n\r\n\t\t\t\tif (NavChapters.windowSize >= NavChapters.navBreakPoint) {\r\n\t\t\t\t\t$('html, body').animate({ scrollTop: endScrollDesk }, 500);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('html, body').animate({ scrollTop: endScrollDesk + navChapBar }, 500);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (NavChapters.windowSize >= NavChapters.navBreakPoint) {\r\n\t\t\t\t\t$('html, body').animate({ scrollTop: endScrollNoStickyDesk }, 500);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('html, body').animate({ scrollTop: endScrollNoStickyDesk + navChapBar }, 500);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tif ($(NavChapters.selectorContainer).hasClass('sticky')) {\r\n\t\t\t\t$('html, body').animate({ scrollTop: endScroll - 5 }, 500);\r\n\t\t\t} else {\r\n\t\t\t\t$('html, body').animate({ scrollTop: endScrollNoSticky - 5 }, 500);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetInViewSection: function () {\r\n\r\n\t\tvar combinedNavHeight = NavChapters.navHeightInitial + NavChapters.headerHeight;\r\n\r\n\t\t$(window).on('scroll', function () {\r\n\r\n\t\t\t// get current section and headings through inview filter\r\n\t\t\tvar $currentHeading = $(inView(NavChapters.sectionHeading, 'top', -100)),\r\n\t\t\t\t$currentSection;\r\n\r\n\t\t\tif (NavChapters.contentPublication) {\r\n\t\t\t\t$currentSection = $(inView(NavChapters.section, 'top', -100));\r\n\t\t\t} else {\r\n\t\t\t\t// Horizontal bar \r\n\t\t\t\t// current section is H2 position minus top navigation + chatper navigation \r\n\t\t\t\t$currentSection = $(inView(NavChapters.section, 'top', - combinedNavHeight));\r\n\t\t\t}\r\n\r\n\t\t\t// if filtered selection returns an element\r\n\t\t\tif ($currentSection) {\r\n\t\t\t\tif (NavChapters.contentPublication) {\r\n\r\n\t\t\t\t\t// get id and matching nav element\r\n\t\t\t\t\tvar currentSectionId = $currentSection.find('h2').attr('id'),\r\n\t\t\t\t\t\t$navItem = $(NavChapters.linkNav + '[href=\"#' + currentSectionId + '\"]'),\r\n\t\t\t\t\t\t$navList = $navItem.parent('.list-nav__item');\r\n\r\n\t\t\t\t\t// remove class from other nav items and add current class to current section\r\n\t\t\t\t\t$(NavChapters.navListItem).not(NavChapters.classCurrent).removeClass(NavChapters.classCurrent);\r\n\t\t\t\t\t$navList.addClass(NavChapters.classCurrent);\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// get id and matching nav element\r\n\t\t\t\t\tvar currentH2Id = $currentSection.find('h2').attr('id'),\r\n\t\t\t\t\t\t$navItemH2 = $(NavChapters.linkNav + '[href=\"#' + currentH2Id + '\"]');\r\n\r\n\r\n\t\t\t\t\t// remove class from other nav items and add current class to current section\r\n\t\t\t\t\tNavChapters.removeClassActive();\r\n\r\n\t\t\t\t\tNavChapters.addClassActive($navItemH2);\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (NavChapters.contentPublication && $currentHeading) {\r\n\t\t\t\t// get id and matching nav element\r\n\t\t\t\tvar currentHeading = $currentHeading.find(NavChapters.heading),\r\n\t\t\t\t\tcurrentHeadingId = $(currentHeading).attr('id'),\r\n\t\t\t\t\t$navItemMatched = $(NavChapters.linkNav + '[href=\"#' + currentHeadingId + '\"]');\r\n\r\n\t\t\t\tNavChapters.removeClassActive();\r\n\t\t\t\tNavChapters.addClassActive($navItemMatched);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\taddClassActive: function (thisLink) {\r\n\t\tthisLink.addClass(NavChapters.classActive);\r\n\t},\r\n\r\n\tremoveClassActive: function () {\r\n\t\t$(NavChapters.linkNav).removeClass(NavChapters.classActive);\r\n\t\t//NavChapters.unBindTouchEvent();\r\n\t},\r\n\r\n\taddLineBar: function () {\r\n\r\n\t\t// get the offset position of the navbar\r\n\t\t$(window).on('scroll', function () {\r\n\r\n\t\t\tvar winScroll = document.body.scrollTop || document.documentElement.scrollTop,\r\n\t\t\t\theightDoc = document.documentElement.scrollHeight - document.documentElement.clientHeight,\r\n\t\t\t\tscrolled = winScroll / heightDoc * 100,\r\n\t\t\t\tscrolledRound = Math.round(scrolled);\r\n\r\n\r\n\t\t\t// add the scrolled position to the line bar\r\n\t\t\t$(NavChapters.lineBarIndicator).css('width', +scrolledRound + \"%\");\r\n\r\n\t\t\t$(NavChapters.scrollPercentage).text(scrolledRound + '%');\r\n\r\n\t\t\tif ($(NavChapters.containerPercentage).hasClass('hide')) {\r\n\t\t\t\tNavChapters.removeHideClass();\r\n\t\t\t}\r\n\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tshowScrollingPercentage: function () {\r\n\r\n\t\t$(window).on('scroll', function () {\r\n\r\n\t\t\tclearTimeout($.data(this, 'scrollTimer'));\r\n\t\t\t$.data(this, 'scrollTimer', setTimeout(function () {\r\n\t\t\t\t// hide percentage\r\n\t\t\t\tNavChapters.addHideClass();\r\n\r\n\t\t\t}, 1000));\r\n\t\t});\r\n\t},\r\n\r\n\taddHideClass: function () {\r\n\r\n\t\t$(NavChapters.containerPercentage).addClass('hide');\r\n\t},\r\n\r\n\tremoveHideClass: function () {\r\n\t\t$(NavChapters.containerPercentage).removeClass('hide');\r\n\t},\r\n\r\n\tgetElSize: function () {\r\n\r\n\t\tNavChapters.headerHeight = $('.global-header').height();\r\n\t\t//NavChapters.navHeightInitial = $(NavChapters.selectorContainer).height(),\r\n\t\tNavChapters.viewPortHeight = $(window).height(),\r\n\t\t\tNavChapters.navChapersOffset = Math.round($('.nav-chapters').offset().top);\r\n\r\n\t\tif (NavChapters.contentPublication) {\r\n\t\t\tNavChapters.contentOffset = Math.round($('.container-publication').offset().top),\r\n\t\t\t\tNavChapters.contentHeight = $('[data-publication]').height(),\r\n\t\t\t\tNavChapters.endStickyPosition = NavChapters.contentOffset + NavChapters.contentHeight - (NavChapters.navHeightInitial + NavChapters.headerHeight);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tgetWindowSize: function () {\r\n\t\t// get window width and update the global value\r\n\t\tNavChapters.windowSize = window.innerWidth;\r\n\t\tNavChapters.viewPortHeight = $(window).height();\r\n\t},\r\n\r\n\tsetStickyPosition: function () {\r\n\r\n\t\tNavChapters.topOffsetDesk = NavChapters.contentOffset - NavChapters.headerHeight;\r\n\t\tvar combinedNavHead = NavChapters.navChapersOffset - NavChapters.headerHeight;\r\n\r\n\t\t// if the layout is laptop and is publication\r\n\t\tif (NavChapters.contentPublication) {\r\n\r\n\t\t\tvar combinedNavHeight = NavChapters.navHeightInitial + NavChapters.headerHeight;\r\n\r\n\t\t\tif (NavChapters.windowSize >= 1024) {\r\n\r\n\t\t\t\t// set the top posion of the nav bar to 0 if is a publication\r\n\t\t\t\t$(NavChapters.selectorContainer).css('top', '0');\r\n\r\n\t\t\t\t//add and remove sticky class if the scrolling position is greater than offset nav position\r\n\t\t\t\tif (NavChapters.winScrollRound >= NavChapters.topOffsetDesk) {\r\n\r\n\t\t\t\t\tif (NavChapters.isEndPoint === false) {\r\n\r\n\t\t\t\t\t\tNavChapters.addStickyClass();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tNavChapters.removeStickyClass();\r\n\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t// if the viewport height is greater than the initial navigation height \r\n\t\t\t\tif (NavChapters.viewPortHeight >= combinedNavHeight) {\r\n\r\n\t\t\t\t\t$(NavChapters.selectorContainer).css('height', 'auto');\r\n\r\n\t\t\t\t\t// when the scroll is greater than initial height end position \r\n\t\t\t\t\tif (NavChapters.winScrollRound >= NavChapters.endStickyPosition) {\r\n\r\n\t\t\t\t\t\tNavChapters.removeStickyClass();\r\n\t\t\t\t\t\tNavChapters.addEndPointClass();\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tNavChapters.removeEndPointClass();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// when the view port reaches the end position initial height\r\n\t\t\t\t\tif (NavChapters.winScrollRound >= NavChapters.endStickyPosition) {\r\n\r\n\t\t\t\t\t\tNavChapters.removeStickyClass();\r\n\t\t\t\t\t\t$(NavChapters.selectorContainer).css('height', 'auto');\r\n\t\t\t\t\t\tNavChapters.addEndPointClass();\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tNavChapters.removeEndPointClass();\r\n\r\n\t\t\t\t\t\t// if tablet layout\r\n\t\t\t\t\t\t$(NavChapters.selectorContainer).css('height', 'calc(100% - 40px)');\r\n\r\n\t\t\t\t\t\t// if laptop layout\r\n\t\t\t\t\t\tif (NavChapters.windowSize >= NavChapters.navBreakPoint) {\r\n\t\t\t\t\t\t\t$(NavChapters.selectorContainer).css('height', 'calc(100% - 96px)');\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\r\n\t\t\t\t// set the top posion of the nav bar\r\n\t\t\t\tif (NavChapters.isSticky) {\r\n\r\n\t\t\t\t\tif (NavChapters.isEndPoint === false) {\r\n\r\n\t\t\t\t\t\tif (NavChapters.windowSize >= 1100) {\r\n\r\n\t\t\t\t\t\t\t$(NavChapters.selectorContainer).css('top', NavChapters.headerHeight);\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t$(NavChapters.selectorContainer).css('top', '0');\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t$(NavChapters.selectorContainer).css('top', 'auto');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t$(NavChapters.selectorContainer).css('top', '0');\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif (NavChapters.winScrollRound >= NavChapters.navChapersOffset) {\r\n\r\n\t\t\t\t\tNavChapters.addStickyClass();\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tNavChapters.removeStickyClass();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// Horizontal bar (knowledgebank)\r\n\t\t\t// add the sticky class to the navbar when you reach its scroll position.Remove \"sticky\" when you leave the scroll position\r\n\t\t\tif (NavChapters.windowSize >= NavChapters.navBreakPoint && NavChapters.winScrollRound >= combinedNavHead || NavChapters.windowSize < NavChapters.navBreakPoint && NavChapters.winScrollRound >= NavChapters.navChapersOffset) {\r\n\r\n\t\t\t\tNavChapters.addStickyClass();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tNavChapters.removeStickyClass();\r\n\t\t\t}\r\n\r\n\t\t\t// set the top posion of the nav bar\r\n\t\t\tif (NavChapters.windowSize >= NavChapters.navBreakPoint) {\r\n\r\n\t\t\t\t$(NavChapters.selectorContainer).css('top', NavChapters.headerHeight);\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$(NavChapters.selectorContainer).css('top', '0');\r\n\t\t\t}\r\n\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tbindScrollEvent: function () {\r\n\r\n\t\t$(window).on('scroll', function () {\r\n\r\n\t\t\t// get scrolling position\r\n\t\t\tvar winScroll = $(window).scrollTop();\r\n\t\t\tNavChapters.winScrollRound = Math.round(winScroll);\r\n\r\n\t\t\tNavChapters.setStickyPosition();\r\n\t\t});\r\n\t},\r\n\r\n\tresetHeight: function () {\r\n\r\n\t\t$(NavChapters.selectorContainer).css('height', 'auto');\r\n\t},\r\n\r\n\tresetPosition: function () {\r\n\r\n\t\t// set the top posion of the nav bar\r\n\t\t$(NavChapters.selectorContainer).css('top', '0');\r\n\t},\r\n\r\n\taddEndPointClass: function () {\r\n\t\tNavChapters.isEndPoint = true;\r\n\t\t$(NavChapters.selectorContainer).addClass('endpoint');\r\n\t},\r\n\r\n\tremoveEndPointClass: function () {\r\n\t\tNavChapters.isEndPoint = false;\r\n\t\t$(NavChapters.selectorContainer).removeClass('endpoint');\r\n\t},\r\n\r\n\taddStickyClass: function () {\r\n\t\tNavChapters.isSticky = true;\r\n\t\t$(NavChapters.selectorContainer).addClass(\"sticky\");\r\n\t\tif (NavChapters.windowSize <= 1024 && NavChapters.contentPublication) {\r\n\t\t\t$(NavChapters.lineBar).addClass(\"sticky\");\r\n\t\t}\r\n\t},\r\n\r\n\tremoveStickyClass: function () {\r\n\t\tNavChapters.isSticky = false;\r\n\t\t$(NavChapters.selectorContainer).removeClass(\"sticky\");\r\n\t\tif (NavChapters.windowSize <= 1024 && NavChapters.contentPublication) {\r\n\t\t\t$(NavChapters.lineBar).removeClass(\"sticky\");\r\n\t\t}\r\n\t},\r\n\r\n\tsetFocus: function (thisLink) {\r\n\r\n\t\tvar $currentSection = $(thisLink.attr('href'));\r\n\t\t$currentSection.attr('tabindex', '-1').trigger('focus');\r\n\t},\r\n\r\n\tsetAriaAttrs: function () {\r\n\r\n\t\t// add aria-controls to button and hidden content\r\n\t\t$(NavChapters.selector).attr('aria-expanded', false);\r\n\t\t$(NavChapters.listNav).attr('aria-hidden', true);\r\n\t},\r\n\r\n\tresetAriaAttrs: function () {\r\n\r\n\t\t// set aria to initial values and remove the attr if it's desk layout\r\n\t\tif (NavChapters.windowSize < 1024) {\r\n\r\n\t\t\t$(NavChapters.selector).attr('aria-expanded', false);\r\n\r\n\t\t\t$('#list-chapters').attr('aria-hidden', true);\r\n\r\n\t\t} else {\r\n\t\t\t$(NavChapters.selector).removeAttr('aria-expanded');\r\n\t\t\t$('#list-chapters').removeAttr('aria-hidden');\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tanimateNavChapt: function ($thisSelector) {\r\n\r\n\t\tvar state = $thisSelector.attr('aria-expanded') === 'false' ? true : false,\r\n\t\t\tcontentHidden = $(NavChapters.listNav).attr('aria-hidden') === 'true' ? false : true;\r\n\r\n\t\t// set btn state\r\n\t\t$thisSelector.attr('aria-expanded', state);\r\n\t\t$('.list-nav').attr('aria-hidden', contentHidden);\r\n\r\n\t\t// set nav height if the nav is not sticky\r\n\t\tif (NavChapters.windowSize < 1024) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (!contentHidden) {\r\n\t\t\t\t\tNavChapters.navNoStickyHeight = $(NavChapters.selectorContainer).height();\r\n\t\t\t\t}\r\n\t\t\t}, 100);\r\n\t\t}\r\n\t},\r\n\r\n\taddHorizontalClass: function () {\r\n\r\n\t\t$(NavChapters.selectorContainer).addClass('nav-chapters--horizontal');\r\n\t}\r\n};\r\n\r\n$(document).ready(function () {\r\n\tNavChapters.init();\r\n});","//----------------------------------------------------------------------\r\n//\tPRIMARY NAVIGATION\r\n//\tCustom Package\r\n//----------------------------------------------------------------------\r\n//\r\n\r\nvar NavPrimary = {\r\n\tselector: '[data-nav-primary]',\r\n\tnavPrimaryUl: '.nav-primary',\r\n\tselectorMenu: '[data-nav-toggle]',\r\n\tnavHasChildren: '[data-nav-has-children]',\r\n\tnavListItem: '.nav-primary__list-item',\r\n\tdropdownToggle: '.nav-primary__dropdown-toggle',\r\n\tsubList: '.nav-primary__sublist',\r\n\tshowElClass: 'js-show-element',\r\n\topenSubMenuClass: 'js-open-submenu',\r\n\thoverClass: 'js-hovered',\r\n\thideClass: 'js-hide',\r\n\tbackMenu: '[data-nav-back]',\r\n\tsubNavSecondaryButton: '.nav-primary__sublist-item > .nav-primary__dropdown-toggle',\r\n\tsubNavPrimaryButton: '.nav-primary__list-item > .nav-primary__dropdown-toggle',\r\n\tseconLevelUl: '.nav-primary__list-item > .nav-primary__sublist',\r\n\tthirdLevelUl: '.nav-primary__sublist-item > .nav-primary__sublist',\r\n\tfirstSubLink: '.nav-primary__list-item > ul > li > a',\r\n\tsecondarySubLink: '.nav-primary__list-item > ul > li > ul',\r\n\twindowSize: 0,\r\n\tnavBreakPoint: 1100,\r\n\r\n\tinit: function () {\r\n\t\t// return if the container not present\r\n\t\tif (!$(this.selector).length) return;\r\n\t\tthis.getWindowSize();\r\n\t\tthis.setAttributes();\r\n\t\tthis.setNavEvents();\r\n\t\tthis.bindChangeEvent();\r\n\t\tthis.addCurrentClass();\r\n\t\tthis.bindClickEvent();\r\n\t},\r\n\r\n\r\n\tsetNavEvents: function () {\r\n\t\tif (NavPrimary.windowSize >= NavPrimary.navBreakPoint) {\r\n\t\t\tNavPrimary.bindMouseEvent();\r\n\t\t\tNavPrimary.bindKeyboardEvent();\r\n\t\t} else {\r\n\t\t\tNavPrimary.unbindMobileEvent();\r\n\t\t\tNavPrimary.bindMobileEvents();\r\n\t\t\tNavPrimary.setAriaMenuMobile();\r\n\t\t}\r\n\t},\r\n\tbindChangeEvent: function () {\r\n\r\n\t\t// reset the functions and recalculate the values\r\n\t\t$(window).on('orientationchange resize load', function () {\r\n\r\n\t\t\tif (NavPrimary.windowSize !== window.innerWidth) {\r\n\r\n\t\t\t\t// Update variables\r\n\t\t\t\tNavPrimary.getWindowSize();\r\n\t\t\t\tNavPrimary.removeAttributes();\r\n\t\t\t\tNavPrimary.setAttributes();\r\n\r\n\t\t\t\tif (NavPrimary.windowSize >= NavPrimary.navBreakPoint) {\r\n\r\n\t\t\t\t\tNavPrimary.resetMobileNav();\r\n\t\t\t\t\tNavPrimary.unbindMobileEvent();\r\n\t\t\t\t\tNavPrimary.bindMouseEvent();\r\n\t\t\t\t\tNavPrimary.bindKeyboardEvent();\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tNavPrimary.resetMobileNav();\r\n\t\t\t\t\tNavPrimary.unbindMouseEvent();\r\n\t\t\t\t\tNavPrimary.unbindMobileEvent();\r\n\t\t\t\t\tNavPrimary.bindMobileEvents();\r\n\t\t\t\t\tNavPrimary.setAriaMenuMobile();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tgetWindowSize: function () {\r\n\t\t// get window width and update the global value\r\n\t\tNavPrimary.windowSize = window.innerWidth;\r\n\r\n\t\tif (NavPrimary.windowSize >= NavPrimary.navBreakPoint) {\r\n\t\r\n\t\t\tNavPrimary.resetMobileNav();\r\n\t\t\tNavPrimary.unbindMobileEvent();\r\n\t\t\tNavPrimary.bindMouseEvent();\r\n\t\t\tNavPrimary.bindKeyboardEvent();\r\n\t\t} else {\r\n\r\n\t\t\tNavPrimary.resetMobileNav();\r\n\t\t\tNavPrimary.unbindMouseEvent();\r\n\t\t\tNavPrimary.unbindMobileEvent();\r\n\t\t\tNavPrimary.bindMobileEvents();\r\n\t\t\tNavPrimary.setAriaMenuMobile();\r\n\t\t}\r\n\t},\r\n\r\n\tbindMouseEvent: function () {\r\n\r\n\t\t// sub menu - When interacting with a li that has a sub menu\r\n\t\t$(NavPrimary.navHasChildren).on('mouseover mouseleave', function (e) {\r\n\r\n\t\t\tvar $thisListItem = $(this);\r\n\r\n\t\t\t// If either tabbing into the li or hovering over the li\r\n\t\t\tif (e.type === 'mouseover') {\r\n\r\n\t\t\t\t// Show sub menu\r\n\t\t\t\tNavPrimary.addShowElClass($thisListItem);\r\n\t\t\t}\r\n\r\n\t\t\t// If mouse leaves li that has sub menu\r\n\t\t\tif (e.type === 'mouseleave') {\r\n\r\n\t\t\t\t// Hide sub menu\r\n\t\t\t\tNavPrimary.removeShowElClasss($thisListItem);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tunbindMouseEvent: function () {\r\n\t\t$(NavPrimary.navHasChildren).off('mouseover mouseleave');\r\n\t},\r\n\r\n\tunbindMobileEvent: function () {\r\n\t\t$(NavPrimary.selectorMenu).off('click touchend');\r\n\t\t$(NavPrimary.backMenu).off('click touchend');\r\n\t},\r\n\r\n\tbindClickEvent: function () {\r\n\t\t$(NavPrimary.subNavPrimaryButton).on('click touchend', function (e) {\r\n\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t$thisSubNav = $this.next(),\r\n\t\t\t\t$thisLi = $this.parent('li');\r\n\r\n\t\t\tif ($thisSubNav.hasClass(NavPrimary.showElClass)) {\r\n\r\n\t\t\t\tNavPrimary.closeDeskSubNav($this, $thisSubNav);\r\n\t\t\t\tif (e.type === 'touchend') {\r\n\t\t\t\t\t$('.nav-primary__list-item').removeClass('js-active');\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// add show class and set attributes\r\n\t\t\t\t$(NavPrimary.seconLevelUl).removeClass(NavPrimary.showElClass);\r\n\t\t\t\t$(NavPrimary.seconLevelUl).attr('aria-hidden', true);\r\n\t\t\t\tNavPrimary.openSubNav($this, $thisSubNav);\r\n\r\n\t\t\t\tif (e.type === 'touchend') {\r\n\t\t\t\t\t$('.nav-primary__list-item').removeClass('js-active');\r\n\t\t\t\t\t$('.nav-primary__sublist-item').removeClass('js-active');\r\n\t\t\t\t\t$thisLi.addClass('js-active');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t$(NavPrimary.subNavSecondaryButton).on('click touchend', function (e) {\r\n\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t$thisSubNav = $this.next(),\r\n\t\t\t\t$thisLi = $this.parent('li');\r\n\r\n\t\t\tif ($thisSubNav.hasClass(NavPrimary.showElClass)) {\r\n\t\t\t\t// remove show class and reset attributes\r\n\t\t\t\tNavPrimary.closeDeskSubNav($this, $thisSubNav);\r\n\t\t\t\tif (e.type === 'touchend') {\r\n\t\t\t\t\t$('.nav-primary__sublist-item').removeClass('js-active');\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// add show class and set attributes\r\n\t\t\t\tNavPrimary.openSubNav($this, $thisSubNav);\r\n\t\t\t\tif (e.type === 'touchend') {\r\n\t\t\t\t\t$('.nav-primary__sublist-item').removeClass('js-active');\r\n\t\t\t\t\t$thisLi.addClass('js-active');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t// if user click outside the nav primary area \r\n\t\t$('body').on('click touchmove keyup', function (e) {\r\n\r\n\t\t\tvar $thisTarget = $(e.target),\r\n\t\t\t\tclickedOutside = $thisTarget.closest(NavPrimary.selector).length === 0;\r\n\r\n\t\t\tif (clickedOutside) {\r\n\r\n\t\t\t\tif (NavPrimary.windowSize >= NavPrimary.navBreakPoint) {\r\n\r\n\t\t\t\t\t// reset nav - close any submenu\r\n\t\t\t\t\tif ($(NavPrimary.subList).hasClass(NavPrimary.showElClass)) {\r\n\t\t\t\t\t\tNavPrimary.resetDeskNav();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// close menu and reset mobile events\r\n\t\t\t\t\tif (clickedOutside && $('.global-header').hasClass('js-open')) {\r\n\r\n\t\t\t\t\t\tNavPrimary.resetMobileNav();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tbindKeyboardEvent: function () {\r\n\r\n\t\t$('.nav-primary__link').on('keyup', function (e) {\r\n\r\n\t\t\t// remove and reset first level open dropdown menu\r\n\t\t\tNavPrimary.resetDeskNav();\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t});\r\n\r\n\t\t$(NavPrimary.firstSubLink).on('keyup', function (e) {\r\n\r\n\t\t\t// remove and reset first level open dropdown menu\r\n\t\t\tNavPrimary.resetDeskSubNavDropdown();\r\n\r\n\t\t\t// prevent default click behavior\r\n\t\t\te.preventDefault();\r\n\t\t\t// stopPropagation to prevent the button click from bubbling up the DOM\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tresetDeskNav: function () {\r\n\t\t$(NavPrimary.subList).removeClass(NavPrimary.showElClass);\r\n\t\t$('.nav-primary__list-item').removeClass('js-active');\r\n\t\t$('.nav-primary__sublist-item').removeClass('js-active');\r\n\t\t$(NavPrimary.dropdownToggle).attr('aria-expanded', false);\r\n\t\t$(NavPrimary.subList).attr('aria-hidden', true);\r\n\t},\r\n\r\n\tresetDeskSubNavDropdown: function () {\r\n\t\t$(NavPrimary.secondarySubLink).removeClass(NavPrimary.showElClass);\r\n\t\t$(subNavSecondaryButton).attr('aria-expanded', false);\r\n\t\t$(NavPrimary.secondarySubLink).attr('aria-hidden', true);\r\n\t},\r\n\r\n\tresetMobileNav: function () {\r\n\t\t$(NavPrimary.selectorMenu).removeClass('js-open');\r\n\t\t$('.global-header').removeClass('js-open');\r\n\t\t$('.header-nav').removeClass('js-open-submenu');\r\n\r\n\t\t// remove hide class to display LI back\r\n\t\tNavPrimary.removeHideClasss();\r\n\t},\r\n\r\n\tcloseDeskSubNav: function ($this, $thisSubNav) {\r\n\r\n\t\t// remove show class and reset attributes\r\n\t\t$this.attr('aria-expanded', false);\r\n\t\t$thisSubNav.attr('aria-hidden', true);\r\n\t\t$thisSubNav.removeClass(NavPrimary.showElClass);\r\n\t},\r\n\r\n\topenSubNav: function ($this, $thisSubNav) {\r\n\r\n\t\tvar $liSiblings = $this.parent().siblings('li'),\r\n\t\t\t$ulSiblings = $thisSubNav.siblings();\r\n\r\n\t\t$(NavPrimary.thirdLevelUl).attr('aria-hidden', true);\r\n\t\t$(NavPrimary.dropdownToggle).attr('aria-expanded', false);\r\n\t\t$this.attr('aria-expanded', true);\r\n\t\t$thisSubNav.attr('aria-hidden', false);\r\n\r\n\r\n\t\tif (NavPrimary.windowSize <= NavPrimary.navBreakPoint - 1) {\r\n\r\n\t\t\t// add show class to submenu\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t$(NavPrimary.thirdLevelUl).removeClass(NavPrimary.showElClass);\r\n\t\t\t\t$thisSubNav.addClass(NavPrimary.showElClass);\r\n\t\t\t}, 100);\r\n\r\n\t\t\t// once the animation is finished\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t// remove visibility from LI and UL siblings so that if the parent is longer then is not visible \r\n\t\t\t\t// and prevent keyboard focus on elements that are visually hidden\r\n\t\t\t\tNavPrimary.addHideClass($liSiblings);\r\n\t\t\t\tNavPrimary.addHideClass($ulSiblings);\r\n\r\n\t\t\t}, 500);\r\n\r\n\t\t} else {\r\n\t\t\t$(NavPrimary.thirdLevelUl).removeClass(NavPrimary.showElClass);\r\n\t\t\t$thisSubNav.addClass(NavPrimary.showElClass);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tsetAriaMenuMobile: function () {\r\n\t\t// set aria to main nav \r\n\t\t$(NavPrimary.selectorMenu).attr('aria-expanded', 'false');\r\n\t\t$(NavPrimary.navPrimaryUl).attr('aria-hidden', 'true');\r\n\t},\r\n\r\n\tbindMobileEvents: function () {\r\n\r\n\t\t$(NavPrimary.selectorMenu).on('click touchend', function () {\r\n\r\n\t\t\tvar $thisMenu = $(this);\r\n\r\n\t\t\t// set aria state\r\n\t\t\tvar $thisMenuState = $thisMenu.attr('aria-expanded') === 'false' ? true : false;\r\n\t\t\tvar primaryNavState = $(NavPrimary.navPrimaryUl).attr('aria-hidden') === 'true' ? false : true;\r\n\r\n\t\t\t$thisMenu.attr('aria-expanded', $thisMenuState);\r\n\t\t\t$(NavPrimary.navPrimaryUl).attr('aria-hidden', primaryNavState);\r\n\t\t\t$thisMenu.toggleClass('js-open');\r\n\t\t\t$('.global-header').toggleClass('js-open');\r\n\r\n\t\t\t// remove any opened submenu and reset attributes\r\n\t\t\t$(NavPrimary.subList).removeClass(NavPrimary.showElClass);\r\n\t\t\t$(NavPrimary.dropdownToggle).attr('aria-expanded', 'false');\r\n\t\t\t$(NavPrimary.subList).attr('aria-hidden', 'true');\r\n\r\n\t\t\tif (!$('.global-header').hasClass('js-open')) {\r\n\r\n\t\t\t\tNavPrimary.removeHideClasss();\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t$(NavPrimary.dropdownToggle).on('click touchend', function () {\r\n\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t$thisSubNav = $this.next();\r\n\r\n\t\t\t// animate back to top\r\n\t\t\t$(\"html, body\").animate({ scrollTop: 0 }, 300);\r\n\r\n\t\t\t// set the focus to the top of the navigation\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t$thisSubNav.attr('tabindex', '-1').trigger('focus');\r\n\t\t\t}, 100);\r\n\r\n\t\t});\r\n\r\n\t\t$(NavPrimary.backMenu).on('click touchend', function () {\r\n\t\t\tvar $ulParent = $(this).parent('li').parent('ul'),\r\n\t\t\t\t$ulSiblings = $ulParent.siblings();\r\n\t\t\tvar $LiSiblings = $ulParent.parent('li').siblings('li');\r\n\r\n\t\t\t// display LI and UL siblings\r\n\t\t\t$LiSiblings.removeClass(NavPrimary.hideClass);\r\n\t\t\t$ulSiblings.removeClass(NavPrimary.hideClass);\r\n\r\n\t\t\t// remove animation\r\n\t\t\t$ulParent.removeClass(NavPrimary.showElClass);\r\n\r\n\t\t\t// display none\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t// reset attributes\r\n\t\t\t\t$('.nav-primary__dropdown-toggle').attr('aria-expanded', false);\r\n\t\t\t\t$ulParent.attr('aria-hidden', true);\r\n\r\n\t\t\t\t// set the focus to the LI parent \r\n\t\t\t\t$ulParent.parent('li').attr('tabindex', '-1').trigger('focus');\r\n\r\n\t\t\t}, 600);\r\n\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tsetAttributes: function () {\r\n\t\t// set aria attributes on mobile layout\r\n\t\t$(NavPrimary.dropdownToggle).attr('aria-expanded', 'false');\r\n\t\t$(NavPrimary.subList).attr('aria-hidden', 'true');\r\n\t},\r\n\r\n\tremoveAttributes: function () {\r\n\t\t// remove aria attributes on mobile layout\r\n\t\t$(NavPrimary.selectorMenu).removeAttr('aria-expanded');\r\n\t\t$(NavPrimary.navPrimaryUl).removeAttr('aria-hidden');\r\n\t\t$(NavPrimary.dropdownToggle).removeAttr('aria-expanded');\r\n\t\t$(NavPrimary.subList).removeAttr('aria-hidden');\r\n\t},\r\n\r\n\taddCurrentClass: function () {\r\n\r\n\t\tvar $currentPageLink = $('.nav-primary a[href=\"' + document.location.pathname + '\"]');\r\n\r\n\t\t// add current class and current page attribute\r\n\t\t$currentPageLink.addClass('is-current');\r\n\t\t$($currentPageLink).attr('aria-current', 'page');\r\n\r\n\t},\r\n\r\n\taddOpenSubMenuClass: function () {\r\n\t\t$(NavPrimary.navPrimaryUl).addClass(NavPrimary.openSubMenuClass);\r\n\t},\r\n\r\n\tremoveOpenSubMenuClass: function () {\r\n\t\t$(NavPrimary.navPrimaryUl).removeClass(NavPrimary.openSubMenuClass);\r\n\t},\r\n\r\n\taddShowElClass: function ($thisListItem) {\r\n\t\t$thisListItem.children('ul').addClass(NavPrimary.showElClass);\r\n\t},\r\n\r\n\tremoveShowElClasss: function ($thisListItem) {\r\n\t\t$thisListItem.children('ul').removeClass(NavPrimary.showElClass);\r\n\t},\r\n\r\n\taddHideClass: function ($liSiblings) {\r\n\t\t$liSiblings.addClass(NavPrimary.hideClass);\r\n\t},\r\n\r\n\tremoveHideClasss: function ($thisListItem) {\r\n\t\t$('.nav-primary__list-item').removeClass(NavPrimary.hideClass);\r\n\t\t$('.nav-primary__sublist-item').removeClass(NavPrimary.hideClass);\r\n\t\t$('.nav-primary__dropdown-toggle').removeClass(NavPrimary.hideClass);\r\n\t\t$('.nav-primary__link').removeClass(NavPrimary.hideClass);\r\n\t\t$('.nav-primary__sublist-link').removeClass(NavPrimary.hideClass);\r\n\t}\r\n\r\n};\r\n\r\n$(document).ready(function () {\r\n\tNavPrimary.init();\r\n});\r\n","var CP = CP || {};\r\nCP.NEWS = CP.NEWS || {};\r\n\r\n(function ($, cp) {\r\n\tvar loading = false;\r\n\r\n\tIEimages();\r\n\tif ($('#NewsListingPage').length > 0) {\r\n\t\t//Filters Search\r\n\t\t$('.filter-search').each(function () {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tif ($this.data('type') != 'news') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//console.info(\"Autocomplete Setup\");\r\n\t\t\t//Autocomplete\r\n\t\t\tvar element = document.querySelector('#news-autocomplete');\r\n\t\t\tvar selectorId = $this.data('id');\r\n\r\n\t\t\tvar dataPlaceholder = $this.closest(\".search-widget.filter-search\").data(\"placeholder\");\r\n\r\n\t\t\tfunction customSuggest(query, syncResults) {\r\n\t\t\t\tvar obj = CP.NEWS.initGetFilters();\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: \"/_api/News/TypeAheadSearch\",\r\n\t\t\t\t\ttype: \"post\",\r\n\t\t\t\t\tdata: obj\r\n\t\t\t\t}).done(function (results) {\r\n\t\t\t\t\tvar valuesFiltered = results.suggestions.filter(function (result) {\r\n\t\t\t\t\t\treturn result.value.toLowerCase().indexOf(query.toLowerCase()) !== -1;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsyncResults(valuesFiltered);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tfunction inputValueTemplate(result) {\r\n\t\t\t\treturn result && result.value;\r\n\t\t\t}\r\n\r\n\t\t\tfunction suggestionTemplate(result) {\r\n\t\t\t\treturn result && result.value;\r\n\t\t\t}\r\n\r\n\t\t\tfunction onConfirm(result) {\r\n\t\t\t\twindow.location.href = result.data;\r\n\t\t\t}\r\n\r\n\t\t\taccessibleAutocomplete({\r\n\t\t\t\telement: element,\r\n\t\t\t\tid: selectorId,\r\n\t\t\t\tsource: customSuggest,\r\n\t\t\t\t//autoselect: true,\r\n\t\t\t\tconfirmOnBlur: false,\r\n\t\t\t\tdisplayMenu: 'overlay',\r\n\t\t\t\tminLength: 3,\r\n\t\t\t\tplaceholder: dataPlaceholder,\r\n\t\t\t\tshowNoOptionsFound: false,\r\n\t\t\t\tonConfirm: onConfirm,\r\n\t\t\t\ttemplates: {\r\n\t\t\t\t\tinputValue: inputValueTemplate,\r\n\t\t\t\t\tsuggestion: suggestionTemplate\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar input = $this.find('input[type=\"text\"].autocomplete__input');\r\n\t\t\tvar submit = $this.find('input[type=\"submit\"]');\r\n\t\t\tvar dataEmpty = $this.data(\"empty\");\r\n\t\t\tvar clear = $this.find('.search-widget-clear');\r\n\t\t\tvar error = $this.find('.search-widget-error');\r\n\t\t\tvar errorText = \"Nothing searched for. Please enter a search term.\";\r\n\t\t\tinput.attr(\"data-error\", errorText).attr('aria-labelledby', 'news-error').attr('aria-describedby', 'news-error');\r\n\r\n\t\t\tinput.on('keyup', function (e) {\r\n\t\t\t\tif (e.which == 13) {\r\n\t\t\t\t\tif (!$(this).val()) {\r\n\t\t\t\t\t\tinput.attr(\"placeholder\", dataEmpty).attr('aria-invalid', 'true').addClass('error');\r\n\t\t\t\t\t\tif (!$(error).html().trim()) {\r\n\t\t\t\t\t\t\terror.append('

    ' + errorText + '

    ');\r\n\t\t\t\t\t\t} \r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$(this).data('value', $(this).val());\r\n\t\t\t\t\tCP.NEWS.initFilters();\r\n\t\t\t\t}\r\n\t\t\t\tif (e.which != 13 && $(this).attr(\"placeholder\") == dataEmpty) {\r\n\t\t\t\t\t$(this).attr(\"placeholder\", dataPlaceholder).attr('aria-invalid', 'false').removeClass('error');\r\n\t\t\t\t\terror.find('p').remove();\r\n\t\t\t\t\tclear.css(\"display\", \"block\");\r\n\t\t\t\t}\r\n\t\t\t\tif (!$(this).val()) {\r\n\t\t\t\t\tclear.css(\"display\", \"none\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Clean search box\r\n\t\t\tclear.on('click', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif (!input.data('value')) {\r\n\t\t\t\t\tinput.val(\"\");\r\n\t\t\t\t\tclear.css(\"display\", \"none\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinput.val(\"\");\r\n\t\t\t\t\tinput.data('value', '');\r\n\t\t\t\t\tclear.css(\"display\", \"none\");\r\n\t\t\t\t\tCP.NEWS.initFilters();\r\n\t\t\t\t}\r\n\t\t\t\tinput.attr('tabindex', '-1');\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tinput.trigger('focus');\r\n\t\t\t\t}, 100);\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\tsubmit.on('click', function () {\r\n\t\t\t\tif (!input.val()) {\r\n\t\t\t\t\tinput.attr(\"placeholder\", dataEmpty).attr('aria-invalid', 'true').addClass('error').trigger('focus');\r\n\t\t\t\t\tif (!$(error).html().trim()) {\r\n\t\t\t\t\t\terror.append('

    ' + errorText + '

    ');\t\r\n\t\t\t\t\t} \r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tinput.data('value', input.val());\r\n\t\t\t\tCP.NEWS.initFilters();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t$('.js-calendar').on('keydown', function (e) {\r\n\t\t\tif (e.key === 'Enter') {\r\n\t\t\t\tCP.NEWS.initFilters();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//CP.BOE.InfiniteScrolling = false;\r\n\tCP.NEWS.Page = 1;\r\n\r\n\tCP.NEWS.initDirection = function (elem) {\r\n\t\tvar $this = $(elem),\r\n\t\t\tthisToggle = $this.find('a'),\r\n\t\t\t$thisSiblings = $this.siblings(),\r\n\t\t\tnextSiblingsToggle = $thisSiblings.find('a');\r\n\r\n\t\t$thisSiblings.removeClass('tab-current');\r\n\t\t$this.addClass('tab-current');\r\n\r\n\t\t// set aria attribute\r\n\t\t$(nextSiblingsToggle).attr('aria-selected', 'false');\r\n\t\t$(thisToggle).attr('aria-selected', 'true');\r\n\r\n\t\tCP.NEWS.initFilters();\r\n\t};\r\n\r\n\tCP.NEWS.initPagination = function (elem) {\r\n\t\tvar $this = $(elem);\r\n\t\tif ($this.hasClass('pagination-disabled')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar pagerDataElement = $this.closest('[data-page]');\r\n\t\tvar currentPage = pagerDataElement.data('page');\r\n\t\tvar pageCount = pagerDataElement.data('pagecount');\r\n\r\n\t\tif ($this.hasClass('list-pagination__link--page')) {\r\n\t\t\tcurrentPage = parseInt($this.data('page-link'));\r\n\t\t\tpagerDataElement.data('page', currentPage);\r\n\t\t}\r\n\r\n\t\tif ($this.hasClass('pagination-next') || $this.hasClass('list-pagination__link--next')) {\r\n\t\t\tif (pageCount > currentPage) {\r\n\t\t\t\tcurrentPage = currentPage + 1;\r\n\t\t\t\tpagerDataElement.data('page', currentPage);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ($this.hasClass('pagination-prev') || $this.hasClass('list-pagination__link--prev')) {\r\n\t\t\tif (currentPage > 1) {\r\n\t\t\t\tcurrentPage = currentPage - 1;\r\n\t\t\t\tpagerDataElement.data('page', currentPage);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpagerDataElement.data('pagination', 'true');\r\n\t\tCP.NEWS.initFilters();\r\n\t};\r\n\r\n\tCP.NEWS.LoadMore = function (page) {\r\n\t\tif (!loading) {\r\n\t\t\tloading = true;\r\n\t\t\tCP.BOE.InfiniteScrolling = true;\r\n\t\t\tCP.NEWS.Page = page;\r\n\t\t\tCP.NEWS.initFilters(undefined, page);\r\n\t\t}\r\n\t};\r\n\r\n\tCP.NEWS.initClearFilters = function (elem) {\r\n\t\tvar $this = $(elem);\r\n\t\tif ($this.hasClass('clear-type')) {\r\n\t\t\t$this.data('clear', 'type');\r\n\t\t}\r\n\t\tif ($this.hasClass('clear-taxonomy')) {\r\n\t\t\t$this.data('clear', 'taxonomy');\r\n\t\t}\r\n\t\tif ($this.hasClass('clear-dates')) {\r\n\t\t\t$this.data('clear', 'dates');\r\n\t\t}\r\n\t\tCP.NEWS.Page = 1;\r\n\t\tCP.NEWS.initFilters();\r\n\t};\r\n\r\n\tCP.NEWS.initFilters = function (reload, page) {\r\n\t\t//console.info(\"CP.NEWS.initFilters \");\r\n\t\tvar obj = CP.NEWS.initGetFilters();\r\n\r\n\t\tif (page)\r\n\t\t\tobj.Page = page;\r\n\r\n\t\treload = reload || (obj.Page === 1);\r\n\t\tinitAjaxCall(obj, reload);\r\n\t};\r\n\r\n\tCP.NEWS.initGetFilters = function () {\r\n\t\t//console.info(\"CP.NEWS.initGetFilters\");\r\n\t\tvar query = '';\r\n\t\tvar queryType = '';\r\n\t\tvar queryTypeOptions = '';\r\n\t\tvar queryTaxonomy = '';\r\n\t\tvar page = 1;\r\n\t\tvar direction = '';\r\n\t\tvar dateFrom;\r\n\t\tvar dateTo;\r\n\r\n\t\t//Search\r\n\t\t$('.filter-search').each(function () {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tif (!$this.data('type') == 'news') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar searchCtrl = $this.find('input[type=\"text\"].autocomplete__input');\r\n\t\t\tvar inputValue = searchCtrl.data('value') || searchCtrl.val();\r\n\r\n\t\t\tif (inputValue)\r\n\t\t\t\tquery = inputValue;\r\n\t\t});\r\n\r\n\t\t//Type\r\n\t\tvar typeValues = $('.sidebar-filters.type-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\t//queryTypeOptions = typeValues.map(function (obj) { return obj.value; });\r\n\t\tqueryTypeOptions = CP.BOE.NewsTypes ? CP.BOE.NewsTypes : queryTypeOptions;\r\n\t\ttypeValues = typeValues.filter(function (obj) { return obj.checked; });\r\n\t\tqueryType = typeValues.map(function (obj) { return obj.value; });\r\n\r\n\t\t//Taxonomies\r\n\t\tvar taxonomyValues = $('.sidebar-filters.taxonomy-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\tvar taxonomyValuesAvailable = CP.BOE.NewsTaxonomies ? CP.BOE.NewsTaxonomies : [];\r\n\t\ttaxonomyValues = taxonomyValues.filter(function (obj) { return obj.checked; });\r\n\t\tqueryTaxonomy = taxonomyValues.map(function (obj) { return obj.value; });\r\n\r\n\t\t//Direction\r\n\t\tdirection = $('.releases-type .tab-current').data('direction');\r\n\r\n\t\t//Pagination\r\n\t\tif (!CP.BOE.InfiniteScrolling) {\r\n\t\t\tif ($('.container-list-pagination').data('pagination') == 'true') {\r\n\t\t\t\tvar offset = ($(window).width() >= '1024') ? '90' : '20';\r\n\t\t\t\tpage = $('.container-list-pagination').data('page');\r\n\t\t\t\t$(\"html, body\").animate({ scrollTop: $(\"#SearchResults\").offset().top - offset }, 1000);\r\n\t\t\t}\r\n\t\t\t$('.container-list-pagination').data('pagination', 'false');\r\n\t\t} /*else {\r\n\t\t\tpage = CP.NEWS.Page;\r\n\t\t}*/\r\n\r\n\t\t//Date\r\n\t\tvar fromVal = $('.date-field #newsDateMin').datepicker(\"getDate\");\r\n\t\tvar toVal = $('.date-field #newsDateMax').datepicker(\"getDate\");\r\n\t\tif (fromVal) {\r\n\t\t\tdateFrom = fromVal.parseToISOString();\r\n\t\t}\r\n\t\tif (toVal) {\r\n\t\t\ttoVal.setDate(toVal.getDate() + 1);\r\n\t\t\tdateTo = toVal.parseToISOString();\r\n\t\t}\r\n\r\n\t\t//Clear buttons\r\n\t\tif ($('.clear-type').data('clear')) {\r\n\t\t\tif (typeValues.length != 0) {\r\n\t\t\t\t//clear type\r\n\t\t\t\tqueryType = [];\r\n\t\t\t\t//Uncheck inputs\r\n\t\t\t\t$.each(typeValues, function (index, value) {\r\n\t\t\t\t\t$(value).prop('checked', false);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//remove data-type\r\n\t\t\t$('.clear-type').data('clear', '');\r\n\t\t}\r\n\t\tif ($('.clear-taxonomy').data('clear')) {\r\n\t\t\tif (taxonomyValues.length != 0) {\r\n\t\t\t\t//clear taxonomy\r\n\t\t\t\tqueryTaxonomy = [];\r\n\t\t\t\t//Uncheck inputs\r\n\t\t\t\t$.each(taxonomyValues, function (index, value) {\r\n\t\t\t\t\t$(value).prop('checked', false);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//remove data-type\r\n\t\t\t$('.clear-taxonomy').data('clear', '');\r\n\t\t}\r\n\t\tif ($('.clear-dates').data('clear')) {\r\n\t\t\tif (fromVal || toVal) {\r\n\t\t\t\t//clear dates\r\n\t\t\t\tdateFrom = undefined;\r\n\t\t\t\tdateTo = undefined;\r\n\t\t\t\t//Uncheck inputs\r\n\t\t\t\t$('.date-field #newsDateMin').datepicker(\"setDate\", '');\r\n\t\t\t\t$('.date-field #newsDateMax').datepicker(\"setDate\", '');\r\n\t\t\t}\r\n\t\t\t//remove data-type\r\n\t\t\t$('.clear-dates').data('clear', '');\r\n\t\t}\r\n\r\n\t\tvar grid = $('.switch-view .switch-view-grid').hasClass('view-active');\r\n\r\n\t\tvar obj = {\r\n\t\t\tSearchTerm: query,\r\n\t\t\tId: CP.BOE.NewsPageDataSourceID,\r\n\t\t\tPageSize: CP.BOE.NewsPageSize,\r\n\t\t\tNewsTypes: queryType,\r\n\t\t\tNewsTypesAvailable: queryTypeOptions,\r\n\t\t\tTaxonomies: queryTaxonomy,\r\n\t\t\tTaxonomiesAvailable: taxonomyValuesAvailable,\r\n\t\t\tPage: page,\r\n\t\t\tDirection: direction,\r\n\t\t\tDateFrom: dateFrom,\r\n\t\t\tDateTo: dateTo,\r\n\t\t\tGrid: grid,\r\n\t\t\tInfiniteScrolling: CP.BOE.InfiniteScrolling\r\n\t\t};\r\n\r\n\t\treturn obj;\r\n\t};\r\n\r\n\tCP.NEWS.initGridState = function () {\r\n\t\tvar obj = CP.NEWS.initGetFilters();\r\n\t\tsetState(obj);\r\n\t};\r\n\r\n\tfunction initAjaxCall(obj, reload) {\r\n\t\t//console.info(\"AJAX request for search results\");\r\n\t\tif (reload) {\r\n\t\t\tobj.Page = 1;\r\n\t\t\tCP.NEWS.Page = 1;\r\n\t\t}\r\n\r\n\t\tvar loadResults = (reload || obj.Page === 1) ? $(\"#SearchResults\") :\r\n\t\t\t(CP.BOE.InfiniteScrolling) ? $(\"#LoadMore\") : $(\"#SearchResults\");\r\n\r\n\t\tloadResults.css('display', 'none');\r\n\t\t$('.loading').css('display', 'block');\r\n\t\t$('.loading').html('\"\"

    Content loading

    ');\r\n\r\n\t\t$.ajax({\r\n\t\t\turl: \"/_api/News/RefreshPagedNewsList\",\r\n\t\t\ttype: \"post\",\r\n\t\t\tdata: obj\r\n\t\t})\r\n\t\t\t.done(function (result) {\r\n\t\t\t\tif (CP.BOE.InfiniteScrolling && obj.Page > 1) {\r\n\t\t\t\t\tloadResults.replaceWith(result.Results).fadeIn(600, function () {\r\n\t\t\t\t\t\t$('.loading').empty();\r\n\t\t\t\t\t\t$('.loading').css('display', 'none');\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tloadResults.hide().html(result.Results).fadeIn(600);\r\n\r\n\t\t\t\t\tvar textCount = $('#resultCount').html();\r\n\t\t\t\t\t$('#resultCountAnnounce').html('');\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$('#resultCountAnnounce').html(textCount);\r\n\t\t\t\t\t}, 500);\r\n\r\n\t\t\t\t}\r\n\t\t\t\t$('.sidebar-filters.taxonomy-filters').hide().html(result.Refiners).fadeIn(600);\r\n\t\t\t\t$('.loading').css('display', 'none');\r\n\t\t\t\tif ($('.no-results').length) {\r\n\t\t\t\t\t$('.no-results').css('display', 'block');\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t\tloading = false;\r\n\r\n\t\t\t\tIEimages();\r\n\t\t\t})\r\n\t\t\t.fail(function (e) {\r\n\t\t\t\t$('.loading').replaceWith(\"

    An error happened. Please, try again later.

    \");\r\n\t\t\t});\r\n\r\n\t\tif (!reload) {\r\n\t\t\tsetState(obj);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setState(obj) {\r\n\t\tif (!CP.BOE.InfiniteScrolling) {\r\n\t\t\thistory.pushState(obj, null, null);\r\n\t\t\t//console.info(\"SetState Done\");\r\n\t\t}\r\n\t}\r\n\r\n\tCP.NEWS.isInViewPort = function (element) {\r\n\t\tif (!element || !element.offset())\r\n\t\t\treturn false;\r\n\t\ttry {\r\n\t\t\tvar elementTop = element.offset().top;\r\n\t\t\tvar elementBottom = elementTop + element.outerHeight();\r\n\r\n\t\t\tvar viewportTop = $(window).scrollTop();\r\n\t\t\tvar viewportBottom = viewportTop + $(window).height();\r\n\r\n\t\t\treturn elementBottom > viewportTop && elementTop < viewportBottom;\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tCP.NEWS.InfiniteScroll = function () {\r\n\t\tthis.initialize = function () {\r\n\t\t\tthis.setupEvents();\r\n\t\t};\r\n\r\n\t\tthis.setupEvents = function () {\r\n\t\t\t$(window).on(\r\n\t\t\t\t'scroll',\r\n\t\t\t\tthis.handleScroll.bind(this)\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tthis.handleScroll = function () {\r\n\t\t\tif (CP.NEWS.isInViewPort($(\"#loadMoreLink\"))) {\r\n\t\t\t\tCP.NEWS.LoadMore(++CP.NEWS.Page);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initialize();\r\n\t};\r\n\r\n\tif ($('#NewsListingPage').length > 0) {\r\n\r\n\t\tif (!$(\"body\").hasClass(\"pagemode-edit\")) {\r\n\t\t\t//console.info(\"Adding Popstate event handler\");\r\n\t\t\twindow.addEventListener('popstate', function (e) {\r\n\t\t\t\t//console.info(\"Popstate event fired\");\r\n\t\t\t\tvar obj = e.state;\r\n\t\t\t\tif (obj && !CP.BOE.InfiniteScrolling) {\r\n\t\t\t\t\tinitAjaxCall(obj, true);\r\n\t\t\t\t\tinitRefreshTypes(obj.NewsTypes);\r\n\t\t\t\t\tinitRefreshTaxonomies(obj.Taxonomies);\r\n\t\t\t\t\tinitRefreshSearchbox(obj.SearchTerm);\r\n\t\t\t\t\tinitRefreshDirection(obj.Direction);\r\n\t\t\t\t\tinitRefreshDate(obj.DateFrom, obj.DateTo);\r\n\t\t\t\t\tinitRefreshGrid(obj.Grid);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocation.href = location.href;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (PerformanceNavigationTiming.type === \"reload\" != 1 && history.state != null && !CP.BOE.InfiniteScrolling && history.state.Id && !$(\"body\").hasClass(\"pagemode-edit\")) {\r\n\t\t\t//console.info(\"Initialise from state\");\r\n\t\t\tinitRefreshTypes(history.state.NewsTypes);\r\n\t\t\t//initRefreshTaxonomies(history.state.Taxonomies);\r\n\t\t\tinitRefreshSearchbox(history.state.SearchTerm);\r\n\t\t\tinitRefreshDirection(history.state.Direction);\r\n\t\t\tinitRefreshDate(history.state.DateFrom, history.state.DateTo);\r\n\t\t\tinitRefreshGrid(history.state.Grid);\r\n\r\n\t\t\tvar obj = CP.NEWS.initGetFilters();\r\n\t\t\tobj.Taxonomies = history.state.Taxonomies;\r\n\t\t\tobj.Page = history.state.Page;\r\n\t\t\tinitAjaxCall(obj);\r\n\r\n\t\t} else {\r\n\t\t\t//console.info(\"Initialise from page\");\r\n\t\t\t//Delay necessary due to race conditions with browser restoring page state\r\n\t\t\t//when back button has been pressed.\r\n\t\t\tvar delay = 300;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tCP.NEWS.initFilters(true);\r\n\t\t\t}, delay);\r\n\t\t\t//console.info(\"Delay: \" + delay);\r\n\t\t}\r\n\r\n\t\tCP.NEWS.InfiniteScroll();\r\n\t}\r\n\r\n\tfunction initRefreshTypes(checked) {\r\n\r\n\t\tvar typeCheckboxes = $('.sidebar-filters.type-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\tvar typeCheckboxesValues = typeCheckboxes.map(function (obj) { return obj.value; });\r\n\r\n\t\tfor (var i = 0; i < typeCheckboxesValues.length; i++) {\r\n\t\t\tif (checked.indexOf(typeCheckboxesValues[i]) !== -1) {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', true);\r\n\t\t\t} else {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initRefreshTaxonomies(checked) {\r\n\r\n\t\tvar typeCheckboxes = $('.sidebar-filters.taxonomy-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\tvar typeCheckboxesValues = typeCheckboxes.map(function (obj) { return obj.value; });\r\n\r\n\t\tfor (var i = 0; i < typeCheckboxesValues.length; i++) {\r\n\t\t\tif (checked.indexOf(typeCheckboxesValues[i]) !== -1) {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', true);\r\n\t\t\t} else {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initRefreshSearchbox(SearchTerm) {\r\n\t\t$('.filter-search input[type=\"search\"]').val(SearchTerm);\r\n\t}\r\n\r\n\tfunction initRefreshDirection(Direction) {\r\n\t\t$('.releases-type li').each(function () {\r\n\t\t\tif ($(this).data('direction') == Direction) {\r\n\t\t\t\t$(this).siblings().removeClass('tab-current');\r\n\t\t\t\t$(this).addClass('tab-current');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initRefreshDate(DateFrom, DateTo) {\r\n\t\tif (DateFrom) {\r\n\t\t\tDateFrom = new Date(DateFrom);\r\n\t\t} else {\r\n\t\t\tDateFrom = undefined;\r\n\t\t}\r\n\t\tif (DateTo) {\r\n\t\t\tDateTo = new Date(DateTo);\r\n\t\t} else {\r\n\t\t\tDateTo = undefined;\r\n\t\t}\r\n\t\t$('.date-field #newsDateMin').datepicker(\"setDate\", DateFrom);\r\n\t\t$('.date-field #newsDateMax').datepicker(\"setDate\", DateTo);\r\n\t}\r\n\t//test\r\n\tfunction initRefreshGrid(grid) {\r\n\t\tif (grid) {\r\n\t\t\t$('.switch-view-grid').addClass('view-active');\r\n\t\t\t$('.switch-view-list').removeClass('view-active');\r\n\t\t\t$('.releases-items').removeClass('releases-list').addClass('releases-grid');\r\n\t\t} else {\r\n\t\t\t$('.switch-view-grid').removeClass('view-active');\r\n\t\t\t$('.switch-view-list').addClass('view-active');\r\n\t\t\t$('.releases-items').removeClass('releases-grid').addClass('releases-list');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction IEimages() {\r\n\t\tif (!Modernizr.objectfit) {\r\n\t\t\t$('.release').each(function () {\r\n\t\t\t\tvar $imageContainer = $(this).find('.release-img'),\r\n\t\t\t\t\timgUrl = $imageContainer.find('img').prop('src');\r\n\t\t\t\tif (imgUrl) {\r\n\t\t\t\t\t$imageContainer\r\n\t\t\t\t\t\t.css(\"background-image\", \"url('\" + imgUrl + \"')\")\r\n\t\t\t\t\t\t.addClass('object-fit');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n})(jQuery, CP.NEWS);","// use this transport for \"binary\" data type\r\n$.ajaxTransport(\"+binary\", function (options, originalOptions, jqXHR) {\r\n\t// check for conditions and support for blob / arraybuffer response type\r\n\tif (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))) {\r\n\t\treturn {\r\n\t\t\t// create new XMLHttpRequest\r\n\t\t\tsend: function (headers, callback) {\r\n\t\t\t\t// setup all variables\r\n\t\t\t\tvar xhr = new XMLHttpRequest(),\r\n\t\t\t\t\turl = options.url,\r\n\t\t\t\t\ttype = options.type,\r\n\t\t\t\t\tasync = options.async || true,\r\n\t\t\t\t// blob or arraybuffer. Default is blob\r\n\t\t\t\t\tdataType = options.responseType || \"blob\",\r\n\t\t\t\t\tdata = options.data || null,\r\n\t\t\t\t\tusername = options.username || null,\r\n\t\t\t\t\tpassword = options.password || null;\r\n\r\n\t\t\t\txhr.addEventListener('load', function () {\r\n\t\t\t\t\tvar data = {};\r\n\t\t\t\t\tdata[options.dataType] = xhr.response;\r\n\t\t\t\t\t// make callback and send data\r\n\t\t\t\t\tcallback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());\r\n\t\t\t\t});\r\n\r\n\t\t\t\txhr.open(type, url, async, username, password);\r\n\r\n\t\t\t\t// setup custom headers\r\n\t\t\t\tfor (var i in headers) {\r\n\t\t\t\t\txhr.setRequestHeader(i, headers[i]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txhr.responseType = dataType;\r\n\t\t\t\txhr.send(data);\r\n\t\t\t},\r\n\t\t\tabort: function () {\r\n\t\t\t\tjqXHR.abort();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n});\r\n\r\n(function ($) {\r\n\t$('form[data-type=\"makepdf\"]').each(function (index) {\r\n\t\tvar verifiedPdf = false;\r\n\t\tvar isFloating = \r\n\r\n\t\t\t$(this).on('submit', function () {\r\n\t\t\tif (typeof console !== \"undefined\" && console !== null) { console.info(\"Convert to PDF called - Verified: \" + verifiedPdf); }\r\n\r\n\t\t\tvar form = $(this);\r\n\t\t\tvar isFloating = form.parent().hasClass(\"container-download\");\r\n\r\n\t\t\tvar button = form.find('button[type=\"submit\"]');\r\n\t\t\tvar buttonClose = form.find('button[type=\"button\"]');\r\n\t\t\t\r\n\t\t\tvar hiddenAlert = button.next(\"p\");\r\n\t\t\thiddenAlert.removeClass(\"pdf-error\");\r\n\t\t\thiddenAlert.addClass(\"visually-hidden\");\r\n\t\t\t\r\n\t\t\tvar defaultHtml = button.html();\r\n\r\n\t\t\tif (!verifiedPdf) {\r\n\t\t\t\tif (isFloating) {\r\n\t\t\t\t\tbutton.addClass(\"button-download--active\");\r\n\t\t\t\t\tbuttonClose.addClass(\"button-close--active\");\r\n\t\t\t\t}\r\n\t\t\t\tbutton.attr(\"disabled\", true);\r\n\r\n\t\t\t\tvar genMsg = \"Generating PDF, please wait.\";\r\n\t\t\t\tbutton.html(\" \" + genMsg);\r\n\t\t\t\thiddenAlert.text(genMsg);\r\n\t\t\t\t\r\n\t\t\t\tvar ajaxSettings = {\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\turl: form[0].action,\r\n\t\t\t\t\tdataType:'binary',\r\n\t\t\t\t\tcontentType: 'application/x-www-form-urlencoded',\r\n\t\t\t\t\tretries: 6\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar onFail = function (jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\tif (typeof console !== \"undefined\" && console !== null) { console.log(\"PDF Check Fail - \" + jqXHR.status + \" - Retries: \" + ajaxSettings.retries); }\r\n\r\n\t\t\t\t\tif (ajaxSettings.retries-- > 0) {\r\n\t\t\t\t\t\tvar timeout = 3000;\r\n\t\t\t\t\t\tif (jqXHR.status == 429 || jqXHR.status == 503) {\r\n\t\t\t\t\t\t\ttimeout = 15000;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t$.ajax(ajaxSettings)\r\n\t\t\t\t\t\t\t\t.done(onSuccess)\r\n\t\t\t\t\t\t\t\t.fail(onFail);\r\n\t\t\t\t\t\t}, timeout);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tverifiedPdf = false;\r\n\t\t\t\t\t\tbutton.html(defaultHtml);\r\n\r\n\t\t\t\t\t\tif (!isFloating) {\r\n\t\t\t\t\t\t\thiddenAlert.addClass(\"pdf-error\");\r\n\t\t\t\t\t\t\thiddenAlert.removeClass(\"visually-hidden\");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar title = button.find('.button-download__title');\r\n\t\t\t\t\t\t\ttitle.text(\"Error. Please try again.\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thiddenAlert.text(\"Error generating the PDF. Please try again in a couple of minutes.\");\r\n\r\n\t\t\t\t\t\tbutton.attr(\"disabled\", false);\r\n\t\t\t\t\t\tbutton.removeClass(\"button-download--active\");\r\n\t\t\t\t\t\tbuttonClose.removeClass(\"button-close--active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar onSuccess = function (data, textStatus, jqXhr) {\r\n\t\t\t\t\tif (typeof console !== \"undefined\" && console !== null) { console.info(\"PDF Check Success - \" + jqXhr.status); }\r\n\t\t\t\t\tverifiedPdf = true;\r\n\t\t\t\t\tif (isFloating) {\r\n\t\t\t\t\t\tbutton.html(\"PDF generated.\");\r\n\t\t\t\t\t\t//button.attr(\"disabled\", false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbutton.text(\"PDF generated.\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//button.removeClass(\"button-download--active\"); \r\n\t\t\t\t\thiddenAlert.text(\"\"); // Browser should alert screenreader to the download.\r\n\t\t\t\t\tvar disposition = jqXhr.getResponseHeader(\"Content-Disposition\");\r\n\t\t\t\t\tif (null !== disposition && disposition.indexOf(\"attachment\") !== -1) {\r\n\t\t\t\t\t\tvar headerParts = disposition.split(\";\");\r\n\t\t\t\t\t\tvar keyValuePairs = {};\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < headerParts.length; i++) {\r\n\t\t\t\t\t\t\tvar keyValuePair = headerParts[i].trim().split(\"=\");\r\n\t\t\t\t\t\t\tvar key = keyValuePair[0];\r\n\t\t\t\t\t\t\tvar value = keyValuePair[1];\r\n\t\t\t\t\t\t\tkeyValuePairs[key] = value;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar blob = new Blob([data]);\r\n\t\t\t\t\t\tif (null != blob && blob instanceof Blob) {\r\n\t\t\t\t\t\t\tvar link = document.createElement('a');\r\n\t\t\t\t\t\t\tlink.href = window.URL.createObjectURL(blob);\r\n\t\t\t\t\t\t\tlink.download = keyValuePairs.filename;\r\n\t\t\t\t\t\t\tlink.click();\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\tif (typeof console !== \"undefined\" && console !== null) { console.log(\"Begin PDF Conversion Check...\"); }\r\n\t\t\t\t$.ajax(ajaxSettings)\r\n\t\t\t\t\t.done(onSuccess)\r\n\t\t\t\t\t.fail(onFail);\r\n\r\n\t\t\t}\r\n\t\t\treturn verifiedPdf;\r\n\t\t});\r\n\t});\r\n})(jQuery);","//(function ($) {\r\n\r\n// // Related links\r\n// $('.related-links-wrap h2').click(function() {\r\n// $(this).parents('.related-links-wrap').toggleClass('links-open');\r\n// });\r\n\r\n// // On this page links\r\n// $('.anchor-links-wrap h4').click(function() {\r\n// $(this).parents('.anchor-links-wrap').toggleClass('anchors-open');\r\n// });\r\n//})(jQuery);","(function ($) {\r\n $('.switch-view-list').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).addClass('view-active');\r\n $('.switch-view-grid').removeClass('view-active');\r\n\t\t$('.releases-items').removeClass('releases-grid').addClass('releases-list');\r\n\r\n\t\t// set aria attribute\r\n\t\t$('.switch-view-grid').attr('aria-pressed', 'false');\r\n\t\t$(this).attr('aria-pressed', 'true');\r\n\t\t\r\n\r\n CP.NEWS.initGridState();\r\n });\r\n\t$('.switch-view-grid').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).addClass('view-active');\r\n $('.switch-view-list').removeClass('view-active');\r\n\t\t$('.releases-items').removeClass('releases-list').addClass('releases-grid');\r\n\r\n\t\t// set aria attribute\r\n\t\t$('.switch-view-list').attr('aria-pressed', 'false');\r\n\t\t$(this).attr('aria-pressed', 'true');\r\n\t\t\r\n\r\n CP.NEWS.initGridState();\r\n });\r\n})(jQuery);","(function ($) {\r\n\t$('.scroll-to-top').on('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\t$(\"html, body\").animate({ scrollTop: 0 }, 1000);\r\n\r\n\t\t// set focus to skip content link\r\n\t\t$(\".nav-bypass\").attr('tabindex', '-1').trigger('focus');\r\n\t});\r\n})(jQuery);\r\n","var CP = CP || {};\r\nCP.SEARCH = CP.SEARCH || {};\r\n\r\n(function ($, cp) {\r\n\r\n\tfunction initAutocomplete($this) {\r\n\t\t//Autocomplete\r\n\t\tvar element = $this.find('.autocomplete-wrap');\r\n\t\tvar selectorId = $this.data('id');\r\n\t\tvar id = selectorId;\r\n\t\tvar dataPlaceholder = $this.data(\"placeholder\");\r\n\r\n\t\tfunction customSuggest(query, syncResults) {\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: \"/_api/Search/TypeAheadSearch\",\r\n\t\t\t\ttype: \"post\",\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tSearchTerm: query,\r\n\t\t\t\t\tId: CP.BOE.ContentPageSearchDataSourceID\r\n\t\t\t\t}\r\n\t\t\t}).done(function (results) {\r\n\t\t\t\tvar valuesFiltered = results.suggestions.filter(function (result) {\r\n\t\t\t\t\treturn result.value.toLowerCase().indexOf(query.toLowerCase()) !== -1;\r\n\t\t\t\t});\r\n\t\t\t\tsyncResults(valuesFiltered);\r\n\t\t\t});\r\n\t\t}\r\n\t\tfunction inputValueTemplate(result) {\r\n\t\t\treturn result && result.value;\r\n\t\t}\r\n\r\n\t\tfunction suggestionTemplate(result) {\r\n\t\t\treturn result && result.value;\r\n\t\t}\r\n\r\n\t\tfunction onConfirm(result) {\r\n\t\t\twindow.location.href = result.data;\r\n\t\t}\r\n\r\n\t\taccessibleAutocomplete({\r\n\t\t\telement: element[0],\r\n\t\t\tid: id,\r\n\t\t\tsource: customSuggest,\r\n\t\t\t//autoselect: true,\r\n\t\t\tconfirmOnBlur: false,\r\n\t\t\tdisplayMenu: 'overlay',\r\n\t\t\tminLength: 3,\r\n\t\t\tplaceholder: dataPlaceholder,\r\n\t\t\tshowNoOptionsFound: false,\r\n\t\t\tonConfirm: onConfirm,\r\n\t\t\ttemplates: {\r\n\t\t\t\tinputValue: inputValueTemplate,\r\n\t\t\t\tsuggestion: suggestionTemplate\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t};\r\n\r\n\t//General Search\r\n\tif ($('.general-search').length > 0) {\r\n\t\tinitAutocomplete($('.general-search'));\r\n\t}\r\n\r\n\r\n\t//Filters Search\r\n\tif ($('#SearchResultsPage').length > 0) {\r\n\r\n\t\t$('.filter-search').each(function () {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tif ($this.data('type') != 'searchPage') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tinitAutocomplete($this);\r\n\r\n\t\t\tvar input = $this.find('input[type=\"text\"].autocomplete__input');\r\n\t\t\tvar submit = $this.find('input[type=\"submit\"]');\r\n\t\t\tvar dataEmpty = $this.data(\"empty\");\r\n\t\t\tvar clear = $this.find('.search-widget-clear');\r\n\t\t\tvar error = $this.find('.search-widget-error');\r\n\t\t\tvar errorText = \"Nothing searched for. Please enter a search term.\";\r\n\t\t\tinput.attr(\"data-error\", errorText).attr('aria-labelledby', 'content-search-error').attr('aria-describedby', 'content-search-error');\r\n\r\n\t\t\tinput.on('keyup', function (e) {\r\n\t\t\t\tif (e.which == 13) {\r\n\t\t\t\t\tif (!$(this).val()) {\r\n\t\t\t\t\t\tinput.attr(\"placeholder\", dataEmpty).attr('aria-invalid', 'true').addClass('error');\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (!$(error).html().trim()) {\r\n\t\t\t\t\t\t\terror.append('

    ' + errorText + '

    ');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$(this).data('value', $(this).val());\r\n\t\t\t\t\tCP.SEARCH.initFilters();\r\n\t\t\t\t}\r\n\t\t\t\tif (e.which != 13 && $(this).val()) {\r\n\t\t\t\t\t$(this).attr(\"placeholder\", dataPlaceholder).attr('aria-invalid', 'false').removeClass('error');\r\n\t\t\t\t\terror.find('p').remove();\r\n\t\t\t\t\tclear.css(\"display\", \"block\");\r\n\t\t\t\t}\r\n\t\t\t\tif (!$(this).val()) {\r\n\t\t\t\t\tclear.css(\"display\", \"none\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Clean search box\r\n\t\t\tclear.on('click', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif (!input.data('value')) {\r\n\t\t\t\t\tinput.val(\"\");\r\n\t\t\t\t\tclear.css(\"display\", \"none\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinput.val(\"\");\r\n\t\t\t\t\tinput.data('value', '');\r\n\t\t\t\t\tclear.css(\"display\", \"none\");\r\n\t\t\t\t\tCP.SEARCH.initFilters();\r\n\t\t\t\t}\r\n\t\t\t\tinput.attr('tabindex', '-1');\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tinput.trigger('focus');\r\n\t\t\t\t}, 100);\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\tsubmit.on('click', function () {\r\n\t\t\t\tif (!input.val()) {\r\n\t\t\t\t\tinput.attr(\"placeholder\", dataEmpty).attr('aria-invalid', 'true').addClass('error').trigger('focus');\r\n\t\t\t\t\tif (!$(error).html().trim()) {\r\n\t\t\t\t\t\terror.append('

    ' + errorText + '

    ');\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tinput.data('value', input.val());\r\n\t\t\t\tCP.SEARCH.initFilters();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t$('.js-calendar').on('keydown', function (e) {\r\n\t\t\tif (e.key === 'Enter') {\r\n\t\t\t\tCP.SEARCH.initFilters();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tvar search = $(\".general-search\");\r\n\tvar input = search.find('input[type=\"text\"].autocomplete__input');\r\n\tvar clear = search.find('.search-widget-clear');\r\n\tvar dataEmpty = search.data(\"empty\");\r\n\tvar dataPlaceholder = search.data(\"placeholder\");\r\n\tvar error = search.find('.search-widget-error');\r\n\tvar errorText = \"Nothing searched for. Please enter a search term.\";\r\n\tinput.attr(\"data-error\", errorText).attr('aria-labelledby', 'search-error').attr('aria-describedby', 'search-error');\r\n\r\n\t//keypress for general search in homepage and header\r\n\tinput.on('keyup', function (e) {\r\n\t\tif (e.which == 13) {\r\n\t\t\tif ($(this).val()) {\r\n\t\t\t\t$(this).closest('form').trigger('submit');\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (e.which != 13 && $(this).attr(\"placeholder\") == dataEmpty) {\r\n\t\t\t$(this).attr(\"placeholder\", dataPlaceholder).attr('aria-invalid', 'false').removeClass('error');\r\n\t\t\terror.find('p').remove();\r\n\t\t\tsearch.removeClass('error');\r\n\t\t\tclear.css(\"display\", \"block\");\r\n\t\t}\r\n\t\tif (e.which != 13 && !$(this).val()) {\r\n\t\t\tclear.css(\"display\", \"none\");\r\n\t\t}\r\n\t});\r\n\r\n\t// Clean search box\r\n\tclear.on('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\tinput.val(\"\");\r\n\t\tclear.css(\"display\", \"none\");\r\n\t\tinput.attr('tabindex', '-1');\r\n\t\tsetTimeout(function () {\r\n\t\t\tinput.trigger('focus');\r\n\t\t}, 100);\r\n\t\treturn false;\r\n\t});\r\n\r\n\tCP.SEARCH.Submit = function (targetPage, queryParam, extraParams) {\r\n\r\n\t\tif (input.val().trim() !== \"\") {\r\n\t\t\tif (extraParams !== \"\")\r\n\t\t\t\tdocument.location = targetPage + \"?\" + queryParam + \"=\" + input.val() + \"&\" + extraParams;\r\n\t\t\telse\r\n\t\t\t\tdocument.location = targetPage + \"?\" + queryParam + \"=\" + input.val();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tinput.attr(\"placeholder\", dataEmpty).attr('aria-invalid', 'true').addClass('error').trigger('focus');\r\n\t\tif (!$(error).html().trim()) {\r\n\t\t\terror.append('

    ' + errorText + '

    ');\r\n\t\t}\r\n\t\t\r\n\t\tsearch.addClass('error');\r\n\t\treturn false;\r\n\t};\r\n\r\n\tCP.SEARCH.initSortedBy = function (elem) {\r\n\t\tvar $this = $(elem);\r\n\t\t$this.data('value', $this.val());\r\n\t\tCP.SEARCH.initFilters();\r\n\t};\r\n\r\n\tCP.SEARCH.initPagination = function (elem) {\r\n\t\tvar $this = $(elem);\r\n\t\tif ($this.hasClass('pagination-disabled')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar pagerDataElement = $this.closest('[data-page]');\r\n\t\tvar currentPage = pagerDataElement.data('page');\r\n\t\tvar pageCount = pagerDataElement.data('pagecount');\r\n\r\n\t\tif ($this.hasClass('list-pagination__link--page')) {\r\n\t\t\tcurrentPage = parseInt($this.data('page-link'));\r\n\t\t\tpagerDataElement.data('page', currentPage);\r\n\t\t}\r\n\r\n\t\tif ($this.hasClass('pagination-next') || $this.hasClass('list-pagination__link--next')) {\r\n\t\t\tif (pageCount > currentPage) {\r\n\t\t\t\tcurrentPage = currentPage + 1;\r\n\t\t\t\tpagerDataElement.data('page', currentPage);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ($this.hasClass('pagination-prev') || $this.hasClass('list-pagination__link--prev')) {\r\n\t\t\tif (currentPage > 1) {\r\n\t\t\t\tcurrentPage = currentPage - 1;\r\n\t\t\t\tpagerDataElement.data('page', currentPage);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpagerDataElement.data('pagination', 'true');\r\n\t\tCP.SEARCH.initFilters();\r\n\t};\r\n\r\n\tCP.SEARCH.initClearFilters = function (elem) {\r\n\t\tvar $this = $(elem);\r\n\t\tif ($this.hasClass('clear-type')) {\r\n\t\t\t$this.data('clear', 'type');\r\n\t\t}\r\n\t\tif ($this.hasClass('clear-taxonomy')) {\r\n\t\t\t$this.data('clear', 'taxonomy');\r\n\t\t}\r\n\t\tif ($this.hasClass('clear-dates')) {\r\n\t\t\t$this.data('clear', 'dates');\r\n\t\t}\r\n\t\tCP.SEARCH.initFilters();\r\n\t};\r\n\r\n\tCP.SEARCH.initGetFilters = function () {\r\n\t\tvar query = '';\r\n\t\tvar queryType = '';\r\n\t\tvar queryTypeOptions = '';\r\n\t\tvar queryTaxonomy = '';\r\n\t\tvar page = '1';\r\n\t\tvar sortBy = '1';\r\n\t\tvar dateFrom;\r\n\t\tvar dateTo;\r\n\r\n\t\t//Search\r\n\t\t$('.filter-search').each(function () {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tif (!$this.data('type') == 'searchPage') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar searchCtrl = $this.find('input[type=\"text\"].autocomplete__input');\r\n\t\t\tvar inputValue = searchCtrl.data('value') || searchCtrl.val();\r\n\r\n\t\t\tif (inputValue)\r\n\t\t\t\tquery = inputValue;\r\n\t\t});\r\n\r\n\t\t//Type\r\n\t\tvar typeValues = $('.sidebar-filters.type-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\t//queryTypeOptions = typeValues.map(function(obj) { return obj.value; });\r\n\t\tqueryTypeOptions = CP.BOE.ContentPageTypes ? CP.BOE.ContentPageTypes : queryTypeOptions;\r\n\t\ttypeValues = typeValues.filter(function (obj) { return obj.checked; });\r\n\t\tqueryType = typeValues.map(function (obj) { return obj.value; });\r\n\r\n\t\t//Taxonomies\r\n\t\tvar taxonomyValues = $('.sidebar-filters.taxonomy-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\tvar taxonomyValuesAvailable = CP.BOE.ContentPageTaxonomies ? CP.BOE.ContentPageTaxonomies : [];\r\n\t\ttaxonomyValues = taxonomyValues.filter(function (obj) { return obj.checked; });\r\n\t\tqueryTaxonomy = taxonomyValues.map(function (obj) { return obj.value; });\r\n\r\n\t\t//Sort By\r\n\t\tsortBy = $('.sort-by select').data('value');\r\n\t\tif (isUndefined(sortBy)) {\r\n\t\t\tsortBy = !isUndefined(CP.BOE.SortByParameter) ? CP.BOE.SortByParameter : '1';\r\n\t\t}\r\n\r\n\t\t//Pagination\r\n\t\tif ($('.container-list-pagination').data('pagination') == 'true') {\r\n\t\t\tvar offset = ($(window).width() >= '1024') ? '90' : '20';\r\n\t\t\tpage = $('.container-list-pagination').data('page');\r\n\t\t\t$(\"html, body\").animate({ scrollTop: $(\"#SearchResults\").offset().top - offset }, 1000);\r\n\t\t}\r\n\t\t$('.container-list-pagination').data('pagination', 'false');\r\n\t\t\r\n\t\t//Dates\r\n\t\tif ($('.date-field #cpageDateMin').length > 0) {\r\n\t\t\tvar fromVal = $('.date-field #cpageDateMin').datepicker(\"getDate\");\r\n\t\t\tif (fromVal) {\r\n\t\t\t\tdateFrom = fromVal.parseToISOString();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ($('.date-field #cpageDateMax').length > 0) {\r\n\t\t\tvar toVal = $('.date-field #cpageDateMax').datepicker(\"getDate\");\r\n\t\t\tif (toVal) {\r\n\t\t\t\ttoVal.setDate(toVal.getDate() + 1);\r\n\t\t\t\tdateTo = toVal.parseToISOString();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Clear buttons\r\n\t\tif ($('.clear-type').data('clear')) {\r\n\t\t\tif (typeValues.length != 0) {\r\n\t\t\t\t//clear type\r\n\t\t\t\tqueryType = [];\r\n\t\t\t\t//Uncheck inputs\r\n\t\t\t\t$.each(typeValues,\r\n\t\t\t\t\tfunction (index, value) {\r\n\t\t\t\t\t\t$(value).prop('checked', false);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//remove data-type\r\n\t\t\t$('.clear-type').data('clear', '');\r\n\t\t}\r\n\t\tif ($('.clear-taxonomy').data('clear')) {\r\n\t\t\tif (taxonomyValues.length != 0) {\r\n\t\t\t\t//clear taxonomy\r\n\t\t\t\tqueryTaxonomy = [];\r\n\t\t\t\t//Uncheck inputs\r\n\t\t\t\t$.each(taxonomyValues,\r\n\t\t\t\t\tfunction (index, value) {\r\n\t\t\t\t\t\t$(value).prop('checked', false);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//remove data-type\r\n\t\t\t$('.clear-taxonomy').data('clear', '');\r\n\t\t}\r\n\t\tif ($('.clear-dates').data('clear')) {\r\n\t\t\tif (fromVal || toVal) {\r\n\t\t\t\t//clear dates\r\n\t\t\t\tdateFrom = undefined;\r\n\t\t\t\tdateTo = undefined;\r\n\t\t\t\t//Uncheck inputs\r\n\t\t\t\t$('.date-field #cpageDateMin').datepicker(\"setDate\", '');\r\n\t\t\t\t$('.date-field #cpageDateMax').datepicker(\"setDate\", '');\r\n\t\t\t}\r\n\t\t\t//remove data-type\r\n\t\t\t$('.clear-dates').data('clear', '');\r\n\t\t}\r\n\r\n\t\tvar obj = {\r\n\t\t\tSearchTerm: query,\r\n\t\t\tId: CP.BOE.ContentPageSearchDataSourceID,\r\n\t\t\tPageSize: CP.BOE.ContentPageSize,\r\n\t\t\tReleaseTypes: queryType,\r\n\t\t\tReleaseTypesAvailable: queryTypeOptions,\r\n\t\t\tTaxonomies: queryTaxonomy,\r\n\t\t\tTaxonomiesAvailable: taxonomyValuesAvailable,\r\n\t\t\tPage: page,\r\n\t\t\tShowResultImage: CP.BOE.ShowResultImage, \r\n\t\t\tOrderBy: sortBy,\r\n\t\t\tDateFrom: dateFrom,\r\n\t\t\tDateTo: dateTo\r\n\t\t};\r\n\r\n\t\treturn obj;\r\n\t};\r\n\r\n\tCP.SEARCH.initFilters = function (reload) {\r\n\r\n\t\tvar obj = CP.SEARCH.initGetFilters();\r\n\r\n\t\tinitAjaxCall(obj, reload);\r\n\t};\r\n\r\n\tfunction initAjaxCall(obj, reload) {\r\n\r\n\t\t$(\"#SearchResults\").css('display', 'none');\r\n\t\t$('.loading').css('display', 'block');\r\n\t\t$('.loading').html('\"\"

    Content loading

    ');\r\n\r\n\t\t$.ajax({\r\n\t\t\turl: \"/_api/Search/RefreshContentPageSearchList\",\r\n\t\t\ttype: \"post\",\r\n\t\t\tdata: obj\r\n\t\t})\r\n\t\t\t.done(function (result) {\r\n\t\t\t\t$(\"#SearchResults\").hide().html(result.Results).fadeIn(600, function () {\r\n\t\t\t\t\t$('.loading').empty();\r\n\t\t\t\t\t$('.loading').css('display', 'none');\r\n\t\t\t\t});\r\n\t\t\t\t$('.sidebar-filters.taxonomy-filters').hide().html(result.Refiners).fadeIn(600);\r\n\r\n\t\t\t\t$('.search-count').html(result.NumResultsTxt);\r\n\t\t\t\t$('#searchResultCountAnnounce').html('');\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t$('#searchResultCountAnnounce').html(result.NumResultsTxt);\r\n\t\t\t\t}, 500);\r\n\r\n\t\t\t\tIEimages();\r\n\t\t\t})\r\n\t\t\t.fail(function (e) {\r\n\t\t\t\t//console.log(\"error\", e)\r\n\t\t\t});\r\n\t\tif (!reload) {\r\n\t\t\thistory.pushState(obj, null, null);\r\n\t\t}\r\n\t};\r\n\r\n\tif ($('#SearchResultsPage').length > 0) {\r\n\r\n\t\tif (!$(\"body\").hasClass(\"pagemode-edit\")) {\r\n\t\t\twindow.addEventListener('popstate', function (e) {\r\n\t\t\t\tvar obj = e.state;\r\n\t\t\t\tif (obj) {\r\n\t\t\t\t\tinitAjaxCall(obj, true);\r\n\t\t\t\t\tinitRefreshTypes(obj.ReleaseTypes);\r\n\t\t\t\t\tinitRefreshTaxonomies(obj.Taxonomies);\r\n\t\t\t\t\tinitRefreshSearchbox(obj.SearchTerm);\r\n\t\t\t\t\tinitRefreshOrderBy(obj.OrderBy);\r\n\t\t\t\t\tinitRefreshDate(obj.DateFrom, obj.DateTo);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocation.href = location.href;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (PerformanceNavigationTiming.type === \"reload\" != 1 && history.state != null && history.state.Id && !$(\"body\").hasClass(\"pagemode-edit\")) {\r\n\t\t\tinitRefreshTypes(history.state.ReleaseTypes);\r\n\t\t\t//initRefreshTaxonomies(history.state.Taxonomies);\r\n\t\t\tinitRefreshSearchbox(history.state.SearchTerm);\r\n\t\t\tinitRefreshOrderBy(history.state.OrderBy);\r\n\t\t\tinitRefreshDate(history.state.DateFrom, history.state.DateTo);\r\n\r\n\t\t\tvar obj = CP.SEARCH.initGetFilters();\r\n\t\t\tobj.Taxonomies = history.state.Taxonomies;\r\n\t\t\tinitAjaxCall(obj);\r\n\r\n\t\t} else {\r\n\t\t\t//console.info(\"Initialise from page\");\r\n\t\t\t//Delay necessary due to race conditions with browser restoring page state\r\n\t\t\t//when back button has been pressed.\r\n\t\t\tvar delay = 300;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tCP.SEARCH.initFilters(true);\r\n\t\t\t}, delay);\r\n\t\t\t//console.info(\"Delay: \" + delay);\t\r\n\t\t}\r\n\t};\r\n\r\n\tfunction initRefreshTypes(checked) {\r\n\r\n\t\tvar typeCheckboxes = $('.sidebar-filters.type-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\tvar typeCheckboxesValues = typeCheckboxes.map(function (obj) { return obj.value; });\r\n\r\n\t\tfor (var i = 0; i < typeCheckboxesValues.length; i++) {\r\n\t\t\tif (checked.indexOf(typeCheckboxesValues[i]) !== -1) {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', true);\r\n\t\t\t} else {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', false);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction initRefreshTaxonomies(checked) {\r\n\r\n\t\tvar typeCheckboxes = $('.sidebar-filters.taxonomy-filters').find('input[type=\"checkbox\"]').toArray();\r\n\t\tvar typeCheckboxesValues = typeCheckboxes.map(function (obj) { return obj.value; });\r\n\r\n\t\tfor (var i = 0; i < typeCheckboxesValues.length; i++) {\r\n\t\t\tif (checked.indexOf(typeCheckboxesValues[i]) !== -1) {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', true);\r\n\t\t\t} else {\r\n\t\t\t\t$(typeCheckboxes[i]).prop('checked', false);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction initRefreshSearchbox(SearchTerm) {\r\n\t\t$('.filter-search input[type=\"search\"]').val(SearchTerm);\r\n\t};\r\n\r\n\tfunction initRefreshOrderBy(OrderBy) {\r\n\t\t$('.sort-by select').val(OrderBy);\r\n\t};\r\n\r\n\tfunction initRefreshDate(DateFrom, DateTo) {\r\n\t\tif (DateFrom) {\r\n\t\t\tDateFrom = new Date(DateFrom);\r\n\t\t} else {\r\n\t\t\tDateFrom = undefined;\r\n\t\t}\r\n\t\tif (DateTo) {\r\n\t\t\tDateTo = new Date(DateTo);\r\n\t\t} else {\r\n\t\t\tDateTo = undefined;\r\n\t\t}\r\n\t\t$('.date-field #cpageDateMin').datepicker(\"setDate\", DateFrom);\r\n\t\t$('.date-field #cpageDateMax').datepicker(\"setDate\", DateTo);\r\n\t};\r\n\r\n\tfunction IEimages() {\r\n\t\tif (!Modernizr.objectfit) {\r\n\t\t\t$('.releases-items .release').each(function () {\r\n\t\t\t\tvar $imageContainer = $(this).find('.release-img'),\r\n\t\t\t\t\timgUrl = $imageContainer.find('img').prop('src');\r\n\t\t\t\tif (imgUrl) {\r\n\t\t\t\t\t$imageContainer\r\n\t\t\t\t\t\t.css('backgroundImage', 'url(' + imgUrl + ')')\r\n\t\t\t\t\t\t.addClass('object-fit');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isUndefined(value) {\r\n\t\t// Obtain `undefined` value that's guaranteed to not have been re-assigned\r\n\t\tvar undefined = void (0);\r\n\t\treturn value === undefined;\r\n\t};\r\n\r\n})(jQuery, CP.SEARCH);","// Share tooltip\r\n\r\nvar Share = {\r\n\r\n selectorContainer: '[data-share]',\r\n\tselector: '[data-share-trigger]',\r\n\tcontent: '.share-widget__list',\r\n classActive: 'active',\r\n \r\n init: function () {\r\n // return if the container share not present\r\n if (!$(this.selectorContainer).length) return;\r\n\r\n\t\tthis.setDefaultState();\r\n this.bindClickEvent();\r\n\r\n },\r\n bindClickEvent: function () {\r\n\r\n $(Share.selector).on('click', function (e) {\r\n\r\n var $thisSelector = $(this),\r\n\t\t\t\t$thisSelectorParent = $thisSelector.parent(Share.selectorContainer),\r\n\t\t\t\t$thisContent = $thisSelectorParent.find(Share.content);\r\n\r\n\t\t\tShare.toggleClassActive($thisSelectorParent);\r\n\t\t\tShare.setAriaAttr($thisSelector, $thisContent);\r\n\r\n // Prevent default click behavior\r\n e.preventDefault();\r\n // stopPropagation to prevent the button click from bubbling up the DOM\r\n e.stopPropagation();\r\n\r\n });\r\n\r\n $('body').on('click', function () {\r\n\r\n if ($(Share.selectorContainer).hasClass(Share.classActive)) {\r\n $(Share.selectorContainer).removeClass(Share.classActive);\r\n }\r\n\r\n });\r\n\r\n },\r\n\tsetDefaultState: function () {\r\n\t\t$(Share.selector).attr('aria-expanded', 'false');\r\n\t\t$(Share.content).attr('aria-hidden', 'true');\r\n\t},\r\n\tsetAriaAttr: function ($thisSelector, $thisContent) {\r\n\r\n\t\t// check state and set the opposite attr\r\n\t\tvar stateLink = $thisSelector.attr('aria-expanded') === 'false' ? true : false;\r\n\t\tvar stateContent = $thisContent.attr('aria-hidden') === 'true' ? false : true;\r\n\r\n\t\t// set button state\r\n\t\t$thisSelector.attr('aria-expanded', stateLink);\r\n\t\t// set content state\r\n\t\t$thisContent.attr('aria-hidden', stateContent);\r\n\r\n\t},\r\n toggleClassActive: function ($thisSelectorParent) {\r\n\r\n setTimeout(function () {\r\n $thisSelectorParent.toggleClass(Share.classActive);\r\n }, 300);\r\n \r\n }\r\n\r\n};\r\n\r\n$(document).ready(function () {\r\n\r\n Share.init();\r\n\r\n});","// Table scroll\r\n\r\nvar TableScroll = {\r\n\r\n\tselector: '[data-table-scroll]',\r\n\ttableRow: '[data-table-row]',\r\n\ttableCol: '[data-table-col]',\r\n\r\n\tinit: function () {\r\n\t\tif (!$(this.selector).length) return;\r\n\t\tthis.setTheadPosition();\r\n\t\tthis.bindScrollEvent();\r\n\t},\r\n\r\n\tsetTheadPosition: function () {\r\n\r\n\t\t$(TableScroll.selector).each(function (i) {\r\n\r\n\t\t\t// get initial dimentions from relative position\r\n\t\t\tvar $thisTable = $(this),\r\n\t\t\t\tthisRow = $thisTable.find(TableScroll.tableRow),\r\n\t\t\t\tthisCol = $thisTable.find(TableScroll.tableCol),\r\n\t\t\t\tthisTdHead = thisRow.find('.table-header'),\r\n\t\t\t\tthisTh = thisRow.find('tr th'),\r\n\t\t\t\tthisTbody = $thisTable.find('tbody'),\r\n\t\t\t\tthisTd = thisTbody.find('tr td'),\r\n\t\t\t\ttHeadRowHeight = thisRow.outerHeight(),\r\n\t\t\t\tcolHeadWidth = thisCol.width();\r\n\r\n\t\t\t// set dimentions for header cells\r\n\t\t\tif (thisRow.length) {\r\n\r\n\t\t\t\tthisTd.each(function () {\r\n\t\t\t\t\tvar cellTd = $(this),\r\n\t\t\t\t\t\tcellWidth = cellTd.outerWidth();\r\n\r\n\t\t\t\t\tcellTd.css('min-width', cellWidth + 'px');\r\n\t\t\t\t\tcellTd.attr('width', cellWidth + 'px');\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthisTdHead.each(function () {\r\n\t\t\t\t\tvar cellTdHead = $(this),\r\n\t\t\t\t\t\ttdHeadWidth = cellTdHead.outerWidth();\r\n\r\n\t\t\t\t\tcellTdHead.css('min-width', tdHeadWidth + 'px');\r\n\t\t\t\t\tcellTdHead.attr('width', tdHeadWidth + 'px');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthisTh.each(function () {\r\n\t\t\t\t\tvar cellTh = $(this),\r\n\t\t\t\t\t\tcellThWidth = cellTh.outerWidth();\r\n\r\n\t\t\t\t\tcellTh.css('min-width', cellThWidth + 'px');\r\n\t\t\t\t\tcellTh.attr('width', cellThWidth + 'px');\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\t// set Tbody position\r\n\t\t\t\tthisRow.css('height', tHeadRowHeight + 'px');\r\n\t\t\t\tthisTbody.css('margin-top', tHeadRowHeight);\r\n\r\n\t\t\t\tTableScroll.addStickyClass(thisRow, thisTbody);\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// set dimention and position for header col\r\n\t\t\tif (thisCol.length) {\r\n\t\t\t\tthisCol.css('top', tHeadRowHeight);\r\n\t\t\t\tthisTbody.css('left', colHeadWidth);\r\n\t\t\t\tTableScroll.addStickyClass(thisCol, thisTbody);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\taddStickyClass: function (thisRow, thisTbody) {\r\n\r\n\t\tthisRow.addClass('is-sticky');\r\n\t\tthisTbody.addClass('has-sticky');\r\n\r\n\t},\r\n\r\n\tbindScrollEvent: function () {\r\n\r\n\t\t$(TableScroll.selector).on('scroll', function () {\r\n\r\n\t\t\tvar $thisTable = $(this),\r\n\t\t\t\tthisRow = $thisTable.find(TableScroll.tableRow),\r\n\t\t\t\tthisCol = $thisTable.find(TableScroll.tableCol),\r\n\t\t\t\tscrollLeftValue = $(this).scrollLeft() + \"px\",\r\n\t\t\t\tscrollTopValue = $(this).scrollTop() + \"px\";\r\n\r\n\t\t\tif (thisRow.length) {\r\n\t\t\t\t// move tHead row top position\r\n\t\t\t\tthisRow.css('transform', 'translate(0,' + scrollTopValue + ')');\r\n\t\t\t}\r\n\t\t\tif (thisCol.length) {\r\n\t\t\t\t// move tHead col left position\r\n\t\t\t\tthisCol.css('transform', 'translate(' + scrollLeftValue + ', 0)');\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n};\r\n\r\n\r\n$(document).ready(function () {\r\n\tTableScroll.init();\r\n});","(function ($) {\r\n\t// Tabs\r\n\t$('.tabs-wrap').each(function(){\r\n\t\tvar $this = $(this);\r\n\t\tvar $tabsWrap = $this.find('.tabs');\r\n\t\tvar $content = $this.find('.tabs-content');\r\n\r\n\t\t$tabsWrap.find('a').each(function () {\r\n\t\t\tvar $this = $(this);\r\n\t\t\tvar tab_id = $this.attr('href');\r\n\t\t\tif ($this.closest('li').hasClass('tab-current')) $(tab_id).addClass('tab-current');\r\n\t\t\t$this.on('click', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t$tabsWrap.find('li').removeClass('tab-current');\r\n\t\t\t\t$content.removeClass('tab-current');\r\n\r\n\t\t\t\t$this.closest('li').addClass('tab-current');\r\n\t\t\t\t$(tab_id).addClass('tab-current');\r\n\t\t\t})\r\n\t\t});\r\n\t\t\r\n\t});\r\n})(jQuery);\r\n","(function ($) {\r\n\t// Videos \r\n\tif ($('.btn-load-video').length) {\r\n\t\t//$('.btn-open-video').hide();\t\t\r\n\t\t//$('.btn-load-video').each(function (i, obj) {\r\n\t\t$('.btn-load-video').on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar video = $(this).parent().data('video');\r\n\t\t\tvar iframe = '';\r\n\t\t\t$(this).parent().append(iframe);\r\n\t\t\t$(this).fadeOut();\r\n\t\t});\r\n\t};\r\n})(jQuery);"]}