Файловый менеджер - Редактировать - /home/jogoso94/public_html/jogos/frogtastic/js/main.js
�азад
/* screenfull v5.0.0 - 2019-09-09 (c) Sindre Sorhus; MIT License Platform.js <https://mths.be/platform> Copyright 2014-2018 Benjamin Tan <https://bnjmnt4n.now.sh/> Copyright 2011-2013 John-David Dalton Available under MIT license <https://mths.be/mit> */ (function() { var a = "undefined" !== typeof window && "undefined" !== typeof window.document ? window.document : {}, c = "undefined" !== typeof module && module.exports, e = function() { for (var b, e = ["requestFullscreen exitFullscreen fullscreenElement fullscreenEnabled fullscreenchange fullscreenerror".split(" "), "webkitRequestFullscreen webkitExitFullscreen webkitFullscreenElement webkitFullscreenEnabled webkitfullscreenchange webkitfullscreenerror".split(" "), "webkitRequestFullScreen webkitCancelFullScreen webkitCurrentFullScreenElement webkitCancelFullScreen webkitfullscreenchange webkitfullscreenerror".split(" "), "mozRequestFullScreen mozCancelFullScreen mozFullScreenElement mozFullScreenEnabled mozfullscreenchange mozfullscreenerror".split(" "), "msRequestFullscreen msExitFullscreen msFullscreenElement msFullscreenEnabled MSFullscreenChange MSFullscreenError".split(" ") ], c = 0, d = e.length, f = {}; c < d; c++) if ((b = e[c]) && b[1] in a) { for (c = 0; c < b.length; c++) f[e[0][c]] = b[c]; return f } return !1 }(), b = { change: e.fullscreenchange, error: e.fullscreenerror }, d = { request: function(b) { return new Promise(function(c, d) { var m = function() { this.off("change", m); c() }.bind(this); this.on("change", m); b = b || a.documentElement; Promise.resolve(b[e.requestFullscreen]())["catch"](d) }.bind(this)) }, exit: function() { return new Promise(function(b, c) { if (this.isFullscreen) { var d = function() { this.off("change", d); b() }.bind(this); this.on("change", d); Promise.resolve(a[e.exitFullscreen]())["catch"](c) } else b() }.bind(this)) }, toggle: function(a) { return this.isFullscreen ? this.exit() : this.request(a) }, onchange: function(a) { this.on("change", a) }, onerror: function(a) { this.on("error", a) }, on: function(c, e) { var d = b[c]; d && a.addEventListener(d, e, !1) }, off: function(c, e) { var d = b[c]; d && a.removeEventListener(d, e, !1) }, raw: e }; e ? (Object.defineProperties(d, { isFullscreen: { get: function() { return !!a[e.fullscreenElement] } }, element: { enumerable: !0, get: function() { return a[e.fullscreenElement] } }, isEnabled: { enumerable: !0, get: function() { return !!a[e.fullscreenEnabled] } } }), c ? module.exports = d : window.screenfull = d) : c ? module.exports = { isEnabled: !1 } : window.screenfull = { isEnabled: !1 } })(); (function() { function a(a) { a = String(a); return a.charAt(0).toUpperCase() + a.slice(1) } function c(a, c) { var e = -1, d = a ? a.length : 0; if ("number" == typeof d && -1 < d && d <= x) for (; ++e < d;) c(a[e], e, a); else b(a, c) } function e(b) { b = String(b).replace(/^ +| +$/g, ""); return /^(?:webOS|i(?:OS|P))/.test(b) ? b : a(b) } function b(a, b) { for (var c in a) t.call(a, c) && b(a[c], c, a) } function d(b) { return null == b ? a(b) : z.call(b).slice(8, -1) } function k(a, b) { var c = null != a ? typeof a[b] : "number"; return !/^(?:boolean|number|string|undefined)$/.test(c) && ("object" == c ? !!a[b] : !0) } function l(a) { return String(a).replace(/([ -])(?!$)/g, "$1?") } function n(a, b) { var d = null; c(a, function(c, e) { d = b(d, c, e, a) }); return d } function m(a) { function c(b) { return n(b, function(b, c) { var d = c.pattern || l(c); !b && (b = RegExp("\\b" + d + " *\\d+[.\\w_]*", "i").exec(a) || RegExp("\\b" + d + " *\\w+-[\\w]*", "i").exec(a) || RegExp("\\b" + d + "(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)", "i").exec(a)) && ((b = String(c.label && !RegExp(d, "i").test(c.label) ? c.label : b).split("/"))[1] && !/[\d.]+/.test(b[0]) && (b[0] += " " + b[1]), c = c.label || c, b = e(b[0].replace(RegExp(d, "i"), c).replace(RegExp("; *(?:" + c + "[_-])?", "i"), " ").replace(RegExp("(" + c + ")[-_.]?(\\w)", "i"), "$1 $2"))); return b }) } function f(b) { return n(b, function(b, c) { return b || (RegExp(c + "(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)", "i").exec(a) || 0)[1] || null }) } var r = v, g = a && "object" == typeof a && "String" != d(a); g && (r = a, a = null); var p = r.navigator || {}, q = p.userAgent || ""; a || (a = q); var x = g ? !!p.likeChrome : /\bChrome\b/.test(a) && !/internal|\n/i.test(z.toString()), y = g ? "Object" : "ScriptBridgingProxyObject", t = g ? "Object" : "Environment", E = g && r.java ? "JavaPackage" : d(r.java), H = g ? "Object" : "RuntimeObject"; t = (E = /\bJava/.test(E) && r.java) && d(r.environment) == t; var S = E ? "a" : "\u03b1", I = E ? "b" : "\u03b2", P = r.document || {}, K = r.operamini || r.opera, Q = B.test(Q = g && K ? K["[[Class]]"] : d(K)) ? Q : K = null, h, R = a; g = []; var N = null, O = a == q; q = O && K && "function" == typeof K.version && K.version(); var C = function(b) { return n(b, function(b, c) { return b || RegExp("\\b" + (c.pattern || l(c)) + "\\b", "i").exec(a) && (c.label || c) }) }([{ label: "EdgeHTML", pattern: "Edge" }, "Trident", { label: "WebKit", pattern: "AppleWebKit" }, "iCab", "Presto", "NetFront", "Tasman", "KHTML", "Gecko"]), u = function(b) { return n(b, function(b, c) { return b || RegExp("\\b" + (c.pattern || l(c)) + "\\b", "i").exec(a) && (c.label || c) }) }(["Adobe AIR", "Arora", "Avant Browser", "Breach", "Camino", "Electron", "Epiphany", "Fennec", "Flock", "Galeon", "GreenBrowser", "iCab", "Iceweasel", "K-Meleon", "Konqueror", "Lunascape", "Maxthon", { label: "Microsoft Edge", pattern: "Edge" }, "Midori", "Nook Browser", "PaleMoon", "PhantomJS", "Raven", "Rekonq", "RockMelt", { label: "Samsung Internet", pattern: "SamsungBrowser" }, "SeaMonkey", { label: "Silk", pattern: "(?:Cloud9|Silk-Accelerated)" }, "Sleipnir", "SlimBrowser", { label: "SRWare Iron", pattern: "Iron" }, "Sunrise", "Swiftfox", "Waterfox", "WebPositive", "Opera Mini", { label: "Opera Mini", pattern: "OPiOS" }, "Opera", { label: "Opera", pattern: "OPR" }, "Chrome", { label: "Chrome Mobile", pattern: "(?:CriOS|CrMo)" }, { label: "Firefox", pattern: "(?:Firefox|Minefield)" }, { label: "Firefox for iOS", pattern: "FxiOS" }, { label: "IE", pattern: "IEMobile" }, { label: "IE", pattern: "MSIE" }, "Safari" ]), A = c([{ label: "BlackBerry", pattern: "BB10" }, "BlackBerry", { label: "Galaxy S", pattern: "GT-I9000" }, { label: "Galaxy S2", pattern: "GT-I9100" }, { label: "Galaxy S3", pattern: "GT-I9300" }, { label: "Galaxy S4", pattern: "GT-I9500" }, { label: "Galaxy S5", pattern: "SM-G900" }, { label: "Galaxy S6", pattern: "SM-G920" }, { label: "Galaxy S6 Edge", pattern: "SM-G925" }, { label: "Galaxy S7", pattern: "SM-G930" }, { label: "Galaxy S7 Edge", pattern: "SM-G935" }, "Google TV", "Lumia", "iPad", "iPod", "iPhone", "Kindle", { label: "Kindle Fire", pattern: "(?:Cloud9|Silk-Accelerated)" }, "Nexus", "Nook", "PlayBook", "PlayStation Vita", "PlayStation", "TouchPad", "Transformer", { label: "Wii U", pattern: "WiiU" }, "Wii", "Xbox One", { label: "Xbox 360", pattern: "Xbox" }, "Xoom" ]), M = function(b) { return n(b, function(b, c, d) { return b || (c[A] || c[/^[a-z]+(?: +[a-z]+\b)*/i.exec(A)] || RegExp("\\b" + l(d) + "(?:\\b|\\w*\\d)", "i").exec(a)) && d }) }({ Apple: { iPad: 1, iPhone: 1, iPod: 1 }, Archos: {}, Amazon: { Kindle: 1, "Kindle Fire": 1 }, Asus: { Transformer: 1 }, "Barnes & Noble": { Nook: 1 }, BlackBerry: { PlayBook: 1 }, Google: { "Google TV": 1, Nexus: 1 }, HP: { TouchPad: 1 }, HTC: {}, LG: {}, Microsoft: { Xbox: 1, "Xbox One": 1 }, Motorola: { Xoom: 1 }, Nintendo: { "Wii U": 1, Wii: 1 }, Nokia: { Lumia: 1 }, Samsung: { "Galaxy S": 1, "Galaxy S2": 1, "Galaxy S3": 1, "Galaxy S4": 1 }, Sony: { PlayStation: 1, "PlayStation Vita": 1 } }), w = function(b) { return n(b, function(b, c) { var d = c.pattern || l(c); if (!b && (b = RegExp("\\b" + d + "(?:/[\\d.]+|[ \\w.]*)", "i").exec(a))) { var A = b, g = c.label || c, f = { "10.0": "10", "6.4": "10 Technical Preview", "6.3": "8.1", "6.2": "8", "6.1": "Server 2008 R2 / 7", "6.0": "Server 2008 / Vista", "5.2": "Server 2003 / XP 64-bit", "5.1": "XP", "5.01": "2000 SP1", "5.0": "2000", "4.0": "NT", "4.90": "ME" }; d && g && /^Win/i.test(A) && !/^Windows Phone /i.test(A) && (f = f[/[\d.]+$/.exec(A)]) && (A = "Windows " + f); A = String(A); d && g && (A = A.replace(RegExp(d, "i"), g)); b = A = e(A.replace(/ ce$/i, " CE").replace(/\bhpw/i, "web").replace(/\bMacintosh\b/, "Mac OS").replace(/_PowerPC\b/i, " OS").replace(/\b(OS X) [^ \d]+/i, "$1").replace(/\bMac (OS X)\b/, "$1").replace(/\/(\d)/, " $1").replace(/_/g, ".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, "").replace(/\bx86\.64\b/gi, "x86_64").replace(/\b(Windows Phone) OS\b/, "$1").replace(/\b(Chrome OS \w+) [\d.]+\b/, "$1").split(" on ")[0]) } return b }) }(["Windows Phone", "Android", "CentOS", { label: "Chrome OS", pattern: "CrOS" }, "Debian", "Fedora", "FreeBSD", "Gentoo", "Haiku", "Kubuntu", "Linux Mint", "OpenBSD", "Red Hat", "SuSE", "Ubuntu", "Xubuntu", "Cygwin", "Symbian OS", "hpwOS", "webOS ", "webOS", "Tablet OS", "Tizen", "Linux", "Mac OS X", "Macintosh", "Mac", "Windows 98;", "Windows " ]); C && (C = [C]); M && !A && (A = c([M])); if (h = /\bGoogle TV\b/.exec(A)) A = h[0]; /\bSimulator\b/i.test(a) && (A = (A ? A + " " : "") + "Simulator"); "Opera Mini" == u && /\bOPiOS\b/.test(a) && g.push("running in Turbo/Uncompressed mode"); "IE" == u && /\blike iPhone OS\b/.test(a) ? (h = m(a.replace(/like iPhone OS/, "")), M = h.manufacturer, A = h.product) : /^iP/.test(A) ? (u || (u = "Safari"), w = "iOS" + ((h = / OS ([\d_]+)/i.exec(a)) ? " " + h[1].replace(/_/g, ".") : "")) : "Konqueror" != u || /buntu/i.test(w) ? M && "Google" != M && (/Chrome/.test(u) && !/\bMobile Safari\b/i.test(a) || /\bVita\b/.test(A)) || /\bAndroid\b/.test(w) && /^Chrome/.test(u) && /\bVersion\//i.test(a) ? (u = "Android Browser", w = /\bAndroid\b/.test(w) ? w : "Android") : "Silk" == u ? (/\bMobi/i.test(a) || (w = "Android", g.unshift("desktop mode")), /Accelerated *= *true/i.test(a) && g.unshift("accelerated")) : "PaleMoon" == u && (h = /\bFirefox\/([\d.]+)\b/.exec(a)) ? g.push("identifying as Firefox " + h[1]) : "Firefox" == u && (h = /\b(Mobile|Tablet|TV)\b/i.exec(a)) ? (w || (w = "Firefox OS"), A || (A = h[1])) : !u || (h = !/\bMinefield\b/i.test(a) && /\b(?:Firefox|Safari)\b/.exec(u)) ? (u && !A && /[\/,]|^[^(]+?\)/.test(a.slice(a.indexOf(h + "/") + 8)) && (u = null), (h = A || M || w) && (A || M || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(w)) && (u = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(w) ? w : h) + " Browser")) : "Electron" == u && (h = (/\bChrome\/([\d.]+)\b/.exec(a) || 0)[1]) && g.push("Chromium " + h) : w = "Kubuntu"; q || (q = f(["(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))", "Version", l(u), "(?:Firefox|Minefield|NetFront)"])); if (h = "iCab" == C && 3 < parseFloat(q) && "WebKit" || /\bOpera\b/.test(u) && (/\bOPR\b/.test(a) ? "Blink" : "Presto") || /\b(?:Midori|Nook|Safari)\b/i.test(a) && !/^(?:Trident|EdgeHTML)$/.test(C) && "WebKit" || !C && /\bMSIE\b/i.test(a) && ("Mac OS" == w ? "Tasman" : "Trident") || "WebKit" == C && /\bPlayStation\b(?! Vita\b)/i.test(u) && "NetFront") C = [h]; "IE" == u && (h = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(a) || 0)[1]) ? (u += " Mobile", w = "Windows Phone " + (/\+$/.test(h) ? h : h + ".x"), g.unshift("desktop mode")) : /\bWPDesktop\b/i.test(a) ? (u = "IE Mobile", w = "Windows Phone 8.x", g.unshift("desktop mode"), q || (q = (/\brv:([\d.]+)/.exec(a) || 0)[1])) : "IE" != u && "Trident" == C && (h = /\brv:([\d.]+)/.exec(a)) && (u && g.push("identifying as " + u + (q ? " " + q : "")), u = "IE", q = h[1]); if (O) { if (k(r, "global")) if (E && (h = E.lang.System, R = h.getProperty("os.arch"), w = w || h.getProperty("os.name") + " " + h.getProperty("os.version")), t) { try { q = r.require("ringo/engine").version.join("."), u = "RingoJS" } catch (X) { (h = r.system) && h.global.system == r.system && (u = "Narwhal", w || (w = h[0].os || null)) } u || (u = "Rhino") } else "object" == typeof r.process && !r.process.browser && (h = r.process) && ("object" == typeof h.versions && ("string" == typeof h.versions.electron ? (g.push("Node " + h.versions.node), u = "Electron", q = h.versions.electron) : "string" == typeof h.versions.nw && (g.push("Chromium " + q, "Node " + h.versions.node), u = "NW.js", q = h.versions.nw)), u || (u = "Node.js", R = h.arch, w = h.platform, q = (q = /[\d.]+/.exec(h.version)) ? q[0] : null)); else d(h = r.runtime) == y ? (u = "Adobe AIR", w = h.flash.system.Capabilities.os) : d(h = r.phantom) == H ? (u = "PhantomJS", q = (h = h.version || null) && h.major + "." + h.minor + "." + h.patch) : "number" == typeof P.documentMode && (h = /\bTrident\/(\d+)/i.exec(a)) ? (q = [q, P.documentMode], (h = +h[1] + 4) != q[1] && (g.push("IE " + q[1] + " mode"), C && (C[1] = ""), q[1] = h), q = "IE" == u ? String(q[1].toFixed(1)) : q[0]) : "number" == typeof P.documentMode && /^(?:Chrome|Firefox)\b/.test(u) && (g.push("masking as " + u + " " + q), u = "IE", q = "11.0", C = ["Trident"], w = "Windows"); w = w && e(w) } q && (h = /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(q) || /(?:alpha|beta)(?: ?\d)?/i.exec(a + ";" + (O && p.appMinorVersion)) || /\bMinefield\b/i.test(a) && "a") && (N = /b/i.test(h) ? "beta" : "alpha", q = q.replace(RegExp(h + "\\+?$"), "") + ("beta" == N ? I : S) + (/\d+\+?/.exec(h) || "")); if ("Fennec" == u || "Firefox" == u && /\b(?:Android|Firefox OS)\b/.test(w)) u = "Firefox Mobile"; else if ("Maxthon" == u && q) q = q.replace(/\.[\d.]+/, ".x"); else if (/\bXbox\b/i.test(A)) "Xbox 360" == A && (w = null), "Xbox 360" == A && /\bIEMobile\b/.test(a) && g.unshift("mobile mode"); else if (!/^(?:Chrome|IE|Opera)$/.test(u) && (!u || A || /Browser|Mobi/.test(u)) || "Windows CE" != w && !/Mobi/i.test(a)) if ("IE" == u && O) try { null === r.external && g.unshift("platform preview") } catch (X) { g.unshift("embedded") } else(/\bBlackBerry\b/.test(A) || /\bBB10\b/.test(a)) && (h = (RegExp(A.replace(/ +/g, " *") + "/([.\\d]+)", "i").exec(a) || 0)[1] || q) ? (h = [h, /BB10/.test(a)], w = (h[1] ? (A = null, M = "BlackBerry") : "Device Software") + " " + h[0], q = null) : this != b && "Wii" != A && (O && K || /Opera/.test(u) && /\b(?:MSIE|Firefox)\b/i.test(a) || "Firefox" == u && /\bOS X (?:\d+\.){2,}/.test(w) || "IE" == u && (w && !/^Win/.test(w) && 5.5 < q || /\bWindows XP\b/.test(w) && 8 < q || 8 == q && !/\bTrident\b/.test(a))) && !B.test(h = m.call(b, a.replace(B, "") + ";")) && h.name && (h = "ing as " + h.name + ((h = h.version) ? " " + h : ""), B.test(u) ? (/\bIE\b/.test(h) && "Mac OS" == w && (w = null), h = "identify" + h) : (h = "mask" + h, u = Q ? e(Q.replace(/([a-z])([A-Z])/g, "$1 $2")) : "Opera", /\bIE\b/.test(h) && (w = null), O || (q = null)), C = ["Presto"], g.push(h)); else u += " Mobile"; if (h = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(a) || 0)[1]) { h = [parseFloat(h.replace(/\.(\d)$/, ".0$1")), h]; if ("Safari" == u && "+" == h[1].slice(-1)) u = "WebKit Nightly", N = "alpha", q = h[1].slice(0, -1); else if (q == h[1] || q == (h[2] = (/\bSafari\/([\d.]+\+?)/i.exec(a) || 0)[1])) q = null; h[1] = (/\bChrome\/([\d.]+)/i.exec(a) || 0)[1]; 537.36 == h[0] && 537.36 == h[2] && 28 <= parseFloat(h[1]) && "WebKit" == C && (C = ["Blink"]); O && (x || h[1]) ? (C && (C[1] = "like Chrome"), h = h[1] || (h = h[0], 530 > h ? 1 : 532 > h ? 2 : 532.05 > h ? 3 : 533 > h ? 4 : 534.03 > h ? 5 : 534.07 > h ? 6 : 534.1 > h ? 7 : 534.13 > h ? 8 : 534.16 > h ? 9 : 534.24 > h ? 10 : 534.3 > h ? 11 : 535.01 > h ? 12 : 535.02 > h ? "13+" : 535.07 > h ? 15 : 535.11 > h ? 16 : 535.19 > h ? 17 : 536.05 > h ? 18 : 536.1 > h ? 19 : 537.01 > h ? 20 : 537.11 > h ? "21+" : 537.13 > h ? 23 : 537.18 > h ? 24 : 537.24 > h ? 25 : 537.36 > h ? 26 : "Blink" != C ? "27" : "28")) : (C && (C[1] = "like Safari"), h = (h = h[0], 400 > h ? 1 : 500 > h ? 2 : 526 > h ? 3 : 533 > h ? 4 : 534 > h ? "4+" : 535 > h ? 5 : 537 > h ? 6 : 538 > h ? 7 : 601 > h ? 8 : "8")); C && (C[1] += " " + (h += "number" == typeof h ? ".x" : /[.+]/.test(h) ? "" : "+")); "Safari" == u && (!q || 45 < parseInt(q)) && (q = h) } "Opera" == u && (h = /\bzbov|zvav$/.exec(w)) ? (u += " ", g.unshift("desktop mode"), "zvav" == h ? (u += "Mini", q = null) : u += "Mobile", w = w.replace(RegExp(" *" + h + "$"), "")) : "Safari" == u && /\bChrome\b/.exec(C && C[1]) && (g.unshift("desktop mode"), u = "Chrome Mobile", q = null, /\bOS X\b/.test(w) ? (M = "Apple", w = "iOS 4.3+") : w = null); q && 0 == q.indexOf(h = /[\d.]+$/.exec(w)) && -1 < a.indexOf("/" + h + "-") && (w = String(w.replace(h, "")).replace(/^ +| +$/g, "")); C && !/\b(?:Avant|Nook)\b/.test(u) && (/Browser|Lunascape|Maxthon/.test(u) || "Safari" != u && /^iOS/.test(w) && /\bSafari\b/.test(C[1]) || /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(u) && C[1]) && (h = C[C.length - 1]) && g.push(h); g.length && (g = ["(" + g.join("; ") + ")"]); M && A && 0 > A.indexOf(M) && g.push("on " + M); A && g.push((/^on /.test(g[g.length - 1]) ? "" : "on ") + A); if (w) { var W = (h = / ([\d.+]+)$/.exec(w)) && "/" == w.charAt(w.length - h[0].length - 1); w = { architecture: 32, family: h && !W ? w.replace(h[0], "") : w, version: h ? h[1] : null, toString: function() { var a = this.version; return this.family + (a && !W ? " " + a : "") + (64 == this.architecture ? " 64-bit" : "") } } }(h = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(R)) && !/\bi686\b/i.test(R) ? (w && (w.architecture = 64, w.family = w.family.replace(RegExp(" *" + h), "")), u && (/\bWOW64\b/i.test(a) || O && /\w(?:86|32)$/.test(p.cpuClass || p.platform) && !/\bWin64; x64\b/i.test(a)) && g.unshift("32-bit")) : w && /^OS X/.test(w.family) && "Chrome" == u && 39 <= parseFloat(q) && (w.architecture = 64); a || (a = null); r = {}; r.description = a; r.layout = C && C[0]; r.manufacturer = M; r.name = u; r.prerelease = N; r.product = A; r.ua = a; r.version = u && q; r.os = w || { architecture: null, family: null, version: null, toString: function() { return "null" } }; r.parse = m; r.toString = function() { return this.description || "" }; r.version && g.unshift(q); r.name && g.unshift(u); w && u && (w != String(w).split(" ")[0] || w != u.split(" ")[0] && !A) && g.push(A ? "(" + w + ")" : "on " + w); g.length && (r.description = g.join(" ")); return r } var f = { "function": !0, object: !0 }, v = f[typeof window] && window || this, r = f[typeof exports] && exports; f = f[typeof module] && module && !module.nodeType && module; var y = r && f && "object" == typeof global && global; !y || y.global !== y && y.window !== y && y.self !== y || (v = y); var x = Math.pow(2, 53) - 1, B = /\bOpera/; y = Object.prototype; var t = y.hasOwnProperty, z = y.toString, H = m(); "function" == typeof define && "object" == typeof define.amd && define.amd ? (v.platform = H, define(function() { return H })) : r && f ? b(H, function(a, b) { r[b] = a }) : v.platform = H }).call(this); function buildIOSMeta() { for (var a = [{ name: "viewport", content: "width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" }, { name: "apple-mobile-web-app-capable", content: "yes" }, { name: "apple-mobile-web-app-status-bar-style", content: "black" }], c = 0; c < a.length; c++) { var e = document.createElement("meta"); e.name = a[c].name; e.content = a[c].content; var b = window.document.head.querySelector('meta[name="' + e.name + '"]'); b && b.parentNode.removeChild(b); window.document.head.appendChild(e) } } function hideIOSFullscreenPanel() { jQuery(".xxx-ios-fullscreen-message").css("display", "none"); jQuery(".xxx-ios-fullscreen-scroll").css("display", "none"); jQuery(".xxx-game-iframe-full").removeClass("xxx-game-iframe-iphone-se") } function buildIOSFullscreenPanel() { jQuery("body").append('<div class="xxx-ios-fullscreen-message"><div class="xxx-ios-fullscreen-swipe"></div></div><div class="xxx-ios-fullscreen-scroll"></div>') } function showIOSFullscreenPanel() { jQuery(".xxx-ios-fullscreen-message").css("display", "block"); jQuery(".xxx-ios-fullscreen-scroll").css("display", "block") } function __iosResize() { window.scrollTo(0, 0); console.log(window.devicePixelRatio); console.log(window.innerWidth); console.log(window.innerHeight); if ("iPhone" === platform.product) switch (window.devicePixelRatio) { case 2: switch (window.innerWidth) { case 568: 320 !== window.innerHeight && jQuery(".xxx-game-iframe-full").addClass("xxx-game-iframe-iphone-se"); break; case 667: 375 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 808: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; default: hideIOSFullscreenPanel() } break; case 3: switch (window.innerWidth) { case 736: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 724: 375 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 808: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; default: hideIOSFullscreenPanel() } break; default: hideIOSFullscreenPanel() } } function iosResize() { __iosResize(); setTimeout(function() { __iosResize() }, 500) } function iosInIframe() { try { return window.self !== window.top } catch (a) { return !0 } } $(document).ready(function() { platform && "iPhone" === platform.product && "safari" !== platform.name.toLowerCase() && (buildIOSFullscreenPanel(), buildIOSMeta()) }); jQuery(window).resize(function() { platform && "iPhone" === platform.product && "safari" !== platform.name.toLowerCase() && iosResize() }); var s_iScaleFactor = 1, s_bIsRetina, s_oCanvasLeft, s_oCanvasTop; (function(a) { (jQuery.browser = jQuery.browser || {}).mobile = /android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|tablet|treo|up\.(browser|link)|vodafone|wap|webos|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)) })(navigator.userAgent || navigator.vendor || window.opera); $(window).resize(function() { sizeHandler() }); function trace(a) { console.log(a) } function isIOS() { isRetina(); for (var a = "iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";"); a.length;) if (navigator.platform === a.pop()) return s_bIsIphone = !0; return s_bIsIphone = !1 } function isRetina() { s_bIsRetina = matchMedia("(-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2), (min-resolution: 192dpi)").matches ? !0 : !1 } function getSize(a) { var c = a.toLowerCase(), e = window.document, b = e.documentElement; if (void 0 === window["inner" + a]) a = b["client" + a]; else if (window["inner" + a] != b["client" + a]) { var d = e.createElement("body"); d.id = "vpw-test-b"; d.style.cssText = "overflow:scroll"; var k = e.createElement("div"); k.id = "vpw-test-d"; k.style.cssText = "position:absolute;top:-1000px"; k.innerHTML = "<style>@media(" + c + ":" + b["client" + a] + "px){body#vpw-test-b div#vpw-test-d{" + c + ":7px!important}}</style>"; d.appendChild(k); b.insertBefore(d, e.head); a = 7 == k["offset" + a] ? b["client" + a] : window["inner" + a]; b.removeChild(d) } else a = window["inner" + a]; return a } window.addEventListener("orientationchange", onOrientationChange); function onOrientationChange() { window.matchMedia("(orientation: portrait)").matches && sizeHandler(); window.matchMedia("(orientation: landscape)").matches && sizeHandler() } function getIOSWindowHeight() { return document.documentElement.clientWidth / window.innerWidth * window.innerHeight } function getHeightOfIOSToolbars() { var a = (0 === window.orientation ? screen.height : screen.width) - getIOSWindowHeight(); return 1 < a ? a : 0 } function sizeHandler() { window.scrollTo(0, 1); if ($("#canvas")) { var a = "safari" === platform.name.toLowerCase() ? getIOSWindowHeight() : getSize("Height"); var c = getSize("Width"); _checkOrientation(c, a); var e = Math.min(a / CANVAS_HEIGHT, c / CANVAS_WIDTH), b = Math.round(CANVAS_WIDTH * e); e = Math.round(CANVAS_HEIGHT * e); if (e < a) { var d = a - e; e += d; b += CANVAS_WIDTH / CANVAS_HEIGHT * d } else b < c && (d = c - b, b += d, e += CANVAS_HEIGHT / CANVAS_WIDTH * d); d = a / 2 - e / 2; var k = c / 2 - b / 2, l = CANVAS_WIDTH / b; if (k * l < -EDGEBOARD_X || d * l < -EDGEBOARD_Y) e = Math.min(a / (CANVAS_HEIGHT - 2 * EDGEBOARD_Y), c / (CANVAS_WIDTH - 2 * EDGEBOARD_X)), b = Math.round(CANVAS_WIDTH * e), e = Math.round(CANVAS_HEIGHT * e), d = (a - e) / 2, k = (c - b) / 2, l = CANVAS_WIDTH / b; s_iOffsetX = -1 * k * l; s_iOffsetY = -1 * d * l; 0 <= d && (s_iOffsetY = 0); 0 <= k && (s_iOffsetX = 0); null !== s_oInterface && s_oInterface.refreshButtonPos(s_iOffsetX, s_iOffsetY); null !== s_oMenu && s_oMenu.refreshButtonPos(s_iOffsetX, s_iOffsetY); null !== s_oLevelMenu && s_oLevelMenu.refreshButtonPos(s_iOffsetX, s_iOffsetY); s_bIsRetina ? (canvas = document.getElementById("canvas"), s_oStage.canvas.width = 2 * b, s_oStage.canvas.height = 2 * e, canvas.style.width = b + "px", canvas.style.height = e + "px", c = Math.min(b / CANVAS_WIDTH, e / CANVAS_HEIGHT), s_oStage.scaleX = s_oStage.scaleY = 2 * c, s_iScaleFactor = 2 * c) : s_bMobile ? ($("#canvas").css("width", b + "px"), $("#canvas").css("height", e + "px")) : (s_oStage.canvas.width = b, s_oStage.canvas.height = e, s_iScaleFactor = Math.min(b / CANVAS_WIDTH, e / CANVAS_HEIGHT), s_oStage.scaleX = s_oStage.scaleY = s_iScaleFactor); 0 > d || (d = (a - e) / 2); $("#canvas").css("top", d + "px"); $("#canvas").css("left", k + "px"); fullscreenHandler() } } function _checkOrientation(a, c) { s_bMobile && ENABLE_CHECK_ORIENTATION && (a > c ? "landscape" === $(".orientation-msg-container").attr("data-orientation") ? ($(".orientation-msg-container").css("display", "none"), s_oMain.startUpdate()) : ($(".orientation-msg-container").css("display", "block"), s_oMain.stopUpdate()) : "portrait" === $(".orientation-msg-container").attr("data-orientation") ? ($(".orientation-msg-container").css("display", "none"), s_oMain.startUpdate()) : ($(".orientation-msg-container").css("display", "block"), s_oMain.stopUpdate())) } function createBitmap(a, c, e) { var b = new createjs.Bitmap(a), d = new createjs.Shape; c && e ? d.graphics.beginFill("#fff").drawRect(0, 0, c, e) : d.graphics.beginFill("#ff0").drawRect(0, 0, a.width, a.height); b.hitArea = d; return b } function createSprite(a, c, e, b, d, k) { a = null !== c ? new createjs.Sprite(a, c) : new createjs.Sprite(a); c = new createjs.Shape; c.graphics.beginFill("#000000").drawRect(-e, -b, d, k); a.hitArea = c; return a } function randomFloatBetween(a, c, e) { "undefined" === typeof e && (e = 2); return parseFloat(Math.min(a + Math.random() * (c - a), c).toFixed(e)) } function shuffle(a) { for (var c = a.length, e, b; 0 !== c;) b = Math.floor(Math.random() * c), --c, e = a[c], a[c] = a[b], a[b] = e; return a } function formatTime(a) { a /= 1E3; var c = Math.floor(a / 60); a = parseFloat(a - 60 * c).toFixed(1); var e = ""; e = 10 > c ? e + ("0" + c + ":") : e + (c + ":"); return 10 > a ? e + ("0" + a) : e + a } function NoClickDelay(a) { this.element = a; window.Touch && this.element.addEventListener("touchstart", this, !1) } function shuffle(a) { for (var c = a.length, e, b; 0 < c;) b = Math.floor(Math.random() * c), c--, e = a[c], a[c] = a[b], a[b] = e; return a } NoClickDelay.prototype = { handleEvent: function(a) { switch (a.type) { case "touchstart": this.onTouchStart(a); break; case "touchmove": this.onTouchMove(a); break; case "touchend": this.onTouchEnd(a) } }, onTouchStart: function(a) { a.preventDefault(); this.moved = !1; this.element.addEventListener("touchmove", this, !1); this.element.addEventListener("touchend", this, !1) }, onTouchMove: function(a) { this.moved = !0 }, onTouchEnd: function(a) { this.element.removeEventListener("touchmove", this, !1); this.element.removeEventListener("touchend", this, !1); if (!this.moved) { a = document.elementFromPoint(a.changedTouches[0].clientX, a.changedTouches[0].clientY); 3 == a.nodeType && (a = a.parentNode); var c = document.createEvent("MouseEvents"); c.initEvent("click", !0, !0); a.dispatchEvent(c) } } }; (function() { function a(a) { var b = { focus: "visible", focusin: "visible", pageshow: "visible", blur: "hidden", focusout: "hidden", pagehide: "hidden" }; a = a || window.event; a.type in b ? document.body.className = b[a.type] : (document.body.className = this[c] ? "hidden" : "visible", "hidden" === document.body.className ? s_oMain.stopUpdate() : s_oMain.startUpdate()) } var c = "hidden"; c in document ? document.addEventListener("visibilitychange", a) : (c = "mozHidden") in document ? document.addEventListener("mozvisibilitychange", a) : (c = "webkitHidden") in document ? document.addEventListener("webkitvisibilitychange", a) : (c = "msHidden") in document ? document.addEventListener("msvisibilitychange", a) : "onfocusin" in document ? document.onfocusin = document.onfocusout = a : window.onpageshow = window.onpagehide = window.onfocus = window.onblur = a })(); function ctlArcadeResume() { null !== s_oMain && s_oMain.startUpdate() } function ctlArcadePause() { null !== s_oMain && s_oMain.stopUpdate() } function getParamValue(a) { for (var c = window.location.search.substring(1).split("&"), e = 0; e < c.length; e++) { var b = c[e].split("="); if (b[0] == a) return b[1] } } function playSound(a, c, e) { return !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (s_aSounds[a].play(), s_aSounds[a].volume(c), s_aSounds[a].loop(e), s_aSounds[a]) : null } function stopSound(a) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].stop() } function setVolume(a, c) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].volume(c) } function setMute(a, c) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].mute(c) } function saveItem(a, c) { s_bStorageAvailable && localStorage.setItem(a, c) } function getItem(a) { return s_bStorageAvailable ? localStorage.getItem(a) : null } function fullscreenHandler() { ENABLE_FULLSCREEN && !1 !== screenfull.isEnabled && (s_bFullscreen = screenfull.isFullscreen, null !== s_oInterface && s_oInterface.resetFullscreenBut(), null !== s_oMenu && s_oMenu.resetFullscreenBut(), null !== s_oLevelMenu && s_oLevelMenu.resetFullscreenBut()) } if (screenfull.isEnabled) screenfull.on("change", function() { s_bFullscreen = screenfull.isFullscreen; null !== s_oInterface && s_oInterface.resetFullscreenBut(); null !== s_oMenu && s_oMenu.resetFullscreenBut(); null !== s_oLevelMenu && s_oLevelMenu.resetFullscreenBut() }); function CSpriteLibrary() { var a = {}, c, e, b, d, k, l; this.init = function(a, m, f) { c = {}; b = e = 0; d = a; k = m; l = f }; this.addSprite = function(b, d) { if (!a.hasOwnProperty(b)) { var f = new Image; a[b] = c[b] = { szPath: d, oSprite: f, bLoaded: !1 }; e++ } }; this.getSprite = function(b) { return a.hasOwnProperty(b) ? a[b].oSprite : null }; this._onSpritesLoaded = function() { e = 0; k.call(l) }; this._onSpriteLoaded = function() { d.call(l); ++b === e && this._onSpritesLoaded() }; this.loadSprites = function() { for (var a in c) c[a].oSprite.oSpriteLibrary = this, c[a].oSprite.szKey = a, c[a].oSprite.onload = function() { this.oSpriteLibrary.setLoaded(this.szKey); this.oSpriteLibrary._onSpriteLoaded(this.szKey) }, c[a].oSprite.onerror = function(a) { var b = a.currentTarget; setTimeout(function() { c[b.szKey].oSprite.src = c[b.szKey].szPath }, 500) }, c[a].oSprite.src = c[a].szPath }; this.setLoaded = function(b) { a[b].bLoaded = !0 }; this.isLoaded = function(b) { return a[b].bLoaded }; this.getNumSprites = function() { return e } } var s_oDataLevel = [{ ball_speed: 50, ball_number: 60, num_colors: 4, hero_pos: { x: 450, y: 270 }, bg_image: "bg_game_1", fg_image: "fg_game_1", curve_point: [{ x: -25.2, y: 262.4 }, { x: 24.8, y: 221.4 }, { x: 64.8, y: 191.4 }, { x: 105.1, y: 167.25 }, { x: 152.1, y: 144.4 }, { x: 181.65, y: 131 }, { x: 213.9, y: 118.45 }, { x: 245.75, y: 106.5 }, { x: 277.65, y: 95.6 }, { x: 310.4, y: 85.35 }, { x: 343.3, y: 76.95 }, { x: 376.85, y: 70.7 }, { x: 410.75, y: 66.55 }, { x: 444.85, y: 63.2 }, { x: 479.25, y: 60.85 }, { x: 513.35, y: 59.35 }, { x: 547.6, y: 59.85 }, { x: 581.35, y: 63.2 }, { x: 614.9, y: 71.55 }, { x: 646.85, y: 82.35 }, { x: 677.05, y: 99.45 }, { x: 704.4, y: 118.95 }, { x: 731.25, y: 141.3 }, { x: 753.1, y: 167.1 }, { x: 771, y: 196.1 }, { x: 782.3, y: 228.05 }, { x: 783.6, y: 262.1 }, { x: 769.4, y: 292.45 }, { x: 738.8, y: 305.9 }, { x: 706.9, y: 295 }, { x: 687.1, y: 267.3 }, { x: 673.65, y: 236.3 }, { x: 657.7, y: 206.05 }, { x: 640.1, y: 176.35 }, { x: 615.55, y: 152.45 }, { x: 587.05, y: 134.85 }, { x: 554.85, y: 121.4 }, { x: 521.2, y: 116.4 }, { x: 487.65, y: 116.4 }, { x: 453.6, y: 122.3 }, { x: 420.2, y: 129 }, { x: 386.6, y: 135.7 }, { x: 353.05, y: 144.1 }, { x: 321.15, y: 155.2 }, { x: 289.25, y: 167.45 }, { x: 258.7, y: 183.05 }, { x: 230.5, y: 201.7 }, { x: 203.5, y: 222.65 }, { x: 183.15, y: 250.25 }, { x: 171.2, y: 282.05 }, { x: 167.2, y: 315.7 }, { x: 170.55, y: 349.9 }, { x: 178.45, y: 383.3 }, { x: 193.9, y: 413.7 }, { x: 215.05, y: 440.75 }, { x: 242.25, y: 460.5 }, { x: 274.15, y: 472.25 }, { x: 307.85, y: 478.3 }, { x: 342.5, y: 481.5 }, { x: 374.35, y: 483.2 }, { x: 414.65, y: 484.2 }, { x: 454.95, y: 484.2 }, { x: 488.55, y: 482.7 }, { x: 522.05, y: 479.85 }, { x: 557.35, y: 474.95 }, { x: 594.25, y: 467.9 }, { x: 627.9, y: 458.85 }, { x: 661.4, y: 446.8 }, { x: 688.3, y: 435.2 }, { x: 718.5, y: 416.75 }, { x: 735.3, y: 394.85 }, { x: 735.3, y: 366.35 }, { x: 715.1, y: 347.9 }, { x: 689.95, y: 335.65 }, { x: 663.1, y: 335.65 }, { x: 636.2, y: 345.9 }, { x: 614.45, y: 360.15 }, { x: 589.2, y: 378.6 }, { x: 559, y: 398.75 }, { x: 530.5, y: 412.5 }, { x: 503.6, y: 421.6 }, { x: 476.75, y: 426.65 }, { x: 448.2, y: 428.3 }, { x: 416.3, y: 425.95 }, { x: 387.8, y: 420.9 }, { x: 360.95, y: 413.5 }, { x: 332.05, y: 402.25 }, { x: 303.8, y: 385.5 }, { x: 283.35, y: 363.7 }, { x: 270.45, y: 335.15 } ] }, { ball_speed: 40, ball_number: 80, num_colors: 5, hero_pos: { x: 450, y: 280 }, bg_image: "bg_game_2", fg_image: "fg_game_2", curve_point: [{ x: 271.65, y: -62.1 }, { x: 381.65, y: -26.1 }, { x: 464.35, y: 2.85 }, { x: 547.1, y: 35.6 }, { x: 583.25, y: 51.8 }, { x: 617.75, y: 67.8 }, { x: 650.5, y: 85.05 }, { x: 679.8, y: 102.3 }, { x: 709.1, y: 121.25 }, { x: 734.95, y: 141.6 }, { x: 765.45, y: 169.7 }, { x: 790.6, y: 200.7 }, { x: 804.75, y: 227.05 }, { x: 809.9, y: 254.8 }, { x: 803.55, y: 283.45 }, { x: 788, y: 309.8 }, { x: 766.3, y: 333.9 }, { x: 740.3, y: 355.8 }, { x: 711, y: 376.15 }, { x: 676.5, y: 396.85 }, { x: 646.85, y: 412.35 }, { x: 615.85, y: 427 }, { x: 577.95, y: 441.8 }, { x: 545.2, y: 453 }, { x: 505.55, y: 464.9 }, { x: 469.35, y: 473.35 }, { x: 424.55, y: 481.1 }, { x: 378, y: 485.75 }, { x: 326.3, y: 484.05 }, { x: 286.65, y: 477.15 }, { x: 251.7, y: 463.35 }, { x: 218.95, y: 439.25 }, { x: 193.6, y: 408.2 }, { x: 178.1, y: 375.45 }, { x: 167.9, y: 343.05 }, { x: 162.25, y: 306.85 }, { x: 161.55, y: 263.8 }, { x: 165.7, y: 227.6 }, { x: 173.6, y: 194.85 }, { x: 185, y: 162.1 }, { x: 203.25, y: 129.35 }, { x: 223.95, y: 103 }, { x: 248.05, y: 83.15 }, { x: 275.65, y: 69.35 }, { x: 308.4, y: 64.2 }, { x: 341.15, y: 65.95 }, { x: 373.9, y: 70.95 }, { x: 403.15, y: 76.25 }, { x: 453.15, y: 88.7 }, { x: 501.4, y: 103.35 }, { x: 541.05, y: 117.1 }, { x: 608.25, y: 146.6 }, { x: 656.35, y: 172.8 }, { x: 700.1, y: 205.55 }, { x: 722.35, y: 239.65 }, { x: 717.55, y: 266.7 }, { x: 701.35, y: 292.55 }, { x: 673.75, y: 316.7 }, { x: 640.85, y: 339.1 }, { x: 609.8, y: 355.65 }, { x: 539.15, y: 383.4 }, { x: 485.75, y: 398.9 }, { x: 435.75, y: 407.85 }, { x: 382.3, y: 409.6 }, { x: 354.75, y: 403.7 }, { x: 327.15, y: 384.75 }, { x: 311.65, y: 357.2 }, { x: 303.05, y: 327.9 }, { x: 299.6, y: 291.7 }, { x: 302.85, y: 252.05 }, { x: 309.6, y: 221.05 }, { x: 321.65, y: 188.3 }, { x: 340.6, y: 162.95 }, { x: 361.3, y: 150.55 }, { x: 385.4, y: 149.35 }, { x: 416.45, y: 154.7 }, { x: 456.75, y: 166.4 }, { x: 503.5, y: 183.65 }, { x: 556.9, y: 206.2 } ] }, { ball_speed: 30, ball_number: 100, num_colors: 5, hero_pos: { x: 500, y: 200 }, bg_image: "bg_game_3", fg_image: "fg_game_3", curve_point: [{ x: -88, y: 300.9 }, { x: -48, y: 266.9 }, { x: 2, y: 229.9 }, { x: 52, y: 193.9 }, { x: 92, y: 168.9 }, { x: 141.75, y: 135.95 }, { x: 183.15, y: 114.2 }, { x: 253.25, y: 88.25 }, { x: 304.1, y: 75.65 }, { x: 367.2, y: 63.9 }, { x: 421.55, y: 58.95 }, { x: 460.1, y: 58.95 }, { x: 505.7, y: 59.65 }, { x: 542.5, y: 62.65 }, { x: 582.85, y: 68.8 }, { x: 619.65, y: 77.05 }, { x: 658.2, y: 88.95 }, { x: 695.05, y: 104.75 }, { x: 731.65, y: 125.75 }, { x: 759.55, y: 149.25 }, { x: 781.1, y: 175.55 }, { x: 795.15, y: 203.4 }, { x: 803, y: 236.75 }, { x: 804.95, y: 271.8 }, { x: 800.9, y: 305.1 }, { x: 791.1, y: 338.05 }, { x: 772.85, y: 368.4 }, { x: 750.4, y: 394.85 }, { x: 719.05, y: 419.75 }, { x: 689.25, y: 437.8 }, { x: 657.7, y: 451.3 }, { x: 624.4, y: 462.15 }, { x: 592.3, y: 469.55 }, { x: 560.55, y: 475.3 }, { x: 523.75, y: 478.8 }, { x: 490.45, y: 480.25 }, { x: 453.65, y: 479.9 }, { x: 414, y: 476.55 }, { x: 380.7, y: 471.8 }, { x: 347.4, y: 465.5 }, { x: 312.35, y: 455.85 }, { x: 279.05, y: 443.75 }, { x: 249.05, y: 428.5 }, { x: 212.25, y: 402.2 }, { x: 184.2, y: 368.9 }, { x: 167.2, y: 337.35 }, { x: 159.15, y: 302.3 }, { x: 158.6, y: 268.45 }, { x: 167.55, y: 240.4 }, { x: 193.85, y: 222.35 }, { x: 222.75, y: 226.55 }, { x: 241.35, y: 251.8 }, { x: 238.9, y: 281.6 }, { x: 245.2, y: 311.6 }, { x: 262.05, y: 343.15 }, { x: 284.8, y: 366.1 }, { x: 311.1, y: 384 }, { x: 353.2, y: 401.5 }, { x: 407.55, y: 413.8 }, { x: 458.35, y: 418.85 }, { x: 509.2, y: 418.85 }, { x: 558.3, y: 415.2 }, { x: 609.3, y: 404.3 }, { x: 647.85, y: 387.85 }, { x: 684.7, y: 361.9 }, { x: 708, y: 332.1 }, { x: 722, y: 298.8 }, { x: 725.55, y: 269 }, { x: 715, y: 240.95 }, { x: 688.7, y: 226.9 }, { x: 658.75, y: 232.15 }, { x: 645.95, y: 260.2 }, { x: 642.8, y: 290.35 }, { x: 627, y: 317 }, { x: 600.9, y: 337.2 }, { x: 571.1, y: 350 }, { x: 538.3, y: 357.7 }, { x: 505, y: 360.5 }, { x: 459.4, y: 360.15 }, { x: 420.85, y: 355.05 }, { x: 387.55, y: 345.6 }, { x: 355.45, y: 329.1 }, { x: 332, y: 305.8 }, { x: 318.85, y: 274.4 }, { x: 317.1, y: 246.35 } ] }, { ball_speed: 30, ball_number: 100, num_colors: 5, hero_pos: { x: 470, y: 240 }, bg_image: "bg_game_4", fg_image: "fg_game_1", curve_point: [{ x: 690.7, y: -137.75 }, { x: 690.7, y: -100.5 }, { x: 690.7, y: -68.15 }, { x: 690.7, y: -35.2 }, { x: 690.7, y: -1.55 }, { x: 690.7, y: 72.05 }, { x: 690.7, y: 205.05 }, { x: 688.15, y: 238 }, { x: 685.55, y: 271 }, { x: 681, y: 303.95 }, { x: 671.3, y: 335.65 }, { x: 653.85, y: 364.1 }, { x: 635.75, y: 391.25 }, { x: 611.2, y: 414.55 }, { x: 583.4, y: 433.95 }, { x: 554.3, y: 450.75 }, { x: 523.25, y: 461.1 }, { x: 489.6, y: 466.3 }, { x: 457.3, y: 465.65 }, { x: 424.3, y: 461.1 }, { x: 390.7, y: 452.05 }, { x: 361.6, y: 437.8 }, { x: 334.45, y: 419.7 }, { x: 311.15, y: 395.8 }, { x: 292.4, y: 369.3 }, { x: 279.45, y: 338.25 }, { x: 267.8, y: 306.55 }, { x: 262.65, y: 274.2 }, { x: 262, y: 241.25 }, { x: 266.55, y: 208.9 }, { x: 277.5, y: 176.6 }, { x: 295, y: 148.8 }, { x: 315.05, y: 121.6 }, { x: 337.65, y: 97.05 }, { x: 366.75, y: 79.6 }, { x: 397.8, y: 68.6 }, { x: 430.15, y: 62.15 }, { x: 463.75, y: 61.5 }, { x: 496.1, y: 65.35 }, { x: 529.05, y: 74.4 }, { x: 557.5, y: 91.25 }, { x: 584.05, y: 111.9 }, { x: 605.35, y: 137.15 }, { x: 618.95, y: 167.55 }, { x: 629.3, y: 199.2 }, { x: 636.4, y: 232.2 }, { x: 636.4, y: 265.15 }, { x: 628.65, y: 298.15 }, { x: 615.7, y: 328.55 }, { x: 596.3, y: 355.7 }, { x: 571.1, y: 377.05 }, { x: 543.95, y: 395.15 }, { x: 512.25, y: 406.8 }, { x: 479.25, y: 410.65 }, { x: 446.95, y: 409.35 }, { x: 413.3, y: 402.25 }, { x: 382.9, y: 389.35 }, { x: 357.05, y: 368.65 }, { x: 336.35, y: 343.4 }, { x: 318.9, y: 313.65 }, { x: 311.15, y: 282 }, { x: 310.5, y: 249 }, { x: 315.65, y: 216.05 }, { x: 329.25, y: 185.65 }, { x: 350.6, y: 159.1 }, { x: 374.5, y: 138.45 }, { x: 404.25, y: 122.9 }, { x: 436.6, y: 113.2 }, { x: 469.55, y: 113.85 }, { x: 501.25, y: 124.2 }, { x: 531, y: 139.7 }, { x: 556.85, y: 161.05 }, { x: 574.95, y: 188.2 }, { x: 585.95, y: 219.9 }, { x: 587.25, y: 252.9 }, { x: 579.5, y: 284.55 }, { x: 564, y: 314.95 }, { x: 540.05, y: 338.25 }, { x: 509.65, y: 352.45 }, { x: 477.35, y: 360.85 }, { x: 443.7, y: 358.3 }, { x: 413.3, y: 344.7 }, { x: 388.75, y: 322.1 }, { x: 371.95, y: 294.25 }, { x: 363.5, y: 249 } ] }, { ball_speed: 30, ball_number: 100, num_colors: 5, hero_pos: { x: 470, y: 250 }, bg_image: "bg_game_5", fg_image: "fg_game_1", curve_point: [{ x: 241.3, y: 708.35 }, { x: 219.3, y: 638.35 }, { x: 200.3, y: 568.35 }, { x: 187.8, y: 512.4 }, { x: 182.6, y: 474 }, { x: 175.6, y: 430.3 }, { x: 170.35, y: 384.9 }, { x: 165.1, y: 329 }, { x: 163.8, y: 280.1 }, { x: 165.9, y: 241.65 }, { x: 172.2, y: 204.95 }, { x: 184.45, y: 166.35 }, { x: 205.55, y: 129.65 }, { x: 233.5, y: 103.45 }, { x: 268.45, y: 81.8 }, { x: 306.9, y: 66.05 }, { x: 345.35, y: 57.35 }, { x: 385.5, y: 53.85 }, { x: 427.45, y: 53.85 }, { x: 467.6, y: 55.6 }, { x: 511.3, y: 59.1 }, { x: 560.2, y: 64.15 }, { x: 605.65, y: 71.3 }, { x: 649.3, y: 81.8 }, { x: 691.25, y: 92.95 }, { x: 726.15, y: 107.3 }, { x: 750.3, y: 128.25 }, { x: 759.35, y: 152.7 }, { x: 757.45, y: 182.4 }, { x: 743.45, y: 208.25 }, { x: 732.1, y: 235.7 }, { x: 728.95, y: 261.9 }, { x: 734.2, y: 289.85 }, { x: 747.3, y: 316.05 }, { x: 759.55, y: 341.55 }, { x: 759.55, y: 371.25 }, { x: 752.55, y: 399.2 }, { x: 733.35, y: 423.85 }, { x: 705.4, y: 444.65 }, { x: 673.95, y: 462.1 }, { x: 644.25, y: 474.35 }, { x: 612.8, y: 483.05 }, { x: 572.6, y: 488.3 }, { x: 523.7, y: 491.8 }, { x: 469.55, y: 492 }, { x: 413.65, y: 494.05 }, { x: 362.95, y: 494.05 }, { x: 315.8, y: 490.55 }, { x: 280.85, y: 481.8 }, { x: 259.9, y: 460.85 }, { x: 259.9, y: 432.9 }, { x: 284.35, y: 418.95 }, { x: 315.8, y: 411.95 }, { x: 359.5, y: 411.25 }, { x: 406.65, y: 413 }, { x: 450.3, y: 414.75 }, { x: 501, y: 414.9 }, { x: 546.4, y: 414.05 }, { x: 593.6, y: 411.6 }, { x: 628.5, y: 403.55 }, { x: 659.95, y: 391.3 }, { x: 680.9, y: 372.1 }, { x: 680.9, y: 344.15 }, { x: 668.7, y: 319.7 }, { x: 651.25, y: 291.75 }, { x: 644.25, y: 260.3 }, { x: 651.25, y: 230.6 }, { x: 663.45, y: 206.15 }, { x: 673.95, y: 178.2 }, { x: 661.7, y: 153.9 }, { x: 628.5, y: 136.45 }, { x: 597.05, y: 125.6 }, { x: 562.15, y: 116.85 }, { x: 521.95, y: 109.9 }, { x: 473.05, y: 106.4 }, { x: 434.6, y: 104.65 }, { x: 382.2, y: 106.4 }, { x: 340.25, y: 115.15 }, { x: 310.55, y: 127.35 }, { x: 278.95, y: 143.1 }, { x: 249.25, y: 164.05 }, { x: 230.05, y: 192 }, { x: 221.3, y: 221.7 }, { x: 221.3, y: 253.15 }, { x: 230.05, y: 288.1 } ] }, { ball_speed: 30, ball_number: 100, num_colors: 5, hero_pos: { x: 460, y: 300 }, bg_image: "bg_game_6", fg_image: "fg_game_1", curve_point: [{ x: 782.5, y: 599.3 }, { x: 784.6, y: 518.5 }, { x: 785.6, y: 466.9 }, { x: 785.6, y: 417 }, { x: 783.55, y: 365.4 }, { x: 780.1, y: 313.8 }, { x: 776.7, y: 260.5 }, { x: 771.55, y: 219.2 }, { x: 757.75, y: 171.05 }, { x: 740.55, y: 133.2 }, { x: 724.55, y: 108.75 }, { x: 704.4, y: 88.45 }, { x: 673.5, y: 67.8 }, { x: 644.2, y: 57.5 }, { x: 609.8, y: 52.4 }, { x: 563.4, y: 54.1 }, { x: 527.25, y: 60.95 }, { x: 492.85, y: 69.55 }, { x: 460.2, y: 79.9 }, { x: 424.05, y: 95.35 }, { x: 396.55, y: 108.05 }, { x: 367.3, y: 125.25 }, { x: 336.3, y: 144.2 }, { x: 305.4, y: 163.8 }, { x: 277.85, y: 186.15 }, { x: 253.75, y: 210.3 }, { x: 229.7, y: 234.35 }, { x: 209.05, y: 258.4 }, { x: 191.85, y: 285.9 }, { x: 178.6, y: 311.75 }, { x: 170, y: 342.7 }, { x: 168.25, y: 370.25 }, { x: 179.65, y: 396 }, { x: 196.3, y: 419.05 }, { x: 220.4, y: 441.1 }, { x: 247.9, y: 456.55 }, { x: 277.15, y: 468.95 }, { x: 304.7, y: 476.35 }, { x: 333.9, y: 482.7 }, { x: 364.9, y: 486.2 }, { x: 399.3, y: 487.9 }, { x: 428.5, y: 488.75 }, { x: 469.8, y: 488.75 }, { x: 519.7, y: 486.65 }, { x: 555.85, y: 481.65 }, { x: 586.75, y: 475.15 }, { x: 619.45, y: 464.85 }, { x: 652.15, y: 446.75 }, { x: 679.65, y: 422.7 }, { x: 698.6, y: 391.7 }, { x: 710.65, y: 360.8 }, { x: 715.6, y: 324.65 }, { x: 715.6, y: 290.25 }, { x: 712, y: 250.65 }, { x: 706.15, y: 212.85 }, { x: 695.85, y: 180.2 }, { x: 684, y: 152.65 }, { x: 671.45, y: 132.2 }, { x: 652.85, y: 137.35 }, { x: 645.95, y: 161.25 }, { x: 637.35, y: 192.2 }, { x: 627.55, y: 220.4 }, { x: 618.95, y: 249.65 }, { x: 609.1, y: 278.9 }, { x: 598.15, y: 309.85 }, { x: 584.35, y: 339.1 }, { x: 567.15, y: 366.6 }, { x: 548.25, y: 390.7 }, { x: 524.15, y: 411.3 }, { x: 493.2, y: 426 }, { x: 457.1, y: 431.1 }, { x: 405.5, y: 429.75 }, { x: 367.65, y: 422.5 }, { x: 336.65, y: 413.9 }, { x: 309.15, y: 400.15 }, { x: 279.6, y: 376.05 }, { x: 265.45, y: 345.1 }, { x: 265.45, y: 310.7 }, { x: 280.95, y: 283.15 }, { x: 303.3, y: 255.65 }, { x: 333.1, y: 229.9 }, { x: 369.2, y: 202.35 }, { x: 401.85, y: 178.25 }, { x: 432.3, y: 155.9 }, { x: 470.15, y: 130.75 }, { x: 501.45, y: 115.1 }, { x: 528.95, y: 107.25 }, { x: 553.05, y: 117.55 }, { x: 550.85, y: 150.2 }, { x: 537.05, y: 181.2 } ] }, { ball_speed: 30, ball_number: 110, num_colors: 5, hero_pos: { x: 520, y: 250 }, bg_image: "bg_game_7", fg_image: "fg_game_1", curve_point: [{ x: 1010.45, y: 602.65 }, { x: 930.45, y: 532.65 }, { x: 850.45, y: 472.65 }, { x: 786.25, y: 438.95 }, { x: 753.85, y: 437 }, { x: 720.75, y: 439.6 }, { x: 688.35, y: 450 }, { x: 658.5, y: 464.9 }, { x: 627.7, y: 479.5 }, { x: 592.05, y: 487.7 }, { x: 549.9, y: 490.8 }, { x: 502.9, y: 490.8 }, { x: 460.75, y: 487.55 }, { x: 408.9, y: 478.5 }, { x: 376.5, y: 468.45 }, { x: 332.7, y: 450.6 }, { x: 303.5, y: 433.95 }, { x: 279.2, y: 416.05 }, { x: 256.5, y: 396.15 }, { x: 234.9, y: 371.85 }, { x: 216.8, y: 342.7 }, { x: 203.8, y: 310.2 }, { x: 196.7, y: 277.8 }, { x: 190.7, y: 242.15 }, { x: 189.05, y: 208.1 }, { x: 187.45, y: 167.55 }, { x: 189.55, y: 128.65 }, { x: 200.9, y: 97.9 }, { x: 226.85, y: 76.8 }, { x: 248.55, y: 80.35 }, { x: 264.15, y: 96.25 }, { x: 264.45, y: 122.2 }, { x: 263.95, y: 154.6 }, { x: 260.4, y: 183.8 }, { x: 255.5, y: 216.2 }, { x: 255.5, y: 251.9 }, { x: 262, y: 281.05 }, { x: 273.35, y: 311.85 }, { x: 291.15, y: 336.2 }, { x: 309.05, y: 358.85 }, { x: 333.35, y: 383.2 }, { x: 360.9, y: 404.25 }, { x: 388.45, y: 420.15 }, { x: 420.9, y: 430.2 }, { x: 454.9, y: 437 }, { x: 490.55, y: 440.6 }, { x: 535.95, y: 442.2 }, { x: 573.25, y: 439.15 }, { x: 602.4, y: 429.9 }, { x: 631.65, y: 417.25 }, { x: 659.2, y: 401 }, { x: 683.15, y: 379.95 }, { x: 707.5, y: 354 }, { x: 725.3, y: 328.05 }, { x: 739.9, y: 297.3 }, { x: 748, y: 258.35 }, { x: 750.95, y: 222.7 }, { x: 747.7, y: 188.7 }, { x: 735.05, y: 156.2 }, { x: 718.2, y: 128.65 }, { x: 697.1, y: 106 }, { x: 672.8, y: 86.7 }, { x: 646.85, y: 73.1 }, { x: 620.9, y: 61.9 }, { x: 591.75, y: 54.95 }, { x: 552.8, y: 50.05 }, { x: 515.55, y: 50.05 }, { x: 478.25, y: 52.95 }, { x: 440.95, y: 62.7 }, { x: 410.2, y: 75.6 }, { x: 382.65, y: 93.5 }, { x: 350.2, y: 122.5 }, { x: 327.5, y: 156.5 }, { x: 314.5, y: 187.3 }, { x: 308.05, y: 219.75 }, { x: 311.25, y: 260.3 }, { x: 319.9, y: 291.1 }, { x: 334.5, y: 318.65 }, { x: 353.25, y: 342.95 }, { x: 377.6, y: 363.2 }, { x: 405.8, y: 379.4 }, { x: 430.1, y: 389.15 }, { x: 459.3, y: 395.95 }, { x: 493.3, y: 399.85 }, { x: 532.2, y: 399.2 }, { x: 564.7, y: 394.05 }, { x: 597.1, y: 381.05 }, { x: 623, y: 366.45 }, { x: 648.95, y: 345.4 }, { x: 671.65, y: 319.45 }, { x: 689.45, y: 290.25 }, { x: 700.85, y: 254.6 }, { x: 700.65, y: 222.2 }, { x: 692.55, y: 189.75 }, { x: 673.1, y: 160.6 }, { x: 648.8, y: 137.85 }, { x: 622.85, y: 121.95 }, { x: 588.8, y: 109.05 }, { x: 553.15, y: 102.55 }, { x: 519.1, y: 102.55 }, { x: 489.95, y: 106.15 }, { x: 462.35, y: 113.75 }, { x: 438.05, y: 126.7 }, { x: 410.5, y: 146.3 } ] }, { ball_speed: 28, ball_number: 110, num_colors: 5, hero_pos: { x: 450, y: 290 }, bg_image: "bg_game_8", fg_image: "fg_game_1", curve_point: [{ x: 199.5, y: -37.3 }, { x: 339.5, y: -16.3 }, { x: 497.95, y: 27.15 }, { x: 528.05, y: 39.85 }, { x: 560.75, y: 52.55 }, { x: 591.5, y: 66.65 }, { x: 621.6, y: 84.65 }, { x: 649.7, y: 104.75 }, { x: 674.45, y: 127.45 }, { x: 699.2, y: 152.2 }, { x: 721.9, y: 176.25 }, { x: 745.95, y: 203 }, { x: 764, y: 231.75 }, { x: 776.05, y: 263.85 }, { x: 781.4, y: 297.95 }, { x: 780.75, y: 332.7 }, { x: 771.5, y: 366.3 }, { x: 751.5, y: 398.35 }, { x: 728.05, y: 421.75 }, { x: 703, y: 440.15 }, { x: 676.25, y: 452.85 }, { x: 644.55, y: 462.9 }, { x: 609.4, y: 472.9 }, { x: 570.95, y: 478.25 }, { x: 527.5, y: 481.6 }, { x: 489.1, y: 483.75 }, { x: 440.6, y: 480.4 }, { x: 402.15, y: 474.25 }, { x: 353.7, y: 460.9 }, { x: 320.3, y: 448.55 }, { x: 286.85, y: 431.8 }, { x: 251.75, y: 410.6 }, { x: 221.65, y: 385.5 }, { x: 196.9, y: 355.4 }, { x: 181.85, y: 320.35 }, { x: 175.2, y: 293.55 }, { x: 175.7, y: 263.85 }, { x: 181.55, y: 233.75 }, { x: 192.4, y: 204.15 }, { x: 207.45, y: 177.9 }, { x: 226.3, y: 152.2 }, { x: 248.05, y: 130.45 }, { x: 273.1, y: 113.05 }, { x: 299.85, y: 99.7 }, { x: 328.3, y: 93 }, { x: 358.2, y: 91.35 }, { x: 391.65, y: 93 }, { x: 420.35, y: 97.2 }, { x: 450.3, y: 104.05 }, { x: 480.4, y: 112.4 }, { x: 510.5, y: 122.4 }, { x: 540.55, y: 136.5 }, { x: 570.65, y: 152.5 }, { x: 600.7, y: 170.9 }, { x: 634.15, y: 195.95 }, { x: 662.55, y: 221.05 }, { x: 690.95, y: 257.8 }, { x: 707.05, y: 292.9 }, { x: 710.35, y: 324.65 }, { x: 698.65, y: 358.1 }, { x: 673.6, y: 384.85 }, { x: 635.15, y: 406.6 }, { x: 590, y: 422.95 }, { x: 541.55, y: 429.65 }, { x: 493.1, y: 429.65 }, { x: 447.95, y: 425.95 }, { x: 404.5, y: 415.95 }, { x: 364.4, y: 402.85 }, { x: 324.3, y: 386.7 }, { x: 292.55, y: 368.3 }, { x: 253.1, y: 338.2 }, { x: 233.05, y: 306.45 }, { x: 228, y: 279.7 }, { x: 231.15, y: 246.3 }, { x: 243.2, y: 219.4 }, { x: 264.95, y: 192.65 }, { x: 290, y: 172.6 }, { x: 318.4, y: 160.55 }, { x: 348.5, y: 152.2 }, { x: 381.6, y: 150.5 }, { x: 413.35, y: 152.2 }, { x: 443.45, y: 159.05 }, { x: 480.2, y: 174.1 }, { x: 513.65, y: 187.45 }, { x: 545.4, y: 202.5 }, { x: 575.5, y: 222.05 }, { x: 603.9, y: 250.5 }, { x: 622.3, y: 280.55 } ] }, { ball_speed: 28, ball_number: 100, num_colors: 5, hero_pos: { x: 450, y: 320 }, bg_image: "bg_game_9", fg_image: "fg_game_1", curve_point: [{ x: 608.95, y: -35.65 }, { x: 650.9, y: 33.1 }, { x: 678.35, y: 76.4 }, { x: 710.15, y: 131.4 }, { x: 733.35, y: 176.1 }, { x: 755.05, y: 219.05 }, { x: 768.75, y: 255.15 }, { x: 780.3, y: 293 }, { x: 789.05, y: 334.25 }, { x: 793.7, y: 375.5 }, { x: 793.15, y: 420.2 }, { x: 787.3, y: 457.95 }, { x: 773.45, y: 483.05 }, { x: 747.8, y: 490.65 }, { x: 722, y: 476.9 }, { x: 701.05, y: 449.4 }, { x: 685.6, y: 416.7 }, { x: 675.3, y: 382.35 }, { x: 663.2, y: 339.35 }, { x: 652.95, y: 298.1 }, { x: 644.35, y: 262.05 }, { x: 634, y: 227.65 }, { x: 616.85, y: 181.25 }, { x: 592.75, y: 140 }, { x: 568.7, y: 109.1 }, { x: 527.45, y: 78.15 }, { x: 493.05, y: 62.65 }, { x: 455.3, y: 56.95 }, { x: 410.6, y: 58.7 }, { x: 372.75, y: 67.3 }, { x: 340.15, y: 82.8 }, { x: 312.65, y: 105.15 }, { x: 289.75, y: 132.65 }, { x: 269.1, y: 160.1 }, { x: 249.55, y: 191 }, { x: 229.45, y: 228.9 }, { x: 208.45, y: 267.15 }, { x: 186.45, y: 313.1 }, { x: 169.25, y: 356.05 }, { x: 159, y: 407.65 }, { x: 164.1, y: 451.95 }, { x: 183.05, y: 472.55 }, { x: 214, y: 471.2 }, { x: 236.35, y: 443.7 }, { x: 246.6, y: 405.9 }, { x: 255.25, y: 361.2 }, { x: 266.9, y: 306.2 }, { x: 278.9, y: 258.1 }, { x: 294.4, y: 213.4 }, { x: 316.75, y: 175.6 }, { x: 340.8, y: 148.8 }, { x: 375.2, y: 128.15 }, { x: 414.35, y: 117.65 }, { x: 453.85, y: 114.25 }, { x: 491.75, y: 121.1 }, { x: 522.7, y: 136.6 }, { x: 547.1, y: 160.6 }, { x: 569.35, y: 193.3 }, { x: 585.9, y: 229.4 }, { x: 597.95, y: 268.9 }, { x: 606.75, y: 311.9 }, { x: 610.1, y: 349.7 }, { x: 601.55, y: 392.65 }, { x: 586.05, y: 425.3 }, { x: 560.3, y: 457.95 }, { x: 524.2, y: 482.05 }, { x: 482.95, y: 494.05 }, { x: 443.4, y: 492.4 }, { x: 402.15, y: 478.6 }, { x: 366.05, y: 458.15 }, { x: 336.8, y: 427.2 }, { x: 314.55, y: 387.7 }, { x: 307.65, y: 348.15 }, { x: 311.05, y: 301.75 }, { x: 321.4, y: 265.7 }, { x: 342, y: 229.55 }, { x: 376.4, y: 200.35 }, { x: 426.25, y: 184.85 } ] }, { ball_speed: 28, ball_number: 100, num_colors: 5, hero_pos: { x: 500, y: 320 }, bg_image: "bg_game_10", fg_image: "fg_game_1", curve_point: [{ x: 579.35, y: -58.85 }, { x: 669.35, y: -18.85 }, { x: 718.9, y: 36.2 }, { x: 746.35, y: 75.35 }, { x: 767.65, y: 116.55 }, { x: 783.45, y: 164.7 }, { x: 790.35, y: 205.95 }, { x: 794.45, y: 247.9 }, { x: 792.75, y: 283.95 }, { x: 786.4, y: 316.6 }, { x: 772.65, y: 349.3 }, { x: 753.75, y: 380.2 }, { x: 727.95, y: 407.7 }, { x: 686.75, y: 438.65 }, { x: 645.45, y: 459.3 }, { x: 593.95, y: 475.9 }, { x: 545.85, y: 486.05 }, { x: 492.55, y: 491.25 }, { x: 440.95, y: 490.55 }, { x: 398, y: 483.7 }, { x: 358.5, y: 469.9 }, { x: 319, y: 451.05 }, { x: 289.75, y: 427 }, { x: 255.4, y: 387.45 }, { x: 229.45, y: 346.15 }, { x: 210.55, y: 306.7 }, { x: 196.8, y: 256.85 }, { x: 195.4, y: 210.75 }, { x: 213.95, y: 162.65 }, { x: 243.2, y: 126.55 }, { x: 279.3, y: 100.75 }, { x: 315.35, y: 81.9 }, { x: 354.9, y: 67.25 }, { x: 390.95, y: 58.7 }, { x: 433.95, y: 51.85 }, { x: 478.6, y: 50.1 }, { x: 531.9, y: 53.5 }, { x: 574.85, y: 62.15 }, { x: 617.8, y: 77.4 }, { x: 657.35, y: 99.75 }, { x: 686.55, y: 123.8 }, { x: 713.15, y: 151.3 }, { x: 735.55, y: 185.7 }, { x: 748.95, y: 214.9 }, { x: 754.1, y: 247.55 }, { x: 738.65, y: 273.35 }, { x: 709.4, y: 271.45 }, { x: 690.5, y: 238.75 }, { x: 676.75, y: 207.85 }, { x: 659.55, y: 175.2 }, { x: 633.8, y: 145.95 }, { x: 599.45, y: 121.9 }, { x: 568.5, y: 108.15 }, { x: 539.1, y: 101 }, { x: 506.45, y: 97.55 }, { x: 461.8, y: 97.55 }, { x: 406.8, y: 102.65 }, { x: 356.95, y: 114.7 }, { x: 310.55, y: 133.6 }, { x: 272.75, y: 157.7 }, { x: 246.95, y: 183.45 }, { x: 238.4, y: 210.95 }, { x: 262.45, y: 229.85 }, { x: 293.35, y: 224 }, { x: 319.45, y: 206.3 }, { x: 348.7, y: 189.15 }, { x: 376.2, y: 171.9 }, { x: 407.15, y: 161.15 }, { x: 436.3, y: 154.25 }, { x: 469, y: 150.8 }, { x: 501.65, y: 150.8 }, { x: 534.3, y: 154.25 }, { x: 565.25, y: 162.8 }, { x: 594.45, y: 181.75 }, { x: 615.25, y: 216.1 } ] }, { ball_speed: 28, ball_number: 100, num_colors: 5, hero_pos: { x: 430, y: 300 }, bg_image: "bg_game_11", fg_image: "fg_game_1", curve_point: [{ x: 1093.45, y: 55.1 }, { x: 863.45, y: 55.1 }, { x: 186.75, y: 55.35 }, { x: 163.8, y: 58.9 }, { x: 156.95, y: 71.75 }, { x: 153.25, y: 88.85 }, { x: 156.75, y: 104.7 }, { x: 163.8, y: 118.8 }, { x: 186.75, y: 122.3 }, { x: 715.4, y: 118.8 }, { x: 741.1, y: 125.85 }, { x: 747.35, y: 148.75 }, { x: 744.7, y: 457.1 }, { x: 742.55, y: 482.85 }, { x: 719.1, y: 489.25 }, { x: 422.2, y: 490.6 }, { x: 189.55, y: 490.6 }, { x: 166.65, y: 485.35 }, { x: 156.1, y: 462.6 }, { x: 156.1, y: 200.05 }, { x: 159.6, y: 177.15 }, { x: 179, y: 171.85 }, { x: 422.2, y: 170.1 }, { x: 646, y: 170.1 }, { x: 670.65, y: 175.35 }, { x: 679.85, y: 198.25 }, { x: 679.85, y: 404.45 }, { x: 678.25, y: 428.25 }, { x: 658.15, y: 439.35 }, { x: 424.15, y: 441.45 }, { x: 256.7, y: 441.45 }, { x: 233.85, y: 434.4 }, { x: 225, y: 409.75 }, { x: 225, y: 275.8 }] }, { ball_speed: 28, ball_number: 90, num_colors: 5, hero_pos: { x: 530, y: 300 }, bg_image: "bg_game_12", fg_image: "fg_game_1", curve_point: [{ x: 222.55, y: -65.05 }, { x: 175, y: 421.5 }, { x: 171.65, y: 457.45 }, { x: 192, y: 484.6 }, { x: 225.9, y: 491.4 }, { x: 361.7, y: 491.4 }, { x: 524.5, y: 488 }, { x: 734.9, y: 483.25 }, { x: 767.5, y: 476.45 }, { x: 787.85, y: 456.1 }, { x: 794.65, y: 428.95 }, { x: 785.15, y: 395.05 }, { x: 769.5, y: 367.9 }, { x: 708.45, y: 252.5 }, { x: 613.45, y: 82.85 }, { x: 593.1, y: 62.5 }, { x: 565.95, y: 47.55 }, { x: 529.3, y: 50.95 }, { x: 495.35, y: 64.55 }, { x: 407.15, y: 150.75 }, { x: 261.2, y: 313.6 }, { x: 220.5, y: 353.3 }, { x: 213.4, y: 375.35 }, { x: 214.25, y: 392.3 }, { x: 222, y: 405.9 }, { x: 241.55, y: 421.15 }, { x: 411.2, y: 426.3 }, { x: 675.85, y: 426.3 }, { x: 703, y: 423.55 }, { x: 718, y: 403.2 }, { x: 715.9, y: 376.05 }, { x: 705.75, y: 348.9 }, { x: 588.35, y: 145.3 }, { x: 568, y: 123.6 }, { x: 547.6, y: 116.8 }, { x: 523.85, y: 127.65 }, { x: 347.45, y: 320.4 } ] }, { ball_speed: 27, ball_number: 90, num_colors: 5, hero_pos: { x: 490, y: 150 }, bg_image: "bg_game_13", fg_image: "fg_game_1", curve_point: [{ x: 167, y: -56.65 }, { x: 167, y: 55.25 }, { x: 167, y: 444.05 }, { x: 177.45, y: 473.4 }, { x: 204.75, y: 489.5 }, { x: 236.2, y: 493 }, { x: 723.6, y: 493 }, { x: 755.05, y: 490.9 }, { x: 783.75, y: 474.85 }, { x: 792.85, y: 444.05 }, { x: 793.55, y: 411.9 }, { x: 793.55, y: 120.3 }, { x: 790.05, y: 90.2 }, { x: 765.6, y: 68.55 }, { x: 734.8, y: 69.2 }, { x: 717.1, y: 95.55 }, { x: 715.7, y: 127.7 }, { x: 715.7, y: 355 }, { x: 712.9, y: 386.45 }, { x: 690.5, y: 408.8 }, { x: 659.05, y: 413 }, { x: 301.7, y: 413 }, { x: 270.95, y: 403.9 }, { x: 256.2, y: 377.35 }, { x: 254.85, y: 345.2 }, { x: 254.85, y: 84.35 }, { x: 267.4, y: 57.8 }, { x: 298.9, y: 48 }, { x: 324.1, y: 64.1 }, { x: 331.75, y: 92.05 }, { x: 331.75, y: 122.1 }, { x: 332.45, y: 303.95 }, { x: 338.1, y: 334.75 }, { x: 364.6, y: 351.5 }, { x: 581.4, y: 351.5 }, { x: 609.4, y: 347.95 }, { x: 626.15, y: 325.65 }, { x: 629.7, y: 299.05 }, { x: 629.7, y: 96.25 }] }], CANVAS_WIDTH = 960, CANVAS_HEIGHT = 540, EDGEBOARD_X = 128, EDGEBOARD_Y = 42, FPS_TIME = 1E3 / 24, DISABLE_SOUND_MOBILE = !1, FONT_GAME = "obelixproitalic", STATE_LOADING = 0, STATE_MENU = 1, STATE_HELP = 1, STATE_GAME = 3, ON_MOUSE_DOWN = 0, ON_MOUSE_UP = 1, ON_MOUSE_OVER = 2, ON_MOUSE_OUT = 3, ON_DRAG_START = 4, ON_DRAG_END = 5, ON_MSG_BOX_LEFT_BUT = 6, ON_MSG_BOX_CENTER_BUT = 7, ON_MSG_BOX_RIGHT_BUT = 8, STATE_GAME_ROLL_IN = 0, STATE_GAME_BALL_MOVE = 1, STATE_GAME_ROLL_OUT = 2, STATE_GAME_SHOOTING = 3, STATE_GAME_ATTRACT_BALLS = 4, STEP_LENGTH = 1.8, BALL_COLORS = 5, BALL_ROLLING_IN, BALL_SHOOTED_SPEED = 24, NUM_LEVELS, COMBO_VALUE, EXTRA_SCORE, BALL_DIAMETER, BALL_RADIUS, BALL_DIAMETER_SQUARE, HERO_WIDTH = 130, HERO_HEIGHT = 130, DAISY_WIDTH = 70, DAISY_HEIGHT = 76, MIN_TIME_SPAWN_BEE = 5E3, MAX_TIME_SPAWN_BEE = 2E4, NUM_ROWS_PAGE_LEVEL = 3, NUM_COLS_PAGE_LEVEL = 5, ENABLE_FULLSCREEN, ENABLE_CHECK_ORIENTATION, SOUNDTRACK_VOLUME_IN_GAME = 1, TEXT_GAMEOVER = "GAME OVER", TEXT_CONGRATS = "CONGRATULATIONS", TEXT_PLAY = "PLAY", TEXT_SCORE = "SCORE", TEXT_LEVEL = "LEVEL", TEXT_FINAL_SCORE = "FINAL SCORE", TEXT_SELECT_LEVEL = "SELECT A LEVEL", TEXT_DELETE_SAVINGS = "ALL YOUR PROGRESS WILL BE DELETED! ARE YOU SURE?", TEXT_NO = "NO", TEXT_YES = "YES", TEXT_ERR_LS = "YOUR WEB BROWSER DOES NOT SUPPORT STORING SETTING LOCALLY. IN SAFARI, THE MOST COMMON CAUSE OF THIS IS USING 'PRIVATE BROWSING MODE'. SOME INFO MAY NOT SAVE OR SOME FEATURE MAY NOT WORK PROPERLY.", TEXT_CREDITS_DEVELOPED = "DEVELOPED BY", TEXT_PRELOADER_CONTINUE = "START", TEXT_SHARE_IMAGE = "200x200.jpg", TEXT_SHARE_TITLE = "Congratulations!", TEXT_SHARE_MSG1 = "You collected <strong>", TEXT_SHARE_MSG2 = " points</strong>!<br><br>Share your score with your friends!", TEXT_SHARE_SHARE1 = "My score is ", TEXT_SHARE_SHARE2 = " points! Can you do better"; function CPreloader() { var a, c, e, b, d, k, l, n, m, f; this._init = function() { s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this); s_oSpriteLibrary.addSprite("progress_bar", "./sprites/progress_bar.png"); s_oSpriteLibrary.addSprite("200x200", "./sprites/200x200.jpg"); s_oSpriteLibrary.addSprite("but_start", "./sprites/but_start.png"); s_oSpriteLibrary.loadSprites(); f = new createjs.Container; s_oStage.addChild(f) }; this.unload = function() { f.removeAllChildren(); m.unload() }; this._onImagesLoaded = function() {}; this._onAllImagesLoaded = function() { this.attachSprites(); s_oMain.preloaderReady() }; this.attachSprites = function() { var v = new createjs.Shape; v.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); f.addChild(v); v = s_oSpriteLibrary.getSprite("200x200"); l = createBitmap(v); l.regX = .5 * v.width; l.regY = .5 * v.height; l.x = CANVAS_WIDTH / 2; l.y = CANVAS_HEIGHT / 2 - 80; f.addChild(l); n = new createjs.Shape; n.graphics.beginFill("rgba(0,0,0,0.01)").drawRoundRect(l.x - 100, l.y - 100, 200, 200, 10); f.addChild(n); l.mask = n; v = s_oSpriteLibrary.getSprite("progress_bar"); b = createBitmap(v); b.x = CANVAS_WIDTH / 2 - v.width / 2; b.y = CANVAS_HEIGHT / 2 + 50; f.addChild(b); a = v.width; c = v.height; d = new createjs.Shape; d.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(b.x, b.y, 1, c); f.addChild(d); b.mask = d; e = new createjs.Text("", "30px " + FONT_GAME, "#fff"); e.x = CANVAS_WIDTH / 2; e.y = CANVAS_HEIGHT / 2 + 100; e.textBaseline = "alphabetic"; e.textAlign = "center"; f.addChild(e); v = s_oSpriteLibrary.getSprite("but_start"); m = new CTextButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2 + 100, v, TEXT_PRELOADER_CONTINUE, "Arial", "#000", 40, f); m.addEventListener(ON_MOUSE_UP, this._onButStartRelease, this); m.setVisible(!1); k = new createjs.Shape; k.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); f.addChild(k); createjs.Tween.get(k).to({ alpha: 0 }, 500).call(function() { createjs.Tween.removeTweens(k); f.removeChild(k) }) }; this._onButStartRelease = function() { s_oMain.onRemovePreloader() }; this.refreshLoader = function(f) { e.text = f + "%"; 100 === f && (s_oMain.onRemovePreloader(), e.visible = !1, b.visible = !1); d.graphics.clear(); f = Math.floor(f * a / 100); d.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(b.x, b.y, f, c) }; this._init() } function CMain(a) { var c, e = 0, b = 0, d = STATE_LOADING, k, l; this.initContainer = function() { var a = document.getElementById("canvas"); s_oStage = new createjs.Stage(a); createjs.Touch.enable(s_oStage); s_bMobile = jQuery.browser.mobile; !1 === s_bMobile && s_oStage.enableMouseOver(20); s_iPrevTime = (new Date).getTime(); createjs.Ticker.framerate = 35; createjs.Ticker.on("tick", this._update); navigator.userAgent.match(/Windows Phone/i) && (DISABLE_SOUND_MOBILE = !0); s_oSpriteLibrary = new CSpriteLibrary; k = new CPreloader; }; this.setLocalStorageLevel = function(a) { s_iLastLevel < a && (s_iLastLevel = a, saveItem("frogtastic_level", s_iLastLevel)) }; this.setLocalStorageScore = function(a, b, c) { saveItem("score_level_" + c, a) }; this.clearLocalStorage = function() { s_iLastLevel = 1; s_bStorageAvailable && localStorage.clear() }; this.getScoreTillLevel = function(a) { if (!s_bStorageAvailable) return 0; for (var b = 0, c = 0; c < a - 1; c++) b += parseInt(getItem("score_level_" + (c + 1))); return b }; this.preloaderReady = function() { s_oLevelSettings = new CLevelSettings(s_oDataLevel); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_oMain._initSounds(); s_oMain._loadImages(); c = !0 }; this.soundLoaded = function() { e++; k.refreshLoader(Math.floor(e / b * 100)) }; this._initSounds = function() { Howler.mute(!s_bAudioActive); s_aSoundsInfo = []; s_aSoundsInfo.push({ path: "./sounds/", filename: "press_but", loop: !1, volume: 1, ingamename: "press_but" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "win", loop: !1, volume: 1, ingamename: "win" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "game_over", loop: !1, volume: 1, ingamename: "game_over" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "combo", loop: !1, volume: 1, ingamename: "combo" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "shot", loop: !1, volume: 1, ingamename: "shot" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "soundtrack", loop: !0, volume: 1, ingamename: "soundtrack" }); b += s_aSoundsInfo.length; s_aSounds = []; for (var a = 0; a < s_aSoundsInfo.length; a++) this.tryToLoadSound(s_aSoundsInfo[a], !1) }; this.tryToLoadSound = function(a, b) { setTimeout(function() { s_aSounds[a.ingamename] = new Howl({ src: [a.path + a.filename + ".mp3"], autoplay: !1, preload: !0, loop: a.loop, volume: a.volume, onload: s_oMain.soundLoaded, onloaderror: function(a, b) { for (var c = 0; c < s_aSoundsInfo.length; c++) if (a === s_aSounds[s_aSoundsInfo[c].ingamename]._sounds[0]._id) { s_oMain.tryToLoadSound(s_aSoundsInfo[c], !0); break } }, onplayerror: function(a) { for (var b = 0; b < s_aSoundsInfo.length; b++) if (a === s_aSounds[s_aSoundsInfo[b].ingamename]._sounds[0]._id) { s_aSounds[s_aSoundsInfo[b].ingamename].once("unlock", function() { s_aSounds[s_aSoundsInfo[b].ingamename].play(); "soundtrack" === s_aSoundsInfo[b].ingamename && null !== s_oGame && setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME) }); break } } }) }, b ? 200 : 0) }; this._loadImages = function() { s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this); s_oSpriteLibrary.addSprite("but_bg", "./sprites/but_play_bg.png"); s_oSpriteLibrary.addSprite("but_play", "./sprites/but_play.png"); s_oSpriteLibrary.addSprite("but_continue", "./sprites/but_continue.png"); s_oSpriteLibrary.addSprite("but_generic_small", "./sprites/but_generic_small.png"); s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png"); s_oSpriteLibrary.addSprite("bg_menu", "./sprites/bg_menu.jpg"); s_oSpriteLibrary.addSprite("audio_icon", "./sprites/audio_icon.png"); s_oSpriteLibrary.addSprite("hero", "./sprites/hero.png"); s_oSpriteLibrary.addSprite("hit_area", "./sprites/hit_area.png"); s_oSpriteLibrary.addSprite("explosion", "./sprites/explosion.png"); s_oSpriteLibrary.addSprite("msg_box", "./sprites/msg_box.png"); s_oSpriteLibrary.addSprite("extra_score", "./sprites/extra_score.png"); s_oSpriteLibrary.addSprite("end_path", "./sprites/end_path.png"); s_oSpriteLibrary.addSprite("but_level", "./sprites/but_level.png"); s_oSpriteLibrary.addSprite("bg_menu_level", "./sprites/bg_menu_level.jpg"); s_oSpriteLibrary.addSprite("arrow_left", "./sprites/arrow_left.png"); s_oSpriteLibrary.addSprite("arrow_right", "./sprites/arrow_right.png"); s_oSpriteLibrary.addSprite("logo_ctl", "./sprites/logo_ctl.png"); s_oSpriteLibrary.addSprite("but_credits", "./sprites/but_credits.png"); s_oSpriteLibrary.addSprite("but_exit_small", "./sprites/but_exit_small.png"); s_oSpriteLibrary.addSprite("but_fullscreen", "./sprites/but_fullscreen.png"); s_oSpriteLibrary.addSprite("base_hero", "./sprites/base_hero.png"); s_oSpriteLibrary.addSprite("bee", "./sprites/bee.png"); s_oSpriteLibrary.addSprite("daisy_spritesheet", "./sprites/daisy_spritesheet.png"); for (var a = 0; a < BALL_COLORS; a++) s_oSpriteLibrary.addSprite("ball_" + a, "./sprites/ball_" + a + ".png"); for (a = 0; a < NUM_LEVELS; a++) s_oSpriteLibrary.addSprite("bg_game_" + (a + 1), "./sprites/bg_game_" + (a + 1) + ".jpg"); s_oSpriteLibrary.addSprite("fg_game_1", "./sprites/fg_game_1.png"); s_oSpriteLibrary.addSprite("fg_game_2", "./sprites/fg_game_2.png"); s_oSpriteLibrary.addSprite("fg_game_3", "./sprites/fg_game_3.png"); b += s_oSpriteLibrary.getNumSprites(); s_oSpriteLibrary.loadSprites() }; this._onImagesLoaded = function() { e++; k.refreshLoader(Math.floor(e / b * 100)) }; this._onAllImagesLoaded = function() {}; this.onRemovePreloader = function() { k.unload(); try { saveItem("ls_available", "ok") } catch (m) { s_bStorageAvailable = !1 } s_oSoundTrack = playSound("soundtrack", 1, !0); s_oMain.gotoMenu() }; this.stopUpdate = function() { c = !1; createjs.Ticker.paused = !0; $("#block_game").css("display", "block"); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || Howler.mute(!0) }; this.startUpdate = function() { s_iPrevTime = (new Date).getTime(); c = !0; createjs.Ticker.paused = !1; $("#block_game").css("display", "none"); (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) && s_bAudioActive && Howler.mute(!1) }; this.gotoMenu = function() { new CMenu; d = STATE_MENU }; this.gotoLevelMenu = function() { new CLevelMenu }; this.gotoGame = function(a, b) { l = new CGame(n, a, b); d = STATE_GAME }; this.gotoHelp = function() { new CHelp; d = STATE_HELP }; this.levelSelected = function(a) { a >= s_iLastLevel && (s_iLastLevel = a); var b = this.getScoreTillLevel(a); this.gotoGame(a, b) }; this._update = function(a) { if (!1 !== c) { var b = (new Date).getTime(); s_iTimeElaps = b - s_iPrevTime; s_iCntTime += s_iTimeElaps; s_iCntFps++; s_iPrevTime = b; 1E3 <= s_iCntTime && (s_iCurFps = s_iCntFps, s_iCntTime -= 1E3, s_iCntFps = 0); d === STATE_GAME && l.update(); void 0 !== s_oStage && s_oStage.update(a) } }; s_oMain = this; var n = a; s_bAudioActive = a.audio_enable_on_startup; ENABLE_FULLSCREEN = a.fullscreen; ENABLE_CHECK_ORIENTATION = a.check_orientation; this.initContainer() } var s_bMobile, s_bAudioActive = !0, s_iCntTime = 0, s_iTimeElaps = 0, s_iPrevTime = 0, s_iCntFps = 0, s_iCurFps = 0, s_oSoundTrack = null, s_oDrawLayer, s_oStage, s_oMain = null, s_oSpriteLibrary, s_oLevelSettings, s_iLastLevel = 1, s_bFullscreen = !1, s_bStorageAvailable = !0, s_aSoundsInfo; function CTextButton(a, c, e, b, d, k, l, n) { var m, f, v, r, y, x, B, t, z, H; this._init = function(a, b, c, d, e, k, l) { m = !1; f = 1; v = []; r = []; H = createBitmap(c); t = new createjs.Container; t.x = a; t.y = b; t.regX = c.width / 2; t.regY = c.height / 2; s_bMobile || (t.cursor = "pointer"); t.addChild(H, z); n.addChild(t); z = new CTLText(t, 10, 5, c.width - 20, c.height - 10, l, "center", k, e, 1.2, 0, 0, d, !0, !0, !1, !1); this._initListener() }; this.unload = function() { t.off("mousedown", y); t.off("pressup", x); n.removeChild(t) }; this.setVisible = function(a) { t.visible = a }; this.setAlign = function(a) { z.textAlign = a }; this.setTextX = function(a) { z.x = a }; this.setScale = function(a) { f = t.scaleX = t.scaleY = a }; this.enable = function() { m = !1 }; this.disable = function() { m = !0 }; this._initListener = function() { y = t.on("mousedown", this.buttonDown); x = t.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, b, c) { v[a] = b; r[a] = c }; this.addEventListenerWithParams = function(a, b, c, d) { v[a] = b; r[a] = c; B = d }; this.buttonRelease = function() { m || (playSound("press_but", 1, !1), t.scaleX = f, t.scaleY = f, v[ON_MOUSE_UP] && v[ON_MOUSE_UP].call(r[ON_MOUSE_UP], B)) }; this.buttonDown = function() { m || (t.scaleX = .9 * f, t.scaleY = .9 * f, v[ON_MOUSE_DOWN] && v[ON_MOUSE_DOWN].call(r[ON_MOUSE_DOWN])) }; this.setPosition = function(a, b) { t.x = a; t.y = b }; this.tweenPosition = function(a, b, c, d, e, f, r) { createjs.Tween.get(t).wait(d).to({ x: a, y: b }, c, e).call(function() { void 0 !== f && f.call(r) }) }; this.changeText = function(a) { z.refreshText(a) }; this.setX = function(a) { t.x = a }; this.setY = function(a) { t.y = a }; this.getButtonImage = function() { return t }; this.getX = function() { return t.x }; this.getY = function() { return t.y }; this.getSprite = function() { return t }; this.getScale = function() { return t.scaleX }; this._init(a, c, e, b, d, k, l) } function CGfxButton(a, c, e, b) { var d, k, l = [], n, m, f; this._init = function(a, b, c) { d = []; k = []; f = createBitmap(c); f.x = a; f.y = b; f.regX = c.width / 2; f.regY = c.height / 2; f.cursor = "pointer"; v.addChild(f); this._initListener() }; this.unload = function() { f.off("mousedown", n); f.off("pressup", m); v.removeChild(f) }; this.setVisible = function(a) { f.visible = a }; this._initListener = function() { n = f.on("mousedown", this.buttonDown); m = f.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, b, c) { d[a] = b; k[a] = c }; this.addEventListenerWithParams = function(a, b, c, e) { d[a] = b; k[a] = c; l = e }; this.buttonRelease = function() { playSound("press_but", 1, !1); f.scaleX = 1; f.scaleY = 1; d[ON_MOUSE_UP] && d[ON_MOUSE_UP].call(k[ON_MOUSE_UP], l) }; this.buttonDown = function() { f.scaleX = .9; f.scaleY = .9; d[ON_MOUSE_DOWN] && d[ON_MOUSE_DOWN].call(k[ON_MOUSE_DOWN], l) }; this.setPosition = function(a, b) { f.x = a; f.y = b }; this.setX = function(a) { f.x = a }; this.setY = function(a) { f.y = a }; this.getButtonImage = function() { return f }; this.getX = function() { return f.x }; this.getY = function() { return f.y }; var v = b; this._init(a, c, e); return this } function CToggle(a, c, e, b) { var d, k, l, n, m, f; this._init = function(a, b, c, e) { k = []; l = []; var r = new createjs.SpriteSheet({ images: [c], frames: { width: c.width / 2, height: c.height, regX: c.width / 2 / 2, regY: c.height / 2 }, animations: { state_true: [0], state_false: [1] } }); d = e; f = createSprite(r, "state_" + d, c.width / 2 / 2, c.height / 2, c.width / 2, c.height); f.x = a; f.y = b; f.stop(); f.cursor = "pointer"; s_oStage.addChild(f); this._initListener() }; this.unload = function() { f.off("mousedown", n); f.off("pressup", m); s_oStage.removeChild(f) }; this._initListener = function() { n = f.on("mousedown", this.buttonDown); m = f.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, b, c) { k[a] = b; l[a] = c }; this.setActive = function(a) { d = a; f.gotoAndStop("state_" + d) }; this.buttonRelease = function() { f.scaleX = 1; f.scaleY = 1; playSound("press_but", 1, !1); d = !d; f.gotoAndStop("state_" + d); k[ON_MOUSE_UP] && k[ON_MOUSE_UP].call(l[ON_MOUSE_UP], d) }; this.buttonDown = function() { f.scaleX = .9; f.scaleY = .9; k[ON_MOUSE_DOWN] && k[ON_MOUSE_DOWN].call(l[ON_MOUSE_DOWN]) }; this.setPosition = function(a, b) { f.x = a; f.y = b }; this._init(a, c, e, b) } function CMenu() { var a, c, e, b, d, k, l, n, m = null, f, v, r, y, x = null, B = null; this._init = function() { l = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); s_oStage.addChild(l); if (s_bStorageAvailable) { var t = getItem("frogtastic_level"); null !== t && void 0 !== t ? s_iLastLevel = parseInt(getItem("frogtastic_level")) : saveItem("frogtastic_level", 1) } 1 === s_iLastLevel ? (n = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT - 120, s_oSpriteLibrary.getSprite("but_play"), s_oStage), n.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this)) : (n = new CGfxButton(CANVAS_WIDTH / 2 - 150, CANVAS_HEIGHT - 120, s_oSpriteLibrary.getSprite("but_play"), s_oStage), n.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this), m = new CGfxButton(CANVAS_WIDTH / 2 + 150, CANVAS_HEIGHT - 120, s_oSpriteLibrary.getSprite("but_continue"), s_oStage), m.addEventListener(ON_MOUSE_UP, this._onButContinueRelease, this)); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) t = s_oSpriteLibrary.getSprite("audio_icon"), d = CANVAS_WIDTH - t.height / 2 - 10, k = t.height / 2 + 10, f = new CToggle(d, k, t, s_bAudioActive), f.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); t = s_oSpriteLibrary.getSprite("but_credits"); e = t.height / 2 + 10; b = t.height / 2 + 10; v = new CGfxButton(e, b, t, s_oStage); v.addEventListener(ON_MOUSE_UP, this._onButCreditsRelease, this); t = window.document; var z = t.documentElement; x = z.requestFullscreen || z.mozRequestFullScreen || z.webkitRequestFullScreen || z.msRequestFullscreen; B = t.exitFullscreen || t.mozCancelFullScreen || t.webkitExitFullscreen || t.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (x = !1); x && screenfull.isEnabled && (t = s_oSpriteLibrary.getSprite("but_fullscreen"), a = e + t.width / 2 + 10, c = b - 2, y = new CToggle(a, c, t, s_bFullscreen, s_oStage), y.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); r = new createjs.Shape; r.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); s_oStage.addChild(r); s_bStorageAvailable || new CAlertSavingBox(TEXT_ERR_LS, s_oStage); createjs.Tween.get(r).to({ alpha: 0 }, 400).call(function() { r.visible = !1 }); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { n.unload(); n = null; v.unload(); null !== m && m.unload(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) f.unload(), f = null; x && screenfull.isEnabled && y.unload(); s_oStage.removeChild(l); l = null; s_oStage.removeChild(r); s_oMenu = r = null }; this.refreshButtonPos = function(n, r) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || f.setPosition(d - n, r + k); x && screenfull.isEnabled && y.setPosition(a + n, c + r); v.setPosition(e + n, b + r) }; this._exitFromMenu = function() { this.unload(); s_oMain.gotoLevelMenu(); $(s_oMain).trigger("start_session") }; this._onButPlayRelease = function() { if (1 < s_iLastLevel) { var a = new CMsgBox(TEXT_DELETE_SAVINGS, TEXT_NO, "", TEXT_YES); a.addEventListener(ON_MSG_BOX_LEFT_BUT, function() { a.hide() }, this); a.addEventListener(ON_MSG_BOX_RIGHT_BUT, function() { a.hide(); s_oMain.clearLocalStorage(); s_oMenu._exitFromMenu() }, this) } else s_oMenu._exitFromMenu() }; this._onButContinueRelease = function() { s_oMenu._exitFromMenu() }; this._onButCreditsRelease = function() { new CCreditsPanel }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this.resetFullscreenBut = function() { x && screenfull.isEnabled && y.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? B.call(window.document) : x.call(window.document.documentElement); sizeHandler() }; s_oMenu = this; this._init() } var s_oMenu = null; function CGame(a, c, e) { var b = !1, d, k, l, n, m, f, v, r, y = -1, x, B, t, z, H, E, G, J, D, g, p, q, F, L = null, V, T, U = null, S = null, I, P, K, Q, h, R, N, O, C, u; this._init = function(a, c) { createjs.MotionGuidePlugin.install(); D = a; n = c; s_oBezier = new CBezier; C = new createjs.Container; K = createBitmap(s_oSpriteLibrary.getSprite(s_oLevelSettings.getBgForLevel(D))); C.addChild(K); s_oStage.addChild(C); K.cache(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); var d = s_oSpriteLibrary.getSprite("base_hero"); P = createBitmap(d); P.regX = d.width / 2; P.regY = d.height / 2; s_oStage.addChild(P); I = new CHero; N = new createjs.Container; R = new createjs.Container; O = new createjs.Container; s_oStage.addChild(N); s_oStage.addChild(R); s_oStage.addChild(O); u = new createjs.Container; s_oStage.addChild(u); Q = createBitmap(s_oSpriteLibrary.getSprite(s_oLevelSettings.getFgForLevel(D))); u.addChild(Q); h = new CInterface(n); this.reset(); if (!1 === s_bMobile) { var A = this; s_oStage.addEventListener("stagemousemove", function(a) { A._onMouseMove(a.stageX, a.stageY) }) } b = !0 }; this.unload = function() { b = !1; clearInterval(t); h.unload(); I.unload(); s_oStage.removeAllChildren() }; this.reset = function() { d = !0; l = k = !1; r = s_oLevelSettings.getBallSpeedForLevel(D); v = s_oLevelSettings.getBallNumberForLevel(D); H = s_oLevelSettings.getBallColorsForLevel(D); BALL_ROLLING_IN = Math.floor(.33 * v); x = 0; f = B = 1; G = E = 0; J = Math.floor(Math.random() * (MAX_TIME_SPAWN_BEE - MIN_TIME_SPAWN_BEE + 1)) + MIN_TIME_SPAWN_BEE; m = 0; V = []; this._initDaisies(); var a = s_oLevelSettings.getHeroPosForLevel(D); I.reset(a, H); P.x = a.x; P.y = a.y; null !== U && (N.removeChild(U), N.removeChild(S)); this._initCurve(); this._initBall(); h.refreshLevel(D); $(s_oMain).trigger("start_level", D) }; this._normalize = function(a) { var b = this._length(a); return 0 < b ? { x: a.x / b, y: a.y / b } : a }; this._length = function(a) { return Math.sqrt(a.x * a.x + a.y * a.y) }; this._dotProductV2 = function(a, b) { return a.x * b.x + a.y * b.y }; this._angleBetweenVectors = function(a, b) { var c = Math.acos(this._dotProductV2(a, b) / (this._length(a) * this._length(b))); return !0 === isNaN(c) ? 0 : c }; this._rot90CW = function(a) { return { x: a.y, y: -a.x } }; this._rot90CCW = function(a) { return { x: -a.y, y: a.x } }; this._rotateVector2D = function(a, b) { return { x: b.x * Math.cos(a) + b.y * Math.sin(a), y: b.x * -Math.sin(a) + b.y * Math.cos(a) } }; this._initCurve = function() { var a; var b = s_oLevelSettings.getCurveForLevel(D); var c = new createjs.Graphics; p = []; for (a = 0; a < b.length - 2; ++a) { var d = 0 === a ? new createjs.Point(b[0][0], b[0][1]) : new createjs.Point((b[a][0] + b[a + 1][0]) / 2, (b[a][1] + b[a + 1][1]) / 2), e = new createjs.Point(b[a + 1][0], b[a + 1][1]), g = a <= b.length - 4 ? new createjs.Point((b[a + 1][0] + b[a + 2][0]) / 2, (b[a + 1][1] + b[a + 2][1]) / 2) : new createjs.Point(b[a + 2][0], b[a + 2][1]); d = s_oBezier.init(d, e, g, STEP_LENGTH); for (e = 1; e <= d; ++e) g = s_oBezier.getAnchorPoint(e), p.push(g) } c.beginFill("rgba(0,0,0,0.5)"); d = { x: p[1][0] - p[0][0], y: p[1][1] - p[0][1] }; d = this._normalize(d); d = this._rot90CW(d); d.x *= 10; d.y *= 10; d.x += p[0][0]; d.y += p[0][1]; b = d.x; a = d.y; c.moveTo(d.x, d.y); for (e = 1; e < p.length - 1; e++) d = { x: p[e + 1][0] - p[e][0], y: p[e + 1][1] - p[e][1] }, d = this._normalize(d), d = this._rot90CW(d), d.x *= 10, d.y *= 10, d.x += p[e][0], d.y += p[e][1], c.lineTo(d.x, d.y); c.lineTo(d.x, d.y); d = { x: p[p.length - 1][0] - p[p.length - 2][0], y: p[p.length - 1][1] - p[p.length - 2][1] }; d = this._normalize(d); d = this._rot90CCW(d); d.x *= 10; d.y *= 10; d.x += p[p.length - 1][0]; d.y += p[p.length - 1][1]; c.lineTo(d.x, d.y); for (e = p.length - 2; 1 < e; e--) d = { x: p[e][0] - p[e - 1][0], y: p[e][1] - p[e - 1][1] }, d = this._normalize(d), d = this._rot90CCW(d), d.x *= 10, d.y *= 10, d.x += p[e][0], d.y += p[e][1], c.lineTo(d.x, d.y); c.lineTo(b, a); c.endFill(); U = new createjs.Shape(c); N.addChild(U); c = p.length; b = s_oSpriteLibrary.getSprite("end_path"); S = createBitmap(b); S.x = p[c - 9][0]; S.y = p[c - 9][1]; S.regX = b.width / 2; S.regY = b.height / 2; N.addChild(S); N.cache(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT) }; this._initBall = function() { g = []; var a = this.getRandomBall(); g.unshift(a); a.setPos(16, p); y = STATE_GAME_ROLL_IN }; this.getRandomBall = function() { v--; return new CBall(Math.floor(Math.random() * H), R) }; this._pushNextBall = function(a, b) { var c = []; c.push(g[a]); for (var e = a; e < g.length - 1; ++e) if (16 >= g[e + 1].getFotogram() - g[e].getFotogram()) 16 > g[e + 1].getFotogram() - g[e].getFotogram() && g[e + 1].setPos(g[e].getFotogram() + 16, p), c.push(g[e + 1]); else break; for (e = 0; e < c.length; ++e) c[e].increasePos(b, p); g[g.length - 1].getFotogram() >= p.length - 17 && (d = !1, setVolume("soundtrack", 0), playSound("game_over", 1, !1).on("end", this._onSoundGameOverComplete), s_oStage.removeEventListener("stagemousemove"), l = k = !1, f = 1, g[g.length - 1].unload(), g.splice(g.length - 1, 1), y = STATE_GAME_ROLL_OUT) }; this.onIntroduceBall = function() { if (0 !== g.length && (s_oGame._pushNextBall(0, 1), 32 === g[0].getFotogram() && 0 !== v)) { var a = s_oGame.getRandomBall(); g.unshift(a); a.setPos(16, p) } }; this._initDaisies = function() { if (T) for (var a = 0; a < T.length; a++) T[a].unload(); a = s_oLevelSettings.getDaisyPosForLevel(D); T = []; for (var b = 0; b < a.length; b++) T[b] = new CDaisy(a[b].x, a[b].y, C) }; this._spawnBee = function() { G = 0; new CBee(s_oLevelSettings.getRandBeeTrajectory(), u); J = Math.floor(Math.random() * (MAX_TIME_SPAWN_BEE - MIN_TIME_SPAWN_BEE + 1)) + MIN_TIME_SPAWN_BEE }; this.showDaisies = function() { for (var a = 0; a < T.length; a++) T[a].show(1500 * Math.random()) }; this.shoot = function() { playSound("shot", 1, !1); I.playAnim("shot"); var a = (I.getRotation() + 90) * Math.PI / 180, b = I.getCurrentBall(); b.changePos(I.getX() + 60 * Math.cos(a), I.getY() + 60 * Math.sin(a)); R.addChild(b.getSprite()); b.setContainer(R); q.push([b, a]); y = STATE_GAME_SHOOTING }; this._checkCollision = function(a) { a = a[0]; for (var b = 0; b < g.length; ++b) if ((g[b].getX() - a.getX()) * (g[b].getX() - a.getX()) + (g[b].getY() - a.getY()) * (g[b].getY() - a.getY()) <= BALL_DIAMETER_SQUARE) return b; return -1 }; this._insertBall = function(a, b, c) { if ("next" === c) { var d = g[b].getFotogram() + 16; g[b + 1] && 32 > g[b + 1].getFotogram() - g[b].getFotogram() && (F.push([a, g[b + 1]]), k = !0) } else g[b - 1] && 32 > g[b].getFotogram() - g[b - 1].getFotogram() ? (d = g[b - 1].getFotogram() + 16, F.push([a, g[b]]), k = !0) : d = g[b].getFotogram() - 16; b = p[d][0]; c = p[d][1]; var e = this; createjs.Tween.get(a.getSprite()).to({ x: b, y: c }, 200).call(function() { e.motionFinished(a, d) }) }; this.motionFinished = function(a, b) { for (var c, d = 0; d < g.length; ++d) { if (g[d].getFotogram() > b) { c = d; break } d === g.length - 1 && (c = d + 1) } F.splice(F.indexOf(a), 1); a.setPos(b, p); g.splice(c, 0, a); g[c - 1] && g[c - 1].getIndex() === g[c].getIndex() && 17 < g[c].getFotogram() - g[c - 1].getFotogram() && this._addToBallAttracted(g[c]); g[c + 1] && g[c + 1].getIndex() === g[c].getIndex() && 17 < g[c + 1].getFotogram() - g[c].getFotogram() && this._addToBallAttracted(g[c + 1]); this._clearCheck(c, !0) }; this._addToBallAttracted = function(a) { null === L && (L = []); L.push(a); setTimeout(function() { l = !0 }, 400) }; this._clearCheck = function(a, b) { var c = []; c.push(g[a]); for (var d = g[a].getIndex(), e = a + 1; g[e];) if (g[e].getIndex() === d) if (17 >= g[e].getFotogram() - g[e - 1].getFotogram()) c.push(g[e]), ++e; else if (b) break; else c.push(g[e]), ++e; else break; for (e = a - 1; g[e];) if (g[e].getIndex() === d) if (17 >= g[e + 1].getFotogram() - g[e].getFotogram()) c.push(g[e]), --e; else if (b) break; else c.push(g[e]), --e; else break; ++e; 2 < c.length && b && this._clearBall(e, c); return c.length }; this._attract = function() { if (0 !== L.length) for (var a = 0; a < L.length; ++a) { var b = g.indexOf(L[a]); if (-1 !== b && g[b - 1]) if (L[a].getIndex() === g[b - 1].getIndex()) { var c = 19 < L[a].getFotogram() - g[b - 1].getFotogram() ? 3 : L[a].getFotogram() - g[b - 1].getFotogram() - 16; this._pushNextBall(b, -c); 16 >= L[a].getFotogram() - g[b - 1].getFotogram() && (f++, L.splice(a, 1), this._clearCheck(b - 1, !0), 0 === L.length && (l = !1, f = 1)) } else L.splice(a, 1), x > B && (B = x), x = 0 } else l = !1, f = 1 }; this._checkPushCollision = function() { if (0 !== F.length) for (var a = 0; a < F.length; ++a) { var b = (F[a][0].getX() - F[a][1].getX()) * (F[a][0].getX() - F[a][1].getX()) + (F[a][0].getY() - F[a][1].getY()) * (F[a][0].getY() - F[a][1].getY()); b = b < BALL_DIAMETER_SQUARE ? !0 : !1; for (var c = 0; b;) ++c, b = (F[a][0].getX() - p[F[a][1].getFotogram() + c][0]) * (F[a][0].getX() - p[F[a][1].getFotogram() + c][0]) + (F[a][0].getY() - p[F[a][1].getFotogram() + c][1]) * (F[a][0].getY() - p[F[a][1].getFotogram() + c][1]), b = b < BALL_DIAMETER_SQUARE ? !0 : !1; b = g.indexOf(F[a][1]); - 1 !== b && this._pushNextBall(b, c) } else k = !1 }; this._clearBall = function(a, c) { ++x; playSound("combo", 1, !1); for (var e = 0, r = 0; r < c.length; ++r) c[r].explode(), e += COMBO_VALUE; e *= f; n += e; m += e; h.refreshScore(n); g.length === c.length && (d = !1, z = g[g.length - 1].getFotogram(), setTimeout(this._gamePass, 600), setVolume("soundtrack", 0), playSound("win", 1, !1).on("end", this._onSoundGameOverComplete), b = !1, this.showDaisies()); g.splice(a, c.length); 0 === v && this._checkColor(c[0].getIndex()); g[a - 1] && g[a] && g[a - 1].getIndex() === g[a].getIndex() ? (3 > this._clearCheck(a, !1) && (x > B && (B = x), x = 0), this._addToBallAttracted(g[a])) : (x > B && (B = x), x = 0) }; this._gamePass = function() { t = setInterval(s_oGame._extraScore, r) }; this._extraScore = function() { z + 16 < p.length - 17 ? (z += 16, new CExtraScore(p[z][0], p[z][1], O), n += EXTRA_SCORE, m += EXTRA_SCORE, h.refreshScore(n)) : ($(s_oMain).trigger("end_level", D), clearInterval(t), s_oStage.removeEventListener("stagemousemove"), d = !1, s_oMain.setLocalStorageScore(m, n, D), D++, D > s_oLevelSettings.getNumLevels() ? (D--, h.win(n)) : (s_oMain.setLocalStorageLevel(D), h.nextLevel(D, n))) }; this._checkColor = function(a) { for (var b = 0; b < g.length; ++b) if (g[b].getIndex() === a) return; for (b = 0; b < q.length; ++b) if (q[b].getIndex() === a) return; I.colorCleared(a) }; this.nextLevel = function() { C.removeChild(K); u.removeChild(Q); K = createBitmap(s_oSpriteLibrary.getSprite(s_oLevelSettings.getBgForLevel(D))); C.addChild(K); Q = createBitmap(s_oSpriteLibrary.getSprite(s_oLevelSettings.getFgForLevel(D))); u.addChild(Q); this.reset(); b = !0 }; this.onShot = function(a, b) { if (d && I.canShoot()) { if (s_bMobile) { var c = a - I.getX() * s_iScaleFactor, e = b - I.getY() * s_iScaleFactor; I.rotate(180 * Math.atan2(e, c) / Math.PI - 90) } this.shoot() } }; this._onMouseMove = function(a, b) { var c = a - I.getX() * s_iScaleFactor, d = b - I.getY() * s_iScaleFactor; I.rotate(180 * Math.atan2(d, c) / Math.PI - 90) }; this.onExit = function() { this.unload(); s_oMain.gotoMenu(); $(s_oMain).trigger("end_session"); $(s_oMain).trigger("share_event", n) }; this._onSoundGameOverComplete = function() { setVolume("soundtrack", 1) }; this._updateMove = function() { E += s_iTimeElaps; E > r && (E = 0, this.onIntroduceBall()) }; this._updateRollOut = function() { for (var a = g.length - 1; 0 <= a; --a) g[a].getFotogram() > p.length - 17 ? (g[a].unload(), g.splice(a, 1), 0 === g.length && (y = -1, h.gameOver(n), b = !1)) : g[a].increasePos(8, p) }; this._updateRollIn = function() { if (g.length < BALL_ROLLING_IN) { for (var a = 0; a < g.length; ++a) g[a].increasePos(4, p); 32 === g[0].getFotogram() && (a = this.getRandomBall(), g.unshift(a), a.setPos(16, p)) } else y = -1, q = [], F = [], I.start(), y = STATE_GAME_BALL_MOVE }; this._updateShooting = function() { if (0 !== q.length) for (var a = 0; a < q.length; ++a) if (0 < q[a][0].getX() && q[a][0].getX() < CANVAS_WIDTH && 0 < q[a][0].getY() && q[a][0].getY() < CANVAS_HEIGHT) { var b = this._checkCollision(q[a]); if (-1 === b) q[a][0].increasePosWithNumbers(Math.cos(q[a][1]) * BALL_SHOOTED_SPEED, Math.sin(q[a][1]) * BALL_SHOOTED_SPEED); else { var c = q[a][0], d = q[a][1], e = Math.sqrt((g[b].getX() - c.getX()) * (g[b].getX() - c.getX()) + (g[b].getY() - c.getY()) * (g[b].getY() - c.getY())); q[a][0].decreasePos((BALL_DIAMETER - e) * Math.cos(d), (BALL_DIAMETER - e) * Math.sin(d)); d = p[g[b].getFotogram() - BALL_RADIUS][0]; e = p[g[b].getFotogram() - BALL_RADIUS][1]; d = Math.sqrt((c.getX() - d) * (c.getX() - d) + (c.getY() - e) * (c.getY() - e)); e = p[g[b].getFotogram() + BALL_RADIUS][0]; var f = p[g[b].getFotogram() + BALL_RADIUS][1]; c = Math.sqrt((c.getX() - e) * (c.getX() - e) + (c.getY() - f) * (c.getY() - f)); this._insertBall(q[a][0], b, d > c ? "next" : "previous"); q.splice(a, 1) } } else q[a][0].unload(), q.splice(a, 1); else y = -1 }; this.update = function() { if (!1 !== b) { !0 === l && this._attract(); !0 === k && this._checkPushCollision(); switch (y) { case STATE_GAME_ROLL_IN: this._updateRollIn(); break; case STATE_GAME_ROLL_OUT: this._updateRollOut(); break; case STATE_GAME_SHOOTING: this._updateShooting(); this._updateMove(); break; default: this._updateMove() } for (var a = 0; a < V.length; a++) V[a].refreshPos(); G += s_iTimeElaps; G > J && this._spawnBee() } }; s_oGame = this; COMBO_VALUE = a.combo_value; EXTRA_SCORE = a.extra_score; this._init(c, e) } var s_oGame, s_oBezier; function CInterface(a) { var c, e, b, d, k, l, n, m, f, v, r, y, x, B, t, z, H, E, G, J = null, D = null; this._init = function(a) { l = k = 10; E = new createjs.Container; E.x = k; E.y = l; s_oStage.addChild(E); y = new CTLText(E, 0, 0, 320, 32, 26, "left", "#008733", FONT_GAME, 1.1, 0, 0, TEXT_SCORE + " " + a, !0, !0, !1, !1); y.setOutline(3); r = new CTLText(E, 0, 0, 320, 32, 26, "left", "#fff", FONT_GAME, 1.1, 0, 0, TEXT_SCORE + " " + a, !0, !0, !1, !1); v = new CTLText(E, 0, 40, 320, 32, 22, "left", "#008733", FONT_GAME, 1.1, 0, 0, TEXT_LEVEL + " " + s_iLastLevel, !0, !0, !1, !1); v.setOutline(3); f = new CTLText(E, 0, 40, 320, 32, 22, "left", "#fff", FONT_GAME, 1.1, 0, 0, TEXT_LEVEL + " " + s_iLastLevel, !0, !0, !1, !1); var g = this; B = createBitmap(s_oSpriteLibrary.getSprite("hit_area")); s_oStage.addChild(B); B.on("pressup", function(a) { g._onTapScreen(a.stageX, a.stageY) }); a = s_oSpriteLibrary.getSprite("but_exit"); c = CANVAS_WIDTH - a.width / 2; e = a.height / 2 + 4; x = new CGfxButton(c, e, a, s_oStage); x.addEventListener(ON_MOUSE_UP, this._onExit, this); !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (n = c - a.width, m = a.height / 2 + 4, a = s_oSpriteLibrary.getSprite("audio_icon"), t = new CToggle(n, m, a, s_bAudioActive), t.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this), b = n - a.width / 2, d = m) : (b = x.getX() - a.width, d = a.height / 2 + 4); a = window.document; var q = a.documentElement; J = q.requestFullscreen || q.mozRequestFullScreen || q.webkitRequestFullScreen || q.msRequestFullscreen; D = a.exitFullscreen || a.mozCancelFullScreen || a.webkitExitFullscreen || a.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (J = !1); J && screenfull.isEnabled && (a = s_oSpriteLibrary.getSprite("but_fullscreen"), G = new CToggle(b, d, a, s_bFullscreen, s_oStage), G.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); H = new CNextLevel; z = new CEndPanel(s_oSpriteLibrary.getSprite("msg_box")); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { x.unload(); x = null; !1 === DISABLE_SOUND_MOBILE && (t.unload(), t = null); J && screenfull.isEnabled && G.unload(); s_oStage.removeAllChildren(); s_oInterface = null }; this.refreshButtonPos = function(a, f) { E.x = k + a; E.y = l + f; x.setPosition(c - a, e + f); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || t.setPosition(n - a, f + m); J && screenfull.isEnabled && G.setPosition(b - a, d + f) }; this._onTapScreen = function(a, b) { s_oGame.onShot(a, b) }; this.gameOver = function(a) { z.show(a, !1) }; this.win = function(a) { z.show(a, !0) }; this.nextLevel = function(a, b) { H.show(a, b) }; this.refreshScore = function(a) { r.refreshText(TEXT_SCORE + " " + a); y.refreshText(TEXT_SCORE + " " + a) }; this.refreshLevel = function(a) { f.refreshText(TEXT_LEVEL + " " + a); v.refreshText(TEXT_LEVEL + " " + a) }; this._onExit = function() { s_oGame.onExit() }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this.resetFullscreenBut = function() { J && screenfull.isEnabled && G.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? D.call(window.document) : J.call(window.document.documentElement); sizeHandler() }; s_oInterface = this; this._init(a); return this } var s_oInterface = null; function CEndPanel(a) { var c, e, b, d, k, l; this._init = function(a) { l = new createjs.Container; l.alpha = 0; l.visible = !1; s_oStage.addChild(l); c = createBitmap(a); l.addChild(c); d = new CTLText(l, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2 - 90, 320, 32, 32, "center", "#008733", FONT_GAME, 1.1, 0, 0, TEXT_CONGRATS, !0, !0, !1, !1); d.setOutline(3); k = new CTLText(l, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2 - 90, 320, 32, 32, "center", "#ffffff", FONT_GAME, 1.1, 0, 0, TEXT_CONGRATS, !0, !0, !1, !1); e = new CTLText(l, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2, 320, 52, 26, "center", "#008733", FONT_GAME, 1.1, 0, 0, TEXT_FINAL_SCORE + "\n99999", !0, !0, !0, !1); e.setOutline(3); b = new CTLText(l, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2, 320, 52, 26, "center", "#fff", FONT_GAME, 1.1, 0, 0, TEXT_FINAL_SCORE + "\n99999", !0, !0, !0, !1) }; this.unload = function() { l.off("mousedown", this._onExit); s_oStage.removeChild(l) }; this._initListener = function() { l.on("mousedown", this._onExit); $(s_oMain).trigger("show_interlevel_ad") }; this.show = function(a, c) { c ? (d.refreshText(TEXT_CONGRATS), k.refreshText(TEXT_CONGRATS)) : (d.refreshText(TEXT_GAMEOVER), k.refreshText(TEXT_GAMEOVER)); e.refreshText(TEXT_FINAL_SCORE + "\n" + a); b.refreshText(TEXT_FINAL_SCORE + "\n" + a); l.visible = !0; var f = this; createjs.Tween.get(l).to({ alpha: 1 }, 500).call(function() { f._initListener() }); $(s_oMain).trigger("save_score", a) }; this._onExit = function() { l.off("mousedown"); s_oGame.onExit() }; this._init(a); return this } function CTweenController() { this.tweenValue = function(a, c, e) { return a + e * (c - a) }; this.easeLinear = function(a, c, e, b) { return e * a / b + c }; this.easeInCubic = function(a, c, e, b) { b = (a /= b) * a * a; return c + e * b }; this.easeBackInQuart = function(a, c, e, b) { b = (a /= b) * a; return c + e * (2 * b * b + 2 * b * a + -3 * b) }; this.easeInBack = function(a, c, e, b) { return e * (a /= b) * a * (2.70158 * a - 1.70158) + c }; this.easeOutCubic = function(a, c, e, b) { return e * ((a = a / b - 1) * a * a + 1) + c } } function CLevelSettings(a) { var c, e, b, d, k, l, n, m, f, v; this._init = function(a) { c = a; NUM_LEVELS = Object.keys(c).length; this._initBallSpeed(); this._initBallNumber(); this._initBallColors(); this._initHeroPos(); this._initCurveLevel(); this._initBgLevel(); this._initBeeTraj(); this._initDaisySpawnPos() }; this._initBallSpeed = function() { e = []; for (var a = 0; a < NUM_LEVELS; a++) e[a] = c[a].ball_speed }; this._initBallNumber = function() { b = []; for (var a = 0; a < NUM_LEVELS; a++) b[a] = c[a].ball_number }; this._initBallColors = function() { d = []; for (var a = 0; a < NUM_LEVELS; a++) d[a] = c[a].num_colors }; this._initHeroPos = function() { k = []; for (var a = 0; a < NUM_LEVELS; a++) k[a] = new createjs.Point(c[a].hero_pos.x, c[a].hero_pos.y) }; this._initCurveLevel = function() { l = []; for (var a = 0; a < NUM_LEVELS; a++) { l[a] = []; for (var b = c[a].curve_point, d = 0; d < b.length; d++) l[a].push([b[d].x, b[d].y]) } }; this._initBgLevel = function() { n = []; m = []; for (var a = 0; a < NUM_LEVELS; a++) n[a] = c[a].bg_image, m[a] = c[a].fg_image }; this._initBeeTraj = function() { f = [{ path: [-58, 267, 100, 100, 1005, 352], start_rot: 0, final_rot: 25, start: 0, end: 1, time: 12E3 }, { path: [-33, 458, 300, 470, 980, 329], start_rot: 0, final_rot: -25, start: 0, end: 1, time: 12E3 }, { path: [304, 574, 300, 54, 500, -100], start_rot: -90, final_rot: -50, start: 0, end: 1, time: 12E3 }] }; this._initDaisySpawnPos = function() { v = [ [{ x: 80, y: 274 }, { x: 224, y: 296 }, { x: 452, y: 358 }, { x: 616, y: 288 }, { x: 845, y: 344 }], [{ x: 850, y: 470 }, { x: 877, y: 152 }, { x: 256, y: 126 }, { x: 650, y: 277 }], [{ x: 57, y: 277 }, { x: 627, y: 150 }, { x: 867, y: 433 }, { x: 238, y: 510 }], [{ x: 600, y: 35 }, { x: 85, y: 186 }, { x: 200, y: 496 }, { x: 782, y: 160 }, { x: 720, y: 470 }, { X: 890, Y: 400 } ], [{ x: 82, y: 166 }, { x: 325, y: 205 }, { x: 373, y: 338 }, { x: 571, y: 200 }, { x: 845, y: 278 }], [{ x: 93, y: 150 }, { x: 374, y: 30 }, { x: 334, y: 342 }, { x: 870, y: 163 }, { x: 892, y: 405 }], [{ x: 70, y: 150 }, { x: 135, y: 480 }, { x: 387, y: 258 }, { x: 786, y: 360 }, { x: 880, y: 194 }], [{ x: 87, y: 154 }, { x: 141, y: 478 }, { x: 314, y: 260 }, { x: 571, y: 347 }, { x: 847, y: 160 }, { x: 854, y: 425 }], [{ x: 69, y: 154 }, { x: 83, y: 332 }, { x: 289, y: 500 }, { x: 834, y: 155 }, { x: 900, y: 392 }], [{ x: 77, y: 170 }, { x: 200, y: 490 }, { x: 328, y: 311 }, { x: 682, y: 344 }, { x: 896, y: 217 }], [{ x: 52, y: 147 }, { x: 300, y: 248 }, { x: 576, y: 284 }, { x: 847, y: 168 }, { x: 873, y: 427 }], [{ x: 82, y: 122 }, { x: 90, y: 343 }, { x: 308, y: 113 }, { x: 784, y: 146 }, { x: 894, y: 334 }], [{ x: 49, y: 162 }, { x: 400, y: 61 }, { x: 607, y: 34 }, { x: 482, y: 266 }, { x: 893, y: 200 }] ] }; this.getBallSpeedForLevel = function(a) { return e[a - 1] }; this.getBallNumberForLevel = function(a) { return b[a - 1] }; this.getBallColorsForLevel = function(a) { return d[a - 1] }; this.getHeroPosForLevel = function(a) { return k[a - 1] }; this.getCurveForLevel = function(a) { return l[a - 1] }; this.getNumLevels = function() { return l.length }; this.getBgForLevel = function(a) { return n[a - 1] }; this.getFgForLevel = function(a) { return m[a - 1] }; this.getRandBeeTrajectory = function() { return f[Math.floor(Math.random() * f.length)] }; this.getDaisyPosForLevel = function(a) { return v[a - 1] }; this._init(a) } function CHero() { var a = !1, c, e, b, d, k, l, n, m; this._init = function() { var a = { images: [s_oSpriteLibrary.getSprite("hero")], frames: { width: HERO_WIDTH, height: HERO_HEIGHT }, animations: { idle: [0], shot: [0, 11, "idle"] } }; a = new createjs.SpriteSheet(a); m = new createjs.Container; m.regX = HERO_WIDTH / 2; m.regY = HERO_HEIGHT / 2; s_oStage.addChild(m); l = new createjs.Container; m.addChild(l); n = new createjs.Container; m.addChild(n); k = createSprite(a, "idle", 0, 0, HERO_WIDTH, HERO_HEIGHT); n.addChild(k) }; this.reset = function(f, k) { a = !1; c = k; void 0 !== b && null !== b && b.unload(); void 0 !== d && null !== d && d.unload(); m.x = f.x; m.y = f.y; e = []; for (var n = 0; n < c; n++) e[n] = !0 }; this.unload = function() {}; this.rotate = function(a) { m.rotation = a }; this.start = function() { b = this._getRandomBall(); b.changePos(HERO_WIDTH / 2, HERO_HEIGHT / 2 + 36); d = this._getRandomBall(); d.changePos(HERO_WIDTH / 2, HERO_HEIGHT / 2 - 12); var a = this; createjs.Tween.get(b.getSprite()).to({ y: b.getY() + 25 }, 300).call(function() { a._onBallReady() }); createjs.Tween.get(d.getSprite()).to({ y: d.getY() + 16 }, 300) }; this._getRandomBall = function() { if (!0 === this._checkIfAllColorsNotAvailable()) return null; do { var a = Math.floor(Math.random() * c), b = !1; if (!0 === e[a]) { var d = new CBall(a, l); break } } while (!1 === b); return d }; this._checkIfAllColorsNotAvailable = function() { for (var a = !0, b = 0; b < e.length; b++) !0 === e[b] && (a = !1); return a }; this._nextShoot = function() { null !== b && b.unload(); b = d; b.changePos(HERO_WIDTH / 2, HERO_HEIGHT / 2 + 36); d = this._getRandomBall(); d.changePos(HERO_WIDTH / 2, HERO_HEIGHT / 2 - 12); var a = this; createjs.Tween.get(b.getSprite()).to({ y: b.getY() + 25 }, 300).call(function() { a._onBallReady() }); createjs.Tween.get(d.getSprite()).to({ y: d.getY() + 16 }, 300) }; this.playAnim = function(a) { k.gotoAndPlay(a) }; this.colorCleared = function(a) { e[a] = !1; b.getIndex() === a && (b.unload(), b = this._getRandomBall(), null !== b && b.changePos(HERO_WIDTH / 2, HERO_HEIGHT / 2 + 61)); d.getIndex() === a && (d.unload(), d = this._getRandomBall(), null !== d && d.changePos(HERO_WIDTH / 2, HERO_HEIGHT / 2 + 4)) }; this._onBallReady = function() { a = !0 }; this.getCurrentBall = function() { a = !1; var c = b; this._nextShoot(); return c }; this.getX = function() { return m.x }; this.getY = function() { return m.y }; this.getRotation = function() { return m.rotation }; this.canShoot = function() { return a }; this._init() } function CBezier() { var a, c, e, b, d, k, l, n, m, f, v, r; this.init = function(y, x, B, t) { a = y; c = x; e = B; d = a.x - 2 * c.x + e.x; k = a.y - 2 * c.y + e.y; l = 2 * c.x - 2 * a.x; n = 2 * c.y - 2 * a.y; m = 4 * (d * d + k * k); f = 4 * (d * l + k * n); v = l * l + n * n; r = this._length(1); b = Math.floor(r / t); r % t > t / 2 && b++; return b }; this._speed = function(a) { return Math.sqrt(m * a * a + f * a + v) }; this._length = function(a) { var b = Math.sqrt(v + a * (f + m * a)); return (2 * Math.sqrt(m) * (2 * m * a * b + f * (b - Math.sqrt(v))) + (f * f - 4 * m * v) * (Math.log(f + 2 * Math.sqrt(m) * Math.sqrt(v)) - Math.log(f + 2 * m * a + 2 * Math.sqrt(m) * b))) / (8 * Math.pow(m, 1.5)) }; this.invertL = function(a, b) { var c = a; do { var d = c - (this._length(c) - b) / this._speed(c); if (1E-6 > Math.abs(c - d)) break; c = d } while (1); return d }; this.getAnchorPoint = function(d) { if (0 <= d && d <= b) { var f = d / b; f = this.invertL(f, f * r); d = (1 - f) * (1 - f) * a.x + 2 * (1 - f) * f * c.x + f * f * e.x; var n = (1 - f) * (1 - f) * a.y + 2 * (1 - f) * f * c.y + f * f * e.y, k = new createjs.Point((1 - f) * a.x + f * c.x, (1 - f) * a.y + f * c.y); f = new createjs.Point((1 - f) * c.x + f * e.x, (1 - f) * c.y + f * e.y); return [d, n, 180 * Math.atan2(f.y - k.y, f.x - k.x) / Math.PI] } return [] } } function CBall(a, c) { var e, b, d, k, l; this._init = function(a, c) { e = a; b = 0; l = c; var f = s_oSpriteLibrary.getSprite("ball_" + e); BALL_DIAMETER = f.width; BALL_DIAMETER_SQUARE = BALL_DIAMETER * BALL_DIAMETER; BALL_RADIUS = BALL_DIAMETER / 2; f = new createjs.SpriteSheet({ images: [f], frames: { width: BALL_DIAMETER, height: BALL_DIAMETER, regX: BALL_RADIUS, regY: BALL_RADIUS }, animations: { move: [0, 49] } }); d = createSprite(f, null, BALL_RADIUS, BALL_RADIUS, BALL_DIAMETER, BALL_DIAMETER); d.stop(); l.addChild(d) }; this.unload = function() { l.removeChild(k); l.removeChild(d) }; this.nextFrame = function() { d.gotoAndStop(50 === d.currentFrame + 1 ? 0 : d.currentFrame + 1) }; this.prevFrame = function() { d.gotoAndStop(0 > d.currentFrame - 1 ? 49 : d.currentFrame - 1) }; this.setPos = function(a, c) { a > b ? this.nextFrame() : a < b && this.prevFrame(); b = a; d.x = c[b][0]; d.y = c[b][1]; d.rotation = c[b][2] - 90 }; this.changePos = function(a, b) { d.x = a; d.y = b }; this.increasePosWithNumbers = function(a, b) { d.x += a; d.y += b }; this.decreasePos = function(a, b) { d.x -= a; d.y -= b }; this.increasePos = function(a, c) { this.setPos(b + a, c) }; this.setContainer = function(a) { d.mask = null; l = a }; this.explode = function() { var a = { images: [s_oSpriteLibrary.getSprite("explosion")], frames: { width: 30, height: 30, regX: 15, regY: 15 }, animations: { show: [0, 19], hide: [20] } }, b = this; a = new createjs.SpriteSheet(a, "show"); k = new createjs.Sprite(a); l.addChild(k); k.x = d.x; k.y = d.y; k.gotoAndPlay("show"); createjs.Tween.get(d).to({ alpha: 0 }, 1E3, createjs.Ease.cubicOut).call(function() { d.visible = !1 }); createjs.Tween.get(k).to({ alpha: 0 }, 1200, createjs.Ease.cubicOut).call(function() { b.onExplosionEnd() }) }; this.onExplosionEnd = function() { l.removeChild(k); l.removeChild(d) }; this.rollInStage = function() {}; this.getFotogram = function() { return b }; this.getSprite = function() { return d }; this.getIndex = function() { return e }; this.getX = function() { return d.x }; this.getY = function() { return d.y }; this._init(a, c) } function CNextLevel() { var a, c, e, b, d, k; this._init = function() { k = new createjs.Container; k.alpha = 0; k.visible = !1; s_oStage.addChild(k); a = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); k.addChild(a); e = new CTLText(k, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2 - 90, 320, 48, 48, "center", "#008733", FONT_GAME, 1.1, 0, 0, "LEVEL 1", !0, !0, !1, !1); e.setOutline(3); c = new CTLText(k, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2 - 90, 320, 48, 48, "center", "#fff", FONT_GAME, 1.1, 0, 0, "LEVEL 1", !0, !0, !1, !1); d = new CTLText(k, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2 + 30, 320, 34, 34, "center", "#008733", FONT_GAME, 1.1, 0, 0, "SCORE 99999", !0, !0, !1, !1); d.setOutline(3); b = new CTLText(k, CANVAS_WIDTH / 2 - 160, CANVAS_HEIGHT / 2 + 30, 320, 34, 34, "center", "#fff", FONT_GAME, 1.1, 0, 0, "SCORE 99999", !0, !0, !1, !1) }; this.show = function(a, n) { e.refreshText(TEXT_LEVEL + " " + a); c.refreshText(TEXT_LEVEL + " " + a); d.refreshText(TEXT_SCORE + " " + n); b.refreshText(TEXT_SCORE + " " + n); k.visible = !0; var l = this; createjs.Tween.get(k).to({ alpha: 1 }, 500).call(function() { l._initListener() }); $(s_oMain).trigger("save_score", n) }; this._initListener = function() { k.on("mousedown", this._onExit); $(s_oMain).trigger("show_interlevel_ad") }; this._onExit = function() { k.off("mousedown"); k.alpha = 0; k.visible = !1; s_oGame.nextLevel() }; this._init() } function CExtraScore(a, c, e) { var b; this._init = function(a, c, e) { var d = s_oSpriteLibrary.getSprite("extra_score"); b = createBitmap(d); b.x = a; b.y = c; b.regX = d.width / 2; b.regY = d.height / 2; b.alpha = 0; e.addChild(b); createjs.Tween.get(b).to({ alpha: 1 }, 1E3).call(function() { e.removeChild(b) }) }; this._init(a, c, e) } function CLevelMenu() { var a, c, e, b, d, k, l, n, m, f, v, r, y, x, B, t = null, z = null, H, E, G, J, D = null, g = null; this._init = function() { m = 0; G = new createjs.Container; s_oStage.addChild(G); var p = createBitmap(s_oSpriteLibrary.getSprite("bg_menu_level")); G.addChild(p); l = CANVAS_WIDTH / 2; n = 50; E = new CTLText(G, l - 180, n, 360, 80, 40, "center", "#008733", FONT_GAME, 1.1, 0, 0, TEXT_SELECT_LEVEL, !0, !0, !0, !1); E.setOutline(3); H = new CTLText(G, l - 180, n, 360, 80, 40, "center", "#fff", FONT_GAME, 1.1, 0, 0, TEXT_SELECT_LEVEL, !0, !0, !0, !1); p = createBitmap(s_oSpriteLibrary.getSprite("fg_game_1")); G.addChild(p); p = s_oSpriteLibrary.getSprite("but_exit"); d = CANVAS_WIDTH - p.width / 2 - 10; k = p.height / 2 + 10; x = new CGfxButton(d, k, p, G); x.addEventListener(ON_MOUSE_UP, this._onExit, this); f = p.height; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) e = x.getX() - p.width - 10, b = p.height / 2 + 10, B = new CToggle(e, b, s_oSpriteLibrary.getSprite("audio_icon"), s_bAudioActive), B.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); p = window.document; var q = p.documentElement; D = q.requestFullscreen || q.mozRequestFullScreen || q.webkitRequestFullScreen || q.msRequestFullscreen; g = p.exitFullscreen || p.mozCancelFullScreen || p.webkitExitFullscreen || p.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (D = !1); D && screenfull.isEnabled && (p = s_oSpriteLibrary.getSprite("but_fullscreen"), a = p.width / 4 + 10, c = p.height / 2 + 4, J = new CToggle(a, c, p, s_bFullscreen, s_oStage), J.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); this._checkBoundLimits(); r = []; p = Math.floor((CANVAS_WIDTH - 2 * EDGEBOARD_X) / NUM_COLS_PAGE_LEVEL) / 2; for (var v = q = 0; v < NUM_COLS_PAGE_LEVEL; v++) r.push(q), q += 2 * p; y = []; this._createNewLevelPage(0, NUM_LEVELS); if (1 < y.length) { for (p = 1; p < y.length; p++) y[p].visible = !1; t = new CGfxButton(CANVAS_WIDTH / 2 + 280, CANVAS_HEIGHT - 80, s_oSpriteLibrary.getSprite("arrow_right"), G); t.addEventListener(ON_MOUSE_UP, this._onRight, this); z = new CGfxButton(CANVAS_WIDTH / 2 - 280, CANVAS_HEIGHT - 80, s_oSpriteLibrary.getSprite("arrow_left"), G); z.addEventListener(ON_MOUSE_UP, this._onLeft, this) } this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { for (var a = 0; a < v.length; a++) v[a].unload(); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || B.unload(); D && screenfull.isEnabled && J.unload(); x.unload(); null !== z && (z.unload(), t.unload()); s_oStage.removeChild(G); s_oLevelMenu = null }; this.refreshButtonPos = function(f, g) { E.setY(n + g); H.setY(n + g); x.setPosition(d - f, k + g); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || B.setPosition(e - f, g + b); D && screenfull.isEnabled && J.setPosition(a + f, c + g) }; this._checkBoundLimits = function() { for (var a = s_oSpriteLibrary.getSprite("but_level"), b = 0, c = CANVAS_HEIGHT - 2 * EDGEBOARD_Y - 2 * f, d = 0; b < c;) b += a.height + 20, d++; NUM_ROWS_PAGE_LEVEL > d && (NUM_ROWS_PAGE_LEVEL = d); c = b = 0; d = CANVAS_WIDTH - 2 * EDGEBOARD_X; for (a = s_oSpriteLibrary.getSprite("but_level"); c < d;) c += a.width / 2 + 5, b++; NUM_COLS_PAGE_LEVEL > b && (NUM_COLS_PAGE_LEVEL = b) }; this._createNewLevelPage = function(a, b) { var c = new createjs.Container; G.addChild(c); y.push(c); v = []; for (var d = 0, e = 0, f = 1, g = !1, k = s_oSpriteLibrary.getSprite("but_level"), l = a; l < b; l++) { var n = new CLevelBut(r[d] + k.width / 4, e + k.height / 2, l + 1, k, l + 1 > s_iLastLevel ? !1 : !0, c); n.addEventListenerWithParams(ON_MOUSE_UP, this._onButLevelRelease, this, l); v.push(n); d++; if (d === r.length && (d = 0, e += k.height + 20, f++, f > NUM_ROWS_PAGE_LEVEL)) { g = !0; break } } c.x = CANVAS_WIDTH / 2; c.y = CANVAS_HEIGHT / 2 + 30; c.regX = c.getBounds().width / 2; c.regY = c.getBounds().height / 2; g && this._createNewLevelPage(l + 1, b) }; this._onRight = function() { y[m].visible = !1; m++; m >= y.length && (m = 0); y[m].visible = !0 }; this._onLeft = function() { y[m].visible = !1; m--; 0 > m && (m = y.length - 1); y[m].visible = !0 }; this._onButLevelRelease = function(a) { s_oLevelMenu.unload(); s_oMain.levelSelected(a + 1) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this.resetFullscreenBut = function() { D && screenfull.isEnabled && J.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? g.call(window.document) : D.call(window.document.documentElement); sizeHandler() }; this._onExit = function() { s_oMain.gotoMenu() }; s_oLevelMenu = this; this._init() } var s_oLevelMenu = null; function CLevelBut(a, c, e, b, d, k) { var l, n, m, f = [], v = [], r, y, x, B, t, z; this._init = function(a, b, c, d, e) { n = []; m = []; z = new createjs.Container; H.addChild(z); var g = new createjs.SpriteSheet({ images: [d], frames: { width: d.width / 2, height: d.height, regX: d.width / 2 / 2, regY: d.height / 2 }, animations: { state_true: [0], state_false: [1] } }); l = e; t = createSprite(g, "state_" + l, d.width / 2 / 2, d.height / 2, d.width / 2, d.height); t.mouseEnabled = e; t.x = a; t.y = b; t.stop(); s_bMobile || (z.cursor = "pointer"); z.addChild(t); f.push(t); x = new createjs.Text(c, "40px " + FONT_GAME, "#008733"); x.x = a; x.y = b + 20; x.textAlign = "center"; x.textBaseline = "alphabetic"; x.lineWidth = 200; x.outline = 4; z.addChild(x); B = new createjs.Text(c, "40px " + FONT_GAME, "#fff"); B.x = a; B.y = b + 20; B.textAlign = "center"; B.textBaseline = "alphabetic"; B.lineWidth = 200; z.addChild(B); e || (B.color = "#b4b4b4", x.color = "#606161"); this._initListener() }; this.unload = function() { z.off("mousedown", r); z.off("pressup", y); z.removeChild(t) }; this._initListener = function() { r = z.on("mousedown", this.buttonDown); y = z.on("pressup", this.buttonRelease) }; this.viewBut = function(a) { z.addChild(a) }; this.addEventListener = function(a, b, c) { n[a] = b; m[a] = c }; this.addEventListenerWithParams = function(a, b, c, d) { n[a] = b; m[a] = c; v = d }; this.ifClickable = function() { return !0 === z.mouseEnabled ? 1 : 0 }; this.setActive = function(a, b) { l = b; f[a].gotoAndStop("state_" + l); f[a].mouseEnabled = !0; l ? (B.color = "#69b8d5", x.color = "#004e6f") : (B.color = "#b4b4b4", x.color = "#606161") }; this.buttonRelease = function() { l && (playSound("press_but", 1, !1), n[ON_MOUSE_UP] && n[ON_MOUSE_UP].call(m[ON_MOUSE_UP], v)) }; this.buttonDown = function() { n[ON_MOUSE_DOWN] && n[ON_MOUSE_DOWN].call(m[ON_MOUSE_DOWN], v) }; this.setPosition = function(a, b) { z.x = a; z.y = b }; this.setVisible = function(a) { z.visible = a }; var H = k; this._init(a, c, e, b, d, k) } function CMsgBox(a, c, e, b) { var d, k, l, n, m, f, v; this._init = function(a, b, c, e) { d = []; k = []; v = new createjs.Container; s_oStage.addChild(v); var r = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); v.addChild(r); l = new CTLText(v, CANVAS_WIDTH / 2 - 160, 180, 320, 130, 30, "center", "#fff", FONT_GAME, 1.1, 0, 0, " ", !0, !0, !0, !1); n = new CTextButton(CANVAS_WIDTH / 2 - 100, CANVAS_HEIGHT - 180, s_oSpriteLibrary.getSprite("but_generic_small"), "LEFT", FONT_GAME, "#ffffff", 24, v); n.addEventListener(ON_MOUSE_UP, this._onButLeftDownRelease, this); m = new CTextButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT - 180, s_oSpriteLibrary.getSprite("but_generic_small"), "CENTER", FONT_GAME, "#ffffff", 24, v); m.addEventListener(ON_MOUSE_UP, this._onButCenterDownRelease, this); f = new CTextButton(CANVAS_WIDTH / 2 + 90, CANVAS_HEIGHT - 180, s_oSpriteLibrary.getSprite("but_generic_small"), "LEFT", FONT_GAME, "#ffffff", 24, v); f.addEventListener(ON_MOUSE_UP, this._onButRightDownRelease, this); this.show(a, b, c, e) }; this.show = function(a, b, c, d) { l.refreshText(a); "" !== b ? (n.changeText(b), n.setVisible(!0)) : n.setVisible(!1); "" !== c ? (m.changeText(c), m.setVisible(!0)) : m.setVisible(!1); "" !== d ? (f.changeText(d), f.setVisible(!0)) : f.setVisible(!1) }; this.hide = function() { this.unload(); s_oStage.removeChild(v) }; this.unload = function() { n.unload(); m.unload(); f.unload() }; this.addEventListener = function(a, b, c) { d[a] = b; k[a] = c }; this._onButLeftDownRelease = function() { d[ON_MSG_BOX_LEFT_BUT] && (d[ON_MSG_BOX_LEFT_BUT].call(k[ON_MSG_BOX_LEFT_BUT]), v.visible = !1) }; this._onButCenterDownRelease = function() { d[ON_MSG_BOX_CENTER_BUT] && (d[ON_MSG_BOX_CENTER_BUT].call(k[ON_MSG_BOX_CENTER_BUT]), v.visible = !1) }; this._onButRightDownRelease = function() { d[ON_MSG_BOX_RIGHT_BUT] && (d[ON_MSG_BOX_RIGHT_BUT].call(k[ON_MSG_BOX_RIGHT_BUT]), v.visible = !1) }; this._init(a, c, e, b) } function CCreditsPanel() { var a, c, e, b, d, k, l, n, m; this._init = function() { m = new createjs.Container; m.alpha = 0; s_oStage.addChild(m); var f = new createjs.Shape; f.graphics.beginFill("rgba(0,0,0,0.7)").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); m.addChild(f); a = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); m.addChild(a); k = new createjs.Shape; k.graphics.beginFill("#0f0f0f").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k.alpha = .01; k.on("click", this._onLogoButRelease); m.addChild(k); f = s_oSpriteLibrary.getSprite("but_exit_small"); e = new CGfxButton(616, 180, f, m); e.addEventListener(ON_MOUSE_UP, this.unload, this); d = new createjs.Text(TEXT_CREDITS_DEVELOPED, "24px " + FONT_GAME, "#008733"); d.textAlign = "center"; d.textBaseline = "alphabetic"; d.x = CANVAS_WIDTH / 2; d.y = 240; d.outline = 2; m.addChild(d); b = new createjs.Text(TEXT_CREDITS_DEVELOPED, "24px " + FONT_GAME, "#fff"); b.textAlign = "center"; b.textBaseline = "alphabetic"; b.x = CANVAS_WIDTH / 2; b.y = 240; m.addChild(b); f = s_oSpriteLibrary.getSprite("logo_ctl"); c = createBitmap(f); c.regX = f.width / 2; c.regY = f.height / 2; c.x = CANVAS_WIDTH / 2; c.y = CANVAS_HEIGHT / 2; m.addChild(c); n = new createjs.Text("www.codethislab.com", "18px " + FONT_GAME, "#008733"); n.textAlign = "center"; n.textBaseline = "alphabetic"; n.x = CANVAS_WIDTH / 2; n.y = 320; n.outline = 2; m.addChild(n); l = new createjs.Text("www.codethislab.com", "18px " + FONT_GAME, "#fff"); l.textAlign = "center"; l.textBaseline = "alphabetic"; l.x = CANVAS_WIDTH / 2; l.y = 320; m.addChild(l); createjs.Tween.get(m).to({ alpha: 1 }, 600, createjs.Ease.cubicOut); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.refreshButtonPos = function(a, b) {}; this.unload = function() { k.off("click", this._onLogoButRelease); e.unload(); e = null; s_oStage.removeChild(m) }; this._onLogoButRelease = function() { window.open("http://www.codethislab.com/index.php?&l=en", "_blank") }; this._init() } function CAlertSavingBox(a, c) { var e, b; this._init = function(a) { b = new createjs.Container; k.addChild(b); var c = new createjs.Shape; c.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); c.alpha = .5; c.on("click", function() {}); b.addChild(c); c = s_oSpriteLibrary.getSprite("msg_box"); var d = createBitmap(c); d.x = .5 * CANVAS_WIDTH; d.y = .5 * CANVAS_HEIGHT; d.regX = .5 * c.width; d.regY = .5 * c.height; b.addChild(d); new CTLText(b, CANVAS_WIDTH / 2 - 160, 210, 320, 150, 16, "center", "#fff", FONT_GAME, 1.1, 0, 0, a, !0, !0, !0, !0); e = new CGfxButton(CANVAS_WIDTH / 2 + 140, 180, s_oSpriteLibrary.getSprite("but_exit_small"), b); e.addEventListener(ON_MOUSE_UP, this._onButOk, this) }; this._onButOk = function() { d.unload() }; this.unload = function() { e.unload(); k.removeChild(b) }; var d = this; var k = c; this._init(a) } function CBee(a, c) { var e, b, d, k; this._init = function(a) { d = a; a = s_oSpriteLibrary.getSprite("bee"); e = a.width / 2; b = a.height; a = new createjs.SpriteSheet({ framerate: 15, images: [a], frames: { width: e, height: b, regX: e / 2, regY: b / 2 }, animations: { idle: [0, 1] } }); k = createSprite(a, "idle", e / 2, b / 2, e, b); l.addChild(k); d.start > d.end && (k.scaleX *= -1); k.rotation = d.start_rot; var c = this; createjs.Tween.get(k).to({ guide: { path: d.path, start: d.start, end: d.end }, rotation: d.final_rot }, d.time).call(function() { c.unload() }) }; this.unload = function() { l.removeChild(k) }; var l = c; this._init(a) } function CDaisy(a, c, e) { var b; this._init = function(a, c) { var e = { framerate: 15, images: [s_oSpriteLibrary.getSprite("daisy_spritesheet")], frames: { width: DAISY_WIDTH, height: DAISY_HEIGHT, regX: DAISY_WIDTH / 2, regY: DAISY_HEIGHT / 2 }, animations: { start: [0], idle: [20], anim: [0, 20, "idle"] } }; e = new createjs.SpriteSheet(e); b = createSprite(e, "start", DAISY_WIDTH / 2, DAISY_HEIGHT / 2, DAISY_WIDTH, DAISY_HEIGHT); b.stop(); b.visible = !1; b.x = a; b.y = c; d.addChild(b) }; this.show = function(a) { setTimeout(function() { b.visible = !0; b.gotoAndPlay("anim") }, a) }; this.unload = function() { d.removeChild(b) }; var d = e; this._init(a, c) } CTLText.prototype = { constructor: CTLText, __autofit: function() { if (this._bFitText) { for (var a = this._iFontSize; (this._oText.getBounds().height > this._iHeight - 2 * this._iPaddingV || this._oText.getBounds().width > this._iWidth - 2 * this._iPaddingH) && !(a--, this._oText.font = a + "px " + this._szFont, this._oText.lineHeight = Math.round(a * this._fLineHeightFactor), this.__updateY(), this.__verticalAlign(), 8 > a);); this._iFontSize = a } }, __verticalAlign: function() { if (this._bVerticalAlign) { var a = this._oText.getBounds().height; this._oText.y -= (a - this._iHeight) / 2 + this._iPaddingV } }, __updateY: function() { this._oText.y = this._y + this._iPaddingV; switch (this._oText.textBaseline) { case "middle": this._oText.y += this._oText.lineHeight / 2 + (this._iFontSize * this._fLineHeightFactor - this._iFontSize) } }, __createText: function(a) { this._bDebug && (this._oDebugShape = new createjs.Shape, this._oDebugShape.graphics.beginFill("rgba(255,0,0,0.5)").drawRect(this._x, this._y, this._iWidth, this._iHeight), this._oContainer.addChild(this._oDebugShape)); this._oText = new createjs.Text(a, this._iFontSize + "px " + this._szFont, this._szColor); this._oText.textBaseline = "middle"; this._oText.lineHeight = Math.round(this._iFontSize * this._fLineHeightFactor); this._oText.textAlign = this._szAlign; this._oText.lineWidth = this._bMultiline ? this._iWidth - 2 * this._iPaddingH : null; switch (this._szAlign) { case "center": this._oText.x = this._x + this._iWidth / 2; break; case "left": this._oText.x = this._x + this._iPaddingH; break; case "right": this._oText.x = this._x + this._iWidth - this._iPaddingH } this._oContainer.addChild(this._oText); this.refreshText(a) }, setY: function(a) { this._y = a; this._oText.y = a }, setVerticalAlign: function(a) { this._bVerticalAlign = a }, setOutline: function(a) { null !== this._oText && (this._oText.outline = a) }, setShadow: function(a, c, e, b) { null !== this._oText && (this._oText.shadow = new createjs.Shadow(a, c, e, b)) }, setColor: function(a) { this._oText.color = a }, setAlpha: function(a) { this._oText.alpha = a }, removeTweens: function() { createjs.Tween.removeTweens(this._oText) }, getText: function() { return this._oText }, getY: function() { return this._y }, getFontSize: function() { return this._iFontSize }, refreshText: function(a) { "" === a && (a = " "); null === this._oText && this.__createText(a); this._oText.text = a; this._oText.font = this._iFontSize + "px " + this._szFont; this._oText.lineHeight = Math.round(this._iFontSize * this._fLineHeightFactor); this.__autofit(); this.__updateY(); this.__verticalAlign() } }; function CTLText(a, c, e, b, d, k, l, n, m, f, v, r, y, x, B, t, z) { this._oContainer = a; this._x = c; this._y = e; this._iWidth = b; this._iHeight = d; this._bMultiline = t; this._iFontSize = k; this._szAlign = l; this._szColor = n; this._szFont = m; this._iPaddingH = v; this._iPaddingV = r; this._bVerticalAlign = B; this._bFitText = x; this._bDebug = z; this._oDebugShape = null; this._fLineHeightFactor = f; this._oText = null; y && this.__createText(y) } function extractHostname(a) { a = -1 < a.indexOf("://") ? a.split("/")[2] : a.split("/")[0]; a = a.split(":")[0]; return a = a.split("?")[0] } function extractRootDomain(a) { a = extractHostname(a); var c = a.split("."), e = c.length; 2 < e && (a = c[e - 2] + "." + c[e - 1]); return a } var getClosestTop = function() { var a = window, c = !1; try { for (; a.parent.document !== a.document;) if (a.parent.document) a = a.parent; else { c = !0; break } } catch (e) { c = !0 } return { topFrame: a, err: c } }, getBestPageUrl = function(a) { var c = a.topFrame, e = ""; if (a.err) try { try { e = window.top.location.href } catch (d) { var b = window.location.ancestorOrigins; e = b[b.length - 1] } } catch (d) { e = c.document.referrer } else e = c.location.href; return e }, TOPFRAMEOBJ = getClosestTop(), PAGE_URL = getBestPageUrl(TOPFRAMEOBJ); function seekAndDestroy() { for (var a = extractRootDomain(PAGE_URL), c = [String.fromCharCode(99, 111, 100, 101, 116, 104, 105, 115, 108, 97, 98, 46, 99, 111, 109), String.fromCharCode(101, 110, 118, 97, 116, 111, 46, 99, 111, 109), String.fromCharCode(99, 111, 100, 101, 99, 97, 110, 121, 111, 110, 46, 99, 111, 109), String.fromCharCode(99, 111, 100, 101, 99, 97, 110, 121, 111, 110, 46, 110, 101, 116)], e = 0; e < c.length; e++) if (c[e] === a) return !0; return !1 };
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генераци� �траницы: 0.01 |
proxy
|
phpinfo
|
�а�тройка