function getCookie(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length >= 2) return parts.pop().split(";").shift(); } var rtPending = []; var rtRetryTimer = null; function rtResolveClickId() { var clickId = getCookie('rtkclickid-store'); if (!clickId || clickId === 'undefined') { clickId = sessionStorage.getItem("rtkclickid"); } if (!clickId || clickId === 'undefined') return null; return clickId; } function rtFireEvent(hostname, type, clickId) { var url = `${hostname}/postback?clickid=${clickId}&type=${type}&eventid=${clickId}`; var sent = false; if (navigator.sendBeacon) { try { sent = navigator.sendBeacon(url); } catch (e) { sent = false; } } if (!sent) { var xhr = new XMLHttpRequest; xhr.open("GET", url); xhr.send(); } if (type === 'viewcontent' || type === 'addtocart') { var xhr2 = new XMLHttpRequest; xhr2.open("POST", '/cart/update.js'); xhr2.setRequestHeader("Content-Type", "application/json"); xhr2.send( JSON.stringify({ attributes: { '__clickid': clickId, } }) ); } } function rtScheduleRetry() { if (rtRetryTimer) return; rtRetryTimer = setTimeout(function () { rtRetryTimer = null; rtFlushPending(); if (rtPending.length) rtScheduleRetry(); }, 1000); } function rtFlushPending() { var clickId = rtResolveClickId(); if (!clickId) return; while (rtPending.length) { var e = rtPending.shift(); rtFireEvent(e.hostname, e.type, clickId); } } function submitEvent(hostname, type) { console.log(type); var clickId = rtResolveClickId(); if (!clickId) { rtPending.push({ hostname: hostname, type: type }); rtScheduleRetry(); return; } rtFireEvent(hostname, type, clickId); } window.addEventListener('pagehide', rtFlushPending); document.addEventListener('visibilitychange', function () { if (document.visibilityState === 'hidden') rtFlushPending(); }); function detectProductByMeta() { try { return meta && meta.product; } catch (e) { return false; } } function detectProductByCartForm() { return document.querySelector("form[action='/cart/add']"); } var rtPathArray = document.currentScript.src.split('/'); var rtProtocol = rtPathArray[0]; var rtHost = rtPathArray[2]; var rtHostname = rtProtocol + '//' + rtHost; var rtCartFormDetected = false; var rtIsProduct = false; document.addEventListener("DOMContentLoaded", function () { if (detectProductByMeta() || detectProductByCartForm()) { rtIsProduct = true; } else { var path = window.location.pathname; var potentialHandle = path.substring(path.lastIndexOf("/") + 1); var xhr = new XMLHttpRequest; xhr.onreadystatechange = function () { if (xhr.status == 200) { submitEvent(rtHostname, 'viewcontent'); } }; xhr.open("GET", `/products/${potentialHandle}.json`); xhr.send(); } if (rtIsProduct) { submitEvent(rtHostname, 'viewcontent'); document.body.addEventListener('click', function (event) { if (event.target.className && event.target.className.toString().indexOf('shopify-payment-button__button') !== -1) { submitEvent(rtHostname, 'buynow'); } }); } }); (function () { var open = window.XMLHttpRequest.prototype.open; function openReplacement() { this.addEventListener("load", function () { if (this._url && this._url.indexOf('/products/') !== -1 && this._url.indexOf('view=ajax') !== -1) { submitEvent(rtHostname, 'viewcontent'); setTimeout(function () { var cartForms = document.querySelectorAll("form[action='/cart/add']"); if (cartForms) { cartForms.forEach(function (cartForm) { cartForm.addEventListener("submit", function (e) { submitEvent(rtHostname, 'addtocart'); rtCartFormDetected = true; }); }); } }, 2000); } var url = this._url ? this._url.split('?')[0] : this._url; url = url ? url.split('&')[0] : url; url = url ? url.substr(url.indexOf('/cart/') !== -1 ? url.indexOf('/cart/') : 0) : url; if ( [ `/cart/add`, `/cart/add.js`, //`/cart/update.js`, //`/cart/change.js`, //`/cart/clear.js`, ].includes(url)) { if (!rtCartFormDetected) { submitEvent(rtHostname, 'addtocart'); } } }); return open.apply(this, arguments); } window.XMLHttpRequest.prototype.open = openReplacement; })(); (function (ns, fetch) { if (typeof fetch !== 'function') return; ns.fetch = function () { var response = fetch.apply(this, arguments); response.then(res => { var url = res.url ? res.url.split('?')[0] : res.url; url = url ? url.split('&')[0] : url; url = url ? url.substr(url.indexOf('/cart/') !== -1 ? url.indexOf('/cart/') : 0) : url; if ([ `/cart/add`, `/cart/add.js`, //`/cart/update.js`, //`/cart/change.js`, //`/cart/clear.js`, ].includes(url)) { res.clone().json().then(data => { if (!rtCartFormDetected) { submitEvent(rtHostname, 'addtocart'); } }); } }); return response; } }(window, window.fetch))