Файловый менеджер - Редактировать - /home/jogoso94/public_html/jogos/freecell_3/js/main.js
�азад
/* 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 : {}, d = "undefined" !== typeof module && module.exports, b = function() { for (var h, l = ["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(" ") ], k = 0, r = l.length, e = {}; k < r; k++) if ((h = l[k]) && h[1] in a) { for (k = 0; k < h.length; k++) e[l[0][k]] = h[k]; return e } return !1 }(), f = { change: b.fullscreenchange, error: b.fullscreenerror }, p = { request: function(h) { return new Promise(function(l, k) { var r = function() { this.off("change", r); l() }.bind(this); this.on("change", r); h = h || a.documentElement; Promise.resolve(h[b.requestFullscreen]())["catch"](k) }.bind(this)) }, exit: function() { return new Promise(function(h, l) { if (this.isFullscreen) { var k = function() { this.off("change", k); h() }.bind(this); this.on("change", k); Promise.resolve(a[b.exitFullscreen]())["catch"](l) } else h() }.bind(this)) }, toggle: function(h) { return this.isFullscreen ? this.exit() : this.request(h) }, onchange: function(h) { this.on("change", h) }, onerror: function(h) { this.on("error", h) }, on: function(h, l) { var k = f[h]; k && a.addEventListener(k, l, !1) }, off: function(h, l) { var k = f[h]; k && a.removeEventListener(k, l, !1) }, raw: b }; b ? (Object.defineProperties(p, { isFullscreen: { get: function() { return !!a[b.fullscreenElement] } }, element: { enumerable: !0, get: function() { return a[b.fullscreenElement] } }, isEnabled: { enumerable: !0, get: function() { return !!a[b.fullscreenEnabled] } } }), d ? module.exports = p : window.screenfull = p) : d ? module.exports = { isEnabled: !1 } : window.screenfull = { isEnabled: !1 } })(); (function() { function a(t) { t = String(t); return t.charAt(0).toUpperCase() + t.slice(1) } function d(t, N) { var J = -1, v = t ? t.length : 0; if ("number" == typeof v && -1 < v && v <= y) for (; ++J < v;) N(t[J], J, t); else f(t, N) } function b(t) { t = String(t).replace(/^ +| +$/g, ""); return /^(?:webOS|i(?:OS|P))/.test(t) ? t : a(t) } function f(t, N) { for (var J in t) I.call(t, J) && N(t[J], J, t) } function p(t) { return null == t ? a(t) : L.call(t).slice(8, -1) } function h(t, N) { var J = null != t ? typeof t[N] : "number"; return !/^(?:boolean|number|string|undefined)$/.test(J) && ("object" == J ? !!t[N] : !0) } function l(t) { return String(t).replace(/([ -])(?!$)/g, "$1?") } function k(t, N) { var J = null; d(t, function(v, B) { J = N(J, v, B, t) }); return J } function r(t) { function N(U) { return k(U, function(R, Q) { var V = Q.pattern || l(Q); !R && (R = RegExp("\\b" + V + " *\\d+[.\\w_]*", "i").exec(t) || RegExp("\\b" + V + " *\\w+-[\\w]*", "i").exec(t) || RegExp("\\b" + V + "(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)", "i").exec(t)) && ((R = String(Q.label && !RegExp(V, "i").test(Q.label) ? Q.label : R).split("/"))[1] && !/[\d.]+/.test(R[0]) && (R[0] += " " + R[1]), Q = Q.label || Q, R = b(R[0].replace(RegExp(V, "i"), Q).replace(RegExp("; *(?:" + Q + "[_-])?", "i"), " ").replace(RegExp("(" + Q + ")[-_.]?(\\w)", "i"), "$1 $2"))); return R }) } function J(U) { return k(U, function(R, Q) { return R || (RegExp(Q + "(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)", "i").exec(t) || 0)[1] || null }) } var v = n, B = t && "object" == typeof t && "String" != p(t); B && (v = t, t = null); var A = v.navigator || {}, z = A.userAgent || ""; t || (t = z); var S = B ? !!A.likeChrome : /\bChrome\b/.test(t) && !/internal|\n/i.test(L.toString()), Y = B ? "Object" : "ScriptBridgingProxyObject", E = B ? "Object" : "Environment", K = B && v.java ? "JavaPackage" : p(v.java), X = B ? "Object" : "RuntimeObject"; E = (K = /\bJava/.test(K) && v.java) && p(v.environment) == E; var g = K ? "a" : "\u03b1", C = K ? "b" : "\u03b2", w = v.document || {}, m = v.operamini || v.opera, u = F.test(u = B && m ? m["[[Class]]"] : p(m)) ? u : m = null, c, O = t; B = []; var T = null, Z = t == z; z = Z && m && "function" == typeof m.version && m.version(); var M = function(U) { return k(U, function(R, Q) { return R || RegExp("\\b" + (Q.pattern || l(Q)) + "\\b", "i").exec(t) && (Q.label || Q) }) }([{ label: "EdgeHTML", pattern: "Edge" }, "Trident", { label: "WebKit", pattern: "AppleWebKit" }, "iCab", "Presto", "NetFront", "Tasman", "KHTML", "Gecko"]), D = function(U) { return k(U, function(R, Q) { return R || RegExp("\\b" + (Q.pattern || l(Q)) + "\\b", "i").exec(t) && (Q.label || Q) }) }(["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" ]), P = N([{ 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" ]), W = function(U) { return k(U, function(R, Q, V) { return R || (Q[P] || Q[/^[a-z]+(?: +[a-z]+\b)*/i.exec(P)] || RegExp("\\b" + l(V) + "(?:\\b|\\w*\\d)", "i").exec(t)) && V }) }({ 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 } }), G = function(U) { return k(U, function(R, Q) { var V = Q.pattern || l(Q); if (!R && (R = RegExp("\\b" + V + "(?:/[\\d.]+|[ \\w.]*)", "i").exec(t))) { var aa = R, ba = Q.label || Q, ca = { "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" }; V && ba && /^Win/i.test(aa) && !/^Windows Phone /i.test(aa) && (ca = ca[/[\d.]+$/.exec(aa)]) && (aa = "Windows " + ca); aa = String(aa); V && ba && (aa = aa.replace(RegExp(V, "i"), ba)); R = aa = b(aa.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 R }) }(["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 " ]); M && (M = [M]); W && !P && (P = N([W])); if (c = /\bGoogle TV\b/.exec(P)) P = c[0]; /\bSimulator\b/i.test(t) && (P = (P ? P + " " : "") + "Simulator"); "Opera Mini" == D && /\bOPiOS\b/.test(t) && B.push("running in Turbo/Uncompressed mode"); "IE" == D && /\blike iPhone OS\b/.test(t) ? (c = r(t.replace(/like iPhone OS/, "")), W = c.manufacturer, P = c.product) : /^iP/.test(P) ? (D || (D = "Safari"), G = "iOS" + ((c = / OS ([\d_]+)/i.exec(t)) ? " " + c[1].replace(/_/g, ".") : "")) : "Konqueror" != D || /buntu/i.test(G) ? W && "Google" != W && (/Chrome/.test(D) && !/\bMobile Safari\b/i.test(t) || /\bVita\b/.test(P)) || /\bAndroid\b/.test(G) && /^Chrome/.test(D) && /\bVersion\//i.test(t) ? (D = "Android Browser", G = /\bAndroid\b/.test(G) ? G : "Android") : "Silk" == D ? (/\bMobi/i.test(t) || (G = "Android", B.unshift("desktop mode")), /Accelerated *= *true/i.test(t) && B.unshift("accelerated")) : "PaleMoon" == D && (c = /\bFirefox\/([\d.]+)\b/.exec(t)) ? B.push("identifying as Firefox " + c[1]) : "Firefox" == D && (c = /\b(Mobile|Tablet|TV)\b/i.exec(t)) ? (G || (G = "Firefox OS"), P || (P = c[1])) : !D || (c = !/\bMinefield\b/i.test(t) && /\b(?:Firefox|Safari)\b/.exec(D)) ? (D && !P && /[\/,]|^[^(]+?\)/.test(t.slice(t.indexOf(c + "/") + 8)) && (D = null), (c = P || W || G) && (P || W || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(G)) && (D = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(G) ? G : c) + " Browser")) : "Electron" == D && (c = (/\bChrome\/([\d.]+)\b/.exec(t) || 0)[1]) && B.push("Chromium " + c) : G = "Kubuntu"; z || (z = J(["(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))", "Version", l(D), "(?:Firefox|Minefield|NetFront)" ])); if (c = "iCab" == M && 3 < parseFloat(z) && "WebKit" || /\bOpera\b/.test(D) && (/\bOPR\b/.test(t) ? "Blink" : "Presto") || /\b(?:Midori|Nook|Safari)\b/i.test(t) && !/^(?:Trident|EdgeHTML)$/.test(M) && "WebKit" || !M && /\bMSIE\b/i.test(t) && ("Mac OS" == G ? "Tasman" : "Trident") || "WebKit" == M && /\bPlayStation\b(?! Vita\b)/i.test(D) && "NetFront") M = [c]; "IE" == D && (c = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(t) || 0)[1]) ? (D += " Mobile", G = "Windows Phone " + (/\+$/.test(c) ? c : c + ".x"), B.unshift("desktop mode")) : /\bWPDesktop\b/i.test(t) ? (D = "IE Mobile", G = "Windows Phone 8.x", B.unshift("desktop mode"), z || (z = (/\brv:([\d.]+)/.exec(t) || 0)[1])) : "IE" != D && "Trident" == M && (c = /\brv:([\d.]+)/.exec(t)) && (D && B.push("identifying as " + D + (z ? " " + z : "")), D = "IE", z = c[1]); if (Z) { if (h(v, "global")) if (K && (c = K.lang.System, O = c.getProperty("os.arch"), G = G || c.getProperty("os.name") + " " + c.getProperty("os.version")), E) { try { z = v.require("ringo/engine").version.join("."), D = "RingoJS" } catch (U) { (c = v.system) && c.global.system == v.system && (D = "Narwhal", G || (G = c[0].os || null)) } D || (D = "Rhino") } else "object" == typeof v.process && !v.process.browser && (c = v.process) && ("object" == typeof c.versions && ("string" == typeof c.versions.electron ? (B.push("Node " + c.versions.node), D = "Electron", z = c.versions.electron) : "string" == typeof c.versions.nw && (B.push("Chromium " + z, "Node " + c.versions.node), D = "NW.js", z = c.versions.nw)), D || (D = "Node.js", O = c.arch, G = c.platform, z = (z = /[\d.]+/.exec(c.version)) ? z[0] : null)); else p(c = v.runtime) == Y ? (D = "Adobe AIR", G = c.flash.system.Capabilities.os) : p(c = v.phantom) == X ? (D = "PhantomJS", z = (c = c.version || null) && c.major + "." + c.minor + "." + c.patch) : "number" == typeof w.documentMode && (c = /\bTrident\/(\d+)/i.exec(t)) ? (z = [z, w.documentMode], (c = +c[1] + 4) != z[1] && (B.push("IE " + z[1] + " mode"), M && (M[1] = ""), z[1] = c), z = "IE" == D ? String(z[1].toFixed(1)) : z[0]) : "number" == typeof w.documentMode && /^(?:Chrome|Firefox)\b/.test(D) && (B.push("masking as " + D + " " + z), D = "IE", z = "11.0", M = ["Trident"], G = "Windows"); G = G && b(G) } z && (c = /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(z) || /(?:alpha|beta)(?: ?\d)?/i.exec(t + ";" + (Z && A.appMinorVersion)) || /\bMinefield\b/i.test(t) && "a") && (T = /b/i.test(c) ? "beta" : "alpha", z = z.replace(RegExp(c + "\\+?$"), "") + ("beta" == T ? C : g) + (/\d+\+?/.exec(c) || "")); if ("Fennec" == D || "Firefox" == D && /\b(?:Android|Firefox OS)\b/.test(G)) D = "Firefox Mobile"; else if ("Maxthon" == D && z) z = z.replace(/\.[\d.]+/, ".x"); else if (/\bXbox\b/i.test(P)) "Xbox 360" == P && (G = null), "Xbox 360" == P && /\bIEMobile\b/.test(t) && B.unshift("mobile mode"); else if (!/^(?:Chrome|IE|Opera)$/.test(D) && (!D || P || /Browser|Mobi/.test(D)) || "Windows CE" != G && !/Mobi/i.test(t)) if ("IE" == D && Z) try { null === v.external && B.unshift("platform preview") } catch (U) { B.unshift("embedded") } else(/\bBlackBerry\b/.test(P) || /\bBB10\b/.test(t)) && (c = (RegExp(P.replace(/ +/g, " *") + "/([.\\d]+)", "i").exec(t) || 0)[1] || z) ? (c = [c, /BB10/.test(t)], G = (c[1] ? (P = null, W = "BlackBerry") : "Device Software") + " " + c[0], z = null) : this != f && "Wii" != P && (Z && m || /Opera/.test(D) && /\b(?:MSIE|Firefox)\b/i.test(t) || "Firefox" == D && /\bOS X (?:\d+\.){2,}/.test(G) || "IE" == D && (G && !/^Win/.test(G) && 5.5 < z || /\bWindows XP\b/.test(G) && 8 < z || 8 == z && !/\bTrident\b/.test(t))) && !F.test(c = r.call(f, t.replace(F, "") + ";")) && c.name && (c = "ing as " + c.name + ((c = c.version) ? " " + c : ""), F.test(D) ? (/\bIE\b/.test(c) && "Mac OS" == G && (G = null), c = "identify" + c) : (c = "mask" + c, D = u ? b(u.replace(/([a-z])([A-Z])/g, "$1 $2")) : "Opera", /\bIE\b/.test(c) && (G = null), Z || (z = null)), M = ["Presto"], B.push(c)); else D += " Mobile"; if (c = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(t) || 0)[1]) { c = [parseFloat(c.replace(/\.(\d)$/, ".0$1")), c]; if ("Safari" == D && "+" == c[1].slice(-1)) D = "WebKit Nightly", T = "alpha", z = c[1].slice(0, -1); else if (z == c[1] || z == (c[2] = (/\bSafari\/([\d.]+\+?)/i.exec(t) || 0)[1])) z = null; c[1] = (/\bChrome\/([\d.]+)/i.exec(t) || 0)[1]; 537.36 == c[0] && 537.36 == c[2] && 28 <= parseFloat(c[1]) && "WebKit" == M && (M = ["Blink"]); Z && (S || c[1]) ? (M && (M[1] = "like Chrome"), c = c[1] || (c = c[0], 530 > c ? 1 : 532 > c ? 2 : 532.05 > c ? 3 : 533 > c ? 4 : 534.03 > c ? 5 : 534.07 > c ? 6 : 534.1 > c ? 7 : 534.13 > c ? 8 : 534.16 > c ? 9 : 534.24 > c ? 10 : 534.3 > c ? 11 : 535.01 > c ? 12 : 535.02 > c ? "13+" : 535.07 > c ? 15 : 535.11 > c ? 16 : 535.19 > c ? 17 : 536.05 > c ? 18 : 536.1 > c ? 19 : 537.01 > c ? 20 : 537.11 > c ? "21+" : 537.13 > c ? 23 : 537.18 > c ? 24 : 537.24 > c ? 25 : 537.36 > c ? 26 : "Blink" != M ? "27" : "28")) : (M && (M[1] = "like Safari"), c = (c = c[0], 400 > c ? 1 : 500 > c ? 2 : 526 > c ? 3 : 533 > c ? 4 : 534 > c ? "4+" : 535 > c ? 5 : 537 > c ? 6 : 538 > c ? 7 : 601 > c ? 8 : "8")); M && (M[1] += " " + (c += "number" == typeof c ? ".x" : /[.+]/.test(c) ? "" : "+")); "Safari" == D && (!z || 45 < parseInt(z)) && (z = c) } "Opera" == D && (c = /\bzbov|zvav$/.exec(G)) ? (D += " ", B.unshift("desktop mode"), "zvav" == c ? (D += "Mini", z = null) : D += "Mobile", G = G.replace(RegExp(" *" + c + "$"), "")) : "Safari" == D && /\bChrome\b/.exec(M && M[1]) && (B.unshift("desktop mode"), D = "Chrome Mobile", z = null, /\bOS X\b/.test(G) ? (W = "Apple", G = "iOS 4.3+") : G = null); z && 0 == z.indexOf(c = /[\d.]+$/.exec(G)) && -1 < t.indexOf("/" + c + "-") && (G = String(G.replace(c, "")).replace(/^ +| +$/g, "")); M && !/\b(?:Avant|Nook)\b/.test(D) && (/Browser|Lunascape|Maxthon/.test(D) || "Safari" != D && /^iOS/.test(G) && /\bSafari\b/.test(M[1]) || /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(D) && M[1]) && (c = M[M.length - 1]) && B.push(c); B.length && (B = ["(" + B.join("; ") + ")"]); W && P && 0 > P.indexOf(W) && B.push("on " + W); P && B.push((/^on /.test(B[B.length - 1]) ? "" : "on ") + P); if (G) { var da = (c = / ([\d.+]+)$/.exec(G)) && "/" == G.charAt(G.length - c[0].length - 1); G = { architecture: 32, family: c && !da ? G.replace(c[0], "") : G, version: c ? c[1] : null, toString: function() { var U = this.version; return this.family + (U && !da ? " " + U : "") + (64 == this.architecture ? " 64-bit" : "") } } }(c = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(O)) && !/\bi686\b/i.test(O) ? (G && (G.architecture = 64, G.family = G.family.replace(RegExp(" *" + c), "")), D && (/\bWOW64\b/i.test(t) || Z && /\w(?:86|32)$/.test(A.cpuClass || A.platform) && !/\bWin64; x64\b/i.test(t)) && B.unshift("32-bit")) : G && /^OS X/.test(G.family) && "Chrome" == D && 39 <= parseFloat(z) && (G.architecture = 64); t || (t = null); v = {}; v.description = t; v.layout = M && M[0]; v.manufacturer = W; v.name = D; v.prerelease = T; v.product = P; v.ua = t; v.version = D && z; v.os = G || { architecture: null, family: null, version: null, toString: function() { return "null" } }; v.parse = r; v.toString = function() { return this.description || "" }; v.version && B.unshift(z); v.name && B.unshift(D); G && D && (G != String(G).split(" ")[0] || G != D.split(" ")[0] && !P) && B.push(P ? "(" + G + ")" : "on " + G); B.length && (v.description = B.join(" ")); return v } var e = { "function": !0, object: !0 }, n = e[typeof window] && window || this, x = e[typeof exports] && exports; e = e[typeof module] && module && !module.nodeType && module; var q = x && e && "object" == typeof global && global; !q || q.global !== q && q.window !== q && q.self !== q || (n = q); var y = Math.pow(2, 53) - 1, F = /\bOpera/; q = Object.prototype; var I = q.hasOwnProperty, L = q.toString, H = r(); "function" == typeof define && "object" == typeof define.amd && define.amd ? (n.platform = H, define(function() { return H })) : x && e ? f(H, function(t, N) { x[N] = t }) : n.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" }], d = 0; d < a.length; d++) { var b = document.createElement("meta"); b.name = a[d].name; b.content = a[d].content; var f = window.document.head.querySelector('meta[name="' + b.name + '"]'); f && f.parentNode.removeChild(f); window.document.head.appendChild(b) } } 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 } } function isIOSLessThen13() { var a = platform.os, d = a.family.toLowerCase(); a = parseFloat(a.version); return "ios" === d && 13 > a ? !0 : !1 } $(document).ready(function() { platform && "iPhone" === platform.product && "safari" === platform.name.toLowerCase() && isIOSLessThen13() && !iosInIframe() && (buildIOSFullscreenPanel(), buildIOSMeta()) }); jQuery(window).resize(function() { platform && "iPhone" === platform.product && "safari" === platform.name.toLowerCase() && isIOSLessThen13() && !iosInIframe() && iosResize() }); var s_iScaleFactor = 1, s_bIsIphone = !1, s_iOffsetX, s_iOffsetY, s_bFocus = !0; (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 getSize(a) { var d = a.toLowerCase(), b = window.document, f = b.documentElement; if (void 0 === window["inner" + a]) a = f["client" + a]; else if (window["inner" + a] != f["client" + a]) { var p = b.createElement("body"); p.id = "vpw-test-b"; p.style.cssText = "overflow:scroll"; var h = b.createElement("div"); h.id = "vpw-test-d"; h.style.cssText = "position:absolute;top:-1000px"; h.innerHTML = "<style>@media(" + d + ":" + f["client" + a] + "px){body#vpw-test-b div#vpw-test-d{" + d + ":7px!important}}</style>"; p.appendChild(h); f.insertBefore(p, b.head); a = 7 == h["offset" + a] ? f["client" + a] : window["inner" + a]; f.removeChild(p) } 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 isChrome() { return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) } function isIpad() { var a = -1 !== navigator.userAgent.toLowerCase().indexOf("ipad"); return !a && navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && 2 < navigator.maxTouchPoints ? !0 : a } function isMobile() { return isIpad() ? !0 : jQuery.browser.mobile } function isIOS() { 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 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 = null !== platform.name && "safari" === platform.name.toLowerCase() ? getIOSWindowHeight() : getSize("Height"); var d = getSize("Width"); s_bFocus && _checkOrientation(d, a); var b = Math.min(a / CANVAS_HEIGHT, d / CANVAS_WIDTH), f = CANVAS_WIDTH * b; b *= CANVAS_HEIGHT; if (b < a) { var p = a - b; b += p; f += CANVAS_WIDTH / CANVAS_HEIGHT * p } else f < d && (p = d - f, f += p, b += CANVAS_HEIGHT / CANVAS_WIDTH * p); p = a / 2 - b / 2; var h = d / 2 - f / 2, l = CANVAS_WIDTH / f; if (h * l < -EDGEBOARD_X || p * l < -EDGEBOARD_Y) b = Math.min(a / (CANVAS_HEIGHT - 2 * EDGEBOARD_Y), d / (CANVAS_WIDTH - 2 * EDGEBOARD_X)), f = CANVAS_WIDTH * b, b *= CANVAS_HEIGHT, p = (a - b) / 2, h = (d - f) / 2, l = CANVAS_WIDTH / f; s_iOffsetX = -1 * h * l; s_iOffsetY = -1 * p * l; 0 <= p && (s_iOffsetY = 0); 0 <= h && (s_iOffsetX = 0); null !== s_oInterface && s_oInterface.refreshButtonPos(s_iOffsetX, s_iOffsetY); null !== s_oMenu && s_oMenu.refreshButtonPos(s_iOffsetX, s_iOffsetY); $("#canvas").css("width", f + "px"); $("#canvas").css("height", b + "px"); 0 > p || (p = (a - b) / 2); $("#canvas").css("top", p + "px"); $("#canvas").css("left", h + "px"); fullscreenHandler() } } function _checkOrientation(a, d) { s_bMobile && ENABLE_CHECK_ORIENTATION && (a > d ? "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, d, b) { var f = new createjs.Bitmap(a), p = new createjs.Shape; d && b ? p.graphics.beginFill("#fff").drawRect(0, 0, d, b) : p.graphics.beginFill("#ff0").drawRect(0, 0, a.width, a.height); f.hitArea = p; return f } function createSprite(a, d, b, f, p, h) { a = null !== d ? new createjs.Sprite(a, d) : new createjs.Sprite(a); d = new createjs.Shape; d.graphics.beginFill("#000000").drawRect(-b, -f, p, h); a.hitArea = d; return a } function randomFloatBetween(a, d, b) { "undefined" === typeof b && (b = 2); return parseFloat(Math.min(a + Math.random() * (d - a), d).toFixed(b)) } function shuffle(a) { for (var d = a.length, b, f; 0 !== d;) f = Math.floor(Math.random() * d), --d, b = a[d], a[d] = a[f], a[f] = b; return a } function bubbleSort(a) { do { var d = !1; for (var b = 0; b < a.length - 1; b++) a[b] > a[b + 1] && (d = a[b], a[b] = a[b + 1], a[b + 1] = d, d = !0) } while (d) } function easeLinear(a, d, b, f) { return b * a / f + d } function easeInQuad(a, d, b, f) { return b * (a /= f) * a + d } function easeInSine(a, d, b, f) { return -b * Math.cos(a / f * (Math.PI / 2)) + b + d } function easeInCubic(a, d, b, f) { return b * (a /= f) * a * a + d } function getTrajectoryPoint(a, d) { var b = new createjs.Point, f = (1 - a) * (1 - a), p = a * a; b.x = f * d.start.x + 2 * (1 - a) * a * d.traj.x + p * d.end.x; b.y = f * d.start.y + 2 * (1 - a) * a * d.traj.y + p * d.end.y; return b } function formatTime(a) { a /= 1E3; var d = Math.floor(a / 60); a = parseFloat(a - 60 * d).toFixed(1); var b = ""; b = 10 > d ? b + ("0" + d + ":") : b + (d + ":"); return 10 > a ? b + ("0" + a) : b + a } function degreesToRadians(a) { return a * Math.PI / 180 } function checkRectCollision(a, d) { var b = getBounds(a, .9); var f = getBounds(d, .98); return calculateIntersection(b, f) } function calculateIntersection(a, d) { var b, f, p, h; var l = a.x + (b = a.width / 2); var k = a.y + (f = a.height / 2); var r = d.x + (p = d.width / 2); var e = d.y + (h = d.height / 2); l = Math.abs(l - r) - (b + p); k = Math.abs(k - e) - (f + h); return 0 > l && 0 > k ? (l = Math.min(Math.min(a.width, d.width), -l), k = Math.min(Math.min(a.height, d.height), -k), { x: Math.max(a.x, d.x), y: Math.max(a.y, d.y), width: l, height: k, rect1: a, rect2: d }) : null } function getBounds(a, d) { var b = { x: Infinity, y: Infinity, width: 0, height: 0 }; if (a instanceof createjs.Container) { b.x2 = -Infinity; b.y2 = -Infinity; var f = a.children, p = f.length, h; for (h = 0; h < p; h++) { var l = getBounds(f[h], 1); l.x < b.x && (b.x = l.x); l.y < b.y && (b.y = l.y); l.x + l.width > b.x2 && (b.x2 = l.x + l.width); l.y + l.height > b.y2 && (b.y2 = l.y + l.height) } Infinity == b.x && (b.x = 0); Infinity == b.y && (b.y = 0); Infinity == b.x2 && (b.x2 = 0); Infinity == b.y2 && (b.y2 = 0); b.width = b.x2 - b.x; b.height = b.y2 - b.y; delete b.x2; delete b.y2 } else { if (a instanceof createjs.Bitmap) { p = a.sourceRect || a.image; h = p.width * d; var k = p.height * d } else if (a instanceof createjs.Sprite) if (a.spriteSheet._frames && a.spriteSheet._frames[a.currentFrame] && a.spriteSheet._frames[a.currentFrame].image) { p = a.spriteSheet.getFrame(a.currentFrame); h = p.rect.width; k = p.rect.height; f = p.regX; var r = p.regY } else b.x = a.x || 0, b.y = a.y || 0; else b.x = a.x || 0, b.y = a.y || 0; f = f || 0; h = h || 0; r = r || 0; k = k || 0; b.regX = f; b.regY = r; p = a.localToGlobal(0 - f, 0 - r); l = a.localToGlobal(h - f, k - r); h = a.localToGlobal(h - f, 0 - r); f = a.localToGlobal(0 - f, k - r); b.x = Math.min(Math.min(Math.min(p.x, l.x), h.x), f.x); b.y = Math.min(Math.min(Math.min(p.y, l.y), h.y), f.y); b.width = Math.max(Math.max(Math.max(p.x, l.x), h.x), f.x) - b.x; b.height = Math.max(Math.max(Math.max(p.y, l.y), h.y), f.y) - b.y } return b } function NoClickDelay(a) { this.element = a; window.Touch && this.element.addEventListener("touchstart", this, !1) } function shuffle(a) { for (var d = a.length, b, f; 0 < d;) f = Math.floor(Math.random() * d), d--, b = a[d], a[d] = a[f], a[f] = b; 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 d = document.createEvent("MouseEvents"); d.initEvent("click", !0, !0); a.dispatchEvent(d) } } }; (function() { function a(b) { var f = { focus: "visible", focusin: "visible", pageshow: "visible", blur: "hidden", focusout: "hidden", pagehide: "hidden" }; b = b || window.event; b.type in f ? document.body.className = f[b.type] : (document.body.className = this[d] ? "hidden" : "visible", "hidden" === document.body.className ? (s_oMain.stopUpdate(), s_bFocus = !1) : (s_oMain.startUpdate(), s_bFocus = !0)) } var d = "hidden"; d in document ? document.addEventListener("visibilitychange", a) : (d = "mozHidden") in document ? document.addEventListener("mozvisibilitychange", a) : (d = "webkitHidden") in document ? document.addEventListener("webkitvisibilitychange", a) : (d = "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 d = window.location.search.substring(1).split("&"), b = 0; b < d.length; b++) { var f = d[b].split("="); if (f[0] == a) return f[1] } } function playSound(a, d, b) { return !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (s_aSounds[a].play(), s_aSounds[a].volume(d), s_aSounds[a].loop(b), s_aSounds[a]) : null } function stopSound(a) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].stop() } function setVolume(a, d) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].volume(d) } function setMute(a, d) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].mute(d) } function fullscreenHandler() { ENABLE_FULLSCREEN && screenfull.isEnabled && (s_bFullscreen = screenfull.isFullscreen, null !== s_oInterface && s_oInterface.resetFullscreenBut(), null !== s_oMenu && s_oMenu.resetFullscreenBut()) } if (screenfull.isEnabled) screenfull.on("change", function() { s_bFullscreen = screenfull.isFullscreen; null !== s_oInterface && s_oInterface.resetFullscreenBut(); null !== s_oMenu && s_oMenu.resetFullscreenBut() }); function CSpriteLibrary() { var a = {}, d, b, f, p, h, l; this.init = function(k, r, e) { d = {}; f = b = 0; p = k; h = r; l = e }; this.addSprite = function(k, r) { if (!a.hasOwnProperty(k)) { var e = new Image; a[k] = d[k] = { szPath: r, oSprite: e, bLoaded: !1 }; b++ } }; this.getSprite = function(k) { return a.hasOwnProperty(k) ? a[k].oSprite : null }; this._onSpritesLoaded = function() { b = 0; h.call(l) }; this._onSpriteLoaded = function() { p.call(l); ++f === b && this._onSpritesLoaded() }; this.loadSprites = function() { for (var k in d) d[k].oSprite.oSpriteLibrary = this, d[k].oSprite.szKey = k, d[k].oSprite.onload = function() { this.oSpriteLibrary.setLoaded(this.szKey); this.oSpriteLibrary._onSpriteLoaded(this.szKey) }, d[k].oSprite.onerror = function(r) { var e = r.currentTarget; setTimeout(function() { d[e.szKey].oSprite.src = d[e.szKey].szPath }, 500) }, d[k].oSprite.src = d[k].szPath }; this.setLoaded = function(k) { a[k].bLoaded = !0 }; this.isLoaded = function(k) { return a[k].bLoaded }; this.getNumSprites = function() { return b } } var CANVAS_WIDTH = 1600, CANVAS_HEIGHT = 768, EDGEBOARD_X = 260, EDGEBOARD_Y = 0, FPS = 30, FPS_TIME = 1E3 / FPS, DISABLE_SOUND_MOBILE = !1, GAME_NAME = "freecell_solitaire", PRIMARY_FONT = "arialbold", SOUNDTRACK_VOLUME_IN_GAME = .4, STATE_LOADING = 0, STATE_MENU = 1, STATE_HELP = 1, STATE_GAME = 3, ON_BUT_YES_DOWN = 0, STATE_GAME_WAITING_FOR_BET = 0, STATE_GAME_DEAL = 1, STATE_GAME_CHOOSE_HOLD = 2, STATE_GAME_DRAW = 3, STATE_GAME_EVALUATE = 4, ON_CARD_SHOWN = "ON_CARD_SHOWN", ON_CARD_HIDE = "ON_CARD_HIDE", ON_MOUSE_DOWN = 0, ON_MOUSE_UP = 1, ON_MOUSE_OVER = 2, ON_MOUSE_OUT = 3, ON_DRAG_START = 4, ON_DRAG_END = 5, SUIT_HEARTS = 0, SUIT_SPADES = 1, SUIT_DIAMONDS = 2, SUIT_CLUBS = 3, LABEL_EMPTY = 0, LABEL_HIDDEN = 1, LABEL_SHOWN = 2, CARD_WIDTH = 152, CARD_HEIGHT = 233, CARD_LOGIC_WIDTH = 76, CARD_LOGIC_HEIGHT = 116, POINTS_TO_LOSE, START_SCORE, ENABLE_FULLSCREEN, ENABLE_CHECK_ORIENTATION; function CPreloader() { var a, d, b, f, p, h, l, k, r, e; 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(); e = new createjs.Container; s_oStage.addChild(e) }; this.unload = function() { e.removeAllChildren(); r.unload() }; this._onImagesLoaded = function() {}; this._onAllImagesLoaded = function() { this.attachSprites(); s_oMain.preloaderReady() }; this.attachSprites = function() { var n = new createjs.Shape; n.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); e.addChild(n); n = s_oSpriteLibrary.getSprite("200x200"); l = createBitmap(n); l.regX = .5 * n.width; l.regY = .5 * n.height; l.x = CANVAS_WIDTH / 2; l.y = CANVAS_HEIGHT / 2 - 180; e.addChild(l); k = new createjs.Shape; k.graphics.beginFill("rgba(0,0,0,0.01)").drawRoundRect(l.x - 100, l.y - 100, 200, 200, 10); e.addChild(k); l.mask = k; n = s_oSpriteLibrary.getSprite("progress_bar"); f = createBitmap(n); f.x = CANVAS_WIDTH / 2 - n.width / 2; f.y = CANVAS_HEIGHT / 2 + 50; e.addChild(f); a = n.width; d = n.height; p = new createjs.Shape; p.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(f.x, f.y, 1, d); e.addChild(p); f.mask = p; b = new createjs.Text("", "30px " + PRIMARY_FONT, "#fff"); b.x = CANVAS_WIDTH / 2; b.y = CANVAS_HEIGHT / 2 + 100; b.textBaseline = "alphabetic"; b.textAlign = "center"; e.addChild(b); n = s_oSpriteLibrary.getSprite("but_start"); r = new CTextButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2, n, TEXT_PRELOADER_CONTINUE, "Arial", "#000", 50, e); r.addEventListener(ON_MOUSE_UP, this._onButStartRelease, this); r.setVisible(!1); r.removeStroke(); h = new createjs.Shape; h.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); e.addChild(h); createjs.Tween.get(h).to({ alpha: 0 }, 500).call(function() { createjs.Tween.removeTweens(h); e.removeChild(h) }) }; this._onButStartRelease = function() { s_oMain._onRemovePreloader() }; this.refreshLoader = function(n) { b.text = n + "%"; 100 === n && (s_oMain._onRemovePreloader(), b.visible = !1, f.visible = !1); p.graphics.clear(); n = Math.floor(n * a / 100); p.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(f.x, f.y, n, d) }; this._init() } function CMain(a) { var d, b = 0, f = 0, p = STATE_LOADING, h, l; this.initContainer = function() { s_oCanvas = document.getElementById("canvas"); s_oStage = new createjs.Stage(s_oCanvas); createjs.Touch.enable(s_oStage, !0); s_bMobile = isMobile(); !1 === s_bMobile && (s_oStage.enableMouseOver(20), $("body").on("contextmenu", "#canvas", function(r) { return !1 })); s_iPrevTime = (new Date).getTime(); createjs.Ticker.addEventListener("tick", this._update); createjs.Ticker.framerate = FPS; navigator.userAgent.match(/Windows Phone/i) && (DISABLE_SOUND_MOBILE = !0); s_oSpriteLibrary = new CSpriteLibrary; h = new CPreloader; }; this.preloaderReady = function() { this._loadImages(); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || this._initSounds(); d = !0 }; this.soundLoaded = function() { b++; h.refreshLoader(Math.floor(b / f * 100)) }; this._initSounds = function() { Howler.mute(!s_bAudioActive); s_aSoundsInfo = []; s_aSoundsInfo.push({ path: "./sounds/", filename: "card_dealing", loop: !1, volume: 1, ingamename: "card_dealing" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "click", loop: !1, volume: 1, ingamename: "click" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "snap", loop: !1, volume: 1, ingamename: "snap" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "game_over", loop: !1, volume: 1, ingamename: "game_over" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "card", loop: !1, volume: 1, ingamename: "card" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "soundtrack", loop: !0, volume: 1, ingamename: "soundtrack" }); f += s_aSoundsInfo.length; s_aSounds = []; for (var r = 0; r < s_aSoundsInfo.length; r++) this.tryToLoadSound(s_aSoundsInfo[r], !1) }; this.tryToLoadSound = function(r, e) { setTimeout(function() { s_aSounds[r.ingamename] = new Howl({ src: [r.path + r.filename + ".mp3"], autoplay: !1, preload: !0, loop: r.loop, volume: r.volume, onload: s_oMain.soundLoaded, onloaderror: function(n, x) { for (var q = 0; q < s_aSoundsInfo.length; q++) if (n === s_aSounds[s_aSoundsInfo[q].ingamename]._sounds[0]._id) { s_oMain.tryToLoadSound(s_aSoundsInfo[q], !0); break } }, onplayerror: function(n) { for (var x = 0; x < s_aSoundsInfo.length; x++) if (n === s_aSounds[s_aSoundsInfo[x].ingamename]._sounds[0]._id) { s_aSounds[s_aSoundsInfo[x].ingamename].once("unlock", function() { s_aSounds[s_aSoundsInfo[x].ingamename].play(); "soundtrack" === s_aSoundsInfo[x].ingamename && null !== s_oGame && setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME) }); break } } }) }, e ? 200 : 0) }; this._loadImages = function() { s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this); s_oSpriteLibrary.addSprite("but_play", "./sprites/but_play.png"); s_oSpriteLibrary.addSprite("msg_box", "./sprites/msg_box.png"); s_oSpriteLibrary.addSprite("bg_menu", "./sprites/bg_menu.jpg"); s_oSpriteLibrary.addSprite("bg_game", "./sprites/bg_game.jpg"); s_oSpriteLibrary.addSprite("bg_help", "./sprites/bg_help.png"); s_oSpriteLibrary.addSprite("arrow", "./sprites/arrow.png"); s_oSpriteLibrary.addSprite("hintpanel", "./sprites/hint_panel.png"); s_oSpriteLibrary.addSprite("but_yes", "./sprites/but_yes.png"); s_oSpriteLibrary.addSprite("but_no", "./sprites/but_no.png"); s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png"); s_oSpriteLibrary.addSprite("audio_icon", "./sprites/audio_icon.png"); s_oSpriteLibrary.addSprite("but_help", "./sprites/but_help.png"); s_oSpriteLibrary.addSprite("but_restart", "./sprites/but_restart.png"); s_oSpriteLibrary.addSprite("moves_display", "./sprites/moves_display.png"); s_oSpriteLibrary.addSprite("score_display", "./sprites/score_display.png"); s_oSpriteLibrary.addSprite("but_credits", "./sprites/but_credits.png"); s_oSpriteLibrary.addSprite("but_fullscreen", "./sprites/but_fullscreen.png"); s_oSpriteLibrary.addSprite("ctl_logo", "./sprites/ctl_logo.png"); for (var r = 0; 53 > r; r++) s_oSpriteLibrary.addSprite("card_" + r, "./sprites/cards/card_" + r + ".png"); f += s_oSpriteLibrary.getNumSprites(); s_oSpriteLibrary.loadSprites() }; this._onImagesLoaded = function() { b++; h.refreshLoader(Math.floor(b / f * 100)) }; this._onRemovePreloader = function() { h.unload(); s_oSoundTrack = playSound("soundtrack", 1, !0); this.gotoMenu() }; this._onAllImagesLoaded = function() {}; this.onAllPreloaderImagesLoaded = function() { this._loadImages() }; this.gotoMenu = function() { new CMenu; p = STATE_MENU }; this.goToModeMenu = function() { new CModeMenu; p = STATE_MENU }; this.gotoGame = function(r) { s_bEasyMode = r; l = new CGame(k); p = STATE_GAME }; this.gotoHelp = function() { new CHelp; p = STATE_HELP }; this.stopUpdate = function() { d = !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(); d = !0; createjs.Ticker.paused = !1; $("#block_game").css("display", "none"); (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) && s_bAudioActive && Howler.mute(!1) }; this._update = function(r) { if (!1 !== d) { var e = (new Date).getTime(); s_iTimeElaps = e - s_iPrevTime; s_iCntTime += s_iTimeElaps; s_iCntFps++; s_iPrevTime = e; 1E3 <= s_iCntTime && (s_iCurFps = s_iCntFps, s_iCntTime -= 1E3, s_iCntFps = 0); p === STATE_GAME && l.update(); s_oStage.update(r) } }; s_oMain = this; var k = a; ENABLE_FULLSCREEN = a.fullscreen; ENABLE_CHECK_ORIENTATION = a.check_orientation; s_bAudioActive = a.audio_enable_on_startup; this.initContainer() } var s_bMobile, s_bEasyMode, s_bAudioActive = !1, s_bFullscreen = !1, s_iCntTime = 0, s_iTimeElaps = 0, s_iPrevTime = 0, s_iCntFps = 0, s_iCurFps = 0, s_oDrawLayer, s_oStage, s_oMain, s_oSpriteLibrary, s_oSoundTrack = null, s_oCanvas, s_aSounds, s_aSoundsInfo; function CTextButton(a, d, b, f, p, h, l, k) { var r, e, n, x, q, y, F; this._init = function(I, L, H, t, N, J, v, B) { r = []; e = []; var A = createBitmap(H), z = Math.ceil(v / 20); q = new createjs.Text(t, v + "px " + N, "#000000"); q.textAlign = "center"; q.textBaseline = "alphabetic"; var S = q.getBounds(); q.x = H.width / 2 + z; q.y = Math.floor(H.height / 2) + S.height / 3 + z; x = new createjs.Text(t, v + "px " + N, J); x.textAlign = "center"; x.textBaseline = "alphabetic"; S = x.getBounds(); x.x = H.width / 2; x.y = Math.floor(H.height / 2) + S.height / 3; n = new createjs.Container; n.x = I; n.y = L; n.regX = H.width / 2; n.regY = H.height / 2; n.addChild(A, q, x); s_bMobile || (n.cursor = "pointer"); B.addChild(n); this._initListener() }; this.unload = function() { n.off("mousedown", y); n.off("pressup", F); k.removeChild(n) }; this.setVisible = function(I) { n.visible = I }; this._initListener = function() { oParent = this; y = n.on("mousedown", this.buttonDown); F = n.on("pressup", this.buttonRelease) }; this.addEventListener = function(I, L, H) { r[I] = L; e[I] = H }; this.buttonRelease = function() { n.scaleX = 1; n.scaleY = 1; r[ON_MOUSE_UP] && r[ON_MOUSE_UP].call(e[ON_MOUSE_UP]) }; this.buttonDown = function() { n.scaleX = .9; n.scaleY = .9; r[ON_MOUSE_DOWN] && r[ON_MOUSE_DOWN].call(e[ON_MOUSE_DOWN]) }; this.setTextPosition = function(I) { x.y = I; q.y = I + 2 }; this.setPosition = function(I, L) { n.x = I; n.y = L }; this.setX = function(I) { n.x = I }; this.setY = function(I) { n.y = I }; this.getButtonImage = function() { return n }; this.getX = function() { return n.x }; this.getY = function() { return n.y }; this.removeStroke = function() { q.visible = !1 }; this._init(a, d, b, f, p, h, l, k); return this } function CToggle(a, d, b, f, p) { var h, l, k, r, e, n; this._init = function(q, y, F, I) { l = []; k = []; var L = new createjs.SpriteSheet({ images: [F], frames: { width: F.width / 2, height: F.height, regX: F.width / 2 / 2, regY: F.height / 2 }, animations: { state_true: [0], state_false: [1] } }); h = I; r = createSprite(L, "state_" + h, F.width / 2 / 2, F.height / 2, F.width / 2, F.height); r.x = q; r.y = y; r.stop(); s_bMobile || (r.cursor = "pointer"); x.addChild(r); this._initListener() }; this.unload = function() { r.off("mousedown", e); r.off("pressup", n); x.removeChild(r) }; this._initListener = function() { e = r.on("mousedown", this.buttonDown); n = r.on("pressup", this.buttonRelease) }; this.addEventListener = function(q, y, F) { l[q] = y; k[q] = F }; this.setActive = function(q) { h = q; r.gotoAndStop("state_" + h) }; this.setPosition = function(q, y) { r.x = q; r.y = y }; this.buttonRelease = function() { r.scaleX = 1; r.scaleY = 1; playSound("click", 1, !1); h = !h; r.gotoAndStop("state_" + h); l[ON_MOUSE_UP] && l[ON_MOUSE_UP].call(k[ON_MOUSE_UP], h) }; this.buttonDown = function() { r.scaleX = .9; r.scaleY = .9; l[ON_MOUSE_DOWN] && l[ON_MOUSE_DOWN].call(k[ON_MOUSE_DOWN]) }; var x = p; this._init(a, d, b, f) } function CGfxButton(a, d, b, f) { var p, h, l, k, r = [], e, n, x, q; this._init = function(y, F, I, L) { p = !1; h = 1; l = []; k = []; e = createBitmap(I); e.x = y; e.y = F; e.scaleX = e.scaleY = h; e.regX = I.width / 2; e.regY = I.height / 2; L.addChild(e); this._initListener() }; this.unload = function() { s_bMobile ? e.off("mousedown", n) : (e.off("mousedown", n), e.off("mouseover", x)); e.off("pressup", q); f.removeChild(e) }; this.setVisible = function(y) { e.visible = y }; this.setClickable = function(y) { p = !y }; this._initListener = function() { s_bMobile ? n = e.on("mousedown", this.buttonDown) : (n = e.on("mousedown", this.buttonDown), x = e.on("mouseover", this.buttonOver)); q = e.on("pressup", this.buttonRelease) }; this.addEventListener = function(y, F, I) { l[y] = F; k[y] = I }; this.addEventListenerWithParams = function(y, F, I, L) { l[y] = F; k[y] = I; r = L }; this.buttonRelease = function() { p || (e.scaleX = h, e.scaleY = h, l[ON_MOUSE_UP] && l[ON_MOUSE_UP].call(k[ON_MOUSE_UP], r)) }; this.buttonDown = function() { p || (e.scaleX = .9 * h, e.scaleY = .9 * h, playSound("click", 1, !1), l[ON_MOUSE_DOWN] && l[ON_MOUSE_DOWN].call(k[ON_MOUSE_DOWN], r)) }; this.buttonOver = function(y) { s_bMobile || p || (y.target.cursor = "pointer") }; this.pulseAnimation = function() { createjs.Tween.get(e, { loop: !0 }).to({ scaleX: 1.1 * h, scaleY: 1.1 * h }, 850, createjs.Ease.quadOut).to({ scaleX: h, scaleY: h }, 650, createjs.Ease.quadIn) }; this.trembleAnimation = function() { createjs.Tween.get(e, { loop: !0 }).to({ rotation: 5 }, 75, createjs.Ease.quadOut).to({ rotation: -5 }, 140, createjs.Ease.quadIn).to({ rotation: 0 }, 75, createjs.Ease.quadIn).wait(750) }; this.setPosition = function(y, F) { e.x = y; e.y = F }; this.setX = function(y) { e.x = y }; this.setY = function(y) { e.y = y }; this.getButtonImage = function() { return e }; this.getX = function() { return e.x }; this.getY = function() { return e.y }; this._init(a, d, b, f); return this } function CMenu() { var a, d, b, f, p, h, l, k, r, e, n, x, q = null, y = null; this._init = function() { l = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); s_oStage.addChild(l); var F = s_oSpriteLibrary.getSprite("but_play"); k = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT - 200, F, s_oStage); k.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) F = s_oSpriteLibrary.getSprite("audio_icon"), p = CANVAS_WIDTH - F.height / 2 - 10, h = F.height / 2 + 10, e = new CToggle(p, h, F, s_bAudioActive, s_oStage), e.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); F = s_oSpriteLibrary.getSprite("but_credits"); b = F.height / 2 + 10; f = F.height / 2 + 10; n = new CGfxButton(b, f, F, s_oStage); n.addEventListener(ON_MOUSE_UP, this._onButCreditRelease, this); F = window.document; var I = F.documentElement; q = I.requestFullscreen || I.mozRequestFullScreen || I.webkitRequestFullScreen || I.msRequestFullscreen; y = F.exitFullscreen || F.mozCancelFullScreen || F.webkitExitFullscreen || F.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (q = !1); q && screenfull.isEnabled && (F = s_oSpriteLibrary.getSprite("but_fullscreen"), a = b + F.width / 2 + 10, d = f, x = new CToggle(a, d, F, s_bFullscreen, s_oStage), x.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); createjs.Tween.get(r).to({ alpha: 0 }, 1E3).call(function() { r.visible = !1 }); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.refreshButtonPos = function(F, I) { n.setPosition(b + s_iOffsetX, s_iOffsetY + f); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || e.setPosition(p - F, I + h); q && screenfull.isEnabled && x.setPosition(a + s_iOffsetX, d + s_iOffsetY) }; this.unload = function() { k.unload(); k = null; n.unload(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) e.unload(), e = null; q && screenfull.isEnabled && x.unload(); s_oStage.removeChild(l); s_oMenu = l = null }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onButPlayRelease = function() { this.unload(); $(s_oMain).trigger("start_session"); $(s_oMain).trigger("start_level", 1); s_oMain.gotoGame() }; this._onButCreditRelease = function() { new CCreditsPanel }; this.resetFullscreenBut = function() { q && screenfull.isEnabled && x.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? y.call(window.document) : q.call(window.document.documentElement); sizeHandler() }; s_oMenu = this; this._init() } var s_oMenu = null; function CGame(a) { var d, b, f, p, h, l, k, r, e, n, x, q, y, F, I, L, H, t, N, J, v, B, A, z, S, Y = null, E, K; this._init = function() { r = k = !0; n = e = !1; y = 25; F = 0; I = 5; x = START_SCORE; q = 0; B = []; z = []; J = []; for (var g = 0; 4 > g; g++) J[g] = null; g = createBitmap(s_oSpriteLibrary.getSprite("bg_game")); s_oStage.addChild(g); E = new createjs.Container; s_oStage.addChild(E); S = new CInterface; S.refreshScore(x); H = []; for (g = 0; 4 > g; g++) H[g] = 1; L = []; L[SUIT_HEARTS] = { x: 1294, y: 211 }; L[SUIT_SPADES] = { x: 1294, y: 349 }; L[SUIT_DIAMONDS] = { x: 1294, y: 483 }; L[SUIT_CLUBS] = { x: 1294, y: 618 }; t = []; for (g = 0; 4 > g; g++) t[g] = new createjs.Rectangle(L[g].x - CARD_LOGIC_WIDTH / 2, L[g].y - CARD_LOGIC_HEIGHT / 2, CARD_LOGIC_WIDTH, CARD_LOGIC_HEIGHT); N = [{ x: 304, y: 211 }, { x: 304, y: 349 }, { x: 304, y: 483 }, { x: 304, y: 618 }]; d = CANVAS_WIDTH / 2; b = CANVAS_HEIGHT - 164; var C = 0; v = []; for (g = 0; 7 > g; g++) for (var w = 0; 8 > w; w++) v[C] = { x: 449 + 100 * w, y: 212 + g * y }, C++; A = []; for (g = 0; 25 > g; g++) for (A[g] = [], w = 0; 8 > w; w++) A[g][w] = { status: LABEL_EMPTY, oCard: null }; this._shuffleCard(!0); this._setBoard(); s_oStage.addEventListener("stagemousemove", this.dragCard, !1); s_oStage.addEventListener("stagemouseup", this.releaseCard, !1) }; this._shuffleCard = function(g) { for (var C = -1, w = [], m = 0; 52 > m; m++) { var u = (m + 1) % 13; 1 === u ? C++ : 0 === u && (u = 13); w.push({ fotogram: m, rank: u, suit: C }) } C = []; for (m = 0; m < w.length; m++) C[m] = w[m]; for (u = []; 0 < C.length;) u.push(C.splice(Math.round(Math.random() * (C.length - 1)), 1)[0]); if (g) for (m = 0; m < u.length; m++) B[m] = new CCard(d, b, E, u[m].fotogram, u[m].rank, u[m].suit); else for (m = 0; m < u.length; m++) B[m] = new CCard(d, b, E, w[m].fotogram, w[m].rank, w[m].suit) }; this._setBoard = function() { for (var g = 0, C = B.length - 1, w = 0; 52 > w; w++) B[51 - w].moveCard(v[w].x, v[w].y, 100, g), B[51 - w].setType("board"), g += 100; for (w = 0; 7 > w; w++) for (g = 0; 8 > g && !(A[w][g].oCard = B[C], A[w][g].status = LABEL_SHOWN, C--, 0 > C); g++); }; this.scaleDepth = function(g) { E.setChildIndex(g.getSprite(), F); F++; g.showCard(); 52 === F && (r = k = !1, S.setVisibleButHelp()) }; this.pickCard = function(g, C) { var w; if (0 === z.length && !k) { k = !0; h = g.getPos().x; l = g.getPos().y; f = C.stageX / s_iScaleFactor - h; p = C.stageY / s_iScaleFactor - l; for (w = 0; 8 > w; w++) for (var m = A.length - 1; 0 <= m; m--) A[m][w].oCard === g && (K = { row: m, column: w }); if ("freecell" === g.checkType()) m = g.saveInfo(), z[0] = new CCard(h, l, E, m.szFotogram, m.iRank, m.iSuit), z[0].setType("freecell"), z[0].instantShow(), g.unload(); else if ("board" === g.checkType()) { w = 1; var u = g.getRank(), c = g.getColor(), O = K.row + I, T = !1; if (A[O][K.column].status === LABEL_SHOWN) { for (m = K.row; m < A.length - 1 && A[m + 1][K.column].status !== LABEL_EMPTY; m++) if (A[m + 1][K.column].oCard.getColor() !== c && A[m + 1][K.column].oCard.getRank() === u - 1) T = !0, u--, c = A[m + 1][K.column].oCard.getColor(); else { T = !1; break } T && S.showHint("drag", I) } else { u = g.getRank(); c = g.getColor(); for (m = K.row; m < O; m++) if (A[m + 1][K.column].status === LABEL_SHOWN && A[m + 1][K.column].oCard.getColor() !== c && A[m + 1][K.column].oCard.getRank() === u - 1) w++, u--, c = A[m + 1][K.column].oCard.getColor(); else if (A[m + 1][K.column].status === LABEL_EMPTY) break; else return; u = []; for (m = 0; m < w; m++) u[m] = A[K.row + m][K.column].oCard.saveInfo(), z[m] = new CCard(h, l + m * y, E, u[m].szFotogram, u[m].iRank, u[m].iSuit), z[m].setType("board"), A[K.row + m][K.column].oCard.unload(), z[m].instantShow() } } else m = g.saveInfo(), z[0] = new CCard(h, l, E, m.szFotogram, m.iRank, m.iSuit), z[0].setType("suit"), z[0].instantShow(), g.unload() } }; this.dragCard = function(g) { var C = parseInt(g.stageX / s_iScaleFactor); g = parseInt(g.stageY / s_iScaleFactor); if (!r && k) for (var w = 0; w < z.length; w++) z[w].setPos(C - f, g - p + w * y) }; this.releaseCard = function(g) { !1 === r && 0 < z.length ? (k = !1, X._checkFreeCellCollision(z), e || X._checkSuitCollision(z), e || n || X._checkCardCollision(z), X._controlBoard(), K = null, z = [], n = e = !1) : k = !1 }; this._checkCardCollision = function(g) { for (var C = 0, w = [], m = [], u = 0; 8 > u; u++) for (var c = A.length - 1; 0 <= c; c--) if (A[c][u].status === LABEL_SHOWN) { w[C] = A[c][u].oCard.getLogicRect(); m[C] = { oCard: A[c][u].oCard, x: A[c][u].oCard.getPos().x, y: A[c][u].oCard.getPos().y, row: c, column: u }; C++; break } else 0 === c && (w[C] = new createjs.Rectangle(v[u].x - CARD_LOGIC_WIDTH / 2, v[u].y - CARD_LOGIC_HEIGHT / 2, CARD_LOGIC_WIDTH, CARD_LOGIC_HEIGHT), C++); C = 0; u = -1; var O = g[0].getLogicRect(); for (c = 0; c < w.length; c++) { var T = O.intersection(w[c]); null !== T && C < T.width * T.height && (C = T.width * T.height, u = c) } if (0 > u) if ("freecell" === g[0].checkType()) g[0].stackInPlace(h, l, 200); else if ("board" === g[0].checkType()) for (c = 0; c < g.length; c++) g[c].stackInPlace(h, l + c * y, 200), A[K.row + c][K.column].oCard = g[c]; else g[0].stackInPlace(h, l, 200); else if (A[0][u].status === LABEL_EMPTY) { if ("freecell" === g[0].checkType()) for (g[0].stackInPlace(v[u].x, v[u].y, 200), g[0].setType("board"), A[0][u].status = LABEL_SHOWN, A[0][u].oCard = g[0], c = 0; c < J.length; c++) null !== J[c] && g[0].getRank() === J[c].getRank() && g[0].getSuit() === J[c].getSuit() && (J[c] = null); else if ("board" === g[0].checkType()) for (c = 0; c < g.length; c++) g[c].stackInPlace(v[u].x, v[u].y + c * y, 200), g[c].setType("board"), A[c][u].status = LABEL_SHOWN, A[K.row + c][K.column].status = LABEL_EMPTY, A[c][u].oCard = g[c]; else g[0].stackInPlace(v[u].x, v[u].y, 200), g[0].setType("board"), A[0][u].status = LABEL_SHOWN, A[0][u].oCard = g[0], H[g[0].getSuit()]--; this._updateMoves(); this._removeScore() } else if (1 === m[u].oCard.getRank() - g[0].getRank() && m[u].oCard.getColor() !== g[0].getColor()) { if ("freecell" === g[0].checkType()) for (g[0].stackInPlace(m[u].x, m[u].y + y, 200), g[0].setType("board"), A[m[u].row + 1][u].status = LABEL_SHOWN, A[m[u].row + 1][u].oCard = g[0], c = 0; c < J.length; c++) null !== J[c] && g[0].getRank() === J[c].getRank() && g[0].getSuit() === J[c].getSuit() && (J[c] = null); else if ("board" === g[0].checkType()) for (c = 0; c < g.length; c++) g[c].stackInPlace(m[u].x, m[u].y + y + c * y, 200), A[m[u].row + 1 + c][m[u].column].status = LABEL_SHOWN, A[K.row + c][K.column].status = LABEL_EMPTY, A[m[u].row + 1 + c][m[u].column].oCard = g[c]; else g[0].stackInPlace(m[u].x, m[u].y + y, 200), g[0].setType("board"), A[m[u].row + 1][u].status = LABEL_SHOWN, A[m[u].row + 1][u].oCard = g[0], H[g[0].getSuit()]--; this._updateMoves(); this._removeScore() } else if ("freecell" === g[0].checkType()) g[0].stackInPlace(h, l, 200); else if ("board" === g[0].checkType()) for (c = 0; c < g.length; c++) g[c].stackInPlace(h, l + c * y, 200), A[K.row + c][K.column].oCard = g[c]; else g[0].stackInPlace(h, l, 200) }; this._checkFreeCellCollision = function(g) { if (!(1 < g.length)) { for (var C = [], w = 0; 4 > w; w++) C[w] = null === J[w] ? new createjs.Rectangle(N[w].x - CARD_LOGIC_WIDTH / 2, N[w].y - CARD_LOGIC_HEIGHT / 2, CARD_LOGIC_WIDTH, CARD_LOGIC_HEIGHT) : new createjs.Rectangle(N[w].x - CARD_LOGIC_WIDTH / 2, N[w].y - CARD_LOGIC_HEIGHT / 2, 0, 0); var m = 0, u = -1, c = g[0].getLogicRect(); for (w = 0; w < C.length; w++) { var O = c.intersection(C[w]); null !== O && m < O.width * O.height && (m = O.width * O.height, u = w) } if (!(0 > u)) { if ("freecell" === g[0].checkType()) { for (w = 0; w < J.length; w++) null !== J[w] && g[0].getRank() === J[w].getRank() && g[0].getSuit() === J[w].getSuit() && (J[w] = null); g[0].stackInPlace(N[u].x, N[u].y, 200); J[u] = g[0] } else "board" === g[0].checkType() ? (g[0].setType("freecell"), g[0].stackInPlace(N[u].x, N[u].y, 200), A[K.row][K.column].status = LABEL_EMPTY, J[u] = g[0]) : (g[0].setType("freecell"), g[0].stackInPlace(N[u].x, N[u].y, 200), J[u] = g[0], H[g[0].getSuit()]--); e = !0; this._updateMoves(); this._removeScore() } } }; this._checkSuitCollision = function(g) { if (!(1 < g.length || "suit" === g[0].checkType())) { for (var C = 0, w = -1, m = g[0].getLogicRect(), u = 0; u < t.length; u++) { var c = m.intersection(t[u]); null !== c && C < c.width * c.height && (C = c.width * c.height, w = u) } if (!(0 > w) && g[0].getRank() === H[g[0].getSuit()] && w === g[0].getSuit()) { playSound("snap", 1, !1); if ("freecell" === g[0].checkType()) { for (u = 0; u < J.length; u++) null !== J[u] && g[0].getRank() === J[u].getRank() && g[0].getSuit() === J[u].getSuit() && (J[u] = null); g[0].stackInPlace(L[w].x, L[w].y, 200) } else g[0].stackInPlace(L[w].x, L[w].y, 200), A[K.row][K.column].status = LABEL_EMPTY; H[g[0].getSuit()]++; g[0].setType("suit"); n = !0; this._updateMoves(); this._removeScore() } } }; this._controlBoard = function() { for (var g = 0, C = 0; C < J.length; C++) null === J[C] && g++; I = g + 1; if (14 === H[0] && 14 === H[1] && 14 === H[2] && 14 === H[3]) this.gameOver(); else { g = []; for (var w = [], m = 0; 8 > m; m++) for (C = A.length - 1; 0 <= C; C--) if (A[C][m].status === LABEL_SHOWN) { g.push(A[C][m].oCard); w.push({ row: C, column: m }); break } if (!(8 > g.length)) { var u = [], c = []; for (m = 0; 8 > m; m++) { var O = g[m].getRank(); var T = "red" === g[m].getColor() ? "black" : "red"; for (C = w[m].row; C >= w[m].row - I + 1; C--) if (0 > C) { c.push(A[0][m].oCard); break } else if (A[C][m].oCard.getRank() === O && A[C][m].oCard.getColor() !== T) u.push({ oCard: A[C][m].oCard, row: C, column: m }), T = A[C][m].oCard.getColor(), O++; else { c.push(A[C + 1][m].oCard); break } } for (C = 0; C < J.length; C++) { if (null === J[C]) return; for (m = 0; m < g.length; m++) if (J[C].getRank() === g[m].getRank() - 1 && J[C].getColor() !== g[m].getColor()) return; if (J[C].getRank() === H[J[C].getSuit()]) return } for (C = 0; C < g.length; C++) { if (g[C].getRank() === H[g[C].getSuit()]) return; for (m = 0; m < u.length; m++) if (g[C].getRank() === u[m].oCard.getRank() + 1 && g[C].getColor() !== u[m].oCard.getColor()) { if (0 === u[m].row) return; w = []; T = A[u[m].row - 1][u[m].column].oCard; var Z = u[m].row - 1; O = T.getRank(); T = "red" === T.getColor() ? "black" : "red"; for (var M = Z; M >= Z - I + 1 && !(0 > M); M--) if (A[M][m].oCard.getRank() === O && A[M][m].oCard.getColor() !== T) w.push({ oCard: A[M][m].oCard, row: M, column: m }), T = A[M][m].oCard.getColor(), O++; else break; for (M = 0; M < w.length; M++) { if (0 === M) for (O = 0; O < c.length; O++) if (w[M].oCard.getRank() === c[O].getRank() + 1 && w[M].oCard.getColor() === c[O].getColor()) return; if (w[M].oCard.getRank() === H[w[M].oCard.getSuit()]) return; for (O = 0; O < g.length; O++) if (w[M].oCard.getRank() === g[O].getRank() - 1 && w[M].oCard.getColor() !== g[O].getColor() && C !== O) return } } } for (C = 0; C < H.length; C++) for (u = 0 === C % 2 ? "red" : "black", m = 0; m < g.length; m++) if (H[C] === g[m].getRank() && u !== g[m].getColor()) return; S.showHint("move", I) } } }; this._removeScore = function() { x -= POINTS_TO_LOSE; 0 > x && (x = 0); (new CScore).removeScore(x, 750); S.fadeScore(x, 750) }; this.updateScore = function(g) { x += g }; this.updateVisualScore = function() { S.refreshScore(x) }; this._updateMoves = function() { q++; (new CScore).displayMoves(q, 750); S.fadeMove(q, 750) }; this.restartGame = function() { this.unload(); this._init() }; this.unload = function() { r = !1; for (var g = 0; g < B.length; g++) B[g].unload(); S.unload(); null !== Y && Y.unload(); createjs.Tween.removeAllTweens(); s_oStage.removeAllChildren() }; this.onExit = function() { this.unload(); s_oMain.gotoMenu() }; this._onExitHelp = function() { _bStartGame = !0 }; this.gameOver = function() { playSound("game_over", 1, !1); Y = new CEndPanel(s_oSpriteLibrary.getSprite("msg_box")); Y.show(x) }; this.update = function() {}; s_oGame = this; POINTS_TO_LOSE = a.points_to_lose; START_SCORE = a.starting_points; var X = this; this._init() } var s_oGame; function CInterface() { var a, d, b, f, p, h, l, k, r, e, n, x, q, y, F = null, I, L, H, t, N, J, v, B, A, z, S = null, Y = null; this._init = function() { var E = s_oSpriteLibrary.getSprite("but_exit"); r = CANVAS_WIDTH - E.height / 2 - 10; e = E.height / 2 + 10; x = new CGfxButton(r, e, E, s_oStage); x.addEventListener(ON_MOUSE_UP, this._onExit, this); var K = CANVAS_WIDTH - E.width / 2 - 80; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) E = s_oSpriteLibrary.getSprite("audio_icon"), l = K, k = E.height / 2 + 10, n = new CToggle(l, k, E, s_bAudioActive, s_oStage), n.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); K -= 68; E = s_oSpriteLibrary.getSprite("but_help"); p = K; h = E.height / 2 + 10; q = new CGfxButton(p, h, E, s_oStage); q.addEventListener(ON_MOUSE_UP, this._onButHelpRelease, this); q.setVisible(!1); K -= 68; E = s_oSpriteLibrary.getSprite("but_restart"); b = K; f = E.height / 2 + 10; y = new CGfxButton(b, f, E, s_oStage); y.addEventListener(ON_MOUSE_UP, this._onButRestartRelease, this); K = window.document; E = K.documentElement; S = E.requestFullscreen || E.mozRequestFullScreen || E.webkitRequestFullScreen || E.msRequestFullscreen; Y = K.exitFullscreen || K.mozCancelFullScreen || K.webkitExitFullscreen || K.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (S = !1); S && screenfull.isEnabled && (E = s_oSpriteLibrary.getSprite("but_fullscreen"), a = E.width / 4 + 10, d = E.height / 2 + 10, B = new CToggle(a, d, E, s_bFullscreen, s_oStage), B.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); E = 30; new CTLText(s_oStage, 250, 102 - E / 2, 100, E, 24, "right", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_SCORE, !0, !0, !1, !1); E = s_oSpriteLibrary.getSprite("score_display"); I = createBitmap(E); I.scaleX = 1; I.x = 348; I.y = 79; s_oStage.addChild(I); L = new createjs.Text("0", "24px " + PRIMARY_FONT, "#ffffff"); L.x = 421; L.y = 109; L.textAlign = "right"; L.textBaseline = "alphabetic"; L.lineWidth = 200; s_oStage.addChild(L); E = 30; new CTLText(s_oStage, 444, 102 - E / 2, 100, E, 24, "right", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_MOVES, !0, !0, !1, !1); E = s_oSpriteLibrary.getSprite("moves_display"); H = createBitmap(E); H.x = 542; H.y = 79; s_oStage.addChild(H); t = new createjs.Text("0", "24px " + PRIMARY_FONT, "#ffffff"); t.x = 615; t.y = 109; t.textAlign = "right"; t.textBaseline = "alphabetic"; t.lineWidth = 200; s_oStage.addChild(t); E = s_oSpriteLibrary.getSprite("hintpanel"); v = new createjs.Container; v.x = CANVAS_WIDTH / 2; v.y = 604; v.alpha = 0; s_oStage.addChild(v); N = createBitmap(E); N.regX = E.width / 2; N.regY = E.height / 2; v.addChild(N); K = E.width - 30; E = E.height - 20; J = new CTLText(v, -(K / 2), -4 - E / 2, K, E, 24, "left", "#fff", PRIMARY_FONT, 1.1, 2, 2, " ", !0, !0, !0, !1); J.setShadow("#000", 2, 2, 2); A = new CAreYouSurePanel(s_oStage); A.addEventListener(ON_BUT_YES_DOWN, this._onConfirmExit); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.refreshButtonPos = function(E, K) { x.setPosition(r - E, e); q.setPosition(p - E, h); y.setPosition(b - E, f); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || n.setPosition(l - E, k); S && screenfull.isEnabled && B.setPosition(a + s_iOffsetX, d + s_iOffsetY) }; this.unload = function() { if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) n.unload(), n = null; S && screenfull.isEnabled && B.unload(); v.off("mousedown", z); x.unload(); q.unload(); y.unload(); null !== F && F.unload(); s_oInterface = A = null }; this.refreshScore = function(E) { L.alpha = 1; L.text = E }; this.fadeScore = function(E, K) { var X = this; createjs.Tween.get(L).to({ alpha: 0 }, K, createjs.Ease.linear).call(function() { X.refreshScore(E) }) }; this._refreshMove = function(E) { t.alpha = 1; t.text = E }; this.fadeMove = function(E, K) { var X = this; createjs.Tween.get(t).to({ alpha: 0 }, K, createjs.Ease.linear).call(function() { X._refreshMove(E) }) }; this.showHint = function(E, K) { if ("move" === E) { J.refreshText(TEXT_HINT_MOVE); var X = this; createjs.Tween.get(v, { override: !0 }).to({ alpha: 1 }, 3E3, createjs.Ease.linear).call(function() { X.callRestart() }) } else { var g = TEXT_CARDS; 1 === K && (g = TEXT_CARD); J.refreshText(sprintf(TEXT_HINT, K, g)); createjs.Tween.get(v, { override: !0 }).to({ alpha: 1 }, 3E3, createjs.Ease.linear).call(function() { createjs.Tween.get(v).to({ alpha: 0 }, 3E3, createjs.Ease.linear) }) } }; this.callRestart = function() { z = v.on("mousedown", this._onButRestartRelease) }; this.setVisibleButHelp = function() { q.setVisible(!0) }; this._onButHelpRelease = function() { F = new CHelpPanel }; this._onButRestartRelease = function() { $(s_oMain).trigger("restart_level", 1); $(s_oMain).trigger("show_interlevel_ad"); s_oGame.restartGame() }; this.onExitFromHelp = function() { F.unload() }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onExit = function() { A.show() }; this._onConfirmExit = function() { s_oGame.onExit(); $(s_oMain).trigger("end_level", 1); $(s_oMain).trigger("end_session"); $(s_oMain).trigger("show_interlevel_ad") }; this.resetFullscreenBut = function() { S && screenfull.isEnabled && B.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? Y.call(window.document) : S.call(window.document.documentElement); sizeHandler() }; s_oInterface = this; this._init(); return this } var s_oInterface = null; function CHelpPanel() { var a, d, b, f, p, h, l, k; this._init = function() { var e = this; p = new createjs.Container; p.alpha = 0; s_oStage.addChild(p); var n = s_oSpriteLibrary.getSprite("bg_help"); a = createBitmap(n); p.addChild(a); var x = 400; n = 80; var q = CANVAS_WIDTH / 2 + 50, y = CANVAS_HEIGHT / 2 - 206; (new CTLText(p, q - x / 2, y - n / 2, x, n, 18, "left", "#fff", PRIMARY_FONT, 1.2, 2, 2, TEXT_HELP1, !0, !0, !0, !1)).setShadow("#000", 2, 2, 2); x = CANVAS_WIDTH / 2 - 275; q = CANVAS_HEIGHT / 2 + 76; n = 80; (new CTLText(p, x, q - n / 2, 500, n, 18, "left", "#fff", PRIMARY_FONT, 1.2, 2, 2, TEXT_HELP2, !0, !0, !0, !1)).setShadow("#000", 2, 2, 2); q = CANVAS_WIDTH / 2 + 290; y = CANVAS_HEIGHT / 2 - 70; x = 500; n = 60; (new CTLText(p, q - x, y - n / 2, x, n, 18, "right", "#fff", PRIMARY_FONT, 1.2, 2, 2, TEXT_HELP3, !0, !0, !0, !1)).setShadow("#000", 2, 2, 2); createjs.Tween.get(p).to({ alpha: 1 }, 700); l = p.on("pressup", function() { e._onExitHelp() }); h = new createjs.Container; h.visible = 0; s_oStage.addChild(h); n = s_oSpriteLibrary.getSprite("msg_box"); d = createBitmap(n); h.addChild(d); x = 600; n = 40; q = CANVAS_WIDTH / 2 + 2; y = CANVAS_HEIGHT / 2 - 200; (new CTLText(h, q - x / 2, y - n / 2, x, n, 30, "center", "#fff", PRIMARY_FONT, 1.2, 2, 2, TEXT_HELP1_PAGE2, !0, !0, !1, !1)).setShadow("#000", 2, 2, 2); x = 600; n = 40; q = CANVAS_WIDTH / 2 + 2; y = CANVAS_HEIGHT / 2 - 100; n = new CTLText(h, q - x / 2, y - n / 2, x, n, 30, "center", "#fff", PRIMARY_FONT, 1.2, 2, 2, sprintf(TEXT_HELP2_PAGE2, START_SCORE), !0, !0, !1, !1); n.setShadow("#000", 2, 2, 2); x = 600; n = 120; q = CANVAS_WIDTH / 2 + 2; y = CANVAS_HEIGHT / 2 + 32; n = new CTLText(h, q - x / 2, y - n / 2, x, n, 30, "left", "#fff", PRIMARY_FONT, 1.2, 2, 2, sprintf(TEXT_LOSE1_PAGE2, START_SCORE), !0, !0, !0, !1); n.setShadow("#000", 2, 2, 2); k = h.on("pressup", function() { e._onExitHelp() }); createjs.Tween.get(h).to({ alpha: 1 }, 700); b = createBitmap(s_oSpriteLibrary.getSprite("arrow")); b.x = 1232; b.y = 564; b.alpha = 0; b.on("click", e._changePageTo2); s_oStage.addChild(b); f = createBitmap(s_oSpriteLibrary.getSprite("arrow")); f.scaleX = -1; f.x = 382; f.y = 564; f.visible = !1; f.on("click", e._changePageTo1); s_oStage.addChild(f); createjs.Tween.get(b).to({ alpha: 1 }, 700) }; this.unload = function() { s_oStage.removeChild(p, h, b, f); p.off("pressup", l); h.off("pressup", k) }; this._changePageTo1 = function() { h.visible = !1; f.visible = !1; p.visible = !0; b.visible = !0 }; this._changePageTo2 = function() { p.visible = !1; b.visible = !1; h.visible = !0; f.visible = !0 }; this._onExitHelp = function() { $(s_oMain).trigger("show_interlevel_ad"); r.unload(); s_oGame._onExitHelp() }; var r = this; this._init() } function CEndPanel(a) { var d, b, f, p, h; this._init = function(l) { b = new createjs.Container; b.alpha = 0; b.visible = !1; s_oStage.addChild(b); d = createBitmap(l); d.x = 0; d.y = 0; b.addChild(d); var k = l.width - 900, r = 70, e = CANVAS_WIDTH / 2, n = CANVAS_HEIGHT / 2 - 160; f = new CTLText(b, e - k / 2, n - r / 2, k, r, 60, "center", "#fff", PRIMARY_FONT, 1, 2, 2, " ", !0, !0, !1, !1); f.setShadow("#000", 2, 2, 2); k = l.width - 900; r = 70; e = CANVAS_WIDTH / 2; n = CANVAS_HEIGHT / 2 + 50; p = new CTLText(b, e - k / 2, n - r / 2, k, r, 40, "center", "#fff", PRIMARY_FONT, 1, 2, 2, " ", !0, !0, !1, !1); p.setShadow("#000", 2, 2, 2) }; this.unload = function() { b.off("mousedown", h) }; this._initListener = function() { h = b.on("mousedown", this._onExit) }; this.show = function(l) { playSound("game_over", 1, !1); f.refreshText(TEXT_GAMEOVER); p.refreshText(TEXT_SCORE + ": " + l); b.visible = !0; var k = this; createjs.Tween.get(b).to({ alpha: 1 }, 500).call(function() { k._initListener() }); $(s_oMain).trigger("save_score", [l, "standard"]); $(s_oMain).trigger("end_level", 1); $(s_oMain).trigger("share_event", [l]) }; this._onExit = function() { b.off("mousedown", h); s_oStage.removeChild(b); $(s_oMain).trigger("end_session"); s_oGame.onExit() }; this._init(a); return this } function CCard(a, d, b, f, p, h) { var l = !1, k, r, e, n, x, q, y, F, I, L, H, t, N; this._init = function(v, B, A, z, S, Y) { t = A; n = z; x = S; q = Y; k = !1; r = "deck"; e = 0 === q || 2 === q ? "red" : "black"; H = new createjs.Container; H.x = v; H.y = B; H.scaleX = H.scaleY = .5; t.addChild(H); v = []; for (B = 0; 53 > B; B++) v[B] = s_oSpriteLibrary.getSprite("card_" + B); v = new createjs.SpriteSheet({ images: v, frames: { width: CARD_WIDTH, height: CARD_HEIGHT, regX: CARD_WIDTH / 2, regY: CARD_HEIGHT / 2 }, animations: { card_1_1: [0], card_1_2: [1], card_1_3: [2], card_1_4: [3], card_1_5: [4], card_1_6: [5], card_1_7: [6], card_1_8: [7], card_1_9: [8], card_1_10: [9], card_1_J: [10], card_1_Q: [11], card_1_K: [12], card_2_1: [13], card_2_2: [14], card_2_3: [15], card_2_4: [16], card_2_5: [17], card_2_6: [18], card_2_7: [19], card_2_8: [20], card_2_9: [21], card_2_10: [22], card_2_J: [23], card_2_Q: [24], card_2_K: [25], card_3_1: [26], card_3_2: [27], card_3_3: [28], card_3_4: [29], card_3_5: [30], card_3_6: [31], card_3_7: [32], card_3_8: [33], card_3_9: [34], card_3_10: [35], card_3_J: [36], card_3_Q: [37], card_3_K: [38], card_4_1: [39], card_4_2: [40], card_4_3: [41], card_4_4: [42], card_4_5: [43], card_4_6: [44], card_4_7: [45], card_4_8: [46], card_4_9: [47], card_4_10: [48], card_4_J: [49], card_4_Q: [50], card_4_K: [51], back: [52] } }); I = createSprite(v, "back", 0, 0, CARD_WIDTH, CARD_HEIGHT); I.stop(); H.addChild(I); L = new createjs.Shape; L.graphics.beginFill("rgba(255,255,255,0.01)").drawRect(-CARD_WIDTH / 2, -CARD_HEIGHT / 2, CARD_WIDTH, CARD_HEIGHT); N = L.on("mousedown", this._mouseDown); s_bMobile || (L.cursor = "pointer"); H.addChild(L); y = []; F = [] }; this.unload = function() { L.off("mousedown", N); t.removeChild(H) }; this.saveInfo = function() { return { szFotogram: n, iRank: x, iSuit: q, bValue: !0 } }; this.changeInfo = function(v, B, A) { n = v; x = B; q = A }; this.instantShow = function() { I.gotoAndStop(n) }; this.setType = function(v) { r = v }; this.checkType = function() { return r }; this.setValue = function(v) { I.gotoAndStop(n); playSound("card", 1, !1); createjs.Tween.get(H).to({ scaleX: .5 }, 200) }; this.setActive = function(v) { v ? H.addChild(L) : H.removeChild(L) }; this.setVisible = function(v) { H.visible = !0 === v ? !0 : !1 }; this.moveCard = function(v, B, A, z) { createjs.Tween.get(H).wait(z).to({ x: v, y: B }, A, createjs.Ease.linear).call(function() { J.setPlaced() }) }; this.moveDeckCard = function(v, B, A, z) { createjs.Tween.get(H).wait(z).to({ x: v, y: B }, A, createjs.Ease.linear).call(function() { s_oGame.activeDeck(); J.showCard() }) }; this.moveToSuit = function(v, B, A) { createjs.Tween.get(H).wait(A).to({ x: v, y: B }, 200, createjs.Ease.cubicOut).call(function() { s_oGame.stackInSuit(J) }) }; this.setPlaced = function() { l = !0; s_oGame.scaleDepth(J) }; this.stackInPlace = function(v, B, A) { createjs.Tween.get(H).to({ x: v, y: B }, A, createjs.Ease.cubicOut).call(function() { k = !0 }) }; this.stackAndDeactive = function(v, B, A) { createjs.Tween.get(H).to({ x: v, y: B }, A, createjs.Ease.cubicOut) }; this._mouseDown = function(v) { !1 !== k && (t.getChildIndex(H), s_oGame.pickCard(J, v)) }; this.getPlaced = function() { return l }; this.showCard = function() { var v = this; createjs.Tween.get(H).to({ scaleX: .1 }, 200).call(function() { v.setValue() }).call(function() { k = !0 }) }; this.hideCard = function() { var v = this; createjs.Tween.get(H).to({ scaleX: .1 }, 200).call(function() { v.setBack() }) }; this.setPos = function(v, B) { H.x = v; H.y = B }; this.setBack = function() { k = !1; I.gotoAndStop("back"); var v = this; createjs.Tween.get(H).to({ scaleX: .5 }, 200).call(function() { v.cardHidden() }) }; this.cardHidden = function() { y[ON_CARD_HIDE] && y[ON_CARD_HIDE].call(F[ON_CARD_HIDE], this) }; this.getRank = function() { return x }; this.getSuit = function() { return q }; this.getColor = function() { return e }; this.getFotogram = function() { return n }; this.getPos = function() { return { x: H.x, y: H.y } }; this.getSprite = function() { return H }; this.getLogicRect = function() { return new createjs.Rectangle(H.x - CARD_LOGIC_WIDTH / 2, H.y - CARD_LOGIC_HEIGHT / 2, CARD_LOGIC_WIDTH, CARD_LOGIC_HEIGHT) }; var J = this; this._init(a, d, b, f, p, h) } function CScore() { this.showScore = function(a, d) { var b = new createjs.Text("+" + d, "24px " + PRIMARY_FONT, "#000000"); b.x = a.x; b.y = a.y; b.scaleX = 2; b.scaleY = 2; b.textAlign = "right"; b.textBaseline = "alphabetic"; b.outline = 4; s_oStage.addChild(b); var f = new createjs.Text("+" + d, "24px " + PRIMARY_FONT, "#fff"); f.x = a.x; f.y = a.y; f.scaleX = 2; f.scaleY = 2; f.textAlign = "right"; f.textBaseline = "alphabetic"; s_oStage.addChild(f); s_oGame.updateScore(d); createjs.Tween.get(f).to({ x: 425, y: 109 }, 1E3, createjs.Ease.cubicIn).call(function() { s_oGame.updateVisualScore(d); s_oStage.removeChild(f) }); createjs.Tween.get(f).to({ scaleX: 1, scaleY: 1 }, 1E3, createjs.Ease.linear); createjs.Tween.get(b).to({ x: 425, y: 109 }, 1E3, createjs.Ease.cubicIn).call(function() { s_oStage.removeChild(b) }); createjs.Tween.get(b).to({ scaleX: 1, scaleY: 1 }, 1E3, createjs.Ease.linear) }; this.removeScore = function(a, d) { var b = new createjs.Text(a, "24px " + PRIMARY_FONT, "#ffffff"); b.x = 421; b.y = 109; b.alpha = 0; b.textAlign = "right"; b.textBaseline = "alphabetic"; b.lineWidth = 200; s_oStage.addChild(b); createjs.Tween.get(b).to({ alpha: 1 }, d, createjs.Ease.linear).call(function() { s_oStage.removeChild(b) }) }; this.displayMoves = function(a, d) { var b = new createjs.Text(a, "24px " + PRIMARY_FONT, "#ffffff"); b.x = 615; b.y = 109; b.alpha = 0; b.textAlign = "right"; b.textBaseline = "alphabetic"; b.lineWidth = 200; s_oStage.addChild(b); createjs.Tween.get(b).to({ alpha: 1 }, d, createjs.Ease.linear).call(function() { s_oStage.removeChild(b) }) } } function CCreditsPanel() { var a, d, b, f, p; this._init = function() { a = new createjs.Container; s_oStage.addChild(a); var h = s_oSpriteLibrary.getSprite("msg_box"); f = createBitmap(h); f.regX = h.width / 2; f.regY = h.height / 2; p = f.on("click", this._onLogoButRelease); a.addChild(f); a.x = CANVAS_WIDTH / 2; a.y = CANVAS_HEIGHT / 2; var l = h.width - 900, k = 70; new CTLText(a, -(l / 2), -90 - k / 2, l, k, 60, "center", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_DEVELOPED, !0, !0, !1, !1); l = h.width - 900; k = 70; new CTLText(a, -(l / 2), 90 - k / 2, l, k, 44, "center", "#fff", PRIMARY_FONT, 1, 2, 2, "www.codethislab.com", !0, !0, !1, !1); h = s_oSpriteLibrary.getSprite("ctl_logo"); b = createBitmap(h); b.regX = h.width / 2; b.regY = h.height / 2; a.addChild(b); h = s_oSpriteLibrary.getSprite("but_exit"); d = new CGfxButton(340, -200, h, a); d.addEventListener(ON_MOUSE_UP, this.unload, this) }; this.unload = function() { s_oStage.removeChild(void 0); s_oStage.removeChild(a); d.unload(); f.off("click", p) }; this._onLogoButRelease = function() { window.open("http://www.codethislab.com/index.php?&l=en") }; this._init() } function CAreYouSurePanel(a) { var d, b, f, p, h, l, k, r, e, n, x = this; this._init = function() { b = []; f = []; r = new createjs.Container; r.visible = !1; q.addChild(r); e = new createjs.Shape; e.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); e.alpha = .7; p = e.on("click", function() {}); r.addChild(e); n = new createjs.Container; r.addChild(n); var y = s_oSpriteLibrary.getSprite("msg_box"); h = createBitmap(y); h.regX = .5 * y.width; h.regY = .5 * y.height; n.addChild(h); n.x = CANVAS_WIDTH / 2; n.y = d = CANVAS_HEIGHT / 2; y = y.width - 900; new CTLText(n, -(y / 2), -135, y, 70, 60, "center", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_ARE_YOU_SURE, !0, !0, !1, !1); l = new CGfxButton(100, 100, s_oSpriteLibrary.getSprite("but_yes"), n); l.addEventListener(ON_MOUSE_UP, this._onButYes, this); k = new CGfxButton(-100, 100, s_oSpriteLibrary.getSprite("but_no"), n); k.addEventListener(ON_MOUSE_UP, this._onButNo, this); k.pulseAnimation() }; this.addEventListener = function(y, F, I) { b[y] = F; f[y] = I }; this.show = function() { n.y = d; r.visible = !0 }; this.hide = function() { r.visible = !1 }; this.unload = function() { k.unload(); l.unload(); e.off("click", p) }; this._onButYes = function() { x.hide(); b[ON_BUT_YES_DOWN] && b[ON_BUT_YES_DOWN].call(f[ON_BUT_YES_DOWN]) }; this._onButNo = function() { x.hide() }; var q = a; this._init() } 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) }, setVerticalAlign: function(a) { this._bVerticalAlign = a }, setOutline: function(a) { null !== this._oText && (this._oText.outline = a) }, setShadow: function(a, d, b, f) { null !== this._oText && (this._oText.shadow = new createjs.Shadow(a, d, b, f)) }, setColor: function(a) { this._oText.color = a }, setAlpha: function(a) { this._oText.alpha = a }, setVisible: function(a) { this._oText.visible = a }, setX: function(a) { this._x = this._oText.x = a }, setY: function(a) { this._y = this._oText.y = a }, removeTweens: function() { createjs.Tween.removeTweens(this._oText) }, getText: function() { return this._oText }, getX: function() { return this._x }, 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, d, b, f, p, h, l, k, r, e, n, x, q, y, F, I, L) { this._oContainer = a; this._x = d; this._y = b; this._iWidth = f; this._iHeight = p; this._bMultiline = I; this._iFontSize = h; this._szAlign = l; this._szColor = k; this._szFont = r; this._iPaddingH = n; this._iPaddingV = x; this._bVerticalAlign = F; this._bFitText = y; this._bDebug = L; this._oDebugShape = null; this._fLineHeightFactor = e; this._oText = null; q && this.__createText(q) }! function() { function a(p) { var h = p; if (f[h]) h = f[h]; else { for (var l = h, k, r = [], e = 0; l;) { if (null !== (k = b.text.exec(l))) r.push(k[0]); else if (null !== (k = b.modulo.exec(l))) r.push("%"); else if (null !== (k = b.placeholder.exec(l))) { if (k[2]) { e |= 1; var n = [], x = k[2], q; if (null !== (q = b.key.exec(x))) for (n.push(q[1]); "" !== (x = x.substring(q[0].length));) if (null !== (q = b.key_access.exec(x))) n.push(q[1]); else if (null !== (q = b.index_access.exec(x))) n.push(q[1]); else throw new SyntaxError("[sprintf] failed to parse named argument key"); else throw new SyntaxError("[sprintf] failed to parse named argument key"); k[2] = n } else e |= 2; if (3 === e) throw Error("[sprintf] mixing positional and named placeholders is not (yet) supported"); r.push({ placeholder: k[0], param_no: k[1], keys: k[2], sign: k[3], pad_char: k[4], align: k[5], width: k[6], precision: k[7], type: k[8] }) } else throw new SyntaxError("[sprintf] unexpected placeholder"); l = l.substring(k[0].length) } h = f[h] = r } l = arguments; k = 1; r = h.length; n = ""; var y, F; for (x = 0; x < r; x++) if ("string" === typeof h[x]) n += h[x]; else if ("object" === typeof h[x]) { q = h[x]; if (q.keys) for (e = l[k], y = 0; y < q.keys.length; y++) { if (void 0 == e) throw Error(a('[sprintf] Cannot access property "%s" of undefined value "%s"', q.keys[y], q.keys[y - 1])); e = e[q.keys[y]] } else e = q.param_no ? l[q.param_no] : l[k++]; b.not_type.test(q.type) && b.not_primitive.test(q.type) && e instanceof Function && (e = e()); if (b.numeric_arg.test(q.type) && "number" !== typeof e && isNaN(e)) throw new TypeError(a("[sprintf] expecting number but found %T", e)); b.number.test(q.type) && (F = 0 <= e); switch (q.type) { case "b": e = parseInt(e, 10).toString(2); break; case "c": e = String.fromCharCode(parseInt(e, 10)); break; case "d": case "i": e = parseInt(e, 10); break; case "j": e = JSON.stringify(e, null, q.width ? parseInt(q.width) : 0); break; case "e": e = q.precision ? parseFloat(e).toExponential(q.precision) : parseFloat(e).toExponential(); break; case "f": e = q.precision ? parseFloat(e).toFixed(q.precision) : parseFloat(e); break; case "g": e = q.precision ? String(Number(e.toPrecision(q.precision))) : parseFloat(e); break; case "o": e = (parseInt(e, 10) >>> 0).toString(8); break; case "s": e = String(e); e = q.precision ? e.substring(0, q.precision) : e; break; case "t": e = String(!!e); e = q.precision ? e.substring(0, q.precision) : e; break; case "T": e = Object.prototype.toString.call(e).slice(8, -1).toLowerCase(); e = q.precision ? e.substring(0, q.precision) : e; break; case "u": e = parseInt(e, 10) >>> 0; break; case "v": e = e.valueOf(); e = q.precision ? e.substring(0, q.precision) : e; break; case "x": e = (parseInt(e, 10) >>> 0).toString(16); break; case "X": e = (parseInt(e, 10) >>> 0).toString(16).toUpperCase() } if (b.json.test(q.type)) n += e; else { if (!b.number.test(q.type) || F && !q.sign) var I = ""; else I = F ? "+" : "-", e = e.toString().replace(b.sign, ""); y = q.pad_char ? "0" === q.pad_char ? "0" : q.pad_char.charAt(1) : " "; var L = q.width - (I + e).length; L = q.width ? 0 < L ? y.repeat(L) : "" : ""; n += q.align ? I + e + L : "0" === y ? I + L + e : L + I + e } } return n } function d(p, h) { return a.apply(null, [p].concat(h || [])) } var b = { not_string: /[^s]/, not_bool: /[^t]/, not_type: /[^T]/, not_primitive: /[^v]/, number: /[diefg]/, numeric_arg: /[bcdiefguxX]/, json: /[j]/, not_json: /[^j]/, text: /^[^\x25]+/, modulo: /^\x25{2}/, placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/, key: /^([a-z_][a-z_\d]*)/i, key_access: /^\.([a-z_][a-z_\d]*)/i, index_access: /^\[(\d+)\]/, sign: /^[+-]/ }, f = Object.create(null); "undefined" !== typeof exports && (exports.sprintf = a, exports.vsprintf = d); "undefined" !== typeof window && (window.sprintf = a, window.vsprintf = d, "function" === typeof define && define.amd && define(function() { return { sprintf: a, vsprintf: d } })) }(); 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 d = a.split("."), b = d.length; 2 < b && (a = d[b - 2] + "." + d[b - 1]); return a } var getClosestTop = function() { var a = window, d = !1; try { for (; a.parent.document !== a.document;) if (a.parent.document) a = a.parent; else { d = !0; break } } catch (b) { d = !0 } return { topFrame: a, err: d } }, getBestPageUrl = function(a) { var d = a.topFrame, b = ""; if (a.err) try { try { b = window.top.location.href } catch (p) { var f = window.location.ancestorOrigins; b = f[f.length - 1] } } catch (p) { b = d.document.referrer } else b = d.location.href; return b }, TOPFRAMEOBJ = getClosestTop(), PAGE_URL = getBestPageUrl(TOPFRAMEOBJ); function seekAndDestroy() { for (var a = extractRootDomain(PAGE_URL), d = [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)], b = 0; b < d.length; b++) if (d[b] === a) return !0; return !1 };
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генераци� �траницы: 0 |
proxy
|
phpinfo
|
�а�тройка