var sc = document.currentScript; (function() { var visitTime = null; var visitStart = new Date().getTime(); var url = sc.dataset.endpoint || 'https://img.alceris.com/'; var debug = !!sc.dataset.debug; function _send(type, name, eventData) { if (/(bot|spider|crawl)/i.test(navigator.userAgent) || window.navigator.webdriver) return; // Overwrite type to link when link tracking is active if (sc.dataset.linkTracking) type = 'link'; var data = {}; if (type == 'pageview') { if (visitTime !== null) { data.t = Math.round((new Date().getTime() - visitStart) / 1000); visitStart = new Date().getTime(); } visitTime = 0; data._ = 'pv'; } else if (type == 'outgoing_link') { data._ = 'ol'; data.ol = name; } else if (type == 'event') { data._ = 'ev'; data.en = name; if (eventData) { data.ed = eventData; } } else if (type == 'error') { data._ = 'err'; data.msg = name if (eventData) { data.err = eventData; } } else if (type == 'link') { data._ = 'l'; data.link = sc.dataset.linkTracking; } data.r = document.referrer; data.l = navigator.language; data.loc = window.location.origin + window.location.pathname + window.location.search; data._id = sc.dataset.id; if (!data._id) return; try { data.tz = Intl.DateTimeFormat().resolvedOptions().timeZone; } catch (err) { data.tz = null; } fetch(url, { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json' }, keepalive: true, body: JSON.stringify(data) }); }; function ol(ev) { if (!ev) return; var target = ev.path && ev.path.find(function(n) { return n.tagName === 'A' }); if (!target) { var elem = ev.target; while (elem != null) { if (elem.tagName === 'A') { target = elem; break; } elem = elem.parentElement; } } if(target && target.href.length > 0) { if (target.href.indexOf(window.location.origin) === -1) { _send('outgoing_link', target.href); } else { // User navigates to another page _send('pageview'); } } } if (document.readyState === 'complete') { _send('pageview'); } else { document.addEventListener('readystatechange', function() { if (document.readyState === 'complete') { setTimeout(function() { _send('pageview'); }); } }); } window.document.addEventListener('click', ol); window.document.addEventListener('auxclick', ol); window.addEventListener('visibilitychange', function() { if (document.visibilityState == 'visible') { visitStart = new Date().getTime(); } else if (document.visibilityState == 'hidden') { _send('pageview'); } }); window.addEventListener('pagehide', function() { _send('pageview'); }); window.addEventListener('popstate', function() { _send('pageview') }); var pS = window.history.pushState; window.history.pushState = function() { pS.apply(this, arguments); _send('pageview'); }; window.alceris = _send; if (window._alcerisData && Array.isArray(window._alcerisData)) { while (window._alcerisData.length > 0) { _send(...window._alcerisData.shift()); } } if (sc.dataset.gaCompat) { var origGa = window.ga; window.ga = function(action, type, eventCategory, eventAction, eventLabel, eventValue, fields) { if (origGa) origGa(...arguments); if (action != 'send') return; if (type == 'pageview') _send('pageview'); if (type == 'event') _send('event', eventCategory, { action: eventAction, label: eventLabel, value: eventValue, ...fields }) // ga('send', 'event', [eventCategory], [eventAction], [eventLabel], [eventValue], [fieldsObject]); }; var origGtag = window.gtag; window.gtag = function(type, data) { if (origGtag) origGtag(...arguments); if (type == 'event') _send('event', data); } } if (sc.dataset.errorReporting) { window.addEventListener('error', function(err) { try { _send('error', err.message, { stack: err.error ? err.error.stack : undefined, fileName: err.filename, lineNo: err.lineno, colNo: err.colno }); } catch (err) { debug && console.error('[Alceris Analytics] Failed to report error', err); } }); } }());