!function(w){function gtag(){dataLayer.push(arguments)}window.heeetSaved=!1,window.heeetParams={},window.heeetJourneyParams={},window.dataLayer=window.dataLayer||[];const HEEEET_KEYS={gclidInput:"gclid",msclkidInput:"msclkid",linkedinidInput:"li_fat_id",facebookidInput:"fbc_id",referrerInput:"utm_referrer",campaignNameInput:"utm_campaign",campaignSourceInput:"utm_source",campaignMediumInput:"utm_medium",campaignKeywordInput:"utm_keyword",campaignAdGroupInput:"utm_adgroup",onlineChannelInput:"channel",landingUrlInput:"landing_url",datetimeInput:"datetime"},HEEET_INCREMENTAL_KEYS={seoIncrementalInput:"channel_incremental.SEO",directIncrementalInput:"channel_incremental.Direct",otherIncrementalInput:"channel_incremental.Other",googleIncrementalInput:"channel_incremental.SEA.google",linkedinIncrementalInput:"channel_incremental.SEA.linkedin",facebookIncrementalInput:"channel_incremental.SEA.facebook",bingIncrementalInput:"channel_incremental.SEA.bing"},_MS_PER_DAY=6e4,BACK_TRACKING=["mooncard","ringover","seedrs","smokeball","2n","xendit"].filter(d=>window.location.host.includes(d)).length>=1||!0===window.backtracking;var debug,isLocalStorageAvailable=function(){try{return window.localStorage,!0}catch(e){return!1}},dateDiffInMinutes=function(a,b){const utc1=Date.UTC(a.getFullYear(),a.getMonth(),a.getDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds()),utc2=Date.UTC(b.getFullYear(),b.getMonth(),b.getDate(),b.getUTCHours(),b.getUTCMinutes(),b.getUTCSeconds());return debugEnabled&&(console.log("---"),console.log("date diff : "),console.log(Math.floor((utc2-utc1)/6e4)),console.log("---")),Math.floor((utc2-utc1)/6e4)},debugEnabled=function(){const url=new URL(window.location.href);return url.searchParams.get("debug")}(),sendDataToIframes=function(){const iframes=document.getElementsByTagName("iframe");iframes&&iframes.length>0&&Array.from(iframes).forEach(iframe=>{const wind=iframe.contentWindow,data={heeet:localStorage.getItem("heeet")};debugEnabled&&(console.log("---"),console.log("posted to subdomain"),console.log(iframe),console.log(data),console.log("---")),wind&&wind.postMessage(data,"*")})};w.onmessage=function(e){e.data&&e.data.heeet&&(debugEnabled&&(console.log("---"),console.log("main domain > sub domain"),console.log(e.data.heeet),console.log("---")),heeetLocalStorage.saveAll(e.data.heeet),main(window.heeetParams))};var getTrackedPageData=function(){var data;if(heeetJourneyParams.contentInfluenceTrackedPages){var currentUrl=new URL(window.location.href),t;heeetJourneyParams.contentInfluenceTrackedPages.filter((function(url){return currentUrl.pathname.startsWith(url)})).length>0&&(data={title:document.title.substring(0,78).replaceAll('"',"").replaceAll("'",""),url:window.location.pathname.substring(0,248)})}return data},getReferrerChannel=function(){var referrer;return document.referrer&&document.referrer.search(window.location.host)<0&&(referrer=document.referrer),referrer&&(new RegExp(["google"].join("|")).test(referrer)?referrer="google":new RegExp(["linkedin"].join("|")).test(referrer)?referrer="linkedin":new RegExp(["bing"].join("|")).test(referrer)?referrer="bing":new RegExp(["facebook"].join("|")).test(referrer)?referrer="facebook":new RegExp(["reddit"].join("|")).test(referrer)&&(referrer="reddit")),referrer},getSEAChannel=function(){var sea_channel;const url=new URL(window.location.href),utmSource=url.searchParams.get("utm_source");var isFacebookAds=!1;return utmSource&&(utmSource.includes("facebook")||utmSource.includes("fbads"))&&(isFacebookAds=!0),url.searchParams.get("gclid")?sea_channel="google":url.searchParams.get("msclkid")?sea_channel="bing":url.searchParams.get("li_fat_id")?sea_channel="linkedin":isFacebookAds||url.searchParams.get("fbc_id")||url.searchParams.get("fbcid")?sea_channel="facebook":url.searchParams.get("rdt_cid")&&(sea_channel="reddit"),sea_channel},getChannel=function(){var channel;const url=new URL(window.location.href),utmMedium=url.searchParams.get("utm_medium"),utmCampaign=url.searchParams.get("utm_campaign");var referrer=null;return document.referrer&&document.referrer.search(window.location.host)<0&&(referrer=document.referrer),url.searchParams.get("gclid")||url.searchParams.get("msclkid")||url.searchParams.get("li_fat_id")||url.searchParams.get("fbc_id")||url.searchParams.get("fbcid")||url.searchParams.get("fbclid")||url.searchParams.get("fbclid")||url.searchParams.get("rdt_cid")?channel="SEA":referrer?"affiliates"===utmMedium?channel="Affiliate":referrer&&(channel=new RegExp(["google","ecosia","qwant","bing"].join("|")).test(referrer)?"SEO":new RegExp(["facebook","linkedin","reddit"].join("|")).test(referrer)?"Social Organic":new RegExp(["g2","capterra","trustpilot","getapp","softwareadvice","techradar"].join("|")).test(referrer)?"Review Site":new RegExp(["chatgpt","gemini","mistral","anthropic","perplexity"].join("|")).test(referrer)?"AI":"Other"):(channel="Direct",utmCampaign&&(channel="Other")),channel},computeInteractionDetails=function(data,visitData){var type=visitData.channel,subType,name,channels={facebook:"Facebook",google:"Google",linkedin:"Linkedin",bing:"Bing"},keywords;if("SEA"===visitData.channel){name=visitData.utm_campaign,visitData.gclid||visitData.msclkid?type="SEA":(visitData.fbc_id||visitData.fbclid||visitData.fbcid||visitData.li_fat_id||visitData.rdt_cid)&&(type="Social Ads");var seaChannel=getSEAChannel();seaChannel&&(subType=channels[seaChannel])}else if("Direct"===visitData.channel)type="Direct",subType=null,name=null,visitData.utm_campaign&&(type="Other",name=visitData.utm_campaign);else if("SEO"===visitData.channel){var refChannel;type="SEO",name=null,(refChannel=getReferrerChannel())&&(subType=channels[refChannel])}else if("Other"===visitData.channel){var refChannel;type="Other",name=visitData.utm_campaign?visitData.utm_campaign:type,(refChannel=getReferrerChannel())&&(subType=channels[refChannel])}visitData.utm_keyword&&(keywords=visitData.utm_keyword);var found=(data=data||[]).find(d=>d.name===name&&d.type===type&&d.subType===subType);for(let i=0;i<data.length;i++)data[i].intermediary=!1,data[i].last=!1;if(found){var index=data.findIndex(d=>d.type===type);data[index].interactions=data[index].interactions+1,data[index].isoDate=(new Date).toISOString(),data[index].keywords=keywords,data[index].intermediary=!0,data[index].last=!0}else{var itm={first:!data||0===data.length,last:!0,intermediary:!0,type:type,subType:subType,name:name,keywords:keywords,source:visitData.utm_source,medium:visitData.utm_medium,adgroup:visitData.utm_adgroup,msclkid:visitData.msclkid,lifatid:visitData.li_fat_id,gclid:visitData.gclid,fbcid:visitData.fbclid,rdtcid:visitData.rdtcid,referrer:visitData.utm_referrer,landingUrl:visitData.landing_url,isoDate:(new Date).toISOString(),interactions:1};data.push(itm)}return data.sort((function(a,b){return new Date(a.isoDate)-new Date(b.isoDate)})),data},computeIncremental=function(channel){var channelIncrem={SEO:0,Direct:0,Other:0,SEA:{linkedin:0,google:0,facebook:0,bing:0}};return"SEA"==channel?channelIncrem.SEA[getSEAChannel()]=1:channelIncrem[channel]=1,channelIncrem},GaExtractor=function(ga,ga4MeasurementId){try{this.ga=ga,this.ga4MeasurementId=ga4MeasurementId}catch(e){}debugEnabled&&(console.log("ga : "),console.log(this.ga))};GaExtractor.prototype.getCid=async function(){const _this=this;return new Promise((function(resolve,reject){gtag("get",_this.ga4MeasurementId,"client_id",client_id=>{resolve(client_id)})}))};var FormLookup=function(formName,formCssSelector){var forms=[];if(formName)Array.isArray(formName)?formName.forEach((function(element){forms.push(document.querySelector('form[name="'+element+'"]'))})):forms.push(document.querySelector('form[name="'+formName+'"]'));else if(formCssSelector)if(Array.isArray(formCssSelector))formCssSelector.forEach((function(cssSelector){const matchedForms=document.querySelectorAll(cssSelector);matchedForms.forEach(form=>{forms.push(form)})}));else{const matchedForms=document.querySelectorAll(formCssSelector);matchedForms.forEach(form=>{forms.push(form)})}else console.log("no form selector");forms=forms.filter((function(el){return null!=el})),debugEnabled&&(console.log("---"),console.log("forms : "),console.log(forms),console.log("---")),this.forms=forms};FormLookup.prototype.hasField=function(classOrName,value){return"name"===classOrName?this.form.querySelector('input[name="'+value+'"], textarea[name="'+value+'"]'):this.form.querySelector(value)},FormLookup.prototype.setField=function(field,value){if(value||0==value){var classOrName=field.classOrName,val=field.value,input=this.hasField(classOrName,val);input||(input=this.createField(classOrName,val),this.form.appendChild(input)),debugEnabled&&(console.log("---"),console.log(`field ${classOrName}: `+val),console.log("value : "+value),console.log(input),console.log("---")),input.setAttribute("value",value),input.value=value}},FormLookup.prototype.createField=function(classOrName,value){var input=document.createElement("input");return input.setAttribute("type","hidden"),input.setAttribute("name",value),input.setAttribute("class",value),input};var UrlDataCollector=function(){this.mappingKey={utm_term:"utm_keyword",fbclid:"fbc_id",fbclid:"fbclid",rdt_cid:"rdtcid"},this.attributes=["utm_source","utm_campaign","utm_medium","utm_adgroup","utm_keyword","utm_term","gclid","msclkid","li_fat_id","fbclid","fbc_id","fbclid","rdt_cid"]};UrlDataCollector.prototype.get=function(){var obj={};const url=new URL(window.location.href);if(this.attributes.forEach(attr=>{var attrVal=url.searchParams.get(attr);this.mappingKey[attr]&&(attr=this.mappingKey[attr],isMapped=!0),obj[attr]||(obj[attr]=attrVal)}),obj.channel=getChannel(),obj.landing_url=(url.hostname+url.pathname).substring(0,220),document.referrer&&document.referrer.search(window.location.host)<0){console.log("document.referrer : ",document.referrer);const refUrl=new URL(document.referrer);obj.utm_referrer=refUrl.origin}return debugEnabled&&(console.log("---"),console.log("Data : "),console.log(obj),console.log("---")),obj};var HeeetLocalStorage=function(){this.name="heeet",this.isAvailable=isLocalStorageAvailable()};HeeetLocalStorage.prototype.isDatabaseExist=function(){return this.isAvailable&&localStorage.getItem(this.name)},HeeetLocalStorage.prototype.getFormattedDatetime=function(){return(new Date).toISOString()},HeeetLocalStorage.prototype.init=function(visitData){if(this.isAvailable){var channelIncrem=computeIncremental(visitData.channel),interactionDetails=computeInteractionDetails([],visitData),contentInfluences=[],customId;visitData.datetime=this.getFormattedDatetime(),visitData.datetime=this.getFormattedDatetime();try{customId=crypto.randomUUID()}catch(e){console.log(e)}var trackedPage=getTrackedPageData();trackedPage&&contentInfluences.push({title:trackedPage.title,url:trackedPage.url,interactions:1,first:!0,last:!0,intermediary:!0,isoDate:(new Date).toISOString()}),this.saveAll(JSON.stringify({channel_incremental:{SEO:channelIncrem.SEO,SEA:channelIncrem.SEA,Direct:channelIncrem.Direct,Other:channelIncrem.Other},incremental_details:interactionDetails,first_visit:visitData,last_visit:visitData,content_influences:contentInfluences,createdAt:new Date,updatedAt:new Date,customId:customId}))}},HeeetLocalStorage.prototype.saveAll=function(data){localStorage.setItem(this.name,data)},HeeetLocalStorage.prototype.set=function(name,value,updateDate){if(this.isAvailable){var heeet=JSON.parse(localStorage.getItem(this.name));heeet&&(heeet[name]=value,updateDate&&(heeet.updatedAt=new Date),localStorage.setItem(this.name,JSON.stringify(heeet)))}},HeeetLocalStorage.prototype.get=function(name){if(this.isAvailable){var heeet=JSON.parse(localStorage.getItem(this.name));return name&&heeet?heeet[name]:heeet}};var UserJourney=function(heeetLocalStorage,formLookup,parameters){this.heeetLocalStorage=heeetLocalStorage,this.formLookup=formLookup,this.parameters=parameters};UserJourney.prototype.getCache=async function(){const response=await fetch("https://api.heeet.io/api/journey",{mode:"cors",headers:{"content-type":"application/json"}}),data=await response.text();return debugEnabled&&(console.log("---"),console.log("back tracking : "),console.log(data),console.log("---")),data},UserJourney.prototype.saveIncremental=function(visitData){var incre=this.heeetLocalStorage.get("channel_incremental");if(incre)if("SEA"==visitData.channel){var seaChannel=getSEAChannel();incre[visitData.channel][seaChannel]?incre[visitData.channel][seaChannel]++:incre=computeIncremental(visitData.channel)}else incre[visitData.channel]++;else incre=computeIncremental(visitData.channel);var details=this.heeetLocalStorage.get("incremental_details"),interactionDetails=computeInteractionDetails(details,visitData);this.heeetLocalStorage.set("incremental_details",interactionDetails),visitData.datetime=this.heeetLocalStorage.getFormattedDatetime(),this.heeetLocalStorage.set("last_visit",visitData),this.heeetLocalStorage.set("channel_incremental",incre)},UserJourney.prototype.saveTrackedPage=function(){var trackedPage=getTrackedPageData();if(console.log(trackedPage),trackedPage){var contentInfluences=this.heeetLocalStorage.get("content_influences");if(contentInfluences){var currentInfIndex=contentInfluences.findIndex(c=>c.title===trackedPage.title);if(currentInfIndex>=0)(contentInfluences=contentInfluences.map((inf,i)=>(inf.last=!1,inf)))[currentInfIndex]={...contentInfluences[currentInfIndex],intermediary:!0,last:!0,interactions:contentInfluences[currentInfIndex].interactions+1,isoDate:(new Date).toISOString()},debugEnabled&&(console.log("---"),console.log("Content influences updated"),console.log(contentInfluences),console.log("---"));else{var newInf={title:trackedPage.title,url:trackedPage.url,first:!0,intermediary:!0,last:!0,isoDate:(new Date).toISOString(),interactions:1};contentInfluences.length>0&&(contentInfluences=contentInfluences.map((inf,i)=>(inf.last=!1,inf)),newInf.first=!1),contentInfluences.push(newInf)}}else{var newInf={title:trackedPage.title,url:trackedPage.url,interactions:1,first:!0,intermediary:!0,last:!0,isoDate:(new Date).toISOString()};(contentInfluences=[]).push(newInf)}this.heeetLocalStorage.set("content_influences",contentInfluences)}},UserJourney.prototype.saveInStorage=async function(visitData,sessionDuration){BACK_TRACKING&&this.getCache().then(data=>{data?(this.heeetLocalStorage.saveAll(data),this.saveTrackedPage()):(this.heeetLocalStorage.init(visitData),this.saveTrackedPage())}),this.heeetLocalStorage.isDatabaseExist()?(debugEnabled&&(console.log("---"),console.log("Session duration"),console.log(sessionDuration),console.log("---")),this.saveTrackedPage(),null==this.heeetLocalStorage.get("updatedAt")||dateDiffInMinutes(new Date(this.heeetLocalStorage.get("updatedAt")),new Date)>=sessionDuration?(this.heeetLocalStorage.set("updatedAt",new Date),this.saveIncremental(visitData),sendDataToIframes(),debugEnabled&&(console.log("---"),console.log("storage Updated"),console.log("---"))):sendDataToIframes()):(this.heeetLocalStorage.init(visitData),sendDataToIframes()),BACK_TRACKING&&(await fetch("https://api.heeet.io/api/journey",{mode:"cors",headers:{"content-type":"application/json"},body:JSON.stringify(this.heeetLocalStorage.get()),method:"POST"}),window.heeetSaved=!0)},UserJourney.prototype.addCidToForm=function(parameters,cid){if(parameters.data){var content=this.heeetLocalStorage.get();content.cid=cid,delete content.content_influences,this.formLookup.setField({classOrName:"."===parameters.data[0]?"class":"name",value:parameters.data},JSON.stringify(content))}else["first","last"].forEach(att=>{if(parameters[att]&&parameters[att].cidInputName){var classOrName=parameters[att].cidInputName?"name":"class",attr=parameters[att].cidInputName?parameters[att].cidInputName:parameters[att].cidInputClass;this.formLookup.setField({classOrName:classOrName,value:attr},cid)}})},UserJourney.prototype.saveToForm=function(parameters){const _this=this;_this.formLookup.forms.forEach((function(form){if(_this.formLookup.form=form,parameters.leadId){const data=heeetLocalStorage.get();_this.formLookup.setField({classOrName:"."===parameters.leadId[0]?"class":"name",value:parameters.leadId},JSON.stringify(data.customId))}if(parameters.data){const data=_this.heeetLocalStorage.get();parameters.contentInfluences&&data&&data.content_influences&&(_this.formLookup.setField({classOrName:"."===parameters.contentInfluences[0]||"#"===parameters.contentInfluences[0]?"class":"name",value:parameters.contentInfluences},JSON.stringify(data.content_influences)),delete data.content_influences,_this.formLookup.setField({classOrName:"."===parameters.data[0]||"#"===parameters.data[0]?"class":"name",value:parameters.data},JSON.stringify(data)))}else{const firstClickFields={},lastClickFields={};for(const[key,field]of Object.entries(HEEEET_KEYS)){if(parameters.first&&(parameters.first[key+"Name"]||parameters.first[key+"Class"])){var classOrName=parameters.first[key+"Name"]?"name":"class";firstClickFields[key]={classOrName:classOrName,field:field,value:"name"===classOrName?parameters.first[key+"Name"]:parameters.first[key+"Class"]}}if(parameters.last&&(parameters.last[key+"Name"]||parameters.last[key+"Class"])){var classOrName=parameters.last[key+"Name"]?"name":"class";lastClickFields[key]={classOrName:classOrName,field:field,value:"name"===classOrName?parameters.last[key+"Name"]:parameters.last[key+"Class"]}}}var ls,ls,ls,ls;if(ls=heeetLocalStorage.get("first_visit"))for(const object in firstClickFields){var fcData=firstClickFields[object];_this.formLookup.setField({classOrName:fcData.classOrName,value:fcData.value},ls[fcData.field])}if(ls=heeetLocalStorage.get("last_visit"))for(const object in lastClickFields){var lcData=lastClickFields[object];_this.formLookup.setField({classOrName:lcData.classOrName,value:lcData.value},ls[lcData.field])}if(parameters.timezoneInputName||parameters.timezoneInputClass)if(ls=_this.heeetLocalStorage.get("timezone")){var classOrName=parameters.timezoneInputName?"name":"class";_this.formLookup.setField({classOrName:classOrName,value:"name"===classOrName?parameters.timezoneInputName:parameters.timezoneInputClass},_this.heeetLocalStorage.get("timezone"))}if(parameters.incrementalDetailsInputName||parameters.incrementalDetailsInputClass)if(ls=_this.heeetLocalStorage.get("incremental_details")){var classOrName=parameters.incrementalDetailsInputName?"name":"class";_this.formLookup.setField({classOrName:classOrName,value:"name"===classOrName?parameters.incrementalDetailsInputName:parameters.incrementalDetailsInputClass},JSON.stringify(_this.heeetLocalStorage.get("incremental_details")))}for(const key in HEEET_INCREMENTAL_KEYS)if(parameters[key+"Name"]||parameters[key+"Class"]){var classOrName=parameters[key+"Name"]?"name":"class",lsKey=HEEET_INCREMENTAL_KEYS[key].split(".");_this.heeetLocalStorage.get(lsKey[0])&&_this.formLookup.setField({classOrName:classOrName,value:"name"===classOrName?parameters[key+"Name"]:parameters[key+"Class"]},2==lsKey.length?_this.heeetLocalStorage.get(lsKey[0])[lsKey[1]]:_this.heeetLocalStorage.get(lsKey[0])[lsKey[1]][lsKey[2]])}}}))};const urlDataCollector=new UrlDataCollector,heeetLocalStorage=new HeeetLocalStorage;var sendDataToFiery=function(heeetParams){var params=heeetLocalStorage.get();if(window.location.host.includes("sharelawyers")&&window.heeetParams.publishableKey&&fetch(`https://api.heeet.io/api/hit?publishableKey=${window.heeetParams.publishableKey}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(params)}).then(response=>console.log(response)),heeetParams||(heeetParams=window.heeetParams),heeetParams.publishableKey){const formlookup=new FormLookup(null,heeetParams.formCssSelector),userJourney=new UserJourney(heeetParams,formlookup);heeetParams.formCssSelector.forEach((function(cssSelector){const form=document.querySelector(cssSelector);form&&(userJourney.saveToForm(heeetParams),form.addEventListener("submit",(function(event){fetch(`https://api.heeet.io/api/hit?publishableKey=${heeetParams.publishableKey}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(params)}).finally(response=>{console.log("Form submitted: ")})})))}))}else console.error("no heeet publishableKey set")},main=function(parameters){window.heeetParams=parameters;const formlookup=new FormLookup(parameters.formName,parameters.formCssSelector),userJourney=new UserJourney(heeetLocalStorage,formlookup);parameters&&parameters.sessionDuration&&saveJourney(parameters,null),userJourney.saveToForm(parameters);var interval=1e3;window.setTimeout((async function(){if(parameters.ga4MeasurementId){const gaExtractor=new GaExtractor(gtag,parameters.ga4MeasurementId),cid=await gaExtractor.getCid();heeetLocalStorage.set("cid",cid),gaExtractor.ga&&formlookup.forms.forEach((async function(form){formlookup.form=form,userJourney.addCidToForm(parameters,cid)}))}else window.setTimeout(arguments.callee,1e3)}),1e3)},saveJourney=function(parameters,formLookup){window.heeetJourneyParams=parameters;const sessionDuration=parameters&&null!==parameters.sessionDuration?parameters.sessionDuration:24,userJourney=new UserJourney(heeetLocalStorage,formLookup,parameters),visitData=urlDataCollector.get();BACK_TRACKING||sendDataToIframes(parameters),userJourney.saveInStorage(visitData,sessionDuration)};heeet=main,heeetSaveJourney=saveJourney,heeetSendDataToFiery=sendDataToFiery,window.Heeet={},window.Heeet.track=main,window.Heeet.send=sendDataToFiery,window.Heeet.saveJourney=saveJourney,window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"user-journey-loaded"})}(window);