var PING_FREQUENCY_MS = 5000; var PINGER_TIMEOUT_MS = 1800000; var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i'); var Pinger = { currentTimePassedMs : 0, ping : function(url, ms) { var rnd = Math.floor(Math.random() * 1000000); Pinger.makePingRequest(url + '&rnd=' + rnd); if (this.currentTimePassedMs <= PINGER_TIMEOUT_MS) { this.currentTimePassedMs += ms; setTimeout(function() {Pinger.ping(url, ms)}, ms); } }, makePingRequest : function(url) { var pixelId = "magicPingingPixel"; var pingImage = document.getElementById(pixelId); if (!pingImage) document.writeln(''); pingImage = document.getElementById(pixelId); pingImage.src = url; } }; var Pinger2 = { ping : function(url) { Pinger2.doPing(url, new Date().getTime()); }, doPing : function(url, timeStartedMs) { Pinger2.makePingRequest(url + '&rnd=' + Math.floor(Math.random() * 1000000)); var timePassed = new Date().getTime() - timeStartedMs; if (timePassed <= PINGER_TIMEOUT_MS) { var waitMs; if (timePassed < 3000) waitMs = 3000; else if (timePassed >= 3000 && timePassed < 11000) waitMs = 5000; else if (timePassed >= 11000 && timePassed < 30000) waitMs = 10000; else waitMs = 30000; setTimeout(function() {Pinger2.doPing(url, timeStartedMs)}, waitMs); } }, makePingRequest : function(url) { var pixelId = "magicPingingPixel"; var pingImage = document.getElementById(pixelId); if (!pingImage) document.writeln(''); pingImage = document.getElementById(pixelId); pingImage.src = url; } }; var pingParams = '&ping=true'; Pinger2.ping(url + pingParams);