PageSourceSearch

https://www.mfo.ac.uk/sites/g/files/vzsiac2806/files/js/js_oTNjdB-…qNhGOl8rHdN65FokWscju6Hb6A4_0SASItmAL-j9rGg

js mfo.ac.uk collected 2026-10-01 12:02:45 UTC 33,630 bytes, 11 lines download raw bytes

1/* @license GPL-2.0-or-later https://www.drupal.org/licensing/faq */
2window.dataLayer=window.dataLayer||[];const dynamicCookieNamesByCategory=drupalSettings?.oxfcmsCookieControl?.dynamicCookieNamesByCategory||{};function mergeDynamicCookieNames(optionalCookies,dynamicCookieNames){optionalCookies.forEach(function(categoryConfig){const categoryKey=categoryConfig.name;const extraCookies=dynamicCookieNames[categoryKey];if(!Array.isArray(extraCookies)||extraCookies.length===0)return;const existing=Array.isArray(categoryConfig.cookies)?categoryConfig.cookies:[];const merged=existing.slice();extraCookies.forEach(function(cookieName){if(typeof cookieName!=='string')return;const cleanName=cookieName.trim();if(cleanName!==''&&merged.indexOf(cleanName)===-1)merged.push(cleanName);});categoryConfig.cookies=merged;});}let config={"apiKey":window.drupalSettings?.oxfcmsCookieControl?.civicUK?.apiKey,"product":window.drupalSettings?.oxfcmsCookieControl?.civicUK?.product,"statement":{"description":"More information is available in our","name":"cookie policy.","url":"/site-cookies","updated":drupalSettings?.oxfcmsCookieControl?.siteCookiesLastUpdated}
2,"necessaryCookies":["apt.uid","frescocookiecontrol_"+window.drupalSettings?.oxfcmsCookieControl?.site,"SimpleSAMLAuthToken","simplesamlphp_auth_returnto","SimpleSAMLSessionID","SSESS*"],"optionalCookies":[{"name":"analytics","label":"Analytics","description":"Analytical cookies help us to improve our website by collecting and reporting information on its usage.","cookies":['_ga','_ga*','_gid','_gat','__utma','__utmt','__utmb','__utmc','__utmz','__utmv'],"onAccept":function(){if(typeof gtag!=="undefined")gtag('consent','update',{'analytics_storage':'granted'});dataLayer.push({'event':'analytics_accept'});document.dispatchEvent(analyticsCookieAccept);document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieAccept',{detail:{category:'analytics',index:0}}));},"onRevoke":function(){if(typeof gtag!=="undefined")gtag('consent','update',{'analytics_storage':'denied'});dataLayer.push({'event':'analytics_revoke'});document.dispatchEvent(analyticsCookieRevoke);document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieRevoke',{detail:{category:'analytics',index:0}}));}},{"name":"functional","label":"Functional","description":"Functional cookies are not necessary to running the site, but provide additional functionality to improve user experience.","cookies":[],"onAccept":function(){if(typeof gtag!=="undefined")gtag('consent','update',{functionality_storage:'granted',personlization_storage:'granted',security_storage:'granted'});dataLayer.push({'event':'functionality_accept'});document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieAccept',{detail:{category:'functional',index:1}}));},"onRevoke":function(){if(typeof gtag!=="undefined")gtag('consent','update',{functionality_storage:'denied',personlization_storage:'denied',security_storage:'denied'});dataLayer.push({'event':'functionality_revoke'});document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieRevoke',{detail:{category:'functional',index:1}}));}},{"name":"marketing","label":"Marketing","description":"We use marketing cookies to help measure the effectiveness of our advertising campaigns.","cookies":[],"onAccept":function(){if(typeof gtag!=="undefined")gtag('consent','update',{ad_storage:'granted',ad_user_data:'granted',ad_personalization:'granted'});dataLayer.push({'event':'marketing_accept'});document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieAccept',{detail:{category:'marketing',index:2}}));},"onRevoke":function(){if(typeof gtag!=="undefined")gtag('consent','update',{ad_storage:'denied',ad_user_data:'denied',ad_personalization:'denied'});dataLayer.push({'event':'marketing_revoke'});document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieRevoke',{detail:{category:'marketing',index:2}}));}},{"name":"video","label":"Video","description":"Video cookies are to allow for video functionality. They are typically set by the 3rd party for analytics, marketing or functional reasons. ","cookies":["__cf_bm","_cfuvid","cf_clearance","GPS","player_clearance","VISITOR_INFO1_LIVE","YSC"],"onAccept":function(){document.dispatchEvent(videoCookieAccept);document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieAccept',{detail:{category:'video',index:3}}));},"onRevoke":function(){document.dispatchEvent(videoCookieRevoke);document.dispatchEvent(new CustomEvent('oxfcmsEmbedCookieRevoke',{detail:{category:'video',index:3}}));}}],"initialState":"notify","notifyOnce":false,"notifyDismissButton":false,"settingsStyle":"button","position":"left","theme":"light","iabCMP":false,"ccCookie":"frescocookiecontrol_"+window.drupalSettings?.oxfcmsCookieControl?.site,"closeStyle":"button","branding":{"notifyFontColor":"#ffffff","notifyBackgroundColor":"#002147","acceptText":"#ffffff","acceptBackground":"transparent","rejectText":"#ffffff","rejectBackground":"transparent"},"text":{"closeLabel":"Save cookie settings","acceptSettings":"Accept all cookies","rejectSettings":"Decline optional cookies","notifyTitle":"Your cookie choices","notifyDescription":"We use cookies to make this site work and improve your experience. Necessary cookies are always enabled because they are essential for the site to work. With your consent, we also use optional cookies to enable certain features and to help improve our website.","accept":"Accept all","reject":"Decline optional cookies","settings":"Manage cookies"}};mergeDynamicCookieNames(config.optionalCookies,dynamicCookieNamesByCategory);config.onLoad=function(){window.requestAnimationFrame(function(){const notification=document.getElementById('ccc-notify');if(notification){notification.setAttribute('tabindex','-1');notification.focus({preventScroll:true});notification.classList.add('oxfcms-cookie-control-ready');}});document.dispatchEvent(new Event('oxfcmsCookieControlReady'));};if(window.CookieControl&&window.drupalSettings?.oxfcmsCookieControl?.civicUK)CookieControl.load(config);const videoCookieAccept=new Event('oxfcmsVideoCookieAccept');const videoCookieRevoke=new Event('oxfcmsVideoCookieRevoke');const analyticsCookieAccept=new Event('oxfcmsAnalyticsCookieAccept');const analyticsCookieRevoke=new Event('oxfcmsAnalyticsCookieRevoke');jQuery(document).on('oxfcmsVideoCookieAccept',function(){let vimeoScript=jQuery('script[data-vimeo-script="true"]');if(!vimeoScript.length){let scriptTag=document.createElement('script');let scriptUrl=document.createAttribute('src');scriptUrl.value="https://player.vimeo.com/api/player.js";scriptTag.setAttributeNode(scriptUrl);let scriptIdentifier=document.createAttribute('data-vimeo-script');scriptIdentifier.value="true";scriptTag.setAttributeNode(scriptIdentifier);document.head.appendChild(scriptTag);}let vimeoVideos=document.getElementsByClassName("oxfcms_video_vimeo");for(let i=0;i<vimeoVideos.length;i++){let vimeoVideo=vimeoVideos.item(i);let vimeoUrlValue=vimeoVideo.getAttribute('data-video-disabled-vimeo-url');let vimeoUrlAttribute=document.createAttribute('data-vimeo-url');vimeoUrlAttribute.value=vimeoUrlValue;vimeoVideo.setAttributeNode(vimeoUrlAttribute);}let youtubeVideos=document.querySelectorAll(".oxfcms_video_youtube:not(.loaded)");for(let y=0;y<youtubeVideos.length;y++){let youtubeVideo=youtubeVideos.item(y);let ytVideoParent=youtubeVideo.parentNode;let ytVideoIframe=document.createElement('iframe');let ytVideoAttributeList=['title','class','src','width','height'];for(let j=0;j<ytVideoAttributeList.length;j++){let ytAttributeValue=youtubeVideo.getAttribute(ytVideoAttributeList[j]);let ytAttribute=document.createAttribute(ytVideoAttributeList[j]);if(ytVideoAttributeList[j]==="class")ytAttributeValue+=" loaded";ytAttribute.value=ytAttributeValue;ytVideoIframe.setAttributeNode(ytAttribute);}
2ytVideoParent.insertBefore(ytVideoIframe,youtubeVideo);youtubeVideo.remove();}jQuery(".oxfcms_video_overlay_dismiss").each(function(){videoDismissOverlay(this);});let sharepointVideos=document.querySelectorAll('iframe[data-nonconsent-src^="https://unioxfordnexus.sharepoint.com/"]');for(let s=0;s<sharepointVideos.length;s++){let sharepointVideo=sharepointVideos.item(s);let sharepointUrlValue=sharepointVideo.getAttribute('data-nonconsent-src');let sharepointUrlAttribute=document.createAttribute('src');sharepointUrlAttribute.value=sharepointUrlValue;sharepointVideo.setAttributeNode(sharepointUrlAttribute);}});jQuery(document).on('oxfcmsVideoCookieRevoke',function(){jQuery(".oxfcms_video_overlay_dismiss").each(function(){videoEnableOverlay(this);});});function videoDismissOverlay(e){let videoContainer=e;jQuery(videoContainer).parents('.oxfcms_video_overlay').addClass('hide');}function videoEnableOverlay(e){let videoContainer=e;jQuery(videoContainer).parents('.oxfcms_video_overlay').removeClass('hide');}jQuery('iframe[src^="https://unioxfordnexus.sharepoint.com/"]').each(function(){let sharepointIframe=jQuery(this);sharepointIframe.addClass('sharepoint-embed');let sharepointSrc=sharepointIframe.attr('src');sharepointIframe.attr('data-nonconsent-src',sharepointSrc);sharepointIframe.attr('src','');let iframeParent=jQuery(sharepointIframe).parent();let videoOverlay=document.createElement('div');jQuery(videoOverlay).addClass('oxfcms_video_overlay');let overlayText=document.createElement('p');jQuery(overlayText).html('To play the video, you need to accept cookies for videos.');let overlayButton=document.createElement('Button');jQuery(overlayButton).addClass('oxfcms_video_overlay_dismiss');jQuery(overlayButton).attr('data-once','initVideoDismisses');jQuery(overlayButton).html('Accept cookies to Play Video');jQuery(overlayButton).on('click',function(){CookieControl.changeCategory(3,true);});jQuery(videoOverlay).css('height',sharepointIframe.height());jQuery(videoOverlay).css('width',sharepointIframe.width());videoOverlay.append(overlayText);videoOverlay.append(overlayButton);jQuery(videoOverlay).prependTo(iframeParent);});;
3Drupal.debounce=function(func,wait,immediate){let timeout;let result;return function(...args){const context=this;const later=function(){timeout=null;if(!immediate)result=func.apply(context,args);};const callNow=immediate&&!timeout;clearTimeout(timeout);timeout=setTimeout(later,wait);if(callNow)result=func.apply(context,args);return result;};};;
4(function(Drupal,once){'use strict';const DEBOUNCE_WAIT=15;const windowResizeCallbacks=new Set();let windowResizeHandlerAttached=false;let windowResizeHandler=null;function registerWindowResizeCallback(callback){if(!callback)return function(){};windowResizeCallbacks.add(callback);if(!windowResizeHandlerAttached){windowResizeHandler=Drupal.debounce(function(){windowResizeCallbacks.forEach(function(cb){cb();});},DEBOUNCE_WAIT);window.addEventListener('resize',windowResizeHandler);windowResizeHandlerAttached=true;}return function unregister(){windowResizeCallbacks.delete(callback);if(windowResizeCallbacks.size===0&&windowResizeHandlerAttached){window.removeEventListener('resize',windowResizeHandler);windowResizeHandlerAttached=false;windowResizeHandler=null;}};}function createCaptionSetter(image,caption){return function setCaptionWidth(){if(!image||!caption)return;if(!image.complete||image.naturalWidth===0)return;caption.style.width='';caption.style.maxWidth='';void image.offsetWidth;const imageWidth=image.getBoundingClientRect().width;const parentWidth=image.parentElement?image.parentElement.getBoundingClientRect().width:0;if(!imageWidth||!parentWidth)return;if(parentWidth>0&&Math.abs(imageWidth-parentWidth)<2)caption.style.width='100%';else{if(imageWidth>0)caption.style.width=imageWidth+'px';}caption.style.maxWidth='100%';};}function createImageSizer(image,options={}){const adjustImageHeight=options.adjustImageHeight===true;return function setImageSize(){if(!adjustImageHeight||!image)return;if(!image.complete||image.naturalWidth===0)return;
4const naturalWidth=image.naturalWidth;const naturalHeight=image.naturalHeight;if(!naturalWidth||!naturalHeight)return;const wrapper=image.closest('.oxfcms-image-wrapper');const containerWidth=wrapper?wrapper.clientWidth:0;const attrWidth=parseInt(image.getAttribute('width'),10);if(containerWidth>0&&attrWidth>0&&attrWidth<containerWidth){const maxWidth=parseInt(image.getAttribute('data-width'),10)||naturalWidth;const newWidth=Math.min(containerWidth,maxWidth);const newHeight=Math.round(newWidth*naturalHeight/naturalWidth);image.setAttribute('width',newWidth);image.setAttribute('height',newHeight);}image.style.height='';void image.offsetWidth;const imageWidth=image.getBoundingClientRect().width;if(!imageWidth)return;const scaledHeight=Math.round(imageWidth*(naturalHeight/naturalWidth));if(scaledHeight>0)image.style.height=scaledHeight+'px';};}function setupCaptionWidth(wrapper){const image=wrapper.querySelector('img');const caption=wrapper.querySelector('.oxfcms-caption, figcaption');if(!image)return;const isInLandscapeCard=!!wrapper.closest('.oxfcms-card-landscape-image__image-container');const isTileGrid=!isInLandscapeCard&&!!wrapper.closest('.paragraph--type--oxfcms-layout-tile-grid, '+'.oxfcms-layout-tile-grid, '+'.oxfcms-grid-container, '+'.oxfcms-grid-items');const setImageSize=createImageSizer(image,{adjustImageHeight:isTileGrid});const setCaptionWidth=caption?createCaptionSetter(image,caption):null;const update=function(){setImageSize();if(setCaptionWidth)setCaptionWidth();};const handleResize=Drupal.debounce(update,DEBOUNCE_WAIT);image.addEventListener('load',update);if(image.complete&&image.naturalWidth>0)setTimeout(update,0);if(window.ResizeObserver&&!wrapper._oxfcmsCaptionResizeObserver){const resizeObserver=new ResizeObserver(()=>{handleResize();});resizeObserver.observe(image);resizeObserver.observe(wrapper);wrapper._oxfcmsCaptionResizeObserver=resizeObserver;}else wrapper._oxfcmsCaptionUnregisterResize=registerWindowResizeCallback(handleResize);}function cleanupWrapper(wrapper){if(!wrapper)return;if(wrapper._oxfcmsCaptionResizeObserver){wrapper._oxfcmsCaptionResizeObserver.disconnect();delete wrapper._oxfcmsCaptionResizeObserver;}if(wrapper._oxfcmsCaptionUnregisterResize){wrapper._oxfcmsCaptionUnregisterResize();delete wrapper._oxfcmsCaptionUnregisterResize;}wrapper.classList.remove('oxfcms-caption-width-processed');}function findWrappers(node){const selectors='.oxfcms-image-wrapper, .caption-drupal-media';let wrappers=node.querySelectorAll?node.querySelectorAll(selectors):[];if(node.classList&&(node.classList.contains('oxfcms-image-wrapper')||node.classList.contains('caption-drupal-media')))wrappers=[node,...Array.from(wrappers)];return wrappers;}function processWrapper(wrapper){if(wrapper.classList.contains('oxfcms-caption-width-processed'))return;wrapper.classList.add('oxfcms-caption-width-processed');setupCaptionWidth(wrapper);}function processAddedNodes(addedNodes){addedNodes.forEach(function(node){if(node.nodeType!==Node.ELEMENT_NODE)return;const wrappers=findWrappers(node);wrappers.forEach(processWrapper);});}function processRemovedNodes(removedNodes){removedNodes.forEach(function(node){if(node.nodeType!==Node.ELEMENT_NODE)return;const wrappers=findWrappers(node);wrappers.forEach(cleanupWrapper);});}Drupal.behaviors.oxfcmsImageCaptionWidth={attach:function(context,settings){const selectors='.oxfcms-image-wrapper, .caption-drupal-media';once('oxfcms-caption-width',selectors,context).forEach(setupCaptionWidth);if(typeof MutationObserver!=='undefined'){const observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(mutation.addedNodes.length)processAddedNodes(mutation.addedNodes);if(mutation.removedNodes.length)processRemovedNodes(mutation.removedNodes);});});observer.observe(document.body,{childList:true,subtree:true});}}};})(Drupal,window.once);;
5(function(Drupal,once){Drupal.behaviors.oxfcms_menu_dropdown={attach:(context,settings)=>{once("dropdown-menu-mobile-init",".oxfcms-menu-dropdown .mobile-menu-trigger",context).forEach((dropdownMenuMobileTrigger)=>{dropdownMenuMobileTrigger.addEventListener('click',(e)=>{toggleMobileMenu(e,dropdownMenuMobileTrigger);});});}};function toggleMobileMenu(e,trigger){let menu=jQuery(trigger).closest('.oxf
5cms-menu-dropdown');let topLevel=jQuery(menu).find('.menu-top-level');let expended=jQuery(topLevel).attr('aria-expanded');let newExpandState=expended==='true'?'false':'true';jQuery(topLevel).attr('aria-expanded',newExpandState);jQuery(topLevel).toggleClass('active');}})(Drupal,once);;
6(function(Drupal,once){Drupal.behaviors.oxfcms_menu_dropdown_link={attach:(context,settings)=>{once("dropdown-menu-link-init",".oxfcms-menu-link-dropdown > .menu-item-text",context).forEach((dropdownLinkMenuItem)=>{dropdownLinkMenuItem.addEventListener('click',(e)=>{openSubmenu(e,dropdownLinkMenuItem);});});once("dropdown-menu-link-keyboard-init",".oxfcms-menu-link-dropdown > .menu-item-text",context).forEach((dropdownLinkMenuItem)=>{dropdownLinkMenuItem.addEventListener('keypress',(e)=>{keyboardOpenSubmenu(e,dropdownLinkMenuItem);});});once("dropdown-menu-back-button-init",".previous-menu-link button",context).forEach((dropdownMenuBackButton)=>{dropdownMenuBackButton.addEventListener("click",goBackMenuClose);});once("dropdown-menu-close-check",'.oxfcms-menu-dropdown',context).forEach((dropdownMenuClose)=>{document.addEventListener("click",(e)=>{closeDropdownMenu(e,dropdownMenuClose);});document.addEventListener("keydown",(e)=>{keyboardCloseDropdownMenu(e,dropdownMenuClose);});});once("dropdown-menu-close-button-init",".close-link button",context).forEach((dropdownMenuCloseButton)=>{dropdownMenuCloseButton.addEventListener("click",closeDropdownMenu);});}};function openSubmenu(e,menuItem){let thisMenu=jQuery(menuItem);let wrappingMenuItem=jQuery(thisMenu).parent();let subMenu=jQuery(wrappingMenuItem).children('.menu-droptray');jQuery(subMenu).closest('.menu-top-level > li').addClass('activemenu');let topMenu=jQuery(subMenu).parents('.menu-top-level');let topLevelItems=jQuery(topMenu).children('li:not(.activemenu)');jQuery(topLevelItems).find('.menu-droptray').removeClass('active').attr('aria-expanded','false');jQuery(topMenu).find('.activemenu').removeClass('activemenu');let expended=jQuery(subMenu).attr('aria-expanded');let newExpandState=expended==='true'?'false':'true';jQuery(subMenu).attr('aria-expanded',newExpandState);jQuery(subMenu).toggleClass('active');if(!jQuery(subMenu).hasClass('active'))jQuery(subMenu).parents('.oxfcms-menu-dropdown').find('.menu-droptray').removeClass('active');jQuery(wrappingMenuItem).off('keydown','.menu-droptray',trapFocus);let focusableEls=jQuery(subMenu).find('a[href]:not([disabled]):visible, *[tabindex]:not([disabled]):visible');jQuery(focusableEls[0]).trigger('focus');jQuery(subMenu).on('keydown',{element:subMenu},trapFocus);}function keyboardOpenSubmenu(e,dropdownLinkMenuItem){let validCodes=['Enter','Space'];if(validCodes.indexOf(e.code)>=0)openSubmenu(e,dropdownLinkMenuItem);}function goBackMenuClose(e){let backButton=jQuery(this);let thisMenu=jQuery(backButton).closest('.menu-droptray').parent();let droptray=jQuery(thisMenu).find('.menu-droptray');jQuery(droptray).removeClass('active').attr('aria-expanded',false);jQuery(droptray).parent().children('.menu-item-text').trigger('focus');jQuery(thisMenu).on('keydown',{element:droptray},trapFocus);}function closeDropdownMenu(e,menuEl){let targetEl=e.target;let topMenuItem=jQuery(targetEl).parents('.menu-top-level > li');let exceptionClasses=['close-link'];let shouldClose=false;let shouldCloseTop=true;if(targetEl.nodeName=="path")targetEl=targetEl.parentNode;if(targetEl.classList.contains("menu-item-text"))return;do{if(targetEl==menuEl)return;exceptionClasses.forEach((exceptionClass)=>{if(targetEl.classList&&targetEl.classList.contains(exceptionClass)){if(jQuery(menuEl).find('.menu-top-level').hasClass('active'))shouldCloseTop=false;shouldClose=true;}});targetEl=targetEl.parentNode;if(shouldClose)break;}while(targetEl);jQuery(menuEl).find('.menu-droptray').removeClass('active').attr('aria-expanded','false');if(shouldCloseTop)jQuery(menuEl).find('.menu-top-level').removeClass('active').attr('aria-expanded','false');jQuery(topMenuItem).children('.menu-item-text').trigger('focus');}function keyboardCloseDropdownMenu(e,menuEl){let targetEl=e.target;let topMenuItem=jQuery(targetEl).parents('.menu-top-level > li');if(e.key==='Escape'||e.keyCode==='Escape'){jQuery(menuEl).find('.menu-droptray').removeClass('active').attr('aria-expanded','false');jQuery(menuEl).find('.menu-top-level').removeClass('active').attr('aria-expanded','false');jQuery(topMenuItem).children('.menu-item-text').trigger('focus');}}function trapFocus(params){let element=params.data.element;let elementDepth=jQuery(element).parents('.menu-droptray').length;let focusableEls=jQuery(element).find('button:visible, a[href]:not([disabled]):visible, *[tabindex]:not
6([disabled]):visible');let thisElementFocusables=[];let focusableCount=0;focusableEls.each((index,focusElement)=>{if(jQuery(focusElement).parents('.menu-droptray').length===elementDepth+1){thisElementFocusables[focusableCount]=focusElement;focusableCount++;}});var firstFocusableEl=thisElementFocusables[0];var lastFocusableEl=thisElementFocusables[thisElementFocusables.length-1];var KEYCODE_TAB=9;jQuery(element).on('keydown',function(e){var isTabPressed=(e.key==='Tab'||e.keyCode===KEYCODE_TAB);if(!isTabPressed)return;if(e.shiftKey){if(document.activeElement===firstFocusableEl){jQuery(lastFocusableEl).trigger('focus');e.preventDefault();}}else{if(document.activeElement===lastFocusableEl){let lastItemTray=jQuery(lastFocusableEl).parent().children('.menu-droptray');if(jQuery(lastItemTray).hasClass('active')){let lastFocusableEls=jQuery(lastItemTray).find('a[href]:not([disabled]):visible, *[tabindex]:not([disabled]):visible');let lastElementFocusables=[];let lastFocusableCount=0;lastFocusableEls.each((index,lastFocusElement)=>{if(jQuery(lastFocusElement).parents('.menu-droptray').length===elementDepth+2){lastElementFocusables[lastFocusableCount]=lastFocusElement;lastFocusableCount++;}});let lastFirstFocusable=lastElementFocusables[0];jQuery(lastFirstFocusable).trigger('focus');e.preventDefault();}else{jQuery(firstFocusableEl).trigger('focus');e.preventDefault();}}}});}})(Drupal,once);;
7(function(Drupal,once,$,trapFocus){Drupal.behaviors.searchOverlay={attach:function(context,settings){once("header-search-keyboard-trigger-overlay",".header-search .search",context).forEach((headerSearch)=>{headerSearch.addEventListener('keypress',(e)=>{keyboardTriggerSearchOverlay(e,headerSearch);});});once("header-search-trigger-overlay",".header-search .search",context).forEach((headerSearch)=>{headerSearch.addEventListener('click',(e)=>{triggerSearchOverlay(e,headerSearch);});});once("header-search-keyboard-close-overlay",".close-search",context).forEach((closeSearch)=>{closeSearch.addEventListener('keypress',(e)=>{keyboardCloseSearchOverlay(e,closeSearch);});});once("header-search-keyboard-close-overlay",".close-search",context).forEach((closeSearch)=>{closeSearch.addEventListener('click',(e)=>{closeSearchOverlay();});});function keyboardTriggerSearchOverlay(e,headerSearch){let validCodes=['Enter','Space'];if(validCodes.indexOf(e.code)>=0)triggerSearchOverlay(e,headerSearch);}function triggerSearchOverlay(e,headerSearch){const thisContext=$(headerSearch).parents('.paragraph--type--oxfcms-layout-header');const searchIcon=$(thisContext).find('.header-search .search i');const body=$('body');body.toggleClass('search-overlay-open');const isOpen=body.hasClass('search-overlay-open');searchIcon.toggleClass('fa-magnifying-glass').toggleClass('fa-xmark');document.getElementById("search-overlay").classList.toggle("search-overlay-visible");if(isOpen){document.body.style.overflow='hidden';document.getElementById("search-overlay").setAttribute('tabindex',0);document.getElementById("search-overlay").setAttribute('aria-hidden',false);jQuery('.search').attr('aria-label','Close search overlay');jQuery('.search').on('keydown',{element:'#search-overlay'},trapFocus);}else{document.body.style.overflow='auto';document.getElementById("search-overlay").setAttribute('tabindex',-1);document.getElementById("search-overlay").setAttribute('aria-hidden',true);jQuery('.search').attr('aria-label','Open search overlay');}}function keyboardCloseSearchOverlay(e,closeSearch){let validCodes=['Enter','Space'];if(validCodes.indexOf(e.code)>=0)closeSearchOverlay();}const menuContent=$('.paragraph--type--oxfcms-layout-header').find('.header-menu *');menuContent.on('click',closeSearchOverlay);function trapFocus(params){let element=params.data.element;let elementDepth=jQuery(element).parents('#search-overlay').length;let focusableEls=jQuery(element).find('button:visible, a[href]:not([disabled]):visible, *[tabindex]:not([disabled]), input:not([disabled]):visible');let thisElementFocusables=[];let focusableCount=0;thisElementFocusables.push($(".header-search > .search"));focusableCount++;focusableEls.each((index,focusElement)=>{if(jQuery(focusElement).parents('#search-overlay').length===elementDepth+1){thisElementFocusables[focusableCount]=focusElement;focusableCount++;}});var firstFocusableEl=thisElementFocusables[0];var lastFocusableEl=thisElementFocusables[thisElementFocusables.length-1];var KEYCODE_TAB=9;jQuery(element).on('keydown',function(e){var isTabPressed=(e.key==='Tab'||e.keyCode===KEYCODE_TAB);if(!isTabPressed)return;if(e.shiftKey){if(document.activeElement===firstFocusableEl){jQuery(lastFocusableEl).trigger('focus');e.preventDefault();}}else{if(document.activeElement===lastFocusableEl){let lastItemTray=jQuery(lastFocusableEl).parent().children('.menu-droptray');if(jQuery(lastItemTray).hasClass('active')){let lastFocusableEls=jQuery(lastItemTray).find('a[href]:not([disabled]):visible, *[tabindex]:not
7([disabled]):visible');let lastElementFocusables=[];let lastFocusableCount=0;lastFocusableEls.each((index,lastFocusElement)=>{if(jQuery(lastFocusElement).parents('.menu-droptray').length===elementDepth+2){lastElementFocusables[lastFocusableCount]=lastFocusElement;lastFocusableCount++;}});let lastFirstFocusable=lastElementFocusables[0];jQuery(lastFirstFocusable).trigger('focus');e.preventDefault();}else{jQuery(firstFocusableEl).trigger('focus');e.preventDefault();}}}});}function closeSearchOverlay(){const searchIcon=$('.paragraph--type--oxfcms-layout-header').find('.header-search .search i');const body=$('body');body.removeClass('search-overlay-open');searchIcon.addClass('fa-magnifying-glass').removeClass('fa-xmark');document.body.style.overflow='auto';document.getElementById("search-overlay").setAttribute('tabindex',-1);document.getElementById("search-overlay").setAttribute('aria-hidden',true);$("#search-overlay").removeClass('search-overlay-visible');}}};Drupal.behaviors.quickLinksBasicHeader={attach:function(context,settings){function moveQuickLinksBasicHeader(){let mobileTrigger=$('.oxfcms-layout-header-basic .mobile-menu-trigger:visible');let quickLinkContainer=$('.oxfcms-layout-header-basic .header-action-area');let quickLinkSelector=$('.oxfcms-layout-header-basic .header-action-area .header-links');let menuContainer=$('.oxfcms-layout-header-basic .header-menu-area .menu-top-level');let menuQuickLinkSelector=$('.oxfcms-layout-header-basic .header-menu-area .menu-top-level .header-links');if(mobileTrigger.length){if(quickLinkSelector.length)quickLinkSelector.appendTo(menuContainer);}else menuQuickLinkSelector.appendTo(quickLinkContainer);}moveQuickLinksBasicHeader();$(window).resize(function(){moveQuickLinksBasicHeader();});}};})(Drupal,once,jQuery);;
8(function(Drupal,drupalSettings){'use strict';Drupal.behaviors.easyResponsiveImages={attach:function(context){const images=context.querySelectorAll('img[data-srcset]');if(!images||images.length===0)return;const updateImage=function(image){if(image.hasAttribute('data-loading')){setTimeout(function(){updateImage(image);},100);return;}let multiplier=1;const dataMultiplier=image.getAttribute('data-multiplier');if(dataMultiplier!==null)multiplier=parseFloat(dataMultiplier.replace('x',''));const multiplierMax=multiplier>=1?multiplier:1;const multiplierFactor=window.devicePixelRatio<multiplierMax?window.devicePixelRatio:multiplierMax;const cover=image.hasAttribute('data-cover');const imgWidth=Math.floor(image.clientWidth);const imgHeight=Math.floor(image.clientHeight);let parentWidth=Math.floor(image.parentNode.clientWidth);let parentHeight=Math.floor(image.parentNode.clientHeight);if(image.parentNode.classList.contains('oxfcms-image')){parentWidth=Math.floor(image.parentNode.parentNode.clientWidth);parentHeight=Math.floor(image.parentNode.parentNode.clientHeight);}let availableWidth=parentWidth>imgWidth?parentWidth:imgWidth;if(image.getAttribute('data-width'))availableWidth=Math.min(availableWidth,image.getAttribute('data-width'));const availableHeight=parentHeight>imgHeight?parentHeight:imgHeight;const targetWidth=multiplierFactor*availableWidth;const targetHeight=multiplierFactor*availableHeight;const attrWidth=image.getAttribute('width');const attrHeight=image.getAttribute('height');const sources=image.getAttribute('data-srcset').split(',');const currentSrc=image.getAttribute('src');let ratioWidth,ratioHeight;if(image.hasAttribute('data-ratio'))[ratioWidth,ratioHeight]=image.getAttribute('data-ratio').split(':');if(image.src&&attrWidth&&attrWidth>availableWidth&&attrHeight&&attrHeight>availableHeight){image.setAttribute('data-loaded',1);return;}let source,responsiveImgPath,responsiveImgWidth,responsiveImgHeight;for(source of sources){let array=source.trim().split(' ');if(array.length<2||!array[1])continue;responsiveImgPath=array[0];responsiveImgWidth=array[1].slice(0,-1);if(cover&&parentWidth&&parentHeight)responsiveImgHeight=(responsiveImgWidth*parentWidth)/parentHeight;else if(ratioWidth&&ratioHeight)responsiveImgHeight=(responsiveImgWidth*ratioHeight)/ratioWidth;else{if(attrWidth&&attrHeight)responsiveImgHeight=(responsiveImgWidth*attrHeight)/attrWidth;}if(targetWidth<responsiveImgWidth&&(!cover||!responsiveImgHeight||targetHeight<responsiveImgHeight))break;}if(responsiveImgPath===currentSrc){image.setAttribute('data-loaded',1);return;}image.setAttribute('data-loading',1);image.src=responsiveImgPath;image.setAttribute('width',availableWidth);if(cover&&parentWidth&&parentHeight)image.setAttribute('height',Math.round((availableWidth*parentHeight)/parentWidth));else if(ratioWidth&&ratioHeight)image.setAttribute('height',Math.round((availableWidth*ratioHeight)/ratioWidth));else{if(attrWidth&&attrHeight)image.setAttribute('height',Math.round((availableWidth*attrHeight)/attrWidth));}image.onload=function(){this.setAttribute('data-loaded',1);image.removeAttribute('data-loading');if(cover||!ratioWidth||!ratioHeight){this.setAttribute('width',Math.floor(this.width));this.setAttribute('height',Math.floor(this.height));}};};const resizeObserver=new ResizeObserver((entries)=>
8{for(let entry of entries){const images=entry.target.querySelectorAll('img[data-srcset]');images.forEach((image)=>{updateImage(image);});}});let lazyLoadingThreshold=1250;if(drupalSettings?.easyResponsiveImages?.lazyLoadingThreshold)lazyLoadingThreshold=parseInt(drupalSettings.easyResponsiveImages.lazyLoadingThreshold);const connection=navigator.connection;const connectionType=connection?.effectiveType;const connectionSaveData=connection?.saveData;if(connectionType==="3G"||connectionSaveData)lazyLoadingThreshold=lazyLoadingThreshold*2;const intersectionObserver=new IntersectionObserver((entries)=>{for(let entry of entries)if(entry.isIntersecting){intersectionObserver.unobserve(entry.target);updateImage(entry.target);resizeObserver.observe(entry.target.parentNode);}},{rootMargin:lazyLoadingThreshold+'px'});images.forEach((image)=>{if(image.hasAttribute('data-observed'))return;image.setAttribute('data-observed','1');if(image.hasAttribute('loading')&&image.getAttribute('loading')==='lazy'){image.removeAttribute('src');intersectionObserver.observe(image);}else{updateImage(image);resizeObserver.observe(image.parentNode);}});}};})(Drupal,drupalSettings);;
9(function(Drupal,once){Drupal.behaviors.oxfcms_media_gallery_admin={attach:(context)=>{once('mediaNameTooltip','.media-library-item__name',context).forEach((el)=>{el.title=el.textContent.trim();});}};})(Drupal,once);;
10(function(Drupal,debounce){Drupal.imageSrcsetSwap=function(){const allImageSrcsetSwap=debounce(function(){document.querySelectorAll('img.oxfcms-image-srcset-swap').forEach((image)=>{let imageSrcSet=image.getAttribute('data-oxfcms-srcset');let imageSrcSetSplit=imageSrcSet.split(',');let displaySrc=image.getAttribute('src');let widthBreakString='';const devicePixelRatio=Math.max(Number(window.devicePixelRatio)||1,1);const targetWidth=window.outerWidth*devicePixelRatio;imageSrcSetSplit.forEach((srcLine)=>{let srcLineSrc=srcLine.split(' ')[0];let srcLineWidth=Number(srcLine.split(' ')[1].replace('w',''));if(srcLineWidth<targetWidth){displaySrc=srcLineSrc;widthBreakString='srcset '+srcLineWidth;}});image.setAttribute('src',displaySrc);});},250);window.addEventListener('resize',allImageSrcsetSwap,true);allImageSrcsetSwap();};Drupal.behaviors.oxfcms_image_srcset_swap={attach:function(context,settings){Drupal.imageSrcsetSwap();}};})(Drupal,Drupal.debounce);;
11Drupal.behaviors.oxfcms_components={attach:function(context,settings){function wrapOxfCmsTextTables(){const tables=document.querySelectorAll('.oxfcms-text table');tables.forEach((table)=>{if(!table.parentElement.classList.contains('oxfcms-text-table-wrapper')){const wrapperDiv=document.createElement('div');wrapperDiv.classList.add('oxfcms-text-table-wrapper');table.parentNode.insertBefore(wrapperDiv,table);wrapperDiv.appendChild(table);}});}wrapOxfCmsTextTables();}};;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.