function loadScript(a, b) { var c = document.getElementsByTagName("head")[0], d = document.createElement("script"); d.type = "text/javascript", d.src = a, d.async = !0, d.onreadystatechange = function() { "complete" == this.readyState || "loaded" == this.readyState }, d.onload = b, c.appendChild(d) } function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; } function getNumbers() { var c = document.documentElement; const regNum = (/((\(\d{3}\) ?)|(\d{3}(-|\.)))?\d{3}(-|\.)\d{4}(?!([^<]*>)|(((?!))/gm) numbers = c.innerHTML.match(regNum); if(!numbers){ numbers = c.innerText.match(regNum); } else if(!!numbers && !!c.innerText.match(regNum)){ numbers = numbers.concat(c.innerText.match(regNum)) } if (numbers != null){ numbers = numbers.filter(function (el) {return el != null;}); numbers = numbers.filter(function(elem,index,self){return index === self.indexOf(elem)}) for (var i = 0; i < numbers.length; i++) { var temp = numbers[i].replace(/[\. ,:\(\)-]+/gi, ""); numbers[i] = temp;} } } function getClientId() { if (typeof ga !== 'undefined') { ga(function() { var trackers = ga.getAll(); for (var i = 0; i < trackers.length; ++i) { var tracker = trackers[i]; var trackerName = tracker.get('name'); var urlClientId = getUrlVars()['clientId'] if (getUrlVars()['clientId']){ ga('create', tracker, { 'clientId': urlClientId }); } ga(function(trackerName) { cb_clientId = tracker.get('clientId'); }); } }); } } function getASCData() { if (typeof asc_datalayer !== 'undefined') { const ascItemId = []; const ascPageType = []; const ascItemNumber = []; for (const key in asc_datalayer) { if (asc_datalayer.hasOwnProperty(key)) { if (key === 'page_type') { ascPageType.push(asc_datalayer[key].toLowerCase()); } if (key === 'item_number') { ascItemNumber.push(asc_datalayer[key].toUpperCase()); } if (key === 'item_id') { ascItemId.push(asc_datalayer[key].toUpperCase()); } if (typeof asc_datalayer[key] === 'object' && asc_datalayer[key].length > 0 && (key === 'items' || key === 'events')) { for (const a of asc_datalayer[key]) { for (const k in a) { if (a.hasOwnProperty(k)) { if (k === 'page_type') { ascPageType.push(a[k].toLowerCase()); } if (k === 'item_number') { ascItemNumber.push(a[k].toUpperCase()); } if (k === 'item_id') { ascItemId.push(a[k].toUpperCase()); } } } } } } } const uniqueValue = (arr) => { if (arr.length > 1) { return arr.every((item) => item === arr[0]) ? arr[0] : 0; } return arr[0]; }; ascItemIdResult = uniqueValue(ascItemId); ascPageTypeResult = uniqueValue(ascPageType); ascItemNumberResult = uniqueValue(ascItemNumber); } } async function gtagPull(g) { return new Promise(resolve => { gtag('get', 'G-XXXXXXXX', g, resolve) }) } function getGoogleData(t, g) { return new Promise((resolve,reject) => { // start timeout const timeoutID = setTimeout( () => reject(-1), t ); // start calculation gtagPull(g).then(result => { clearTimeout(timeoutID); resolve(result); }); }); } async function runWebsiteTracking() { getNumbers(); try { await getGoogleData(500,'client_id').then((id) => {cb_clientId = id}); await getGoogleData(500,'session_id').then((id) => {sessionId = id}); await getGoogleData(500,'session_number').then((id) => {sessionNumber = id}); } catch (e) { console.warn('gtag not compelted in time ', e) } if (!cb_clientId) { getClientId(); } getASCData(); if ( window.location.href.indexOf('dentistesrema.com') > -1 || window.location.href.indexOf('citybark.com') > -1 || window.location.href.indexOf('petsuitesofamerica.com') > -1){ setTimeout(function() {loadScript(tracking_domain + "/wgxpath.install.js", main_tracking)},750) } else { loadScript(tracking_domain + "/wgxpath.install.js", main_tracking); } } var tlc = 0; var pm = ""; var dpdid = 0; var cb_clientId; var sessionId; var sessionNumber; var ascItemIdResult = 0; var ascPageTypeResult = 0; var ascItemNumberResult = 0; var ascReRun = 0; var numbers = []; var tracking_domain = "//tracking.callmeasurement.com", main_tracking = function() { function b(a) { a(); } wgxpath.install(); var a = { url: tracking_domain + "/tracking.cfm?u=" + (new Date).getTime(), debug: !0, init: function() { a.debug = "cidev" == a.__getURLParam("debug"), a.debug && console.log("init() called - " + (new Date).toUTCString()), request = {}, request.c = encodeURIComponent(document.URL), request.p = encodeURIComponent(document.referrer), request.cookies = {}, request.sessionId = sessionId, request.sessionNumber = sessionNumber, request.ascItemId = ascItemIdResult, request.ascPageType = ascPageTypeResult, request.ascItemNumber = ascItemNumberResult, request.clientId = cb_clientId, request.numbers = numbers, request.cookies.wtk = a.__getCookie("utm_wtk"), request.cookies.google = {}, request.cookies.google.utma = a.__getCookie("__utma"), request.cookies.google.utmz = a.__getCookie("__utmz"), request.cookies.ci = {}, request.cookies.ci.dpd = a.__getCookie("__dpd"), request.cookies.ci.gclid = a.__getCookie("__gclid"), a.gclid = a.__getURLParam("gclid"), a.gclid && a.__setCookie("__gclid", a.gclid, 90), "undefined" != typeof external_id && (request.external_id = external_id), "undefined" != typeof favlocation && (request.locationid = favlocation.location_id), "undefined" != typeof s && "object" == typeof s && "undefined" != typeof s.contextData && "undefined" != typeof s.contextData['hg.userID'] && (request.hg_userid = s.contextData['hg.userID']), a.debug && console.log(request); var b = a.__getHttpRequestObj(); null != b && a.call(b, request), a.debug && console.log(b) }, call: function(b, c) { a.debug && console.log("call() called - " + (new Date).toUTCString()), b.open("POST", a.url, !0), b.send(JSON.stringify(c)) }, __doNumberSwitch: function(b) { a.debug && console.log("doNumberSwitch() test called - " + (new Date).toUTCString()); if ("" != b.webSMS) { var script = document.createElement("script"); script.type = "text/javascript", script.src = "//callmeasurement.com/webSMS/js/webSMS3.js", document.body.appendChild(script), setTimeout(function() { $("body").append(b.webSMS) }, 500) } pm = b.poolnumber; dpdid = b.dpdid; if (b.numbersToChange2 !== '') { for (var c, d, e, f, g, h = document.getElementsByTagName("*"), j = [], k = "(\\b1\\s*\\.?\\s*)?", l = "([\\(\\)\\-\\u00AD]+\\s*)?", m = "[\\s\\(\\)\\-\\.\\u00AD]*", n = 1, o = 0; o < b.numbersToChange2.length; o++) { var i = 0; for (a.debug && console.log("Switching " + b.numbersToChange2[o] + " - " + (new Date).toUTCString()), c = b.numbersToChange2[o].toString().substring(0, 3), d = b.numbersToChange2[o].toString().substring(3, 6), e = b.numbersToChange2[o].toString().substring(6, 10), f = k + l + c + m + d + m + e, f = isNaN(b.numbersToChange2[o]) ? "(\\+?1\\-?\\s*\\.?\\s*)?" + b.numbersToChange2[o].replace(/[\-\(\)\.\s]/g, "\\$&") : k + l + c + m + d + m + e, g = new RegExp(f, "g"), a.debug && console.log(g), dd = document, x = dd.evaluate('.//text()[normalize-space(.)!=""]', dd.body, null, 7, null), i = 0, j = x.snapshotLength; i < j; i++) t = x.snapshotItem(i), t.data.search(g) == -1 && t.data.search(b.changeNumbersTo[o]) == -1 || (n += 1), t.data = t.data.replace(g, b.changeNumbersTo[o]); for (var p = h.length - 1; p--;) "body" != h[p].tagName.toLowerCase() && "head" != h[p].tagName.toLowerCase() && "script" != h[p].tagName.toLowerCase() && "html" != h[p].tagName.toLowerCase() && "title" != h[p].tagName.toLowerCase() && (void 0 != h[p].innerHTML && h[p].innerHTML.search(g) != -1 || null != h[p].getAttribute("href") && h[p].getAttribute("href").search(g) != -1) && (j[j.length] = h[p], null != h[p].getAttribute("href") && h[p].getAttribute("href").search(g) != -1 && (n += 1, h[p].setAttribute("href", "tel:" + b.changeNumbersTo[o]))) for (var p = h.length - 1; p--;) "body" != h[p].tagName.toLowerCase() && "head" != h[p].tagName.toLowerCase() && "script" != h[p].tagName.toLowerCase() && "html" != h[p].tagName.toLowerCase() && "href" != h[p].tagName.toLowerCase() && (void 0 != h[p].innerHTML && h[p].innerHTML.search(g) != -1 || null != h[p].getAttribute("title") && h[p].getAttribute("title").search(g) != -1) && (j[j.length] = h[p], null != h[p].getAttribute("title") && h[p].getAttribute("title").search(g) != -1 && (n += 1, h[p].title = h[p].title.replace(g, b.changeNumbersTo[o]))) } } else { for (var c, d, e, f, g, h = document.getElementsByTagName("*"), j = [], k = "(\\b1\\s*\\.?\\s*)?", l = "([\\(\\)\\-\\u00AD( )\?]+\\s*)?", m = "[\\s\\(\\)\\-\\.\\u00AD( )\?]*", n = 0, o = 0; o < b.numbersToChange.length; o++) { var i = 0; for (a.debug && console.log("Switching " + b.numbersToChange[o] + " - " + (new Date).toUTCString()), c = b.numbersToChange[o].toString().substring(0, 3), d = b.numbersToChange[o].toString().substring(3, 6), e = b.numbersToChange[o].toString().substring(6, 10), f = k + l + c + m + d + m + e, f = isNaN(b.numbersToChange[o]) ? "(\\+?1\\-?\\s*\\.?\\s*)?" + b.numbersToChange[o].replace(/[\-\(\)\.\s]/g, "\\$&") : k + l + c + m + d + m + e, g = new RegExp(f, "g"), a.debug && console.log(g), dd = document, x = dd.evaluate('.//text()[normalize-space(.)!=""]', dd.body, null, 7, null), i = 0, j = x.snapshotLength; i < j; i++) t = x.snapshotItem(i), t.data.search(g) == -1 && t.data.search(b.poolnumber) == -1 && (n += 1), t.data = t.data.replace(g, b.poolnumber); for (var p = h.length - 1; p--;) "body" != h[p].tagName.toLowerCase() && "head" != h[p].tagName.toLowerCase() && "script" != h[p].tagName.toLowerCase() && "html" != h[p].tagName.toLowerCase() && "title" != h[p].tagName.toLowerCase() && (void 0 != h[p].innerHTML && h[p].innerHTML.search(g) != -1 || null != h[p].getAttribute("href") && h[p].getAttribute("href").search(g) != -1) && (j[j.length] = h[p], null != h[p].getAttribute("href") && h[p].getAttribute("href").search(g) != -1 && (n += 1, h[p].setAttribute("href", "tel:" + b.poolnumber))) for (var p = h.length - 1; p--;) "body" != h[p].tagName.toLowerCase() && "head" != h[p].tagName.toLowerCase() && "script" != h[p].tagName.toLowerCase() && "html" != h[p].tagName.toLowerCase() && "href" != h[p].tagName.toLowerCase() && (void 0 != h[p].innerHTML && h[p].innerHTML.search(g) != -1 || null != h[p].getAttribute("title") && h[p].getAttribute("title").search(g) != -1) && (j[j.length] = h[p], null != h[p].getAttribute("title") && h[p].getAttribute("title").search(g) != -1 && (n += 1, h[p].title = h[p].title.replace(g, b.poolnumber))) } } if (b.mobileDisplay) { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//callmeasurement.com/cari/mobile/js/cari_mobile.js"; document.body.appendChild(script); } if (a.debug && console.log(j), 0 == n) { var q = new window.XMLHttpRequest; if (null != q) { var r = tracking_domain + "/sitelog.cfm?dpid=" + b.dpid + "&dpdid=" + b.dpdid; console.log("No number to rotate!"), q.open("POST", r, !0), q.send() } } }, __doChat: function(b) { a.debug && console.log("doChat() called - " + (new Date).toUTCString()); var c = document.getElementsByClassName("dynamic-chat-button"); void 0 != c[0] && (c[0].innerHTML = b.chaton) }, __handleResponse: function(b) { a.debug && console.log("handleResponse() called - " + (new Date).toUTCString()); var c = JSON.parse(b); if ("error" in c) console.log(c.error); else { a.__doNumberSwitch(c), (a.debug || c.chat_status) && a.__doChat(c); tlc = c.textLineCount; a.debug && console.log('tlc is ' + tlc); for (var d in c.cookies) a.__setCookie(d, c.cookies[d]) } }, __getHttpRequestObj: function() { a.debug && console.log("getHttpRequestObj() called - " + (new Date).toUTCString()); var b = null; if (window.XDomainRequest) b = new XDomainRequest, b.onload = function() { a.__handleResponse(b.responseText) }; else { if (!window.XMLHttpRequest) return null; b = new window.XMLHttpRequest, b.onreadystatechange = function() { 4 == b.readyState && 200 == b.status && a.__handleResponse(b.responseText) } } return b }, __getCookie: function(b) { a.debug && console.log("__getCookie() called for " + b + " - " + (new Date).toUTCString()); var c = document.cookie.split(b + "="); if (2 == c.length) return c.pop().split(";").shift() }, __setCookie: function(b, c, d) { if (a.debug && d != -1 && console.log("__setCookie() called for " + b + " - " + (new Date).toUTCString()), d) { var e = new Date; e.setTime(e.getTime() + 24 * d * 60 * 60 * 1e3); var f = "; expires=" + e.toGMTString() } else var f = ""; document.cookie = b + "=" + c + f + "; path=/" }, __rmCookie: function(b) { a.debug && console.log("__rmCookie() called for " + b + " - " + (new Date).toUTCString()), a.__setCookie(b, "", -1) }, __getURLParam: function(a) { return (a = location.search.match(RegExp("[?&]" + a + "=([^&]*)(&?)", "i"))) ? a[1] : a } }; b(a.init) }; runWebsiteTracking();