PluginProbe
PilotPress / stable
PilotPress vstable
trunk 1.9.2 1.9.3 1.9.5 2.0.7 stable
pilotpress / js / tracking.js

tracking.js in PilotPress stable, at js/tracking.js

363 lines 11.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // -- MoonRay Tracking Module
2
3 // Settings
4 var _mri = '',
5 _mrsess_ = '',
6 _mr_cid = '';
7 var _mrd = document,
8 _mrl = _mrd.location.host + _mrd.location.pathname,
9 _mrct = new Date();
10 var _mr_ex = 'expires=Sun, 18 Jan 2038 00:00:00 GMT';
11 var _linktrack = '/trackThrough.php';
12 var _mr_title = document.title;
13
14 if (typeof(_mr_domain) === 'undefined') {
15 _mr_domain = 'tracking.ontraport.com';
16 }
17
18 var _mrl_internal_url = '';
19 var _mrl_internal_domain = '';
20
21 function mrSetupActual(url, domain) {
22 _mrl_internal_url = url;
23 _mrl_internal_domain = domain;
24 }
25
26 function mrtracking(mriOverRide) {
27 var _mrid = _mri,
28 _mrlv = '',
29 _mrref = '',
30 _mrafft_ = '',
31 _mraff_ = '',
32 _mrsess_ = '',
33 _mr_gets = '',
34 _mr_ctime = '',
35 _mrq = '';
36
37 var _readParams = function() {
38 if (mriOverRide) {
39 _mrid = mriOverRide;
40 }
41 if (_mrl_internal_domain != '' && _mrl_internal_domain != document.location.hostname) {
42 // URL is not the same as the trackable one, and we were passed the original url so use that.
43 // This happens for wordpress-hosted ontrapages. Override the llc and l parameters.
44 _mrq = 'mid=' + _mrid + '&llc=' + _escapeT(_mrl_internal_url);
45 _mrl = _mrl_internal_url;
46 } else {
47 _mrq = 'mid=' + _mrid + '&llc=' + _escapeT(document.location.href);
48 }
49 _mrlv = gC('lastvisit');
50 _mrref = gC('ref_');
51 _mrafft_ = gC('afft_');
52 _mraff_ = gC('aff_');
53 _mrsess_ = gC('sess_');
54
55 _mr_gets = parseGetVars();
56 _mr_ctime = (_mrct.getTime() - _mrct.getMilliseconds()) / 1000;
57
58 if (!_mrsess_) {
59 _mrsess_ = genmrSess(20);
60 _mrq = _mrq + '&first_visit=1';
61 _mrd.cookie = 'sess_=' + _mrsess_ + ';' + _mr_ex + ';' + 'path=/';
62
63 _mrq = _mrq + '&referral_page=' + encodeURIComponent(document.referrer);
64 if (_mrq.length <= 200) {
65 _mrd.cookie = 'referral_page=' + document.referrer + ';' + _mr_ex + ';' + 'path=/';
66 } else {
67 _mrq = 'mid=' + _mrid + '&first_visit=1';
68 }
69
70 }
71
72 if (_mr_gets.mr_aff) {
73 _mrd.cookie = 'aff_' + '=' + _mr_gets.mr_aff + ';' + _mr_ex + ';' + 'path=/';
74 _mrq = _mrq + '&aff=' + _mr_gets.mr_aff;
75 } else if (_mr_gets.ref) {
76 _mrd.cookie = 'aff_' + '=' + _mr_gets.ref + ';' + _mr_ex + ';' + 'path=/';
77 _mrq = _mrq + '&aff=' + _mr_gets.ref;
78 } else if (_mr_gets.orid) {
79 _mrd.cookie = 'aff_' + '=' + _mr_gets.orid + ';' + _mr_ex + ';' + 'path=/';
80 _mrq = _mrq + '&aff=' + _mr_gets.orid;
81 }
82
83
84 var cookie_gets = ['opid', 'sid', 'oprid'];
85 for (var i = 0; i < cookie_gets.length; i++) {
86 if (_mr_gets[cookie_gets[i]]) {
87 _mrd.cookie = cookie_gets[i] + '=' + _mr_gets[cookie_gets[i]] + ';' + _mr_ex + ';' + 'path=/';
88 _mrq = _mrq + '&' + cookie_gets[i] + '=' + _mr_gets[cookie_gets[i]];
89 }
90 }
91
92 cookie_gets = ['utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign'];
93 var has_utm_gets = false;
94
95 for (var i = 0; i < cookie_gets.length; i++) {
96 if (_mr_gets[cookie_gets[i]]) {
97 has_utm_gets = true;
98 break;
99 }
100 }
101
102 if (has_utm_gets) {
103 for (var i = 0; i < cookie_gets.length; i++) {
104 var term = _mr_gets[cookie_gets[i]] || '';
105 _mrd.cookie = cookie_gets[i] + '=' + term + ';' + _mr_ex + ';' + 'path=/';
106 _mrq = _mrq + '&' + cookie_gets[i] + '=' + term;
107 }
108 }
109
110 _mrq = _mrq + '&s=' + _mrsess_ + '&l=' + _mrl + '&ti=' + _mr_title;
111 if (_mrref && !_mr_gets.sig) {
112 if ((_mrlv + 3600) < _mr_ctime) {
113 _mrq = _mrq + '&' + 't=' + _mrref;
114 } else {
115 _mrq = _mrq + '&' + 'r=1&t=' + _mrref;
116 }
117 }
118
119 if (_mr_cid = gC('contact_id')) {
120 _mrq = _mrq + '&c=' + _mr_cid;
121 _mrd.cookie = 'contact_id' + '=' + _mr_cid + ';' + _mr_ex + ';' + 'path=/';
122 }
123
124 if ((parseInt(_mrlv) + 3600) > _mr_ctime) {
125 _mr_vid = gC('vid');
126 if (_mr_vid) {
127 _mrq = _mrq + '&vid=' + _mr_vid;
128 }
129 } else {
130 _mrd.cookie = 'vid' + '=' + '' + ';' + _mr_ex + ';' + 'path=/';
131 }
132
133 if (_mr_gets.sig) {
134 _mrd.cookie = 'ref_' + '=' + _mr_gets.sig + ';' + _mr_ex + ';' + 'path=/';
135 if (_mrlv) {
136 if ((parseInt(_mrlv) + 3600) < _mr_ctime) {
137 _mrq = _mrq + '&' + 't=' + _mr_gets.sig;
138 } else {
139 _mrq = _mrq + '&' + 't=' + _mr_gets.sig + '&r=1';
140 }
141 } else {
142 _mrq = _mrq + '&' + 't=' + _mr_gets.sig;
143 }
144 }
145 // Set cookie for lastvisit to the current time
146 _mrd.cookie = 'lastvisit' + '=' + _mr_ctime + ';' + _mr_ex + ';' + 'path=/';
147
148 // Grab Google gclid and gid
149 if (window.ga) {
150 ga(function() {
151 var trackers = ga.getAll();
152 trackers.forEach(function(tracker) {
153 _mrq = _mrq + '&gcid=' + tracker.get('clientId');
154 });
155 });
156 }
157 }
158
159 _readParams();
160
161 var sc = document.createElement('script');
162
163 var _onload = function() {
164 for (var i = 0; i < document.forms.length; i++) {
165 if (!document.forms[i].hasAttribute('data-opf-watch-submit') && document.forms[i].uid) {
166 if (document.forms[i].elements['unique' + document.forms[i].uid.value]) {
167 _mrq = _mrq + '&forms[' + document.forms[i].uid.value + ']=' + document.forms[i].elements['unique' + document.forms[i].uid.value].value;
168 } else {
169 _mrq = _mrq + '&forms[' + document.forms[i].uid.value + ']=0';
170 }
171 }
172 }
173 var meta = document.getElementsByTagName('meta');
174 var is_unique = '0';
175 for (var i = 0; i < meta.length; i++) {
176 if (meta[i].getAttribute('name') === 'unique') {
177 is_unique = meta[i].getAttribute('value');
178 }
179 }
180 _mrq = _mrq + '&is_unique=' + is_unique;
181 sc.src = 'https://' + _mr_domain + '/track.php?' + encodeURI(_mrq);
182 document.getElementsByTagName('head')[0].appendChild(sc);
183 };
184
185 var replaceHistoryFunction = function(type) {
186 var orig = history[type];
187 history[type + 'IsSet'] = true;
188 return function() {
189 var rv = orig.apply(this, arguments);
190 var e = new Event(type);
191 e.arguments = arguments;
192 window.dispatchEvent(e);
193 return rv;
194 };
195 };
196
197 if( !history['pushStateIsSet'] ) {
198 history.pushState = replaceHistoryFunction('pushState');
199
200 window.addEventListener('pushState', function(e) {
201 //without a delay, we will incorrectly track the page we're on, not the page we're going to.
202 setTimeout( function() {
203 _readParams();
204 _onload();
205 }, 0);
206 });
207 }
208
209
210 if (_mr_gets.gclid !== undefined && !gC('_op_gclid')) {
211 _mrd.cookie = '_op_gclid' + '=' + _mr_gets.gclid + ';' + _mr_ex + ';' + 'path=/';
212 _mrq = _mrq + '&gclid=' + _mr_gets.gclid;
213 }
214
215 //check if window.onload has already fired or not.
216 if (document.readyState === 'complete') {
217 _onload();
218 } else if (window.addEventListener) {
219 window.addEventListener('load', _onload, true);
220 } else {
221 window.attachEvent('onload', _onload);
222 }
223 }
224
225 function gC(c_name) {
226 var i, x, y, ARRcookies = document.cookie.split(';');
227 for (i = 0; i < ARRcookies.length; i++) {
228 x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='));
229 y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1);
230 x = x.replace(/^\s+|\s+$/g, '');
231 if (x == c_name) {
232 return decodeURI(y);
233 }
234 }
235 }
236
237 function parseGetVars() {
238 var encodedURI = window.location.search.substring(1).replace(/\+/g, ' ');
239
240 var qString = decodeURI(encodedURI);
241 var mr_dv = new Array();
242 var pairs = qString.split(/\&/);
243 var array_length = pairs.length;
244 if (array_length > 0) {
245 for (i = 0; i < array_length; i++) {
246 if (pairs[i]) {
247 var nameVal = pairs[i].split(/\=/);
248 mr_dv[nameVal[0]] = nameVal[1];
249 }
250 }
251 }
252 return mr_dv;
253 }
254
255 function genmrSess(length) {
256 session = '';
257 possible = '0123456789bcdfghjkmnpqrstvwxyz';
258
259 for (var i = 0; i < length; ++i) {
260 session += possible.substr(Math.floor(Math.random() * possible.length), 1);
261 }
262
263 return session;
264 }
265
266 function _escapeT(str) {
267 return encodeURI(str).replace(/\+/g, '%2B');
268 }
269
270 function _mrGetLinkTo(Item) {
271 if (Item.href != null) {
272 return Item.href;
273 } else if (Item.getAttribute('type') == 'submit') {
274 return (Item.form.action.indexOf('form_processor.php') != -1) ? 'moonrayform:' + Item.form.uid.value : Item.form.action;
275 } else {
276 return Item.attributes.getNamedItem('onclick').value;
277 }
278 }
279
280 function _sanitizeMrLink(link) {
281 if (link.substr(0, 7).toLowerCase() == 'http://') {
282 link = link.substr(7);
283 }
284 if (link.substr(0, 8).toLowerCase() == 'https://') {
285 link = link.substr(8);
286 }
287 if (link.substr(0, 4).toLowerCase() == 'www.') {
288 link = link.substr(4);
289 }
290 return link;
291 }
292
293 function _mrScanLinks() {
294 var Items = document.getElementsByTagName('*');
295 var LinkId, LinkAlias;
296 var linkCount = 0;
297 for (var i = 0; i < Items.length; i++) {
298 if ((Items[i].href == null || Items[i].getAttribute('href', 2) == '') && Items[i].onclick == null && Items[i].type != 'submit') {
299 continue;
300 }
301 linkCount++;
302 LinkId = -1;
303 LinkAlias = '';
304
305 if (Items[i].getAttribute('mtrack', 2)) {
306 LinkAlias = Items[i].getAttribute('mtrack', 2);
307 } else if (_mrTrackLinks[linkCount] != null) {
308 if (_sanitizeMrLink(_mrGetLinkTo(Items[i])) == _sanitizeMrLink(_mrTrackLinks[linkCount].link)) {
309 LinkId = _mrTrackLinks[linkCount].id;
310 }
311 }
312 if (LinkId != -1 || LinkAlias != '') {
313 if (Items[i].addEventListener) {
314 Items[i].addEventListener('click', _mrTrackLink, false);
315 } else {
316 Items[i].attachEvent('onclick', _mrTrackLink);
317 }
318 Items[i].linkTrackId = (LinkId != -1) ? LinkId : '';
319 }
320 }
321 }
322
323 function _mrTrackLink(event) {
324 if (event.target) {
325 var SrcObj = event.target;
326 } else {
327 var SrcObj = event.srcElement;
328 }
329 while (SrcObj.linkTrackId == null && !SrcObj.getAttribute('mtrack', 2)) {
330 SrcObj = SrcObj.parentNode;
331 }
332
333 var clickTrack = _mr_domain + _linktrack +
334 '?lid=' + _escapeT(SrcObj.linkTrackId) +
335 '&contact_id=' + _mr_cid +
336 '&session_id=' + _mrsess_ +
337 '&mri=' + _mri +
338 ((SrcObj.getAttribute('mtrack', 2)) ? '&mtrack=' + _escapeT(SrcObj.getAttribute('mtrack', 2)) + '&uri=' + _escapeT(document.location.href) : '');
339 var Ajaxor = _mrReturnXmlHttpObject();
340 Ajaxor.open('GET', clickTrack, true);
341 Ajaxor.send(null);
342 }
343
344 function _mrReturnXmlHttpObject() {
345 var xmlhttp = false;
346
347 if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
348 try {
349 xmlhttp = new XMLHttpRequest();
350 } catch (e) {
351 xmlhttp = false;
352 }
353 }
354 if (!xmlhttp && window.createRequest) {
355 try {
356 xmlhttp = window.createRequest();
357 } catch (e) {
358 xmlhttp = false;
359 }
360 }
361 if (!xmlhttp) {}
362 return xmlhttp;
363 }