(()=>{"use strict";const debugMode=!1,disableClicks=!1,measureScrollDepth=!1,thresholds=[20,40,60,80,100],reachedThresholds=new Set,culture=document.documentElement.lang||"en",debugLog=(data,title="")=>{debugMode&&console.log(title,JSON.stringify(data,null,4))},addListener=(elem,eventName,handler)=>{elem&&elem.addEventListener(eventName,handler)},addListeners=(elems,eventName,handler)=>{elems&&Array.from(elems).forEach(elem=>addListener(elem,eventName,handler))},getPageContentType=()=>document.body.dataset.template??"",getPageId=()=>document.body.dataset.id??"",isTemplate=template=>getPageContentType()===template,throttle=(func,limit)=>{let lastFunc,lastRan;return function(...args){const context=this;lastRan?(clearTimeout(lastFunc),lastFunc=setTimeout(()=>{Date.now()-lastRan>=limit&&(func.apply(context,args),lastRan=Date.now())},limit-(Date.now()-lastRan))):(func.apply(context,args),lastRan=Date.now())}},checkScrollDepth=(eventName,model)=>{const scrollTop=window.pageY||document.documentElement.scrollTop,docHeight=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),winHeight=window.innerHeight,scrollPercent=scrollTop/(docHeight-winHeight)*100;thresholds.forEach(threshold=>{scrollPercent>=threshold&&!reachedThresholds.has(threshold)&&(reachedThresholds.add(threshold),model.scroll_depth=threshold,pushEvent(eventName,model))})},parentElementExists=(element,selector)=>element.closest(selector)!==null,getContentTypeFromParent=(element,fallback)=>{const mapping={"#js-related-jobs":"related_jobs","#js-job-search-results":"search_results_jobs","#js-recently-viewed-jobs":"recently_viewed_jobs","#js-latest-jobs-list":"latest_jobs","#js-recommended-jobs":"recommended_jobs","#js-job-block":"block_jobs"};for(const selector in mapping)if(parentElementExists(element,selector))return mapping[selector];return fallback},getSection=element=>{if(!element)return"";const sectionEl=element.closest("section")||element.closest("aside")||element.closest("nav")||element.closest("div")||document.querySelector("body");return sectionEl?sectionEl.className||"":""},parseQueryString=qs=>{const params={};return qs.split("&").forEach(pairStr=>{const[key,value]=pairStr.split("=");if(key){const decodedKey=decodeURIComponent(key);let decodedValue=value?decodeURIComponent(value).replace(/\++/g," ").trim():"";params[decodedKey]===undefined?params[decodedKey]=decodedValue:(Array.isArray(params[decodedKey])||(params[decodedKey]=[params[decodedKey]]),params[decodedKey].push(decodedValue))}}),params},getModelFromSchema=elem=>{if(!elem)return null;try{const schema=JSON.parse(elem.textContent);debugLog(schema,"Job Posting Schema");const locations=[],loc=schema.jobLocation;return Array.isArray(loc)?loc.forEach(l=>{l.address&&l.address.addressCountry&&l.address.addressRegion&&l.address.addressLocality?locations.push({name:l.name||"",country:l.address.addressCountry,region:l.address.addressRegion,city:l.address.addressLocality}):debugLog(l,"Incomplete address information for location:")}):loc?.address?locations.push({name:loc.name||"",country:loc.address.addressCountry||"",region:loc.address.addressRegion||"",city:loc.address.addressLocality||""}):debugLog(loc,"jobLocation is missing or malformed:"),{job_params:{title:schema.title||"",id:schema.identifier||"",locations,contract_type:schema.employmentType||"",category:schema.industry||"",posted_date:schema.datePosted||""},global_params:{site_language:culture},origin_params:{page_path:window.location.pathname,content_type:"job"}}}catch(error){return console.error("Error parsing JobPosting schema:",error),null}},createGlobalParams=element=>({global_params:{site_language:culture,page_type:getPageContentType(),page_id:getPageId()},origin_params:{page_path:window.location.pathname,referrer:document.referrer,section:element?getSection(element):""}}),createJobDetailScrollModel=(id,title)=>{const model=createGlobalParams();return model.job_params={id,title},model},createBlogPostScrollModel=(title,category,posted_date)=>{const model=createGlobalParams();return model.blog_params={title,category,posted_date},model},pushEvent=(eventName,model)=>{dataLayer.push({event:eventName,...model}),debugLog(model,eventName)},pushClickEvent=(eventType,paramsKey,target,defaultContentType,contentTypeOverride=null)=>{const link=target.closest("a")||target,model=createGlobalParams(link);model[paramsKey]={name:link.innerText||link.title||target?.src||"",link:link.getAttribute("href")||"#",target:link.getAttribute("target")||"_self",id:link.id||"",cssClasses:link.className||""};model.origin_params.content_type=contentTypeOverride||link.dataset.type||target.dataset.type||defaultContentType;link.dataset.lang&&(model[paramsKey].lang_code=link.dataset.lang);pushEvent(eventType,model)},pushNavClickEvent=(target,contentType=null)=>pushClickEvent("nav_interaction","nav_params",target,"nav",contentType),pushFooterClickEvent=target=>pushClickEvent("footer_interaction","footer_params",target,"footer"),pushCtaClickEvent=(target,contentType=null)=>pushClickEvent("cta_interaction","cta_params",target,"cta",contentType),pushShareEvent=(eventName,model,target)=>{const anchor=target.closest("a");if(anchor){const method=anchor.getAttribute("aria-label")||"",url=anchor.getAttribute("href")||"",shareModel={...model,share_params:{method,destination:url}};pushEvent(eventName,shareModel)}},handlePageInfoView=()=>{const model=createGlobalParams();pushEvent("page_info",model)},handleJobBoardPage=()=>{const jobBoardPage=document.querySelector(".js-template-jobBoard");if(jobBoardPage){const model=createGlobalParams(),qs=window.location.search.substring(1),qsObj=qs?parseQueryString(qs):{},{origin:extractedOrigin="main_search",...otherQueryParams}=qsObj;model.job_filter_params=otherQueryParams;model.origin_params.content_type=extractedOrigin;const resultsElem=document.getElementById("js-job-search-results"),results=resultsElem?parseInt(resultsElem.dataset.results)||0:0;model.results_volume=results;model.filters_applied=Object.values(model.job_filter_params).some(Boolean);pushEvent("job_search",model)}},handleJobDetailPage=()=>{const jobDetailPage=document.getElementById("js-job-detail");if(jobDetailPage){const schemaScript=document.getElementById("js-job-posting"),model=getModelFromSchema(schemaScript)||createGlobalParams();model.job_params.id=jobDetailPage.dataset.id||model.job_params.id;model.global_params.page_type=getPageContentType();model.global_params.page_id=getPageId();model.origin_params.referrer=document.referrer;model.origin_params.section="";pushEvent("job_detail_view",model);addListeners(document.getElementsByClassName("js-apply-now"),"click",()=>pushEvent("job_apply_click",model));addListeners(document.querySelectorAll("#js-job-share a"),"click",e=>pushShareEvent("job_detail_share",model,e.target));measureScrollDepth&&window.addEventListener("scroll",throttle(()=>checkScrollDepth("job_detail_scroll",createJobDetailScrollModel(model.job_params.id,model.job_params.title)),200))}},handleApplicationForm=()=>{const applicationForm=document.getElementById("js-application-form");if(applicationForm){const model=createGlobalParams();model.job_params={id:applicationForm.dataset.jobref,title:applicationForm.dataset.jobtitle};pushEvent("job_apply_overlay_view",model);addListener(applicationForm,"submit",()=>pushEvent("job_apply_overlay_submit",model))}},handleApplicationCompleted=()=>{const appCompleted=document.getElementById("js-application-completed");if(appCompleted){const model=createGlobalParams();model.job_params={id:appCompleted.dataset.jobref,title:appCompleted.dataset.jobtitle,success:appCompleted.dataset.success,app_id:appCompleted.dataset.appid};pushEvent("job_apply_ats_success",model)}},handleBlogDetailPage=()=>{const blogDetailPage=document.getElementById("js-blog-detail");if(blogDetailPage){const model=createGlobalParams();model.blog_params={title:blogDetailPage.getAttribute("data-blog-title")||"",category:blogDetailPage.getAttribute("data-blog-category")||"",posted_date:blogDetailPage.getAttribute("data-blog-date")||""};pushEvent("blog_detail_view",model);addListeners(document.querySelectorAll(".js-blog-share a"),"click",e=>pushShareEvent("blog_detail_share",model,e.target));measureScrollDepth&&window.addEventListener("scroll",throttle(()=>checkScrollDepth("blog_detail_scroll",createBlogPostScrollModel(model.blog_params.title,model.blog_params.category,model.blog_params.posted_date)),200))}},handleBlogListingPage=()=>{if(isTemplate("blog")||isTemplate("blogCategory")){const model=createGlobalParams(),qs=window.location.search.substring(1),qsObj=qs?parseQueryString(qs):{};model.blog_filter_params=qsObj;model.filters_applied=Object.values(model.blog_filter_params).some(Boolean);const resultsElem=document.getElementById("js-blog-listing"),results=resultsElem?parseInt(resultsElem.dataset.results)||0:0;model.results_volume=results;pushEvent("blog_search",model)}},handleEventListingPage=()=>{if(isTemplate("eventListing")){const model=createGlobalParams(),qs=window.location.search.substring(1),qsObj=qs?parseQueryString(qs):{};model.event_filter_params=qsObj;model.filters_applied=Object.values(model.event_filter_params).some(Boolean);const resultsElem=document.querySelector(".event-listing"),results=resultsElem?parseInt(resultsElem.dataset.results)||0:0;model.results_volume=results;pushEvent("event_search",model)}},handleSiteSearch=()=>{const searchPage=document.getElementById("site-search");if(searchPage){const model=createGlobalParams(),qs=window.location.search.substring(1),qsObj=qs?parseQueryString(qs):{};model.site_filter_params=qsObj;model.filters_applied=Object.values(model.site_filter_params).some(Boolean);const resultsElem=document.getElementById("results"),results=resultsElem?parseInt(resultsElem.dataset.results)||0:0;model.results_volume=results;pushEvent("site_search",model)}},handleJobCardClicks=()=>{setTimeout(()=>{addListeners(document.querySelectorAll(".card-job a.js-view-job"),"click",e=>{disableClicks&&e.preventDefault();const card=e.target.closest(".card-job"),id=card?.dataset.id||"",title=e.target.innerText||"",contentType=getContentTypeFromParent(e.target,"job_card"),model=createGlobalParams(e.target);model.origin_params.content_type=contentType;model.job_params={id,title};pushEvent("job_card_click",model)})},1e3)},handleBlogCardClicks=()=>{addListeners(document.querySelectorAll(".card-blog-summary a.js-view-post"),"click",e=>{disableClicks&&e.preventDefault();const card=e.target.closest(".card-blog-summary"),category=card?.dataset.category||"",post_id=card?.dataset.id||"",title=e.target.innerText||"",post_url=e.target.getAttribute("href")||"";let contentType="blog_card";parentElementExists(e.target,"#js-blog-listing")?contentType="blog_listing":parentElementExists(e.target,".js-related-posts")&&(contentType="blog_related_posts");const model=createGlobalParams(e.target);model.origin_params.content_type=contentType;model.blog_params={title,category,post_id,post_url};pushEvent("blog_card_click",model)})},handleCustomEvents=()=>{const handleJobSave=e=>{const model=createGlobalParams(e.detail.elem);model.origin_params.content_type=getContentTypeFromParent(e.detail.elem,"job_card");debugLog(e.detail,"handleJobSaveEvent");model.job_params={id:e.detail.data.id,title:e.detail.data.title,count:e.detail.count};pushEvent(e.type,model)},handleJobRemoveAll=e=>{const model=createGlobalParams(e.detail.elem);model.job_params={count:e.detail.count};pushEvent(e.type,model)};addListener(window,"job_save_add",handleJobSave);addListener(window,"job_save_remove",handleJobSave);addListener(window,"job_save_remove_all",handleJobRemoveAll);addListener(window,"form_interaction",e=>{const model=createGlobalParams(e.detail.elem);model.form_params=e.detail.form_params;pushEvent("form_interaction",model)})},setupNavigationListeners=()=>{addListeners(document.getElementsByClassName("js-cta-link"),"click",e=>{disableClicks&&e.preventDefault(),pushCtaClickEvent(e.target)}),addListeners(document.querySelectorAll("header .navbar a"),"click",e=>{disableClicks&&e.preventDefault(),pushNavClickEvent(e.target)}),addListeners(document.querySelectorAll(".breadcrumb a"),"click",e=>{disableClicks&&e.preventDefault(),pushNavClickEvent(e.target,"breadcrumb")}),addListeners(document.querySelectorAll("footer a"),"click",e=>{disableClicks&&e.preventDefault(),pushFooterClickEvent(e.target)}),addListeners(document.querySelectorAll("a.js-video"),"click",e=>{disableClicks&&e.preventDefault(),pushCtaClickEvent(e.target,"video_play")})};window.addEventListener("DOMContentLoaded",()=>{typeof dataLayer!="undefined"&&dataLayer?(debugLog(dataLayer,"GTM DataLayer present..."),handlePageInfoView(),handleJobBoardPage(),handleJobDetailPage(),handleApplicationForm(),handleApplicationCompleted(),handleBlogDetailPage(),handleBlogListingPage(),handleEventListingPage(),handleSiteSearch(),handleJobCardClicks(),handleBlogCardClicks(),setupNavigationListeners(),handleCustomEvents()):console.warn("GTM DataLayer not found.")})})();
//# sourceMappingURL=/phb/nmap/dataLayer.js.v87c10722557c6ccb7c7279bf7d31ae26ac20c78d