Advertisement
englishextra

postinit.js

Sep 5th, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * these are not dependant on jQuery
  3.  * but they do so on:
  4.  *
  5.  *  /js/detectmobilebrowser.js
  6.  *  /js/modernizr.js
  7.  *  /js/yepnope.js
  8.  *  /js/functions.js
  9.  *  /js/events.js
  10.  *  /js/ready.js
  11.  */
  12.  
  13. /**
  14.  * declare sbizDocumentReferrer
  15.  */
  16. var sbizDocumentReferrer = document.referrer || "";
  17.  
  18. /**
  19.  * declare sbizWindowLocation
  20.  */
  21. var sbizWindowLocation = window.location.href || "";
  22.  
  23. /**
  24.  * declare sbizDocumentTitle
  25.  */
  26. var sbizDocumentTitle = document.title || "";
  27.  
  28. /**
  29.  * declare sbizDeviceWidth
  30.  * http://stackoverflow.com/questions/6850164/get-the-device-width-in-javascript
  31.  */
  32. var sbizDeviceWidth = window.innerWidth ? 0 < window.innerWidth ? window.innerWidth : screen.width : "";
  33.  
  34. /**
  35.  * declare sbizIsHandheld
  36.  */
  37. var sbizIsHandheld = ("undefined" !== typeof sbizIsMobileBrowser && sbizIsMobileBrowser && (sbizIsHandheld = 1)) || "";
  38.  
  39. /**
  40.  * declare sbizIsOutdatedBrowser
  41.  */
  42. var sbizIsOutdatedBrowser = "";
  43.  
  44. /**
  45.  * Modernizr test for cssgradients
  46.  */
  47. var sbizHasCssgradients = ("undefined" !== typeof window.Modernizr && Modernizr.cssgradients && (sbizHasCssgradients = 1)) || "";
  48.  
  49. /**
  50.  * treat no сssgradients
  51.  * and not mobile as outdated browser
  52.  * !sbizHasCssgradients && !sbizIsHandheld && (sbizIsOutdatedBrowser = 1);
  53.  */
  54.  
  55. /**
  56.  * Modernizr test for touch
  57.  */
  58. var sbizHasTouch = ("undefined" !== typeof window.Modernizr && Modernizr.touch && (sbizHasTouch = 1)) || "";
  59.  
  60. /**
  61.  * treat sbizHasTouch and sbizDeviceWidth < 980
  62.  * as mobile browser
  63.  */
  64. sbizHasTouch && 980 > sbizDeviceWidth && (sbizIsHandheld = 1);
  65.  
  66. /**
  67.  * treat outdated browser as handheld
  68.  * after Modernizr tests
  69.  */
  70. sbizIsOutdatedBrowser && (sbizIsHandheld = 1);
  71.  
  72. /**
  73.  * get externalcounter when browser tab is inactive
  74.  * dependant on variables above
  75.  *
  76.  * window.onblur = function () {
  77.  *
  78.  * };
  79.  */
  80. addEvent(window, "blur", function (e) {
  81.     /* reassign document.title !!! */
  82.     document.title = sbizDocumentTitle +
  83.         " - \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 " +
  84.         "\u043d\u0435 " +
  85.         "\u0430\u043a\u0442\u0438\u0432\u0435\u043d";
  86.     var a = document.getElementById("externalcounters"),
  87.         b = (/localhost/.test(self.location.host) ? "http://localhost/externalcounters/" : "http://shimansky.biz/externalcounters/"),
  88.         z = sbizIsHandheld,
  89.         y = sbizIsOutdatedBrowser,
  90.         k = sbizDeviceWidth,
  91.         m = sbizHasCssgradients,
  92.         t = sbizHasTouch,
  93.         rfrr = encodeURIComponent(sbizDocumentReferrer),
  94.         dmn = encodeURIComponent(sbizWindowLocation),
  95.         /* don't use sbizDocumentTitle !!! -- we need to get new document.title */
  96.         ttl0 = encodeURIComponent(document.title || "").replace("\x27", "&#39;"),
  97.         ttl = ttl0 +
  98.             " [sbizDeviceWidth:" + k +
  99.             "; sbizIsHandheld:" + z +
  100.             "; sbizHasCssgradients:" + m +
  101.             "; sbizHasTouch:" + t +
  102.             "; sbizIsOutdatedBrowser:" + y +
  103.             "]";
  104.     a && (a.setAttribute("style", "position:absolute;left:-9999px;width:1px;height:1px;border:0;background:transparent url(\x27" + b +
  105.             "?dmn=" + dmn +
  106.             "\x26rfrr=" + rfrr +
  107.             "\x26ttl=" + ttl +
  108.             "\x26encoding=utf-8\x27) top left no-repeat;"));
  109. }, false);
  110.  
  111. /**
  112.  * get JS errors using Google Analytics
  113.  * http://habrahabr.ru/post/149926/
  114.  *
  115.  * window.onerror = function (msg, url, line) {
  116.  *
  117.  * };
  118.  */
  119. var _gaq = window._gaq || [];
  120. addEvent(window, "error", function (msg, url, line) {
  121.     var preventErrorAlert = true;
  122.     _gaq.push(["_trackEvent", "JS Error", msg, navigator.userAgent + ' -> ' + url + " : " + line]);
  123.     return preventErrorAlert;
  124. }, false);
  125.  
  126. /**
  127.  * hide navbar if mobile
  128.  */
  129. (function (a) {
  130.     "use strict";
  131.     if (a) {
  132.         addEvent(window, "load", function (e) {
  133.             setTimeout(function () {
  134.                 window.scrollTo(0, 1);
  135.             }, 1);
  136.         }, false);
  137.     }
  138. }
  139.     (sbizIsHandheld || ""));
  140.  
  141. /**
  142.  * open outer links in new tab
  143.  */
  144. domready(function(){
  145.     "use strict";
  146.     (function (c, a, f) {
  147.         if (c && a && f) {
  148.             var b,
  149.                 e,
  150.                 d,
  151.                 h,
  152.                 g,
  153.                 r = "";
  154.             for (b = 0; b < c.length; b += 1) {
  155.                 d = c[b];
  156.                 h = d.getAttribute("href");
  157.                 if (
  158.                     (h.match(/^http\:\/\//)
  159.                     || h.match(/^https\:\/\//)
  160.                     || h.match(/^ftp\:\/\//))
  161.                     && !d.getAttribute("rel")
  162.                     && !d.getAttribute("id")
  163.                     && !d.getAttribute("class")
  164.                     ) {
  165.                     for (e = [a, f], g = 0; g < e.length; g += 1) {
  166.                         if (h.match(new RegExp(e[g]))) {
  167.                             r = 1;
  168.                         }
  169.                         if (!r) {
  170.                             d.setAttribute("target", "_blank");
  171.                             d.setAttribute("rel", "tipsy");
  172.                             d.setAttribute("title", "\u042d\u0442\u0430 " + "\u0441\u0441\u044b\u043b\u043a\u0430 " + "\u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 " + "\u0440\u0435\u0441\u0443\u0440\u0441 " + "\u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f " + "\u0432 " + "\u043d\u043e\u0432\u043e\u0439 " + "\u0432\u043a\u043b\u0430\u0434\u043a\u0435 " + "\u0438\u043b\u0438 \u043e\u043a\u043d\u0435.");
  173.                         }
  174.                     }
  175.                 }
  176.             }
  177.         }
  178.     }
  179.         (
  180.             (document.getElementsByTagName("a") || ""),
  181.             ((self.location.protocol + "//" + self.location.host + "/") || ""),
  182.             ((self.location.host + "/") || "")
  183.         ));
  184. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement