// helper functions
function pfc_getParameterByName(name, url = window.location.href) {
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
function pfc_setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function pfc_getCookie(cname) {
let name = cname + "=";
let ca = document.cookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
// main process
function pfc_main()
{
var oldPFCE=pfc_getCookie("PFCE"); // get an existing cookie
// see if 3rd party values have been passed in by a profundcom link
var PFCE=pfc_getParameterByName("PFCE");
var PFCT=pfc_getParameterByName("PFCT");
var PFCN=pfc_getParameterByName("PFCN");
if(PFCE)
{
// data is in the query string - clean it
var cleanhref=window.location.href;
cleanhref=cleanhref.replace("&PFCE="+PFCE,"");
cleanhref=cleanhref.replace("&PFCT="+PFCT,"");
cleanhref=cleanhref.replace("&PFCN="+PFCN,"");
if(cleanhref.endsWith("?"))
cleanhref=cleanhref.substring(0,cleanhref.length-1);
history.pushState({}, document.title, cleanhref)
}
if(!oldPFCE) //have we already set a 1st pary cookie, if not see if 3rd pery will work
{
var new_script = document.createElement('script');
new_script.setAttribute('src','https://waystone.profundcom.net/dms/w.php?PFCC=true');
document.head.appendChild(new_script);
return;
}
if(PFCE)
{ //values from link in query params
pfc_setCookie("PFCE",PFCE, 30);
pfc_setCookie("PFCT",PFCT, 30);
pfc_setCookie("PFCN",PFCN, 30);
}
else
{
//values from 1st party cookies
PFCE=oldPFCE;
PFCT=pfc_getCookie("PFCT");
PFCN=pfc_getCookie("PFCN");
}
if(!PFCE)
{
// set dummy as it would be in 3rd party
PFCE=dummyPFCE;
pfc_setCookie("PFCE",PFCE, 30);
PFCT=dummyPFCT;
pfc_setCookie("PFCT",PFCT, 30);
}
// call the tracked with the data we have from query string or 1st party cookie
var new_script = document.createElement('script');
new_script.setAttribute('src','https://waystone.profundcom.net/dms/w.php?PFCE='+PFCE+'&PFCT='+PFCT+'&PFCN='+PFCN+'&oldPFCE='+oldPFCE);
document.head.appendChild(new_script);
}
pfc_main();