// -- MoonRay Tracking Module
// Settings
var _mri = '',
_mrsess_ = '',
_mr_cid = '';
var _mrd = document,
_mrl = _mrd.location.host + _mrd.location.pathname,
_mrct = new Date();
var _mr_ex = 'expires=Sun, 18 Jan 2038 00:00:00 GMT';
var _linktrack = '/trackThrough.php';
var _mr_title = document.title;
if (typeof(_mr_domain) === 'undefined') {
_mr_domain = 'tracking.ontraport.com';
}
var _mrl_internal_url = '';
var _mrl_internal_domain = '';
function mrSetupActual(url, domain) {
_mrl_internal_url = url;
_mrl_internal_domain = domain;
}
function mrtracking(mriOverRide) {
var _mrid = _mri,
_mrlv = '',
_mrref = '',
_mrafft_ = '',
_mraff_ = '',
_mrsess_ = '',
_mr_gets = '',
_mr_ctime = '',
_mrq = '';
var _readParams = function() {
if (mriOverRide) {
_mrid = mriOverRide;
}
if (_mrl_internal_domain != '' && _mrl_internal_domain != document.location.hostname) {
// URL is not the same as the trackable one, and we were passed the original url so use that.
// This happens for wordpress-hosted ontrapages. Override the llc and l parameters.
_mrq = 'mid=' + _mrid + '&llc=' + _escapeT(_mrl_internal_url);
_mrl = _mrl_internal_url;
} else {
_mrq = 'mid=' + _mrid + '&llc=' + _escapeT(document.location.href);
}
_mrlv = gC('lastvisit');
_mrref = gC('ref_');
_mrafft_ = gC('afft_');
_mraff_ = gC('aff_');
_mrsess_ = gC('sess_');
_mr_gets = parseGetVars();
_mr_ctime = (_mrct.getTime() - _mrct.getMilliseconds()) / 1000;
if (!_mrsess_) {
_mrsess_ = genmrSess(20);
_mrq = _mrq + '&first_visit=1';
_mrd.cookie = 'sess_=' + _mrsess_ + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&referral_page=' + encodeURIComponent(document.referrer);
if (_mrq.length <= 200) {
_mrd.cookie = 'referral_page=' + document.referrer + ';' + _mr_ex + ';' + 'path=/';
} else {
_mrq = 'mid=' + _mrid + '&first_visit=1';
}
}
if (_mr_gets.mr_aff) {
_mrd.cookie = 'aff_' + '=' + _mr_gets.mr_aff + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&aff=' + _mr_gets.mr_aff;
} else if (_mr_gets.ref) {
_mrd.cookie = 'aff_' + '=' + _mr_gets.ref + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&aff=' + _mr_gets.ref;
} else if (_mr_gets.orid) {
_mrd.cookie = 'aff_' + '=' + _mr_gets.orid + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&aff=' + _mr_gets.orid;
}
var cookie_gets = ['opid', 'sid', 'oprid'];
for (var i = 0; i < cookie_gets.length; i++) {
if (_mr_gets[cookie_gets[i]]) {
_mrd.cookie = cookie_gets[i] + '=' + _mr_gets[cookie_gets[i]] + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&' + cookie_gets[i] + '=' + _mr_gets[cookie_gets[i]];
}
}
cookie_gets = ['utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign'];
var has_utm_gets = false;
for (var i = 0; i < cookie_gets.length; i++) {
if (_mr_gets[cookie_gets[i]]) {
has_utm_gets = true;
break;
}
}
if (has_utm_gets) {
for (var i = 0; i < cookie_gets.length; i++) {
var term = _mr_gets[cookie_gets[i]] || '';
_mrd.cookie = cookie_gets[i] + '=' + term + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&' + cookie_gets[i] + '=' + term;
}
}
_mrq = _mrq + '&s=' + _mrsess_ + '&l=' + _mrl + '&ti=' + _mr_title;
if (_mrref && !_mr_gets.sig) {
if ((_mrlv + 3600) < _mr_ctime) {
_mrq = _mrq + '&' + 't=' + _mrref;
} else {
_mrq = _mrq + '&' + 'r=1&t=' + _mrref;
}
}
if (_mr_cid = gC('contact_id')) {
_mrq = _mrq + '&c=' + _mr_cid;
_mrd.cookie = 'contact_id' + '=' + _mr_cid + ';' + _mr_ex + ';' + 'path=/';
}
if ((parseInt(_mrlv) + 3600) > _mr_ctime) {
_mr_vid = gC('vid');
if (_mr_vid) {
_mrq = _mrq + '&vid=' + _mr_vid;
}
} else {
_mrd.cookie = 'vid' + '=' + '' + ';' + _mr_ex + ';' + 'path=/';
}
if (_mr_gets.sig) {
_mrd.cookie = 'ref_' + '=' + _mr_gets.sig + ';' + _mr_ex + ';' + 'path=/';
if (_mrlv) {
if ((parseInt(_mrlv) + 3600) < _mr_ctime) {
_mrq = _mrq + '&' + 't=' + _mr_gets.sig;
} else {
_mrq = _mrq + '&' + 't=' + _mr_gets.sig + '&r=1';
}
} else {
_mrq = _mrq + '&' + 't=' + _mr_gets.sig;
}
}
// Set cookie for lastvisit to the current time
_mrd.cookie = 'lastvisit' + '=' + _mr_ctime + ';' + _mr_ex + ';' + 'path=/';
// Grab Google gclid and gid
if (window.ga) {
// window.ga is for Universal Analytics (UA)
ga(function() {
var trackers = ga.getAll();
trackers.forEach(function(tracker) {
_mrq = _mrq + '&gcid=' + tracker.get('clientId');
});
});
} else if ( window.gaGlobal && window.gaGlobal.vid ) {
// window.gaGlobal is for Google Analytics 4 (GA4)
_mrq = _mrq + '&gcid=' + gaGlobal.vid;
}
}
_readParams();
var sc = document.createElement('script');
var _onload = function() {
for (var i = 0; i < document.forms.length; i++) {
if (!document.forms[i].hasAttribute('data-opf-watch-submit') && document.forms[i].uid) {
if (document.forms[i].elements['unique' + document.forms[i].uid.value]) {
_mrq = _mrq + '&forms[' + document.forms[i].uid.value + ']=' + document.forms[i].elements['unique' + document.forms[i].uid.value].value;
} else {
_mrq = _mrq + '&forms[' + document.forms[i].uid.value + ']=0';
}
}
}
var meta = document.getElementsByTagName('meta');
var is_unique = '0';
for (var i = 0; i < meta.length; i++) {
if (meta[i].getAttribute('name') === 'unique') {
is_unique = meta[i].getAttribute('value');
}
}
_mrq = _mrq + '&is_unique=' + is_unique;
sc.src = 'https://' + _mr_domain + '/track.php?' + encodeURI(_mrq);
document.getElementsByTagName('head')[0].appendChild(sc);
};
var replaceHistoryFunction = function(type) {
var orig = history[type];
history[type + 'IsSet'] = true;
return function() {
var rv = orig.apply(this, arguments);
var e = new Event(type);
e.arguments = arguments;
window.dispatchEvent(e);
return rv;
};
};
if( !history['pushStateIsSet'] ) {
history.pushState = replaceHistoryFunction('pushState');
window.addEventListener('pushState', function(e) {
//without a delay, we will incorrectly track the page we're on, not the page we're going to.
setTimeout( function() {
_readParams();
_onload();
}, 0);
});
}
if (_mr_gets.gclid !== undefined && !gC('_op_gclid')) {
_mrd.cookie = '_op_gclid' + '=' + _mr_gets.gclid + ';' + _mr_ex + ';' + 'path=/';
_mrq = _mrq + '&gclid=' + _mr_gets.gclid;
}
//check if window.onload has already fired or not.
if (document.readyState === 'complete') {
_onload();
} else if (window.addEventListener) {
window.addEventListener('load', _onload, true);
} else {
window.attachEvent('onload', _onload);
}
}
function gC(c_name) {
var i, x, y, ARRcookies = document.cookie.split(';');
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='));
y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1);
x = x.replace(/^\s+|\s+$/g, '');
if (x == c_name) {
return decodeURI(y);
}
}
}
function parseGetVars() {
var encodedURI = window.location.search.substring(1).replace(/\+/g, ' ');
var qString = decodeURI(encodedURI);
var mr_dv = new Array();
var pairs = qString.split(/\&/);
var array_length = pairs.length;
if (array_length > 0) {
for (i = 0; i < array_length; i++) {
if (pairs[i]) {
var nameVal = pairs[i].split(/\=/);
mr_dv[nameVal[0]] = nameVal[1];
}
}
}
return mr_dv;
}
function genmrSess(length) {
session = '';
possible = '0123456789bcdfghjkmnpqrstvwxyz';
for (var i = 0; i < length; ++i) {
session += possible.substr(Math.floor(Math.random() * possible.length), 1);
}
return session;
}
function _escapeT( str ) {
return encodeURIComponent( str );
}
function _mrGetLinkTo(Item) {
if (Item.href != null) {
return Item.href;
} else if (Item.getAttribute('type') == 'submit') {
return (Item.form.action.indexOf('form_processor.php') != -1) ? 'moonrayform:' + Item.form.uid.value : Item.form.action;
} else {
return Item.attributes.getNamedItem('onclick').value;
}
}
function _sanitizeMrLink(link) {
if (link.substr(0, 7).toLowerCase() == 'http://') {
link = link.substr(7);
}
if (link.substr(0, 8).toLowerCase() == 'https://') {
link = link.substr(8);
}
if (link.substr(0, 4).toLowerCase() == 'www.') {
link = link.substr(4);
}
return link;
}
function _mrScanLinks() {
var Items = document.getElementsByTagName('*');
var LinkId, LinkAlias;
var linkCount = 0;
for (var i = 0; i < Items.length; i++) {
if ((Items[i].href == null || Items[i].getAttribute('href', 2) == '') && Items[i].onclick == null && Items[i].type != 'submit') {
continue;
}
linkCount++;
LinkId = -1;
LinkAlias = '';
if (Items[i].getAttribute('mtrack', 2)) {
LinkAlias = Items[i].getAttribute('mtrack', 2);
} else if (_mrTrackLinks[linkCount] != null) {
if (_sanitizeMrLink(_mrGetLinkTo(Items[i])) == _sanitizeMrLink(_mrTrackLinks[linkCount].link)) {
LinkId = _mrTrackLinks[linkCount].id;
}
}
if (LinkId != -1 || LinkAlias != '') {
if (Items[i].addEventListener) {
Items[i].addEventListener('click', _mrTrackLink, false);
} else {
Items[i].attachEvent('onclick', _mrTrackLink);
}
Items[i].linkTrackId = (LinkId != -1) ? LinkId : '';
}
}
}
function _mrTrackLink(event) {
if (event.target) {
var SrcObj = event.target;
} else {
var SrcObj = event.srcElement;
}
while (SrcObj.linkTrackId == null && !SrcObj.getAttribute('mtrack', 2)) {
SrcObj = SrcObj.parentNode;
}
var clickTrack = _mr_domain + _linktrack +
'?lid=' + _escapeT(SrcObj.linkTrackId) +
'&contact_id=' + _mr_cid +
'&session_id=' + _mrsess_ +
'&mri=' + _mri +
((SrcObj.getAttribute('mtrack', 2)) ? '&mtrack=' + _escapeT(SrcObj.getAttribute('mtrack', 2)) + '&uri=' + _escapeT(document.location.href) : '');
var Ajaxor = _mrReturnXmlHttpObject();
Ajaxor.open('GET', clickTrack, true);
Ajaxor.send(null);
}
function _mrReturnXmlHttpObject() {
var xmlhttp = false;
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
if (!xmlhttp && window.createRequest) {
try {
xmlhttp = window.createRequest();
} catch (e) {
xmlhttp = false;
}
}
if (!xmlhttp) {}
return xmlhttp;
}