JAVASCRIPT 28
Android.js Guest on 27th April 2021 08:01:23 PM
  1. // Created 5/28/2013 1:19:53 PM
  2. var _slow = 1;
  3.  
  4. function initSimpleUtils() {
  5.     var a = navigator.userAgent.toLowerCase();
  6.     ANDROID40 = window.system.platform.android && -1 != a.indexOf("4.0.");
  7.     ANDROID3 = 3 == window.system.device.version && window.system.platform.android;
  8.     ANDROID2 = 2 == window.system.device.version && window.system.platform.android;
  9.     FORCE_FLAT = ANDROID3;
  10.     DEV_3D = Modernizr.csstransforms3d;
  11.     DOUBLE_CLICK_TO_ZOOM = !0;
  12.     UP_SCALE = 1;
  13.     fconsole.log("3D:", DEV_3D)
  14. }
  15. var DEBUG_SHOW_FOLD_SHADOW = !1,
  16.     TUNE_FOLD_SCALE_ENABLE = !0,
  17.     TUNE_MINIMUM_FOLD_SCALE = 0.25,
  18.     TUNE_FOLD_SHADOW_ALPHA = !0,
  19.     TUNE_FOLD_SHADOW_KOEFF = 0.35,
  20.     TIMEOUT_TO_DO_PRETRANSFORM = 60 * _slow,
  21.     TIMEOUT_TO_SET_TRANSITION = 60 * _slow,
  22.     TIMEOUT_TO_DO_POSTTRANSFORM = 60 * _slow,
  23.     TIMEOUT_AFTER_ALL = 60 * _slow,
  24.     TUNE_ZINDEX_SINGLE_CANVAS = -100,
  25.     Z_INDEX_ADD = 350,
  26.     LAST_Z = -300,
  27.     Z_STEP = 5,
  28.     FIRST_Z = -100,
  29.     _debugNC = !1,
  30.     getBookLength = function() {
  31.         return publicationData.pageCount
  32.     };
  33.  
  34. function SoftPlainFlipElements(a, d, b, c, g, s, q) {
  35.     function l(b, c) {
  36.         E += 1;
  37.         var d = function() {
  38.             this.style.webkitTransitionProperty = "";
  39.             this.style.webkitTransitionDuration = "";
  40.             this.removeEventListener("webkitTransitionEnd", d, !1);
  41.             var b = this;
  42.             setTimeout(function() {
  43.                 c && c(b);
  44.                 _debugNC && console.log(a + times() + "timeout", E, b.id);
  45.                 (E -= 1) || setTimeout(function() {
  46.                     q && q(w);
  47.                     Y = !1
  48.                 }, TIMEOUT_AFTER_ALL)
  49.             }, TIMEOUT_TO_DO_POSTTRANSFORM)
  50.         };
  51.         b.addEventListener("webkitTransitionEnd", d, !1)
  52.     }
  53.  
  54.     function L() {
  55.         startTime = (new Date).getTime();
  56.         _debugNC &&
  57.             console.log(a + times() + "applyDestinationListen", E);
  58.         l(m, function() {
  59.             g && g(w)
  60.         });
  61.         y(m, M.flipDiv);
  62.         l(o);
  63.         y(o, M.contentObject, t + 2);
  64.         F.backgroundDiv != M.backgroundDiv && (l(p), y(p, M.backgroundDiv, t + 4));
  65.         if (j) l(j, function() {}), y(j, M.nextShadow), j.style.opacity = "0";
  66.         z && u && (e(z, "end"), l(z, function() {
  67.             e(z, "start")
  68.         }))
  69.     }
  70.  
  71.     function e(a, c) {
  72.         var d = "start" == c,
  73.             g = d ? TUNE_MINIMUM_FOLD_SCALE : 1,
  74.             f = s ? 0 : b - O,
  75.             e = dev_translate((d ? O * g : 0) * (s ? -1 : 1), 0, 8),
  76.             g = TUNE_FOLD_SCALE_ENABLE ? dev_scale(g < TUNE_MINIMUM_FOLD_SCALE ? TUNE_MINIMUM_FOLD_SCALE : g) : "";
  77.         if (TUNE_FOLD_SHADOW_ALPHA) a.style.opacity =
  78.             d ? "0" : "1";
  79.         a.style.left = f + "px";
  80.         a.style.webkitTransformOrigin = "" + (s ? 0 : O) + "px 0px";
  81.         a.style.webkitTransform = g + " " + e
  82.     }
  83.  
  84.     function y(b, a, c) {
  85.         var d = void 0 == c ? b.zOffset || 0 : c;
  86.         if (void 0 != c) b.zOffset = c;
  87.         b.xOffset = a;
  88.         translate(b, a, d)
  89.     }
  90.  
  91.     function f(b, a) {
  92.         b.zOffset = a;
  93.         translate(b, b.xOffset || 0, a)
  94.     }
  95.  
  96.     function v() {
  97.         var a = {};
  98.         s ? u ? (a.flipDiv = 0, a.contentObject = 0, a.backgroundDiv = -b, a.nextShadow = -Q) : (a.flipDiv = 0, a.contentObject = b, a.backgroundDiv = -b, a.nextShadow = -b) : u && G ? (a.flipDiv = 0, a.contentObject = 0, a.backgroundDiv = b, a.nextShadow = b) :
  99.             G ? (a.flipDiv = 0, a.contentObject = -b, a.backgroundDiv = b, a.nextShadow = b) : (a.flipDiv = -b, a.contentObject = 0, a.backgroundDiv = -b, a.nextShadow = -2 * b);
  100.         return a
  101.     }
  102.     this.id = a;
  103.     var w = this,
  104.         u = !0,
  105.         G = !0,
  106.         Q = 0.6 * b,
  107.         F = v(),
  108.         M, R, Y, E = 0,
  109.         t = LAST_Z--,
  110.         O = b * TUNE_FOLD_SHADOW_KOEFF,
  111.         m = createDiv("flipd" + a, !0);
  112.     m.style.webkitTransformStyle = ANDROID3 || FORCE_FLAT ? "flat" : "preserve-3d";
  113.     d.appendChild(m);
  114.     sizeDiv(m, b, c);
  115.     f(m, t);
  116.     var o = createDiv("div" + a);
  117.     sizeDiv(o, b, c);
  118.     var J = createCanvas("cc" + a, b, c);
  119.     o.appendChild(J);
  120.     o.contentCanvas = J;
  121.     J = createDiv("vd" + a,
  122.         b, c);
  123.     o.appendChild(J);
  124.     o.vectorDiv = J;
  125.     J = createCanvas("tc" + a, b, c);
  126.     o.appendChild(J);
  127.     o.topCanvas = J;
  128.     m.appendChild(o);
  129.     y(o, F.contentObject, t + 2);
  130.     var p = createBackgroundDiv("backd" + a);
  131.     sizeDiv(p, b, c);
  132.     m.appendChild(p);
  133.     y(p, F.backgroundDiv, t + 4);
  134.     var j = createShadowOnNextDiv("nextsh" + a, s);
  135.     j && (d.appendChild(j), sizeDiv(j, Q, c), y(j, F.nextShadow, t));
  136.     var z = createFoldShadow("foldsh" + a, O, c, s);
  137.     z && (m.appendChild(z), e(z, "start"));
  138.     this.flipDiv = m;
  139.     this.backgroundDiv = p;
  140.     var S = function(b, c, d) {
  141.         _debugNC && console.log(a + "prepare", b.id,
  142.             E);
  143.         b.style.webkitTransitionProperty = "-webkit-transform " + (d || "");
  144.         b.style.webkitTransitionTimingFunction = "cubic-bezier(0.9,0.05,0.95,1)";
  145.         b.style.webkitTransitionDuration = "" + c * _slow + "s"
  146.     };
  147.     this.id = a;
  148.     var T = function() {
  149.             F = v();
  150.             var a = {};
  151.             if (s)
  152.                 if (u && G) a.flipDiv = b, a.contentObject = -b, a.backgroundDiv = 0, a.nextShadow = b - Q;
  153.                 else {
  154.                     if (G) a.flipDiv = 0, a.contentObject = 0, a.backgroundDiv = -b, a.nextShadow = -b
  155.                 }
  156.             else u && G ? (a.flipDiv = -b, a.contentObject = b, a.backgroundDiv = 0, a.nextShadow = 0) : G ? (a.flipDiv = 0, a.contentObject = 0, a.backgroundDiv =
  157.                 b + 1, a.nextShadow = b) : (a.flipDiv = 0, a.contentObject = -b, a.backgroundDiv = 0, a.nextShadow = -b);
  158.             M = a;
  159.             y(m, F.flipDiv, t);
  160.             y(o, F.contentObject, t + 2);
  161.             y(p, F.backgroundDiv, t + 4);
  162.             z && e(z, "start");
  163.             if (j) y(j, F.nextShadow, t), j.style.opacity = "1"
  164.         },
  165.         H = function(a) {
  166.             S(m, a);
  167.             S(o, a);
  168.             S(p, a);
  169.             j && S(j, a, "opacity");
  170.             z && u && S(z, a, TUNE_FOLD_SHADOW_ALPHA ? "opacity" : "")
  171.         };
  172.     this.startAnimation = function(a, b, c, d) {
  173.         Y = !0;
  174.         R = d;
  175.         u = b;
  176.         G = c;
  177.         T();
  178.         setTimeout(function() {
  179.             H(a);
  180.             setTimeout(function() {
  181.                 L()
  182.             }, TIMEOUT_TO_SET_TRANSITION)
  183.         }, TIMEOUT_TO_DO_PRETRANSFORM)
  184.     };
  185.     this.reset =
  186.         function() {
  187.             u = !0;
  188.             T()
  189.         };
  190.     this.getContentObject = function() {
  191.         return o
  192.     };
  193.     this.getFlipDiv = function() {
  194.         return m
  195.     };
  196.     this.getNextFlipper = function() {
  197.         return R
  198.     };
  199.     this.getFadeout = function() {
  200.         return u
  201.     };
  202.     this.getDepth = function() {
  203.         return t
  204.     };
  205.     this.getBGDiv = function() {
  206.         return p
  207.     };
  208.     this.setNextFlipper = function(a) {
  209.         R = a
  210.     };
  211.     this.setDepth = function(a, b) {
  212.         t = a;
  213.         m.style.zIndex = Z_INDEX_ADD + a;
  214.         o.style.zIndex = Z_INDEX_ADD + a + 1;
  215.         p.style.zIndex = Z_INDEX_ADD + a + 3;
  216.         if (j) j.style.zIndex = Z_INDEX_ADD + a;
  217.         if (z) z.style.zIndex = Z_INDEX_ADD + a + 4;
  218.         !0 != b && (f(m, t), f(o, t + 2),
  219.             f(p, t + 4), j && y(j, F.nextShadow, t))
  220.     };
  221.     this.isFree = function() {
  222.         return !Y
  223.     };
  224.     this.clearContent = function() {
  225.         o.contentCanvas.width = b;
  226.         o.topCanvas.width = 0;
  227.         deleteAllChildren(o.vectorDiv)
  228.     };
  229.     var K;
  230.     this.setBackgroundContent = function(a) {
  231.         K = a;
  232.         deleteAllChildren(p);
  233.         p.appendChild(K)
  234.     };
  235.     this.getBGCanvas = function() {
  236.         K || (K = createFECanvas(a + "bgCont", b, c), p.appendChild(K));
  237.         return K
  238.     }
  239. }
  240.  
  241. function createFECanvas(a, d, b) {
  242.     a = createCanvas(a);
  243.     if (a.width != d || a.height != b) a.width = d, a.height = b;
  244.     return a
  245. }
  246. var createBackgroundDiv = function(a) {
  247.         a = createDiv(a);
  248.         a.style.backgroundColor = "#dddddf";
  249.         return a
  250.     },
  251.     createShadowOnNextDiv = function(a, d) {
  252.         var b = createDiv(a);
  253.         b.style.backgroundImage = "-webkit-gradient(linear," + (d ? "right bottom,left bottom" : "left bottom,right bottom") + ", color-stop(1.00, rgba(0,0,0,0)),color-stop(0.00, rgba(0,0,0,0.6)) )";
  254.         return b
  255.     },
  256.     createFoldShadow = function(a, d, b, c) {
  257.         a = createCanvas(a);
  258.         a.width = d;
  259.         a.height = b;
  260.         var g = a.getContext("2d"),
  261.             c = c ? g.createLinearGradient(d, 0, 0, 0) : g.createLinearGradient(0,
  262.                 0, d, 0);
  263.         c.addColorStop(0, "rgba(0, 0, 0, 0)");
  264.         c.addColorStop(0.72, "rgba(0, 0, 0, 0.2)");
  265.         c.addColorStop(0.89, "rgba(0, 0, 0, 0.4)");
  266.         c.addColorStop(1, "rgba(0, 0, 0, 0)");
  267.         DEBUG_SHOW_FOLD_SHADOW ? (g.lineWidth = 16, g.strokeStyle = "red", g.strokeRect(16, 16, d - 32, b - 32)) : (g.fillStyle = c, g.fillRect(0, 0, d, b));
  268.         return a
  269.     },
  270.     times = function() {
  271.         return " " + ((new Date).getTime() - startTime) + " "
  272.     },
  273.     sizeDim = "px";
  274.  
  275. function sizeDiv(a, d, b, c) {
  276.     if (void 0 == d && void 0 == b) d = window.innerWidth, b = window.innerHeight;
  277.     a.style.width = c ? d + "%" : Math.ceil(d) + sizeDim;
  278.     a.style.height = c ? b + "%" : Math.ceil(b) + sizeDim
  279. }
  280.  
  281. function createDiv(a, d) {
  282.     var b = document.createElement("div");
  283.     b.setAttribute("id", a);
  284.     b.style.position = "absolute";
  285.     if (d) b.style.overflow = "hidden";
  286.     return b
  287. }
  288.  
  289. function createCanvas(a, d, b) {
  290.     var c = document.createElement("canvas");
  291.     c.setAttribute("id", a);
  292.     c.style.position = "absolute";
  293.     void 0 != d && void 0 != b && sizeCanvas(c, d, b);
  294.     return c
  295. }
  296.  
  297. function sizeCanvas(a, d, b) {
  298.     a.width = d;
  299.     a.height = b
  300. }
  301.  
  302. function setElementPosition(a, d) {
  303.     a.style.left = ("" + d.left).concat("px");
  304.     a.style.top = ("" + d.top).concat("px")
  305. }
  306.  
  307. function translate(a, d, b) {
  308.     a.style.webkitTransform = "translate3d(" + d + sizeDim + ",0px," + ("" + b) + sizeDim + ")"
  309. }
  310.  
  311. function dev_scale(a, d, b) {
  312.     return prepare_xyz("scale", a, d, b)
  313. }
  314.  
  315. function dev_translate(a, d, b) {
  316.     return prepare_xyz("translate", a, d, b)
  317. }
  318.  
  319. function dev_translate_percents(a, d, b) {
  320.     return prepare_xyz("translate", a, d, b, "%")
  321. }
  322.  
  323. function dev_rotateXY(a) {
  324.     return "rotate" + (DEV_3D ? "" : "") + "(" + a.toString() + "rad)"
  325. }
  326.  
  327. function prepare_xyz(a, d, b, c, g) {
  328.     var s = "scale" == a,
  329.         q = s ? 1 : 0,
  330.         g = s ? "" : g || sizeDim;
  331.     void 0 == d && (d = q);
  332.     void 0 == b && (b = q);
  333.     void 0 == c && (c = q);
  334.     return a + (DEV_3D ? "3d(" + d + g + "," + b + g + "," + c + g + ")" : "(" + d + g + "," + b + g + ")")
  335. }
  336. var startTime;
  337.  
  338. function centerRect(a, d, b, c) {
  339.     return {
  340.         x: (a - b) / 2,
  341.         y: (d - c) / 2
  342.     }
  343. }
  344.  
  345. function traceChildren(a) {
  346.     for (var d = "", b = 0; b < a.length; b++) d += a[b].id + " ";
  347.     console.log(d)
  348. }
  349.  
  350. function deleteAllChildren(a) {
  351.     for (; a.firstChild;) a.removeChild(a.firstChild)
  352. }
  353.  
  354. function parseVectorizedContentToDiv(a, d, b, c) {
  355.     for (var c = "undefined" != typeof c ? c : !0, g = 0; 4 > g; g++);
  356.     for (var d = d || createDiv(), g = [], s = 0; s < a.length; s++) {
  357.         var q = a[s],
  358.             l = 0,
  359.             L = q[l++].toString(),
  360.             e = q[l++].toString(),
  361.             y = parseFloat(q[l++]);
  362.         parseFloat(q[l++]);
  363.         var f = parseFloat(q[l++]),
  364.             v = parseFloat(q[l++]),
  365.             w = parseFloat(q[l++]),
  366.             u = q[l++].toString(),
  367.             q = parseFloat(q[l++]),
  368.             G = Math.round(v * b),
  369.             l = v = document.createElement("p");
  370.         l.style.position = "absolute";
  371.         l.style.whiteSpace = "nowrap";
  372.         v.innerText = L;
  373.         v.style.fontFamily = e;
  374.         l.style.top =
  375.             px(Math.round(f * b));
  376.         l.style.left = px(G);
  377.         e = w;
  378.         f = g[e];
  379.         w = "undefined" == typeof f ? Math.floor(w * b) : f.size;
  380.         v.style.fontSize = px(w);
  381.         v.style.color = u;
  382.         d.appendChild(l);
  383.         y *= b;
  384.         if (c)
  385.             for (; v.offsetWidth > y && 1 < w;) w -= 1, v.style.fontSize = px(w);
  386.         if ("undefined" == typeof f) g[e] = {
  387.             size: w,
  388.             elements: [v]
  389.         };
  390.         else if (f.size >= w) {
  391.             if (f.size > w) {
  392.                 g[e].size = w;
  393.                 for (var Q in f.elements) u = f.elements[Q], w = u.offsetWidth, u.style.fontSize = px(g[e].size), u.style.wordSpacing = "0px", u.style.wordSpacing = px((w - u.offsetWidth) / (u.innerText.split(" ").length - 1))
  394.             }
  395.             g[e].elements.push(v)
  396.         }
  397.         v.style.webkitTransform =
  398.             q ? dev_rotateXY(q) : "";
  399.         v.style.webkitTransformOrigin = q ? "0 0" : "";
  400.         L = L.split(" ");
  401.         v.style.wordSpacing = "0px";
  402.         v.style.wordSpacing = px((y - v.offsetWidth) / (L.length - 1))
  403.     }
  404.     return d
  405. }
  406.  
  407. function px(a) {
  408.     return a.toString() + "px"
  409. }
  410.  
  411. function scaleAndPositionPageContent(a, d, b) {
  412.     var c = UP_SCALE * parseFloat(publicationData.getPageProperty(a, "width")),
  413.         g = UP_SCALE * parseFloat(publicationData.getPageProperty(a, "height"));
  414.     sizeDiv(d, c, g);
  415.     if (void 0 != b) d.style.left = px(b.x), d.style.top = px(b.y), b = b.width / c, d.style.webkitTransform = dev_scale(b, b), d.style.webkitTransformOrigin = "0 0", fconsole.log("page ", a, " scale is ", b, " srcWidth ", c)
  416. }
  417.  
  418. function getPageContentRect(a, d, b) {
  419.     var c = parseFloat(publicationData.getPageProperty(a, "proportions")),
  420.         a = {};
  421.     a.width = Math.min(c * b, d);
  422.     a.height = a.width / c;
  423.     d = centerRect(d, b, a.width, a.height);
  424.     a.x = d.x;
  425.     a.y = d.y;
  426.     return a
  427. }
  428.  
  429. function applyRectToCanvas(a, d) {
  430.     a.width = d.width;
  431.     a.height = d.height;
  432.     a.style.left = px(d.x);
  433.     a.style.top = px(d.y)
  434. }
  435.  
  436. function fillCanvas(a, d, b) {
  437.     var c = a.getContext("2d");
  438.     c.fillStyle = void 0 != d ? d : "red";
  439.     b ? c.fillRect(b.x, b.y, b.width, b.height) : c.fillRect(0, 0, a.width, a.height)
  440. }
  441.  
  442. function getIsPreloader() {
  443.     return !0 == window.preloaderIsShown
  444. }
  445.  
  446. function showPreloader() {
  447.     if (!window.preloaderIsShown) window.preloaderIsShown = !0, workspace.preloader.add()
  448. }
  449. var hidePreloaderTimeout = null;
  450.  
  451. function hidePreloader() {
  452.     if (window.preloaderIsShown) workspace.preloader.del(), window.preloaderIsShown = !1
  453. }
  454.  
  455. function flipPage(a) {
  456.     a ? pageMediator.right() : pageMediator.left()
  457. }
  458.  
  459. function getIsPortrait() {
  460.     return innerHeight > innerWidth
  461. }
  462.  
  463. function getIsAlbum() {
  464.     return publicationData.type == ALBUM
  465. }
  466.  
  467. function SimpleViewer(a) {
  468.     function d() {
  469.         var b;
  470.         deleteAllChildren(A);
  471.         if (V)(b = document.getElementById("stubPage")) && a.contains(b) && a.removeChild(b), b = R().div(ga).x, ca && parseVectorizedContentToDiv(ca, A, b), s("link", publicationData.page[i].links, A), s("video", publicationData.page[i].videos, A), q();
  472.         else if (f()) b = document.getElementById("stubPage") || createDiv("stubPage"), sizeDiv(b, innerWidth, innerHeight), b.style.backgroundColor = publicationData.getPageProperty(i, "BGColor"), a.contains(b) || a.appendChild(b)
  473.     }
  474.  
  475.     function b() {
  476.         window.requestAnimFrame =
  477.             window.requestAnimFrame || function() {
  478.                 return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(a) {
  479.                     window.setTimeout(a, 1E3 / 60)
  480.                 }
  481.             }();
  482.         ha = !0;
  483.         var a = H ? u : F;
  484.         (function oa() {
  485.             ha && (a(), requestAnimFrame(oa))
  486.         })()
  487.     }
  488.  
  489.     function c(a, b) {
  490.         D.style.left = px(a - D.offsetWidth / 2);
  491.         D.style.top = px(b - D.offsetHeight / 2)
  492.     }
  493.  
  494.     function g() {
  495.         var a = e()[0] > innerWidth,
  496.             b = e()[1] > innerHeight;
  497.         a ? (h[0] = 0 < h[0] ? 0 : h[0], h[0] = e()[0] + h[0] < innerWidth ?
  498.             innerWidth - e()[0] : h[0]) : h[0] = innerWidth / 2 - e()[0] / 2;
  499.         b ? (h[1] = 0 < h[1] ? 0 : h[1], h[1] = h[1] + e()[1] < innerHeight ? innerHeight - e()[1] : h[1]) : h[1] = innerHeight / 2 - e()[1] / 2
  500.     }
  501.  
  502.     function s(a, b, c, d) {
  503.         var g = R().div(ga).x,
  504.             h;
  505.         for (h in b) {
  506.             var x = b[h],
  507.                 f = new Vector2(x.x, x.y),
  508.                 i = new Vector2(x.width, x.height),
  509.                 e = createDiv(a + h);
  510.             (function(a, b, C, c) {
  511.                 a.style.webkitTransformOrigin = "0 0";
  512.                 var d = c ? Math.sin(c) : 0,
  513.                     c = c ? Math.cos(c) : 1;
  514.                 a.style.webkitTransform = "matrix(" + [c, d, -d, c, b.x, b.y].join() + ")";
  515.                 sizeDiv(a, C.x, C.y, !1)
  516.             })(e, f.mul(g), i.mul(g), x.angle);
  517.             if ("undefined" != typeof x.zindex) e.style.zIndex = x.zindex;
  518.             if ("highlight" == a) e.style.backgroundColor = d || highlight.getFillStyle(), c.appendChild(e);
  519.             else if ("link" == a) e.style.backgroundColor = publicationData.linkcolor, e.style.opacity = "0.23", (f = x.urls) && 0 != f.length ? (x = document.createElement("a"), x.href = f[0], x.target = "_blank", x.appendChild(e), c.appendChild(x)) : void 0 != x.page && (function(a) {
  520.                 setClickEvents(e, "md", !1);
  521.                 e.addEventListener(SINGLE_CLICK, function() {
  522.                     pageMediator.goToPage(parseInt(a))
  523.                 })
  524.             }(x.page), c.appendChild(e));
  525.             else if ("video" == a) {
  526.                 e.id = "video." + x.id;
  527.                 if (x.showImage) {
  528.                     var k = video.getVideoImageUrl(x.imageUri);
  529.                     (function(a) {
  530.                         changeUrlWhenPubl(k, function(b) {
  531.                             a.style.backgroundImage = "url('" + b + "')";
  532.                             a.style.backgroundSize = "100% 100%"
  533.                         })
  534.                     })(e)
  535.                 }
  536.                 f = new Image;
  537.                 i = x.height * g;
  538.                 i = 50 < i ? 50 : 0.8 * i;
  539.                 f.src = video.getPlayImage();
  540.                 e.appendChild(f);
  541.                 f.style.position = "absolute";
  542.                 f.style.margin = "auto";
  543.                 f.style.left = "0";
  544.                 f.style.right = "0";
  545.                 f.style.top = "0";
  546.                 f.style.bottom = "0";
  547.                 f.style.height = px(i);
  548.                 (function(a) {
  549.                     setClickEvents(e, "md", !1);
  550.                     e.addEventListener(SINGLE_CLICK,
  551.                         function() {
  552.                             video.play(a.type, a.id)
  553.                         })
  554.                 })(x);
  555.                 c.appendChild(e)
  556.             }
  557.         }
  558.     }
  559.  
  560.     function q() {
  561.         l();
  562.         search.active && search.pages[i] && (A.appendChild(W), highlight.getHighlights(i, function(a) {
  563.             A.contains(W) && s("highlight", a, W)
  564.         }))
  565.     }
  566.  
  567.     function l() {
  568.         deleteAllChildren(W);
  569.         A.contains(W) && A.removeChild(W)
  570.     }
  571.  
  572.     function L(a, b, c) {
  573.         var e = k,
  574.             a = b && t(r.map, k) >= r.map.length - 1 ? r.defaultPos : t(r.map, k * (b ? 2 : 1)) + (b ? 0 : a ? 1 : -1),
  575.             a = Math.min(Math.max(a, 0), r.map.length - 1);
  576.         m(r.map[a]);
  577.         c = c ? c : p ? [innerWidth / 2, innerHeight / 2] : [publicationData.rtlMode ? innerWidth : 0, 0];
  578.         for (a = 0; 2 > a; a++) h[a] -= (c[a] - h[a]) * (k / e - 1);
  579.         g();
  580.         d();
  581.         O();
  582.         P = !0
  583.     }
  584.  
  585.     function e() {
  586.         return B.map(function(a) {
  587.             return a * k
  588.         })
  589.     }
  590.  
  591.     function y() {
  592.         H && X.createPattern(n, "no-repeat");
  593.         var a = B[0] != n.naturalWidth || B[1] != n.naturalHeight;
  594.         B = [n.naturalWidth, n.naturalHeight];
  595.         v("change", a);
  596.         var b = da ? i + 1 : i - 1;
  597.         1 <= b && b <= publicationData.pageCount && !f(b) && setTimeout(function() {
  598.             loadManager.addPageToQueue({
  599.                 position: b,
  600.                 quality: !0,
  601.                 image: na
  602.             })
  603.         }, 500)
  604.     }
  605.  
  606.     function f(a) {
  607.         a = void 0 != a ? a : i;
  608.         return publicationData.getPageProperty(a, "stub")
  609.     }
  610.  
  611.     function v(a, b) {
  612.         var c =
  613.             "change" == a,
  614.             d = c && !b && j,
  615.             f = c && b || "resize" == a;
  616.         f && (r = Y());
  617.         if (f || p || t(r.map, k) > r.textVisibleMaxPos) m(r.map[r.defaultPos]), O();
  618.         d || (h[0] = p ? (innerWidth - e()[0]) / 2 : publicationData.rtlMode ? innerWidth - e()[0] : 0);
  619.         c && (h[1] = p ? (innerHeight - e()[1]) / 2 : 0);
  620.         g();
  621.         P = !0
  622.     }
  623.  
  624.     function w(a, b, c) {
  625.         da = i < a;
  626.         if (i != a) {
  627.             var e = !i || publicationData.getPageProperty(i, "width") != publicationData.getPageProperty(a, "width") || publicationData.getPageProperty(i, "height") != publicationData.getPageProperty(a, "height"),
  628.                 g = !1 !== c && !S && !H && !T && (!N || !ANDROID3) &&
  629.                 i && !e && 1 == Math.abs(i - a) && !f(a) && !f() && !(t(r.map, k) > r.textVisibleMaxPos);
  630.             if (i && f(i) && !f(a)) n.style.visibility = "visible";
  631.             i = a;
  632.             showPreloader();
  633.             if (Z.length) throw "waitingForAnimationEnd.length";
  634.             Z = [];
  635.             var h = function(a) {
  636.                 g && ea ? Z.push(a) : a()
  637.             };
  638.             if (f()) {
  639.                 H || g && G();
  640.                 V = !1;
  641.                 if (!H) n.style.visibility = "hidden";
  642.                 B = [publicationData.getPageProperty(i, "width"), publicationData.getPageProperty(i, "height")];
  643.                 v("change", !0);
  644.                 d();
  645.                 hidePreloader();
  646.                 b && h(b)
  647.             } else(function() {
  648.                 ca = null;
  649.                 ga = new Vector2(publicationData.getPageProperty(i, "width"),
  650.                     publicationData.getPageProperty(i, "height"));
  651.                 deleteAllChildren(A);
  652.                 H || g && G();
  653.                 loadManager.addPageToQueue({
  654.                     skipCurrentLoading: !0,
  655.                     image: n,
  656.                     quality: !0,
  657.                     position: i,
  658.                     onImageLoadComplete: function() {
  659.                         V = $ = !0;
  660.                         h(y)
  661.                     },
  662.                     onPageLoadError: function() {
  663.                         V = !1
  664.                     },
  665.                     onAllIsComplete: function(a, c) {
  666.                         ca = c;
  667.                         h(d);
  668.                         h(hidePreloader);
  669.                         b && h(b)
  670.                     },
  671.                     onJSLoadComplete: function() {}
  672.                 })
  673.             })()
  674.         }
  675.     }
  676.  
  677.     function u() {
  678.         if (V || f()) {
  679.             var a = I.width,
  680.                 b = I.height;
  681.             if ($) {
  682.                 X.clearRect(0, 0, a, b);
  683.                 if (f()) X.fillStyle = publicationData.getPageProperty(i, "BGColor"), X.fillRect(0, 0, a, b);
  684.                 else {
  685.                     var c =
  686.                         n,
  687.                         d = h,
  688.                         e = k,
  689.                         g = Math.round(d[0]),
  690.                         d = Math.round(d[1]),
  691.                         x = 0 < g ? 0 : Math.abs(g / e),
  692.                         l = 0 < d ? 0 : Math.abs(d / e),
  693.                         a = Math.min(c.width * e, a) / e - x,
  694.                         b = Math.min(c.height * e, b) / e - l;
  695.                     (a || b) && X.drawImage(c, g, d, c.width * e, c.height * e);
  696.                     c = Math.round(h[0]);
  697.                     e = Math.round(h[1]);
  698.                     M(A, c, e)
  699.                 }
  700.                 $ = !1
  701.             }
  702.         }
  703.     }
  704.  
  705.     function G() {
  706.         A.style.visibility = "hidden";
  707.         var a = n;
  708.         n = freeImage;
  709.         freeImage = a;
  710.         ia = (da ? 1 : -1) * B[0] * k;
  711.         ka = (new Date).getTime();
  712.         ja = h[0];
  713.         la = ia;
  714.         n.style.left = px(ia);
  715.         ea = !0;
  716.         N && sizeDiv(U, 2 * B[0] * k, B[1])
  717.     }
  718.  
  719.     function Q() {
  720.         var a = (new Date).getTime() - ka;
  721.         h[0] = ja - la * a / ma;
  722.         if (a >=
  723.             ma) {
  724.             ea = !1;
  725.             n.style.left = "0px";
  726.             h[0] = ja;
  727.             freeImage.style.visibility = "hidden";
  728.             for (A.style.visibility = "visible"; Z.length;) Z.shift().call(null, null);
  729.             a = da ? i + 1 : i - 1;
  730.             1 <= a && a <= publicationData.pageCount && !f(a) && loadManager.addPageToQueue({
  731.                 position: a,
  732.                 quality: !0,
  733.                 image: freeImage
  734.             })
  735.         }
  736.     }
  737.  
  738.     function F() {
  739.         ea && !H && (Q(), P = !0);
  740.         var a = R();
  741.         if (aa || $ || fa) T ? (I.width = a.x, I.height = a.y, X.drawImage(n, 0, 0, B[0], B[1], 0, 0, a.x, a.y)) : (n.style.width = 1 != k ? px(a.x) : null, n.style.height = 1 != k ? px(a.y) : null), a = B.map(function(a) {
  742.             return Math.floor((a - 1) *
  743.                 k - 1)
  744.         }), sizeDiv(U, a[0], a[1]), sizeDiv(A, a[0], a[1]), $ = aa = !1;
  745.         if (P || fa) {
  746.             var a = Math.round(h[0]),
  747.                 b = Math.round(h[1]);
  748.             N || M(U, a, b);
  749.             fa = P = !1
  750.         }
  751.     }
  752.  
  753.     function M(a, b, c, d) {
  754.         d = d ? "%" : "px";
  755.         a.style.left = b.toString() + d;
  756.         a.style.top = c.toString() + d
  757.     }
  758.  
  759.     function R() {
  760.         return new Vector2(Math.round(B[0] * k), Math.round(B[1] * k))
  761.     }
  762.  
  763.     function Y() {
  764.         var a = getPageContentRect(i, innerWidth, innerHeight).width / B[0],
  765.             b = innerWidth / B[0],
  766.             c = b / 0.8,
  767.             d;
  768.         p ? (a = [a], d = 1.5) : (a = [b], d = Math.sqrt(c / b), a = a.concat([b * d, c]));
  769.         for (; 2.15 > a[a.length - 1] * d;) a[a.length] = a[a.length -
  770.             1] * d;
  771.         E(a, 0.25, d);
  772.         E(a, 0.5, d);
  773.         E(a, 0.75, d);
  774.         E(a, 1, d);
  775.         fconsole.log("map: " + a.map(function(a) {
  776.             return a.toFixed(2)
  777.         }).join(", "));
  778.         return {
  779.             defaultPos: 0,
  780.             map: a,
  781.             textVisibleMaxPos: 4
  782.         }
  783.     }
  784.  
  785.     function E(a, b, c) {
  786.         for (var d = Math.abs(a[0] - b), e = 1, g = 0; e < a.length;) {
  787.             var f = Math.abs(a[e] - b);
  788.             f < d && (d = f, g = e);
  789.             e++
  790.         }(b + d) / (b - d) < c && 0 != g && (a[g] = b)
  791.     }
  792.  
  793.     function t(a, b) {
  794.         for (var c = 0; c < a.length; c++) {
  795.             var d = a[c];
  796.             if (0 == c) {
  797.                 if (b <= d || 1 == a.length) return 0
  798.             } else {
  799.                 if (c == a.length - 1) return a.length - 1;
  800.                 if (b < a[c]) return b <= (a[c - 1] + a[c]) / 2 ? c - 1 : c;
  801.                 if (b <= (a[c] + a[c + 1]) /
  802.                     2) return c
  803.             }
  804.         }
  805.     }
  806.  
  807.     function O() {
  808.         customEvents.fireEvent(ZOOM_LEVEL_CHANGED_FOR_WORKSPACE, {
  809.             isSmallest: 0 == t(r.map, k),
  810.             isLargest: t(r.map, k) == r.map.length - 1
  811.         })
  812.     }
  813.  
  814.     function m(a, b) {
  815.         k != a && (k = a, fconsole.update("scale", a), b || (aa = !0))
  816.     }
  817.  
  818.     function o(a, b, c, d) {
  819.         var g, f, h, i, k, l, q, t, v, r, o;
  820.  
  821.         function n(a) {
  822.             a.ctrlKey && (b.sendPinch && (b.startPinch && b.startPinch(a.pageX, a.pageY), b.sendPinch(z, 0, 0, a.pageX, a.pageY), b.endPinch && b.endPinch()), a.stopImmediatePropagation());
  823.             a.altKey && b.sendPinch && (b.startPinch && b.startPinch(a.pageX, a.pageY),
  824.                 b.sendPinch(A, 0, 0, a.pageX, a.pageY), b.endPinch && b.endPinch());
  825.             a.shiftKey && b.handleDoubleClick(a);
  826.             var c = a.currentTarget;
  827.             if (Modernizr.touch) {
  828.                 if (1 < a.touches.length) return p(a);
  829.                 c.addEventListener(DOWN_EVENT, p, !1)
  830.             }
  831.             c.removeEventListener(DOWN_EVENT, n, !1);
  832.             c.addEventListener(MOVE_EVENT, w, !1);
  833.             c.addEventListener(UP_EVENT, j, !1);
  834.             c.addEventListener("touchcancel", j, !1);
  835.             c.addEventListener("mouseout", j, !1);
  836.             a = a.touches ? a.touches[0] : a;
  837.             c.pos = {
  838.                 pageX: a.pageX,
  839.                 pageY: a.pageY
  840.             };
  841.             s()
  842.         }
  843.  
  844.         function w(a) {
  845.             a.preventDefault();
  846.             var d = a.touches ?
  847.                 a.touches[0] : a,
  848.                 g = a.currentTarget.pos,
  849.                 C = d.pageX - g.pageX,
  850.                 g = d.pageY - g.pageY;
  851.             f = f || C;
  852.             a.currentTarget.pos = {
  853.                 pageX: d.pageX,
  854.                 pageY: d.pageY
  855.             };
  856.             if (h) {
  857.                 a = (new Date).getTime();
  858.                 d = a - h;
  859.                 i += C;
  860.                 k += g;
  861.                 l += d;
  862.                 h = a;
  863.                 q += Math.abs(C);
  864.                 t.push({
  865.                     dx: C,
  866.                     dy: g,
  867.                     time: d
  868.                 });
  869.                 c && (a = k ? Math.abs(i) / Math.abs(k) : 1E10, Math.abs(i) > B / 1.5 * (1.5 - a) ? v = !0 : k && !(1.5 < Math.abs(i) / Math.abs(k)) && (v || (C = 0)));
  870.                 if (1E3 < l || f && C && f / Math.abs(f) != C / Math.abs(C)) r = !0;
  871.                 !r && i && 0.5 > Math.abs(k) / Math.abs(i) && (g = 0);
  872.                 if (!r && 4 < q && 75 < l) {
  873.                     for (var j = t, a = e()[1] > innerHeight, n, m, o, p, u = p = o = m = n =
  874.                             d = 0; u < j.length; u++) {
  875.                         var s = j[u],
  876.                             d = d + s.dx;
  877.                         n += s.dy;
  878.                         m += Math.abs(s.dx);
  879.                         o += s.dy * s.dy;
  880.                         p += s.time
  881.                     }
  882.                     Math.sqrt(o);
  883.                     j = Math.abs(d);
  884.                     m = Math.abs(j - m);
  885.                     fromRight = 0 > d;
  886.                     14 > m && 7 < j && (!a && 1 >= Math.abs(n) / j || a && j > 7 + 200 * Math.abs(n) / j && j > 0.2 * p) ? (fconsole.log(j / p), b.sendDrag && b.sendDrag(fromRight), a = !0) : a = !1;
  887.                     a && (r = !0)
  888.                 }
  889.             }(C || g) && b.sendMove && b.sendMove(C, g)
  890.         }
  891.  
  892.         function p(a) {
  893.             if (1 < a.touches.length) {
  894.                 var c = a.currentTarget,
  895.                     d = a.touches[0],
  896.                     a = a.touches[1];
  897.                 c.pos = {
  898.                     pageX: (d.pageX + a.pageX) / 2,
  899.                     pageY: (d.pageY + a.pageY) / 2
  900.                 };
  901.                 c.startDist = J(d, a);
  902.                 c.removeEventListener(UP_EVENT,
  903.                     j, !1);
  904.                 c.removeEventListener("touchcancel", j, !1);
  905.                 c.removeEventListener(MOVE_EVENT, w, !1);
  906.                 c.removeEventListener(DOWN_EVENT, p, !1);
  907.                 c.addEventListener(MOVE_EVENT, u, !1);
  908.                 c.addEventListener(UP_EVENT, m, !1);
  909.                 c.addEventListener("touchcancel", m, !1);
  910.                 b.startPinch && b.startPinch(c.pos.pageX, c.pos.pageY);
  911.                 g = 1
  912.             }
  913.         }
  914.  
  915.         function u(a) {
  916.             a.preventDefault();
  917.             if (1 < a.touches.length) {
  918.                 var c = a.currentTarget,
  919.                     e = a.touches[0],
  920.                     f = a.touches[1],
  921.                     a = J(e, f),
  922.                     e = {
  923.                         pageX: (e.pageX + f.pageX) / 2,
  924.                         pageY: (e.pageY + f.pageY) / 2
  925.                     },
  926.                     f = a / c.startDist,
  927.                     f = b.isLargest && 1 < f ? 1 :
  928.                     f,
  929.                     f = b.isSmallest && 1 > f ? 1 : f,
  930.                     h = e.pageX - c.pos.pageX,
  931.                     C = e.pageY - c.pos.pageY;
  932.                 d ? g *= f : b.sendPinch && b.sendPinch(f, h, C, e.pageX, e.pageY);
  933.                 c.startDist = a;
  934.                 c.pos = e
  935.             }
  936.         }
  937.  
  938.         function m(a) {
  939.             var c = a.currentTarget,
  940.                 e = a.touches.length;
  941.             if (0 < e) {
  942.                 c.removeEventListener(MOVE_EVENT, u, !1);
  943.                 c.removeEventListener(UP_EVENT, m, !1);
  944.                 c.removeEventListener("touchcancel", m, !1);
  945.                 c.addEventListener(MOVE_EVENT, w, !1);
  946.                 c.addEventListener(UP_EVENT, j, !1);
  947.                 c.addEventListener("touchcancel", j, !1);
  948.                 var f = a.touches ? a.touches[0] : a;
  949.                 c.pos = {
  950.                     pageX: f.pageX,
  951.                     pageY: f.pageY
  952.                 };
  953.                 s()
  954.             }
  955.             d && (b.sendPinch && b.sendPinch(g), fconsole.log(g));
  956.             b.endPinch && b.endPinch();
  957.             0 == e && j(a)
  958.         }
  959.  
  960.         function y(a) {
  961.             o || (o = setTimeout(function() {
  962.                 v = !1;
  963.                 o = null
  964.             }, a))
  965.         }
  966.  
  967.         function j(a) {
  968.             var b = a.currentTarget;
  969.             if (!Modernizr.touch || !a.touches || 0 == a.touches.length) b.removeEventListener(MOVE_EVENT, w, !1), b.removeEventListener(UP_EVENT, j, !1), b.removeEventListener("touchcancel", j, !1), b.removeEventListener("mouseout", j, !1), b.addEventListener(DOWN_EVENT, n, !1);
  970.             k = i = 0;
  971.             y(D)
  972.         }
  973.  
  974.         function s() {
  975.             h = (new Date).getTime();
  976.             l = 0;
  977.             t = [];
  978.             q = 0;
  979.             r = !1;
  980.             f = 0
  981.         }
  982.         var z =
  983.             1.15,
  984.             A = 0.8,
  985.             B = innerWidth / 4,
  986.             D = 0;
  987.         a.addEventListener(DOWN_EVENT, n, !1);
  988.         a.draggerResetState = function() {
  989.             a.removeEventListener(DOWN_EVENT, n, !1);
  990.             a.removeEventListener(DOWN_EVENT, p, !1);
  991.             a.removeEventListener(MOVE_EVENT, u, !1);
  992.             a.removeEventListener(MOVE_EVENT, w, !1);
  993.             a.removeEventListener(UP_EVENT, m, !1);
  994.             a.removeEventListener("touchcancel", m, !1);
  995.             a.removeEventListener(UP_EVENT, j, !1);
  996.             a.removeEventListener("touchcancel", j, !1);
  997.             a.removeEventListener("mouseout", j, !1);
  998.             a.addEventListener(DOWN_EVENT, n, !1)
  999.         };
  1000.         f = void 0;
  1001.         h = void 0;
  1002.         i = void 0;
  1003.         k = void 0;
  1004.         l = void 0;
  1005.         q = void 0;
  1006.         t = void 0;
  1007.         v = void 0;
  1008.         r = void 0;
  1009.         o = void 0;
  1010.         k = i = 0;
  1011.         g = void 0
  1012.     }
  1013.  
  1014.     function J(a, b) {
  1015.         return Math.sqrt(Math.pow(a.pageX - b.pageX, 2) + Math.pow(a.pageY - b.pageY, 2))
  1016.     }
  1017.     var p = publicationData.type == PT_PHOTOALBUM,
  1018.         j = publicationData.type == PT_BOOK,
  1019.         z = function(a) {
  1020.             a = a.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
  1021.             return null == RegExp("[\\?&]" + a).exec(window.location.href) ? !1 : !0
  1022.         }("c") ? "canvas" : "webkit",
  1023.         S = !0,
  1024.         T = !1,
  1025.         H = "canvas" == z,
  1026.         K = "webkit" == z,
  1027.         N = "scroll" == z,
  1028.         i, n = new Image,
  1029.         na = new Image,
  1030.         V = !1,
  1031.         I = document.createElement("canvas"),
  1032.         X = I.getContext("2d"),
  1033.         ha, $, P, aa, fa, da, ea, ia, la, ka, ma = 700,
  1034.         ja, Z = [],
  1035.         h = [0, 0],
  1036.         B = [],
  1037.         k = 0.1,
  1038.         ga = new Vector2(100, 100),
  1039.         r, ca, A = createDiv("contentDiv");
  1040.     if (K || N) var U = createDiv("srcollDiv");
  1041.     this.resize = function() {
  1042.         V && v("resize");
  1043.         d();
  1044.         H ? (I.width = innerWidth, I.height = innerHeight) : sizeDiv(a, innerWidth, innerHeight)
  1045.     };
  1046.     this.goToPage = function(a) {
  1047.         w(a, function() {
  1048.             customEvents.fireEvent(ANDROID_PAGE_PREPARED, {
  1049.                 page: f() ? [] : [i]
  1050.             })
  1051.         })
  1052.     };
  1053.     var ba, D = document.createElement("p");
  1054.     D.style.opacity = "0.7";
  1055.     D.style.backgroundColor = "#e0efee";
  1056.     D.style.color =
  1057.         "#11111f";
  1058.     D.style.fontSize = "18px";
  1059.     D.style.zIndex = 1E3;
  1060.     D.style.position = "absolute";
  1061.     this.sendDrag = function(a) {
  1062.         (e()[0] <= innerWidth || f()) && flipPage(a)
  1063.     };
  1064.     this.sendMove = function(a, b) {
  1065.         N || (h[0] += a, h[1] += b, g(), P = !0)
  1066.     };
  1067.     this.startPinch = function(b, d) {
  1068.         a.appendChild(D);
  1069.         c(b, d);
  1070.         ba ? (clearTimeout(ba), ba = null) : A.style.visibility = "hidden"
  1071.     };
  1072.     this.endPinch = function() {
  1073.         a.removeChild(D);
  1074.         ba = setTimeout(function() {
  1075.             d();
  1076.             A.style.visibility = "visible";
  1077.             ba = null;
  1078.             O();
  1079.             K && (aa = P = !0)
  1080.         }, f() ? 0 : 500)
  1081.     };
  1082.     this.sendPinch = function(a, b, d, e, f) {
  1083.         k * a < r.map[0] ?
  1084.             a = r.map[0] / k : k * a > r.map[r.map.length - 1] && (a = r.map[r.map.length - 1] / k);
  1085.         b += (e - h[0]) * (1 - a);
  1086.         d += (f - h[1]) * (1 - a);
  1087.         m(k * a, K);
  1088.         N || (h[0] += b, h[1] += d);
  1089.         g();
  1090.         K ? (D.innerText = window.LOCALS.ZOOM + " " + (100 * k).toFixed(0) + "%", c(e, f)) : P = aa = !0
  1091.     };
  1092.     this.incZoom = function() {
  1093.         L(!0)
  1094.     };
  1095.     this.decZoom = function() {
  1096.         L(!1)
  1097.     };
  1098.     var W = createDiv("highlightContainer");
  1099.     this.setHighlight = function(a) {
  1100.         a ? q() : (search.active = !1, l())
  1101.     };
  1102.     this.set = function(c, d) {
  1103.         fconsole.update("zmode", z);
  1104.         setElementPosition(a, {
  1105.             left: 0,
  1106.             top: 0
  1107.         });
  1108.         if (H) a.style.overflow = "visible", a.appendChild(I),
  1109.             a.appendChild(A);
  1110.         else {
  1111.             if (!N) a.style.position = "absolute", A.style.webkitTransform = null, U.style.webkitTransform = null, a.style.webkitTransform = null, n.style.webkitTransform = null;
  1112.             n.style.position = "absolute";
  1113.             a.style.overflow = N ? "scroll" : "hidden";
  1114.             a.appendChild(U);
  1115.             U.appendChild(T ? I : n);
  1116.             U.appendChild(A);
  1117.             if (T) I.style.position = "absolute";
  1118.             n.style.border = "1px solid #333333"
  1119.         }
  1120.         w(c, d, !1);
  1121.         this.resize();
  1122.         b();
  1123.         setInterval(function() {
  1124.             fa = !0
  1125.         }, 1E3);
  1126.         o(a, this, publicationData.type != PT_PHOTOALBUM, !1)
  1127.     };
  1128.     this.clear = function() {
  1129.         ha = !1;
  1130.         H ? a.removeChild(I) : a.removeChild(null)
  1131.     };
  1132.     this.handleDoubleClick = function(a) {
  1133.         a = a.touches ? a.touches[0] : a;
  1134.         L(!0, !0, [a.pageX, a.pageY])
  1135.     }
  1136. }
  1137. (function() {
  1138.     var a = function() {
  1139.             if (2 === arguments.length && "number" === typeof arguments[0] && "number" === typeof arguments[1]) this.x = arguments[0], this.y = arguments[1];
  1140.             else if (0 === arguments.length) this.y = this.x = 0;
  1141.             else throw "Arguments must be 2 numbers or nothing at all";
  1142.         },
  1143.         d = a.prototype;
  1144.     a.type = "Vector2";
  1145.     d.type = a.type;
  1146.     d.set = function(b, c) {
  1147.         if (2 === arguments.length && "number" === typeof arguments[0] && "number" === typeof arguments[1]) this.x = arguments[0], this.y = arguments[1];
  1148.         else if (1 === arguments.length && arguments[0].type ===
  1149.             a.type) this.x = arguments[0].x, this.y = arguments[0].y;
  1150.         else throw 'Argument must be 2 numbers or 1 "Vector2"';
  1151.     };
  1152.     d.neg = function() {
  1153.         return new a(-this.x, -this.y)
  1154.     };
  1155.     d.add = function(b) {
  1156.         var c = new a(this.x, this.y);
  1157.         if ("number" === typeof b) c.x += b, c.y += b;
  1158.         else if (b instanceof Box2d.Math.Vector2) c.x += b.x, c.y += b.y;
  1159.         else throw 'Argument must be of type "Vector2" or "number"';
  1160.         return c
  1161.     };
  1162.     d.sub = function(b) {
  1163.         var c = new a(this.x, this.y);
  1164.         if ("number" === typeof b) c.x -= b, c.y -= b;
  1165.         else if (b.type && b.type === a.type) c.x -= b.x, c.y -= b.y;
  1166.         else throw 'Argument must be of type "Vector2" or "number"';
  1167.         return c
  1168.     };
  1169.     d.mul = function(b) {
  1170.         var c = new a(this.x, this.y);
  1171.         if ("number" === typeof b) c.x *= b, c.y *= b;
  1172.         else if (b.type && b.type === a.type) c.x *= b.x, c.y *= b.y;
  1173.         else throw 'Argument must be of type "Vector2" or "number"';
  1174.         return c
  1175.     };
  1176.     d.div = function(b) {
  1177.         var c = new a(this.x, this.y);
  1178.         if ("number" === typeof b) c.x /= b, c.y /= b;
  1179.         else if (b.type && b.type === a.type) c.x /= b.x, c.y /= b.y;
  1180.         else throw 'Argument must be of type "Vector2" or "number"';
  1181.         return c
  1182.     };
  1183.     d.dot = function(b) {
  1184.         if (!b || !b.type || b.type !== a.type) throw 'Arguments must be of type "Vector2"';
  1185.         return this.x * b.x + this.y * b.y
  1186.     };
  1187.     d.square = function() {
  1188.         return new a(this.x * this.x, this.y * this.y)
  1189.     };
  1190.     d.length = function() {
  1191.         return Math.sqrt(this.x * this.x + this.y * this.y)
  1192.     };
  1193.     d.abs = function() {
  1194.         return new a(Math.abs(this.x), Math.abs(this.y))
  1195.     };
  1196.     a.dot = function(b, c) {
  1197.         if (b.type !== a.type || c.type !== a.type) throw 'Arguments must be of type "Vector2"';
  1198.         return b.x * c.x + b.y * c.y
  1199.     };
  1200.     a.crossVV = function(b, c) {
  1201.         if (b.type !== a.type || c.type !== a.type) throw 'Arguments must be of type "Vector2"';
  1202.         return b.x * c.y - b.y * c.x
  1203.     };
  1204.     a.crossVN = function(b, c) {
  1205.         if (b.type !==
  1206.             a.type || "number" !== typeof c) throw 'Arguments must be of type "Vector2" and "number"';
  1207.         return new a(c * b.y, -c * b.x)
  1208.     };
  1209.     a.crossNV = function(b, c) {
  1210.         if ("number" !== typeof b || c.type !== a.type) throw 'Arguments must be of type "number" and "Vector2"';
  1211.         return new a(-b * c.y, b * c.x)
  1212.     };
  1213.     a.abs = function(b) {
  1214.         if (b.type !== a.type) throw 'Argument must be of type "Vector2"';
  1215.         return new a(Math.abs(b.x), Math.abs(b.y))
  1216.     };
  1217.     window.Vector2 = a
  1218. })();

Paste-bin is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.