Guest User

Untitled

a guest
Nov 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. var _caq = _caq || {};
  2. var _gcol = _gcol || {unUsedParameters: ['rootUrl'], rootUrl: _caq["rootUrl"], channel: _caq["channel"]};
  3.  
  4. _gcol.AppendPixel = function (data) {
  5. var instance = this;
  6. var url = instance.rootUrl + "__gc.gif?_=" + Math.random().toString().slice(12) + "&p=" + instance.RemoveAndEncodeParameters(data);
  7. var _pixel = document.createElement("img");
  8. _pixel.src = url;
  9. _pixel.id = Math.random() + "_pixel";
  10. _pixel.style.display = "none";
  11. document.body.insertBefore(_pixel, document.body.firstChild);
  12. document.body.removeChild(_pixel);
  13. }
  14.  
  15. _gcol.Fire = function (event, data) {
  16. if (typeof event != "string") {
  17. throw(new Error("missing event name parameter"));
  18. }
  19. if (data) {
  20. data.channel = _gcol.channel;
  21. data["event"] = event;
  22. return _gcol.AppendPixel(data);
  23. }
  24. }
  25.  
  26. _gcol.RemoveAndEncodeParameters = function (data) {
  27. var instance = this;
  28. var bi = instance.getBrowserInformation();
  29. data.ref = instance.getReferrer();
  30. data.os = bi.os;
  31. data.bv = bi.bv;
  32. data.bn = bi.bn;
  33. data.res = instance.getResolution();
  34.  
  35. var dataToProcess = data;
  36. var length = instance.unUsedParameters.length;
  37. for (var i = 0; i < length; i++) {
  38. delete dataToProcess[instance.unUsedParameters[i]];
  39. }
  40. for (var i in dataToProcess) {
  41. if (dataToProcess[i] === null || dataToProcess[i] === undefined) {
  42. delete dataToProcess[i];
  43. }
  44. }
  45. return encodeURIComponent(_gcol.psv(dataToProcess));
  46. }
  47.  
  48. _gcol.escape = function (value) {
  49. if (typeof value != 'string') return;
  50. return value.replace(/\|/g, "\\|");
  51. }
  52. _gcol.psv = function (obj) {
  53. var s = [];
  54. for (var i in obj) {
  55. s.push(i);
  56. s.push(_gcol.escape(obj[i]));
  57. }
  58. var res = s.join("||");
  59. return res;
  60. }
  61.  
  62. _gcol.getResolution = function() {
  63. return window.screen.availWidth + "x" + window.screen.availHeight;
  64. }
  65.  
  66. _gcol.getReferrer = function() {
  67. var referrer = document.referrer;
  68. var host = document.location.host;
  69. if(referrer.indexOf(host)<0){
  70. return document.referrer;
  71. }
  72. return "";
  73. }
  74.  
  75. _gcol.getBrowserInformation = function() {
  76. var nVer = navigator.appVersion;
  77. var nAgt = navigator.userAgent;
  78. var browserName = navigator.appName;
  79. var fullVersion = '' + parseFloat(navigator.appVersion);
  80. var majorVersion = parseInt(navigator.appVersion, 10);
  81. var nameOffset, verOffset, ix;
  82.  
  83. // In Opera, the true version is after "Opera" or after "Version"
  84. if ((verOffset = nAgt.indexOf("Opera")) != -1) {
  85. browserName = "Opera";
  86. fullVersion = nAgt.substring(verOffset + 6);
  87. if ((verOffset = nAgt.indexOf("Version")) != -1)
  88. fullVersion = nAgt.substring(verOffset + 8);
  89. }
  90. // In MSIE, the true version is after "MSIE" in userAgent
  91. else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
  92. browserName = "Microsoft Internet Explorer";
  93. fullVersion = nAgt.substring(verOffset + 5);
  94. }
  95. // In Chrome, the true version is after "Chrome"
  96. else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
  97. browserName = "Chrome";
  98. fullVersion = nAgt.substring(verOffset + 7);
  99. }
  100. // In Safari, the true version is after "Safari" or after "Version"
  101. else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
  102. browserName = "Safari";
  103. fullVersion = nAgt.substring(verOffset + 7);
  104. if ((verOffset = nAgt.indexOf("Version")) != -1)
  105. fullVersion = nAgt.substring(verOffset + 8);
  106. }
  107. // In Firefox, the true version is after "Firefox"
  108. else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
  109. browserName = "Firefox";
  110. fullVersion = nAgt.substring(verOffset + 8);
  111. }
  112. // In most other browsers, "name/version" is at the end of userAgent
  113. else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) <
  114. (verOffset = nAgt.lastIndexOf('/'))) {
  115. browserName = nAgt.substring(nameOffset, verOffset);
  116. fullVersion = nAgt.substring(verOffset + 1);
  117. if (browserName.toLowerCase() == browserName.toUpperCase()) {
  118. browserName = navigator.appName;
  119. }
  120. }
  121. // trim the fullVersion string at semicolon/space if present
  122. if ((ix = fullVersion.indexOf(";")) != -1)
  123. fullVersion = fullVersion.substring(0, ix);
  124. if ((ix = fullVersion.indexOf(" ")) != -1)
  125. fullVersion = fullVersion.substring(0, ix);
  126.  
  127. majorVersion = parseInt('' + fullVersion, 10);
  128. if (isNaN(majorVersion)) {
  129. fullVersion = '' + parseFloat(navigator.appVersion);
  130. majorVersion = parseInt(navigator.appVersion, 10);
  131. }
  132.  
  133. var OSName = "Unknown OS";
  134. if (navigator.appVersion.indexOf("Win") != -1) OSName = "Windows";
  135. if (navigator.appVersion.indexOf("Mac") != -1) OSName = "MacOS";
  136. if (navigator.appVersion.indexOf("X11") != -1) OSName = "UNIX";
  137. if (navigator.appVersion.indexOf("Linux") != -1) OSName = "Linux";
  138.  
  139. return { "os": OSName, "bv": fullVersion, "bn": browserName };
  140. }
  141.  
  142.  
  143. if (typeof module !== 'undefined' && module.exports) {
  144. exports._gcol = _gcol
  145. }
Add Comment
Please, Sign In to add comment