Файловый менеджер - Редактировать - /home/jogoso94/public_html/jogos/reversi/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 : {}, c = "undefined" !== typeof module && module.exports, b = "undefined" !== typeof Element && "ALLOW_KEYBOARD_INPUT" in Element, d = function() { for (var b, c = ["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(" ") ], d = 0, g = c.length, k = {}; d < g; d++) if ((b = c[d]) && b[1] in a) { for (d = 0; d < b.length; d++) k[c[0][d]] = b[d]; return k } return !1 }(), g = { change: d.fullscreenchange, error: d.fullscreenerror }, k = { request: function(c) { var e = d.requestFullscreen; c = c || a.documentElement; if (/5\.1[.\d]* Safari/.test(navigator.userAgent)) c[e](); else c[e](b && Element.ALLOW_KEYBOARD_INPUT) }, exit: function() { a[d.exitFullscreen]() }, toggle: function(a) { this.isFullscreen ? this.exit() : this.request(a) }, onchange: function(a) { this.on("change", a) }, onerror: function(a) { this.on("error", a) }, on: function(b, c) { var d = g[b]; d && a.addEventListener(d, c, !1) }, off: function(b, c) { var d = g[b]; d && a.removeEventListener(d, c, !1) }, raw: d }; d ? (Object.defineProperties(k, { isFullscreen: { get: function() { return !!a[d.fullscreenElement] } }, element: { enumerable: !0, get: function() { return a[d.fullscreenElement] } }, enabled: { enumerable: !0, get: function() { return !!a[d.fullscreenEnabled] } } }), c ? module.exports = k : window.screenfull = k) : c ? module.exports = !1 : window.screenfull = !1 })(); (function() { function a(a) { a = String(a); return a.charAt(0).toUpperCase() + a.slice(1) } function c(a, b) { var c = -1, e = a ? a.length : 0; if ("number" == typeof e && -1 < e && e <= w) for (; ++c < e;) b(a[c], c, a); else d(a, b) } function b(b) { b = String(b).replace(/^ +| +$/g, ""); return /^(?:webOS|i(?:OS|P))/.test(b) ? b : a(b) } function d(a, b) { for (var c in a) n.call(a, c) && b(a[c], c, a) } function g(b) { return null == b ? a(b) : x.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 e(a) { return String(a).replace(/([ -])(?!$)/g, "$1?") } function f(a, b) { var d = null; c(a, function(c, e) { d = b(d, c, e, a) }); return d } function p(a) { function c(c) { return f(c, function(c, d) { var f = d.pattern || e(d); !c && (c = RegExp("\\b" + f + " *\\d+[.\\w_]*", "i").exec(a) || RegExp("\\b" + f + " *\\w+-[\\w]*", "i").exec(a) || RegExp("\\b" + f + "(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)", "i").exec(a)) && ((c = String(d.label && !RegExp(f, "i").test(d.label) ? d.label : c).split("/"))[1] && !/[\d.]+/.test(c[0]) && (c[0] += " " + c[1]), d = d.label || d, c = b(c[0].replace(RegExp(f, "i"), d).replace(RegExp("; *(?:" + d + "[_-])?", "i"), " ").replace(RegExp("(" + d + ")[-_.]?(\\w)", "i"), "$1 $2"))); return c }) } function r(b) { return f(b, function(b, c) { return b || (RegExp(c + "(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)", "i").exec(a) || 0)[1] || null }) } var h = q, n = a && "object" == typeof a && "String" != g(a); n && (h = a, a = null); var A = h.navigator || {}, m = A.userAgent || ""; a || (a = m); var C = n ? !!A.likeChrome : /\bChrome\b/.test(a) && !/internal|\n/i.test(x.toString()), w = n ? "Object" : "ScriptBridgingProxyObject", K = n ? "Object" : "Environment", F = n && h.java ? "JavaPackage" : g(h.java), O = n ? "Object" : "RuntimeObject"; K = (F = /\bJava/.test(F) && h.java) && g(h.environment) == K; var P = F ? "a" : "\u03b1", Q = F ? "b" : "\u03b2", L = h.document || {}, D = h.operamini || h.opera, G = v.test(G = n && D ? D["[[Class]]"] : g(D)) ? G : D = null, l, H = a; n = []; var I = null, E = a == m; m = E && D && "function" == typeof D.version && D.version(); var y = function(b) { return f(b, function(b, c) { return b || RegExp("\\b" + (c.pattern || e(c)) + "\\b", "i").exec(a) && (c.label || c) }) }([{ label: "EdgeHTML", pattern: "Edge" }, "Trident", { label: "WebKit", pattern: "AppleWebKit" }, "iCab", "Presto", "NetFront", "Tasman", "KHTML", "Gecko"]), t = function(b) { return f(b, function(b, c) { return b || RegExp("\\b" + (c.pattern || e(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" ]), z = 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" ]), B = function(b) { return f(b, function(b, c, d) { return b || (c[z] || c[/^[a-z]+(?: +[a-z]+\b)*/i.exec(z)] || RegExp("\\b" + e(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 } }), u = function(c) { return f(c, function(c, d) { var f = d.pattern || e(d); if (!c && (c = RegExp("\\b" + f + "(?:/[\\d.]+|[ \\w.]*)", "i").exec(a))) { var h = c, g = d.label || d, n = { "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" }; f && g && /^Win/i.test(h) && !/^Windows Phone /i.test(h) && (n = n[/[\d.]+$/.exec(h)]) && (h = "Windows " + n); h = String(h); f && g && (h = h.replace(RegExp(f, "i"), g)); c = h = b(h.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 c }) }(["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 " ]); y && (y = [y]); B && !z && (z = c([B])); if (l = /\bGoogle TV\b/.exec(z)) z = l[0]; /\bSimulator\b/i.test(a) && (z = (z ? z + " " : "") + "Simulator"); "Opera Mini" == t && /\bOPiOS\b/.test(a) && n.push("running in Turbo/Uncompressed mode"); "IE" == t && /\blike iPhone OS\b/.test(a) ? (l = p(a.replace(/like iPhone OS/, "")), B = l.manufacturer, z = l.product) : /^iP/.test(z) ? (t || (t = "Safari"), u = "iOS" + ((l = / OS ([\d_]+)/i.exec(a)) ? " " + l[1].replace(/_/g, ".") : "")) : "Konqueror" != t || /buntu/i.test(u) ? B && "Google" != B && (/Chrome/.test(t) && !/\bMobile Safari\b/i.test(a) || /\bVita\b/.test(z)) || /\bAndroid\b/.test(u) && /^Chrome/.test(t) && /\bVersion\//i.test(a) ? (t = "Android Browser", u = /\bAndroid\b/.test(u) ? u : "Android") : "Silk" == t ? (/\bMobi/i.test(a) || (u = "Android", n.unshift("desktop mode")), /Accelerated *= *true/i.test(a) && n.unshift("accelerated")) : "PaleMoon" == t && (l = /\bFirefox\/([\d.]+)\b/.exec(a)) ? n.push("identifying as Firefox " + l[1]) : "Firefox" == t && (l = /\b(Mobile|Tablet|TV)\b/i.exec(a)) ? (u || (u = "Firefox OS"), z || (z = l[1])) : !t || (l = !/\bMinefield\b/i.test(a) && /\b(?:Firefox|Safari)\b/.exec(t)) ? (t && !z && /[\/,]|^[^(]+?\)/.test(a.slice(a.indexOf(l + "/") + 8)) && (t = null), (l = z || B || u) && (z || B || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(u)) && (t = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(u) ? u : l) + " Browser")) : "Electron" == t && (l = (/\bChrome\/([\d.]+)\b/.exec(a) || 0)[1]) && n.push("Chromium " + l) : u = "Kubuntu"; m || (m = r(["(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))", "Version", e(t), "(?:Firefox|Minefield|NetFront)"])); if (l = "iCab" == y && 3 < parseFloat(m) && "WebKit" || /\bOpera\b/.test(t) && (/\bOPR\b/.test(a) ? "Blink" : "Presto") || /\b(?:Midori|Nook|Safari)\b/i.test(a) && !/^(?:Trident|EdgeHTML)$/.test(y) && "WebKit" || !y && /\bMSIE\b/i.test(a) && ("Mac OS" == u ? "Tasman" : "Trident") || "WebKit" == y && /\bPlayStation\b(?! Vita\b)/i.test(t) && "NetFront") y = [l]; "IE" == t && (l = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(a) || 0)[1]) ? (t += " Mobile", u = "Windows Phone " + (/\+$/.test(l) ? l : l + ".x"), n.unshift("desktop mode")) : /\bWPDesktop\b/i.test(a) ? (t = "IE Mobile", u = "Windows Phone 8.x", n.unshift("desktop mode"), m || (m = (/\brv:([\d.]+)/.exec(a) || 0)[1])) : "IE" != t && "Trident" == y && (l = /\brv:([\d.]+)/.exec(a)) && (t && n.push("identifying as " + t + (m ? " " + m : "")), t = "IE", m = l[1]); if (E) { if (k(h, "global")) if (F && (l = F.lang.System, H = l.getProperty("os.arch"), u = u || l.getProperty("os.name") + " " + l.getProperty("os.version")), K) { try { m = h.require("ringo/engine").version.join("."), t = "RingoJS" } catch (N) { (l = h.system) && l.global.system == h.system && (t = "Narwhal", u || (u = l[0].os || null)) } t || (t = "Rhino") } else "object" == typeof h.process && !h.process.browser && (l = h.process) && ("object" == typeof l.versions && ("string" == typeof l.versions.electron ? (n.push("Node " + l.versions.node), t = "Electron", m = l.versions.electron) : "string" == typeof l.versions.nw && (n.push("Chromium " + m, "Node " + l.versions.node), t = "NW.js", m = l.versions.nw)), t || (t = "Node.js", H = l.arch, u = l.platform, m = (m = /[\d.]+/.exec(l.version)) ? m[0] : null)); else g(l = h.runtime) == w ? (t = "Adobe AIR", u = l.flash.system.Capabilities.os) : g(l = h.phantom) == O ? (t = "PhantomJS", m = (l = l.version || null) && l.major + "." + l.minor + "." + l.patch) : "number" == typeof L.documentMode && (l = /\bTrident\/(\d+)/i.exec(a)) ? (m = [m, L.documentMode], (l = +l[1] + 4) != m[1] && (n.push("IE " + m[1] + " mode"), y && (y[1] = ""), m[1] = l), m = "IE" == t ? String(m[1].toFixed(1)) : m[0]) : "number" == typeof L.documentMode && /^(?:Chrome|Firefox)\b/.test(t) && (n.push("masking as " + t + " " + m), t = "IE", m = "11.0", y = ["Trident"], u = "Windows"); u = u && b(u) } m && (l = /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(m) || /(?:alpha|beta)(?: ?\d)?/i.exec(a + ";" + (E && A.appMinorVersion)) || /\bMinefield\b/i.test(a) && "a") && (I = /b/i.test(l) ? "beta" : "alpha", m = m.replace(RegExp(l + "\\+?$"), "") + ("beta" == I ? Q : P) + (/\d+\+?/.exec(l) || "")); if ("Fennec" == t || "Firefox" == t && /\b(?:Android|Firefox OS)\b/.test(u)) t = "Firefox Mobile"; else if ("Maxthon" == t && m) m = m.replace(/\.[\d.]+/, ".x"); else if (/\bXbox\b/i.test(z)) "Xbox 360" == z && (u = null), "Xbox 360" == z && /\bIEMobile\b/.test(a) && n.unshift("mobile mode"); else if (!/^(?:Chrome|IE|Opera)$/.test(t) && (!t || z || /Browser|Mobi/.test(t)) || "Windows CE" != u && !/Mobi/i.test(a)) if ("IE" == t && E) try { null === h.external && n.unshift("platform preview") } catch (N) { n.unshift("embedded") } else(/\bBlackBerry\b/.test(z) || /\bBB10\b/.test(a)) && (l = (RegExp(z.replace(/ +/g, " *") + "/([.\\d]+)", "i").exec(a) || 0)[1] || m) ? (l = [l, /BB10/.test(a)], u = (l[1] ? (z = null, B = "BlackBerry") : "Device Software") + " " + l[0], m = null) : this != d && "Wii" != z && (E && D || /Opera/.test(t) && /\b(?:MSIE|Firefox)\b/i.test(a) || "Firefox" == t && /\bOS X (?:\d+\.){2,}/.test(u) || "IE" == t && (u && !/^Win/.test(u) && 5.5 < m || /\bWindows XP\b/.test(u) && 8 < m || 8 == m && !/\bTrident\b/.test(a))) && !v.test(l = p.call(d, a.replace(v, "") + ";")) && l.name && (l = "ing as " + l.name + ((l = l.version) ? " " + l : ""), v.test(t) ? (/\bIE\b/.test(l) && "Mac OS" == u && (u = null), l = "identify" + l) : (l = "mask" + l, t = G ? b(G.replace(/([a-z])([A-Z])/g, "$1 $2")) : "Opera", /\bIE\b/.test(l) && (u = null), E || (m = null)), y = ["Presto"], n.push(l)); else t += " Mobile"; if (l = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(a) || 0)[1]) { l = [parseFloat(l.replace(/\.(\d)$/, ".0$1")), l]; if ("Safari" == t && "+" == l[1].slice(-1)) t = "WebKit Nightly", I = "alpha", m = l[1].slice(0, -1); else if (m == l[1] || m == (l[2] = (/\bSafari\/([\d.]+\+?)/i.exec(a) || 0)[1])) m = null; l[1] = (/\bChrome\/([\d.]+)/i.exec(a) || 0)[1]; 537.36 == l[0] && 537.36 == l[2] && 28 <= parseFloat(l[1]) && "WebKit" == y && (y = ["Blink"]); E && (C || l[1]) ? (y && (y[1] = "like Chrome"), l = l[1] || (l = l[0], 530 > l ? 1 : 532 > l ? 2 : 532.05 > l ? 3 : 533 > l ? 4 : 534.03 > l ? 5 : 534.07 > l ? 6 : 534.1 > l ? 7 : 534.13 > l ? 8 : 534.16 > l ? 9 : 534.24 > l ? 10 : 534.3 > l ? 11 : 535.01 > l ? 12 : 535.02 > l ? "13+" : 535.07 > l ? 15 : 535.11 > l ? 16 : 535.19 > l ? 17 : 536.05 > l ? 18 : 536.1 > l ? 19 : 537.01 > l ? 20 : 537.11 > l ? "21+" : 537.13 > l ? 23 : 537.18 > l ? 24 : 537.24 > l ? 25 : 537.36 > l ? 26 : "Blink" != y ? "27" : "28")) : (y && (y[1] = "like Safari"), l = (l = l[0], 400 > l ? 1 : 500 > l ? 2 : 526 > l ? 3 : 533 > l ? 4 : 534 > l ? "4+" : 535 > l ? 5 : 537 > l ? 6 : 538 > l ? 7 : 601 > l ? 8 : "8")); y && (y[1] += " " + (l += "number" == typeof l ? ".x" : /[.+]/.test(l) ? "" : "+")); "Safari" == t && (!m || 45 < parseInt(m)) && (m = l) } "Opera" == t && (l = /\bzbov|zvav$/.exec(u)) ? (t += " ", n.unshift("desktop mode"), "zvav" == l ? (t += "Mini", m = null) : t += "Mobile", u = u.replace(RegExp(" *" + l + "$"), "")) : "Safari" == t && /\bChrome\b/.exec(y && y[1]) && (n.unshift("desktop mode"), t = "Chrome Mobile", m = null, /\bOS X\b/.test(u) ? (B = "Apple", u = "iOS 4.3+") : u = null); m && 0 == m.indexOf(l = /[\d.]+$/.exec(u)) && -1 < a.indexOf("/" + l + "-") && (u = String(u.replace(l, "")).replace(/^ +| +$/g, "")); y && !/\b(?:Avant|Nook)\b/.test(t) && (/Browser|Lunascape|Maxthon/.test(t) || "Safari" != t && /^iOS/.test(u) && /\bSafari\b/.test(y[1]) || /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(t) && y[1]) && (l = y[y.length - 1]) && n.push(l); n.length && (n = ["(" + n.join("; ") + ")"]); B && z && 0 > z.indexOf(B) && n.push("on " + B); z && n.push((/^on /.test(n[n.length - 1]) ? "" : "on ") + z); if (u) { var M = (l = / ([\d.+]+)$/.exec(u)) && "/" == u.charAt(u.length - l[0].length - 1); u = { architecture: 32, family: l && !M ? u.replace(l[0], "") : u, version: l ? l[1] : null, toString: function() { var a = this.version; return this.family + (a && !M ? " " + a : "") + (64 == this.architecture ? " 64-bit" : "") } } }(l = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(H)) && !/\bi686\b/i.test(H) ? (u && (u.architecture = 64, u.family = u.family.replace(RegExp(" *" + l), "")), t && (/\bWOW64\b/i.test(a) || E && /\w(?:86|32)$/.test(A.cpuClass || A.platform) && !/\bWin64; x64\b/i.test(a)) && n.unshift("32-bit")) : u && /^OS X/.test(u.family) && "Chrome" == t && 39 <= parseFloat(m) && (u.architecture = 64); a || (a = null); h = {}; h.description = a; h.layout = y && y[0]; h.manufacturer = B; h.name = t; h.prerelease = I; h.product = z; h.ua = a; h.version = t && m; h.os = u || { architecture: null, family: null, version: null, toString: function() { return "null" } }; h.parse = p; h.toString = function() { return this.description || "" }; h.version && n.unshift(m); h.name && n.unshift(t); u && t && (u != String(u).split(" ")[0] || u != t.split(" ")[0] && !z) && n.push(z ? "(" + u + ")" : "on " + u); n.length && (h.description = n.join(" ")); return h } var h = { "function": !0, object: !0 }, q = h[typeof window] && window || this, m = h[typeof exports] && exports; h = h[typeof module] && module && !module.nodeType && module; var r = m && h && "object" == typeof global && global; !r || r.global !== r && r.window !== r && r.self !== r || (q = r); var w = Math.pow(2, 53) - 1, v = /\bOpera/; r = Object.prototype; var n = r.hasOwnProperty, x = r.toString, C = p(); "function" == typeof define && "object" == typeof define.amd && define.amd ? (q.platform = C, define(function() { return C })) : m && h ? d(C, function(a, b) { m[b] = a }) : q.platform = C }).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 b = document.createElement("meta"); b.name = a[c].name; b.content = a[c].content; var d = window.document.head.querySelector('meta[name="' + b.name + '"]'); d && d.parentNode.removeChild(d); 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); 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; default: hideIOSFullscreenPanel() } break; case 3: switch (window.innerWidth) { case 736: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 724: 375 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; default: hideIOSFullscreenPanel() } break; default: hideIOSFullscreenPanel() } } function iosResize() { __iosResize(); setTimeout(function() { __iosResize() }, 500) } $(document).ready(function() { platform && "iPhone" === platform.product && (buildIOSFullscreenPanel(), buildIOSMeta()) }); jQuery(window).resize(function() { platform && "iPhone" === platform.product && iosResize() }); var s_bIsIphone = !1, s_iOffsetX, s_iOffsetY, s_iScaleFactor = 1; (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 c = a.toLowerCase(), b = window.document, d = b.documentElement; if (void 0 === window["inner" + a]) a = d["client" + a]; else if (window["inner" + a] != d["client" + a]) { var g = b.createElement("body"); g.id = "vpw-test-b"; g.style.cssText = "overflow:scroll"; var k = b.createElement("div"); k.id = "vpw-test-d"; k.style.cssText = "position:absolute;top:-1000px"; k.innerHTML = "<style>@media(" + c + ":" + d["client" + a] + "px){body#vpw-test-b div#vpw-test-d{" + c + ":7px!important}}</style>"; g.appendChild(k); d.insertBefore(g, b.head); a = 7 == k["offset" + a] ? d["client" + a] : window["inner" + a]; d.removeChild(g) } 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 isIOS() { var a = "iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";"); for (-1 !== navigator.userAgent.toLowerCase().indexOf("iphone") && (s_bIsIphone = !0); a.length;) if (navigator.platform === a.pop()) return !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 = "safari" === platform.name.toLowerCase() ? getIOSWindowHeight() : getSize("Height"); var c = getSize("Width"); _checkOrientation(c, a); var b = Math.min(a / CANVAS_HEIGHT, c / CANVAS_WIDTH), d = CANVAS_WIDTH * b; b *= CANVAS_HEIGHT; if (b < a) { var g = a - b; b += g; d += CANVAS_WIDTH / CANVAS_HEIGHT * g } else d < c && (g = c - d, d += g, b += CANVAS_HEIGHT / CANVAS_WIDTH * g); g = a / 2 - b / 2; var k = c / 2 - d / 2, e = CANVAS_WIDTH / d; if (k * e < -EDGEBOARD_X || g * e < -EDGEBOARD_Y) b = Math.min(a / (CANVAS_HEIGHT - 2 * EDGEBOARD_Y), c / (CANVAS_WIDTH - 2 * EDGEBOARD_X)), d = CANVAS_WIDTH * b, b *= CANVAS_HEIGHT, g = (a - b) / 2, k = (c - d) / 2, e = CANVAS_WIDTH / d; s_iOffsetX = -1 * k * e; s_iOffsetY = -1 * g * e; 0 <= g && (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_oModeMenu && s_oModeMenu.refreshButtonPos(s_iOffsetX, s_iOffsetY); s_bIsIphone ? (canvas = document.getElementById("canvas"), s_oStage.canvas.width = 2 * d, s_oStage.canvas.height = 2 * b, canvas.style.width = d + "px", canvas.style.height = b + "px", s_iScaleFactor = 2 * Math.min(d / CANVAS_WIDTH, b / CANVAS_HEIGHT), s_oStage.scaleX = s_oStage.scaleY = s_iScaleFactor) : s_bMobile || isChrome() ? ($("#canvas").css("width", d + "px"), $("#canvas").css("height", b + "px")) : (s_oStage.canvas.width = d, s_oStage.canvas.height = b, s_iScaleFactor = Math.min(d / CANVAS_WIDTH, b / CANVAS_HEIGHT), s_oStage.scaleX = s_oStage.scaleY = s_iScaleFactor); 0 > g || (g = (a - b) / 2); $("#canvas").css("top", g + "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 playSound(a, c, b) { return !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (s_aSounds[a].play(), s_aSounds[a].volume(c), 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, 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 createBitmap(a, c, b) { var d = new createjs.Bitmap(a), g = new createjs.Shape; c && b ? g.graphics.beginFill("#fff").drawRect(0, 0, c, b) : g.graphics.beginFill("#ff0").drawRect(0, 0, a.width, a.height); d.hitArea = g; return d } function createSprite(a, c, b, d, g, k) { a = null !== c ? new createjs.Sprite(a, c) : new createjs.Sprite(a); c = new createjs.Shape; c.graphics.beginFill("#000000").drawRect(-b, -d, g, k); a.hitArea = c; return a } function pad(a, c, b) { a += ""; return a.length >= c ? a : Array(c - a.length + 1).join(b || "0") + a } function randomFloatBetween(a, c, b) { "undefined" === typeof b && (b = 2); return parseFloat(Math.min(a + Math.random() * (c - a), c).toFixed(b)) } function rotateVector2D(a, c) { var b = c.getX() * Math.cos(a) + c.getY() * Math.sin(a), d = c.getX() * -Math.sin(a) + c.getY() * Math.cos(a); c.set(b, d) } function tweenVectorsOnX(a, c, b) { return a + b * (c - a) } function shuffle(a) { for (var c = a.length, b, d; 0 !== c;) d = Math.floor(Math.random() * c), --c, b = a[c], a[c] = a[d], a[d] = b; return a } function bubbleSort(a) { do { var c = !1; for (var b = 0; b < a.length - 1; b++) a[b] > a[b + 1] && (c = a[b], a[b] = a[b + 1], a[b + 1] = c, c = !0) } while (c) } function compare(a, c) { return a.index > c.index ? -1 : a.index < c.index ? 1 : 0 } function easeLinear(a, c, b, d) { return b * a / d + c } function easeInQuad(a, c, b, d) { return b * (a /= d) * a + c } function easeInSine(a, c, b, d) { return -b * Math.cos(a / d * (Math.PI / 2)) + b + c } function easeInCubic(a, c, b, d) { return b * (a /= d) * a * a + c } function getTrajectoryPoint(a, c) { var b = new createjs.Point, d = (1 - a) * (1 - a), g = a * a; b.x = d * c.start.x + 2 * (1 - a) * a * c.traj.x + g * c.end.x; b.y = d * c.start.y + 2 * (1 - a) * a * c.traj.y + g * c.end.y; return b } function formatTime(a) { a /= 1E3; var c = Math.floor(a / 60); a = Math.floor(a - 60 * c); var b = ""; b = 10 > c ? b + ("0" + c + ":") : b + (c + ":"); return 10 > a ? b + ("0" + a) : b + a } function degreesToRadians(a) { return a * Math.PI / 180 } function checkRectCollision(a, c) { var b = getBounds(a, .9); var d = getBounds(c, .98); return calculateIntersection(b, d) } function calculateIntersection(a, c) { var b, d, g, k; var e = a.x + (b = a.width / 2); var f = a.y + (d = a.height / 2); var p = c.x + (g = c.width / 2); var h = c.y + (k = c.height / 2); e = Math.abs(e - p) - (b + g); f = Math.abs(f - h) - (d + k); return 0 > e && 0 > f ? (e = Math.min(Math.min(a.width, c.width), -e), f = Math.min(Math.min(a.height, c.height), -f), { x: Math.max(a.x, c.x), y: Math.max(a.y, c.y), width: e, height: f, rect1: a, rect2: c }) : null } function getBounds(a, c) { var b = { x: Infinity, y: Infinity, width: 0, height: 0 }; if (a instanceof createjs.Container) { b.x2 = -Infinity; b.y2 = -Infinity; var d = a.children, g = d.length, k; for (k = 0; k < g; k++) { var e = getBounds(d[k], 1); e.x < b.x && (b.x = e.x); e.y < b.y && (b.y = e.y); e.x + e.width > b.x2 && (b.x2 = e.x + e.width); e.y + e.height > b.y2 && (b.y2 = e.y + e.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) { g = a.sourceRect || a.image; k = g.width * c; var f = g.height * c } else if (a instanceof createjs.Sprite) if (a.spriteSheet._frames && a.spriteSheet._frames[a.currentFrame] && a.spriteSheet._frames[a.currentFrame].image) { g = a.spriteSheet.getFrame(a.currentFrame); k = g.rect.width; f = g.rect.height; d = g.regX; var p = g.regY } else b.x = a.x || 0, b.y = a.y || 0; else b.x = a.x || 0, b.y = a.y || 0; d = d || 0; k = k || 0; p = p || 0; f = f || 0; b.regX = d; b.regY = p; g = a.localToGlobal(0 - d, 0 - p); e = a.localToGlobal(k - d, f - p); k = a.localToGlobal(k - d, 0 - p); d = a.localToGlobal(0 - d, f - p); b.x = Math.min(Math.min(Math.min(g.x, e.x), k.x), d.x); b.y = Math.min(Math.min(Math.min(g.y, e.y), k.y), d.y); b.width = Math.max(Math.max(Math.max(g.x, e.x), k.x), d.x) - b.x; b.height = Math.max(Math.max(Math.max(g.y, e.y), k.y), d.y) - b.y } return b } function NoClickDelay(a) { this.element = a; window.Touch && this.element.addEventListener("touchstart", this, !1) } function shuffle(a) { for (var c = a.length, b, d; 0 < c;) d = Math.floor(Math.random() * c), c--, b = a[c], a[c] = a[d], a[d] = 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 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("&"), b = 0; b < c.length; b++) { var d = c[b].split("="); if (d[0] == a) return d[1] } } function fullscreenHandler() { ENABLE_FULLSCREEN && !1 !== screenfull.enabled && (s_bFullscreen = screenfull.isFullscreen, null !== s_oInterface && s_oInterface.resetFullscreenBut(), null !== s_oMenu && s_oMenu.resetFullscreenBut(), null !== s_oModeMenu && s_oModeMenu.resetFullscreenBut()) } if (screenfull.enabled) screenfull.on("change", function() { s_bFullscreen = screenfull.isFullscreen; null !== s_oInterface && s_oInterface.resetFullscreenBut(); null !== s_oMenu && s_oMenu.resetFullscreenBut(); null !== s_oModeMenu && s_oModeMenu.resetFullscreenBut() }); function CSpriteLibrary() { var a = {}, c, b, d, g, k, e; this.init = function(a, p, h) { c = {}; d = b = 0; g = a; k = p; e = h }; this.addSprite = function(d, e) { if (!a.hasOwnProperty(d)) { var f = new Image; a[d] = c[d] = { szPath: e, oSprite: f, bLoaded: !1 }; b++ } }; this.getSprite = function(b) { return a.hasOwnProperty(b) ? a[b].oSprite : null }; this._onSpritesLoaded = function() { b = 0; k.call(e) }; this._onSpriteLoaded = function() { g.call(e); ++d === b && 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 b } } var CANVAS_WIDTH = 1280, CANVAS_HEIGHT = 1920, EDGEBOARD_X = 190, EDGEBOARD_Y = 220, FPS = 30, FPS_TIME = 1E3 / FPS, DISABLE_SOUND_MOBILE = !1, PRIMARY_FONT = "arialrounded", SOUNDTRACK_VOLUME_IN_GAME = 1, 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, MODE_HUMAN = 0, MODE_COMPUTER = 1, EASY_MODE = 0, MEDIUM_MODE = 1, HARD_MODE = 2, PAWN_BLACK = 0, PAWN_WHITE = 1, PAWN_NULL = -1, ALERT_TYPE_NOMOVES = 0, ALERT_TYPE_STALL = 1, BOARD_LENGTH = 784, NUM_CELL = 8, TOT_CELL = 64, CELL_LENGTH = BOARD_LENGTH / NUM_CELL, PAWN_SIZE = 96, TIME_LOOP_WAIT = 1E3, MIN_AI_THINKING = 1E3, MAX_AI_THINKING = 1500, ENABLE_FULLSCREEN, ENABLE_CHECK_ORIENTATION, TEXT_PRELOADER_CONTINUE = "START", TEXT_GAMEOVER = "WINS", TEXT_DRAW = "DRAW", TEXT_THINKING = "THINKING", TEXT_ARE_SURE = "ARE YOU SURE?", TEXT_MODE = "CHOOSE GAME MODE", TEXT_DIFFICULTY = "DIFFICULTY", TEXT_AUDIO = "MUTE/PLAY AUDIO", TEXT_COUNT = "SHOW/HIDE FLIP NUMBER", TEXT_BLACK = "BLACK", TEXT_WHITE = "WHITE", TEXT_STALL = "STALL", TEXT_NOMOVES = "NO MORE MOVES", TEXT_HELP1 = "FLIP YOUR OPPONENT'S PIECES BY TRAPPING THEM BETWEEN TWO OF YOUR OWN.", TEXT_HELP2 = "YOUR AIM IS TO OWN MORE PIECES THAN YOUR OPPONENT WHEN THE GAME IS OVER.", TEXT_CREDITS_DEVELOPED = "DEVELOPED BY", 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, b, d, g, k, e, f, p, h; 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(); h = new createjs.Container; s_oStage.addChild(h) }; this.unload = function() { h.removeAllChildren(); p.unload() }; this._onImagesLoaded = function() {}; this._onAllImagesLoaded = function() { this.attachSprites(); s_oMain.preloaderReady() }; this.attachSprites = function() { var q = new createjs.Shape; q.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); h.addChild(q); q = s_oSpriteLibrary.getSprite("200x200"); e = createBitmap(q); e.regX = .5 * q.width; e.regY = .5 * q.height; e.x = CANVAS_WIDTH / 2; e.y = CANVAS_HEIGHT / 2 - 180; h.addChild(e); f = new createjs.Shape; f.graphics.beginFill("rgba(0,0,0,0.01)").drawRoundRect(e.x - 100, e.y - 100, 200, 200, 10); h.addChild(f); e.mask = f; q = s_oSpriteLibrary.getSprite("progress_bar"); d = createBitmap(q); d.x = CANVAS_WIDTH / 2 - q.width / 2; d.y = CANVAS_HEIGHT / 2 + 50; h.addChild(d); a = q.width; c = q.height; g = new createjs.Shape; g.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(d.x, d.y, 1, c); h.addChild(g); d.mask = g; 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"; h.addChild(b); q = s_oSpriteLibrary.getSprite("but_start"); p = new CTextButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2, q, TEXT_PRELOADER_CONTINUE, "Arial", "#000", "bold 50", h); p.addEventListener(ON_MOUSE_UP, this._onButStartRelease, this); p.setVisible(!1); k = new createjs.Shape; k.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); h.addChild(k); createjs.Tween.get(k).to({ alpha: 0 }, 500).call(function() { createjs.Tween.removeTweens(k); h.removeChild(k) }) }; this._onButStartRelease = function() { s_oMain._onRemovePreloader() }; this.refreshLoader = function(e) { b.text = e + "%"; 100 === e && (s_oMain._onRemovePreloader(), b.visible = !1, d.visible = !1); g.graphics.clear(); e = Math.floor(e * a / 100); g.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(d.x, d.y, e, c) }; this._init() } function CMain(a) { var c, b = 0, d = 0, g = STATE_LOADING, k, e; this.initContainer = function() { s_oCanvas = document.getElementById("canvas"); s_oStage = new createjs.Stage(s_oCanvas); createjs.Touch.enable(s_oStage); s_bMobile = jQuery.browser.mobile; !1 === s_bMobile && (s_oStage.enableMouseOver(20), $("body").on("contextmenu", "#canvas", function(a) { 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; k = new CPreloader; }; this.preloaderReady = function() { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || this._initSounds(); this._loadImages(); c = !0 }; this.soundLoaded = function() { b++; k.refreshLoader(Math.floor(b / d * 100)) }; this._initSounds = function() { Howler.mute(!s_bAudioActive); s_aSoundsInfo = []; s_aSoundsInfo.push({ path: "./sounds/", filename: "click_cell", loop: !1, volume: 1, ingamename: "click_cell" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "click", loop: !1, volume: 1, ingamename: "click" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "win", loop: !0, 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: "soundtrack", loop: !0, volume: 1, ingamename: "soundtrack" }); d += 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_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_mod_menu", "./sprites/bg_mod_menu.jpg"); s_oSpriteLibrary.addSprite("bg_game", "./sprites/bg_game.jpg"); s_oSpriteLibrary.addSprite("but_vs_man", "./sprites/but_vs_man.png"); s_oSpriteLibrary.addSprite("but_vs_pc", "./sprites/but_vs_pc.png"); s_oSpriteLibrary.addSprite("difficulty_panel", "./sprites/difficulty_panel.png"); s_oSpriteLibrary.addSprite("toggle_easy", "./sprites/toggle_easy.png"); s_oSpriteLibrary.addSprite("toggle_medium", "./sprites/toggle_medium.png"); s_oSpriteLibrary.addSprite("toggle_hard", "./sprites/toggle_hard.png"); s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png"); s_oSpriteLibrary.addSprite("audio_icon", "./sprites/audio_icon.png"); s_oSpriteLibrary.addSprite("but_settings", "./sprites/but_settings.png"); s_oSpriteLibrary.addSprite("white_chip", "./sprites/chip_vertical_white.png"); s_oSpriteLibrary.addSprite("black_chip", "./sprites/chip_vertical_black.png"); s_oSpriteLibrary.addSprite("bg_turn", "./sprites/bg_turn.png"); s_oSpriteLibrary.addSprite("time_icon", "./sprites/time_icon.png"); s_oSpriteLibrary.addSprite("audio_icon_big", "./sprites/audio_icon_big.png"); s_oSpriteLibrary.addSprite("but_flip", "./sprites/but_flip.png"); s_oSpriteLibrary.addSprite("but_credits", "./sprites/but_credits.png"); s_oSpriteLibrary.addSprite("logo_credits", "./sprites/logo_credits.png"); s_oSpriteLibrary.addSprite("pawn", "./sprites/pawn.png"); s_oSpriteLibrary.addSprite("but_fullscreen", "./sprites/but_fullscreen.png"); s_oSpriteLibrary.addSprite("but_yes", "./sprites/but_yes.png"); s_oSpriteLibrary.addSprite("but_no", "./sprites/but_no.png"); d += s_oSpriteLibrary.getNumSprites(); s_oSpriteLibrary.loadSprites() }; this._onImagesLoaded = function() { b++; k.refreshLoader(Math.floor(b / d * 100)) }; this._onAllImagesLoaded = function() {}; this._onRemovePreloader = function() { k.unload(); s_oSoundTrack = playSound("soundtrack", 1, !0); this.gotoMenu() }; this.gotoMenu = function() { new CMenu; g = STATE_MENU }; this.gotoModeMenu = function() { new CModeMenu; g = STATE_MENU }; this.gotoGame = function(a, b) { s_iGameType = a; s_iDifficulty = b; switch (b) { case EASY_MODE: s_bEdgeSensitive = s_bWeightSquares = !1; break; case MEDIUM_MODE: s_bWeightSquares = !1; s_bEdgeSensitive = !0; break; case HARD_MODE: s_bEdgeSensitive = s_bWeightSquares = !0 } e = new CGame(f); g = STATE_GAME }; this.gotoHelp = function() { new CHelp; g = STATE_HELP }; 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._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); g === STATE_GAME && e.update(); s_oStage.update(a) } }; s_oMain = this; var f = a; ENABLE_FULLSCREEN = a.fullscreen; ENABLE_CHECK_ORIENTATION = a.check_orientation; s_bShowFlip = f.show_help_numbers; s_bAudioActive = a.audio_enable_on_startup; this.initContainer() } var s_bMobile, s_bAudioActive = !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_iGameType, s_bShowFlip = !1, s_iDifficulty, s_bWeightSquares = !1, s_bEdgeSensitive = !1, s_bFullscreen = !1, s_aSounds, s_aSoundsInfo; function CTextButton(a, c, b, d, g, k, e, f) { var p, h, q, m, r, w, v; this._init = function(a, b, c, d, e, g, f, k) { p = []; h = []; var n = createBitmap(c), A = Math.ceil(f / 20); r = new createjs.Text(d, f + "px " + e, "#000000"); r.textAlign = "center"; r.textBaseline = "alphabetic"; var C = r.getBounds(); r.x = c.width / 2 + A; r.y = Math.floor(c.height / 2) + C.height / 3 + A; m = new createjs.Text(d, f + "px " + e, g); m.textAlign = "center"; m.textBaseline = "alphabetic"; C = m.getBounds(); m.x = c.width / 2; m.y = Math.floor(c.height / 2) + C.height / 3; q = new createjs.Container; q.x = a; q.y = b; q.regX = c.width / 2; q.regY = c.height / 2; s_bMobile || (q.cursor = "pointer"); q.addChild(n, r, m); k.addChild(q); this._initListener() }; this.unload = function() { q.off("mousedown", w); q.off("pressup", v); f.removeChild(q) }; this.setVisible = function(a) { q.visible = a }; this._initListener = function() { w = q.on("mousedown", this.buttonDown); v = q.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, b, c) { p[a] = b; h[a] = c }; this.buttonRelease = function() { playSound("click", 1, 0); q.scaleX = 1; q.scaleY = 1; p[ON_MOUSE_UP] && p[ON_MOUSE_UP].call(h[ON_MOUSE_UP]) }; this.buttonDown = function() { q.scaleX = .9; q.scaleY = .9; p[ON_MOUSE_DOWN] && p[ON_MOUSE_DOWN].call(h[ON_MOUSE_DOWN]) }; this.setTextPosition = function(a) { m.y = a; r.y = a + 2 }; this.setPosition = function(a, b) { q.x = a; q.y = b }; this.setX = function(a) { q.x = a }; this.setY = function(a) { q.y = a }; this.getButtonImage = function() { return q }; this.getX = function() { return q.x }; this.getY = function() { return q.y }; this._init(a, c, b, d, g, k, e, f); return this } function CToggle(a, c, b, d, g) { var k, e, f, p, h, q, m, r; this._init = function(a, b, c, d, g) { q = void 0 !== g ? g : s_oStage; e = []; f = []; g = 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] } }); k = d; h = createSprite(g, "state_" + k, c.width / 2 / 2, c.height / 2, c.width / 2, c.height); h.x = a; h.y = b; h.stop(); s_bMobile || (h.cursor = "pointer"); q.addChild(h); this._initListener() }; this.unload = function() { h.off("mousedown", m); h.off("pressup", r); q.removeChild(h) }; this._initListener = function() { m = h.on("mousedown", this.buttonDown); r = h.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, b, c) { e[a] = b; f[a] = c }; this.addEventListenerWithParams = function(a, b, c, d) { e[a] = b; f[a] = c; p = d }; this.setCursorType = function(a) { h.cursor = a }; this.setActive = function(a) { k = a; h.gotoAndStop("state_" + k) }; this.buttonRelease = function() { h.scaleX = 1; h.scaleY = 1; playSound("click", 1, 0); k = !k; h.gotoAndStop("state_" + k); e[ON_MOUSE_UP] && e[ON_MOUSE_UP].call(f[ON_MOUSE_UP], p) }; this.buttonDown = function() { h.scaleX = .9; h.scaleY = .9; e[ON_MOUSE_DOWN] && e[ON_MOUSE_DOWN].call(f[ON_MOUSE_DOWN], p) }; this.setPosition = function(a, b) { h.x = a; h.y = b }; this._init(a, c, b, d, g) } function CGfxButton(a, c, b, d) { var g, k, e, f, p, h, q; this._init = function(a, b, c, d) { g = 1; k = []; e = []; f = createBitmap(c); f.x = a; f.y = b; f.regX = c.width / 2; f.regY = c.height / 2; s_bMobile || (f.cursor = "pointer"); d.addChild(f); this._initListener() }; this.unload = function() { f.off("mousedown", h); f.off("pressup", q); d.removeChild(f) }; this.setVisible = function(a) { f.visible = a }; this._initListener = function() { h = f.on("mousedown", this.buttonDown); q = f.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, b, c) { k[a] = b; e[a] = c }; this.buttonRelease = function() { playSound("click", 1, 0); f.scaleX = 1; f.scaleY = 1; k[ON_MOUSE_UP] && k[ON_MOUSE_UP].call(e[ON_MOUSE_UP]) }; this.buttonDown = function() { p || (f.scaleX = .9, f.scaleY = .9); k[ON_MOUSE_DOWN] && k[ON_MOUSE_DOWN].call(e[ON_MOUSE_DOWN]) }; 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 }; this.pulseAnimation = function() { var a = this; p = createjs.Tween.get(f).to({ scaleX: .9 * g, scaleY: .9 * g }, 850, createjs.Ease.quadOut).to({ scaleX: g, scaleY: g }, 650, createjs.Ease.quadIn).call(function() { a.pulseAnimation() }) }; this._init(a, c, b, d); return this } function CMenu() { var a, c, b, d, g, k, e, f, p, h, q, m, r = null, w = null; this._init = function() { e = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); s_oStage.addChild(e); var v = s_oSpriteLibrary.getSprite("but_play"); f = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT - 500, v, s_oStage); f.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) v = s_oSpriteLibrary.getSprite("audio_icon"), g = CANVAS_WIDTH - v.height / 2 - 10, k = v.height / 2 + 10, h = new CToggle(g, k, v, s_bAudioActive, s_oStage), h.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); v = s_oSpriteLibrary.getSprite("but_credits"); b = v.height / 2 + 10; d = v.height / 2 + 10; q = new CGfxButton(b, d, v, s_oStage); q.addEventListener(ON_MOUSE_UP, this._onCredits, this); v = window.document; var n = v.documentElement; r = n.requestFullscreen || n.mozRequestFullScreen || n.webkitRequestFullScreen || n.msRequestFullscreen; w = v.exitFullscreen || v.mozCancelFullScreen || v.webkitExitFullscreen || v.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (r = !1); r && screenfull.enabled && (v = s_oSpriteLibrary.getSprite("but_fullscreen"), a = b + v.width / 2 + 10, c = d, m = new CToggle(a, c, v, s_bFullscreen, s_oStage), m.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); p = new createjs.Shape; p.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); s_oStage.addChild(p); createjs.Tween.get(p).to({ alpha: 0 }, 1E3).call(function() { p.visible = !1 }); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { f.unload(); f = null; q.unload(); p.visible = !1; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) h.unload(), h = null; r && screenfull.enabled && m.unload(); s_oStage.removeChild(e); s_oMenu = e = null }; this.refreshButtonPos = function(e, f) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || h.setPosition(g - e, f + k); r && screenfull.enabled && m.setPosition(a + e, c + f); q.setPosition(b + e, f + d) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onCredits = function() { new CCreditsPanel }; this._onButPlayRelease = function() { this.unload(); $(s_oMain).trigger("start_session"); s_oMain.gotoModeMenu() }; this.resetFullscreenBut = function() { r && screenfull.enabled && m.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? w.call(window.document) : r.call(window.document.documentElement); sizeHandler() }; s_oMenu = this; this._init() } var s_oMenu = null; function CModeMenu() { var a, c, b, d, g, k, e = MEDIUM_MODE, f, p, h, q = null, m, r, w, v, n = null, x = null; this._init = function() { var e = createBitmap(s_oSpriteLibrary.getSprite("bg_mod_menu")); s_oStage.addChild(e); e = s_oSpriteLibrary.getSprite("but_exit"); b = CANVAS_WIDTH - e.height / 2 - 20; d = e.height / 2 + 10; h = new CGfxButton(b, d, e, s_oStage); h.addEventListener(ON_MOUSE_UP, this._onExit, this); g = CANVAS_WIDTH - e.width / 2 - 125; k = e.height / 2 + 10; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) e = s_oSpriteLibrary.getSprite("audio_icon"), q = new CToggle(g, k, e, s_bAudioActive, s_oStage), q.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); e = window.document; var A = e.documentElement; n = A.requestFullscreen || A.mozRequestFullScreen || A.webkitRequestFullScreen || A.msRequestFullscreen; x = e.exitFullscreen || e.mozCancelFullScreen || e.webkitExitFullscreen || e.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (n = !1); n && screenfull.enabled && (e = s_oSpriteLibrary.getSprite("but_fullscreen"), a = e.width / 4 + 10, c = d, v = new CToggle(a, c, e, s_bFullscreen, s_oStage), v.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); e = 600; A = 250; var J = CANVAS_WIDTH / 2; new CTLText(s_oStage, J - e / 2, 350 - A / 2, e, A, 80, "center", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_MODE, !0, !0, !0, !1); e = s_oSpriteLibrary.getSprite("but_vs_man"); f = new CGfxButton(CANVAS_WIDTH / 2, 700, e, s_oStage); f.addEventListener(ON_MOUSE_UP, this._onButHumanRelease, this); e = s_oSpriteLibrary.getSprite("but_vs_pc"); p = new CGfxButton(CANVAS_WIDTH / 2, 1200, e, s_oStage); p.addEventListener(ON_MOUSE_UP, this._onButComputerRelease, this); e = s_oSpriteLibrary.getSprite("difficulty_panel"); A = createBitmap(e); A.regX = e.width / 2; A.regY = e.height / 2; A.x = CANVAS_WIDTH / 2; A.y = 1510; s_oStage.addChild(A); e = 480; A = 50; J = CANVAS_WIDTH / 2; new CTLText(s_oStage, J - e / 2, 1440 - A / 2, e, A, 40, "center", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_DIFFICULTY, !0, !0, !0, !1); e = s_oSpriteLibrary.getSprite("toggle_easy"); m = new CToggle(CANVAS_WIDTH / 2 - 170, 1525, e, !1, s_oStage); m.addEventListenerWithParams(ON_MOUSE_UP, this._onDifficultyToggle, this, EASY_MODE); e = s_oSpriteLibrary.getSprite("toggle_medium"); r = new CToggle(CANVAS_WIDTH / 2 - 5, 1525, e, !0, s_oStage); r.addEventListenerWithParams(ON_MOUSE_UP, this._onDifficultyToggle, this, MEDIUM_MODE); e = s_oSpriteLibrary.getSprite("toggle_hard"); w = new CToggle(CANVAS_WIDTH / 2 + 165, 1525, e, !1, s_oStage); w.addEventListenerWithParams(ON_MOUSE_UP, this._onDifficultyToggle, this, HARD_MODE); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { f.unload(); p.unload(); h.unload(); m.unload(); r.unload(); w.unload(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) q.unload(), q = null; n && screenfull.enabled && v.unload(); s_oModeMenu = null; s_oStage.removeAllChildren() }; this.refreshButtonPos = function(e, f) { h.setPosition(b - e, f + d); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || q.setPosition(g - e, f + k); n && screenfull.enabled && v.setPosition(a + e, c + f) }; this._onDifficultyToggle = function(a) { switch (a) { case EASY_MODE: m.setActive(!0); r.setActive(!1); w.setActive(!1); e = EASY_MODE; break; case MEDIUM_MODE: m.setActive(!1); r.setActive(!0); w.setActive(!1); e = MEDIUM_MODE; break; case HARD_MODE: m.setActive(!1), r.setActive(!1), w.setActive(!0), e = HARD_MODE } }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onExit = function() { this.unload(); s_oMain.gotoMenu() }; this._onButHumanRelease = function() { this.unload(); s_oMain.gotoGame(MODE_HUMAN) }; this._onButComputerRelease = function() { this.unload(); s_oMain.gotoGame(MODE_COMPUTER, e) }; this.resetFullscreenBut = function() { n && screenfull.enabled && v.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? x.call(window.document) : n.call(window.document.documentElement); sizeHandler() }; s_oModeMenu = this; this._init() } var s_oModeMenu = null; function CGame(a) { var c, b, d, g, k, e, f, p, h, q, m, r, w, v = null, n, x = null; this._init = function() { b = c = !1; d = PAWN_BLACK; q = h = f = p = k = 0; var a = createBitmap(s_oSpriteLibrary.getSprite("bg_game")); s_oStage.addChild(a); w = new CInterface; n = new createjs.Container; n.x = CANVAS_WIDTH / 2; n.y = CANVAS_HEIGHT / 2; s_oStage.addChild(n); this._initGrid(); this.calcFlipCounts(); new CHelpPanel }; this._initGrid = function() { var a = NUM_CELL, b = CELL_LENGTH, c = -BOARD_LENGTH / 2 + b / 2; m = []; for (var d = 0; d < a; d++) { m[d] = []; for (var f = 0; f < a; f++) m[d][f] = { x: c + f * b, y: c + d * b } } r = []; for (d = 0; d < a; d++) for (r[d] = [], f = 0; f < a; f++) r[d][f] = new CCell(m[d][f].x, m[d][f].y, -1, d, f, n); r[3][3].setColor(PAWN_WHITE); r[4][4].setColor(PAWN_WHITE); r[3][4].setColor(PAWN_BLACK); r[4][3].setColor(PAWN_BLACK); e = 4; this.countPawn(); w.activePlayer(PAWN_BLACK) }; this.changeTurn = function() { e === TOT_CELL ? (this.resetFlips(), this.gameOver()) : (d = d === PAWN_BLACK ? PAWN_WHITE : PAWN_BLACK, w.activePlayer(d), this.calcFlipCounts(), b) ? d === PAWN_WHITE && s_iGameType === MODE_COMPUTER && (x = new CThinking, setTimeout(function() { x.unload(); x = null; C.othelloAI() }, MIN_AI_THINKING + Math.random() * (MAX_AI_THINKING - MIN_AI_THINKING))) : (k++, 2 === k ? new CAlertPanel(TEXT_STALL, d, ALERT_TYPE_STALL) : new CAlertPanel(TEXT_NOMOVES, d, ALERT_TYPE_NOMOVES)) }; this.cellClicked = function(a, b, c) { playSound("click_cell", 1, !1); this.resetFlips(); e++; g = c; r[a][b].setColor(d); this.cellFlips(a, b); this.countPawn() }; this.setShowNumFlip = function() { this.calcFlipCounts() }; this.restartGame = function() { this.unload(); this._init() }; this.pauseGame = function(a) { c = !a }; this.unload = function() { c = !1; w.unload(); null !== v && v.unload(); createjs.Tween.removeAllTweens(); s_oStage.removeAllChildren() }; this.onExit = function() { this.unload(); s_oMain.gotoMenu() }; this._onExitHelp = function() { c = !0 }; this.gameOver = function() { v = CEndPanel(s_oSpriteLibrary.getSprite("msg_box")); v.show(p, f, h, q); w.setInfoVisible(!1) }; this.update = function() { c && (null !== x && x.update(), d === PAWN_WHITE ? (q += s_iTimeElaps, w.refreshWhiteTime(q)) : (h += s_iTimeElaps, w.refreshBlackTime(h))) }; this.numFlips = function(a, b) { var c, e, f, g = 0; for (e = -1; 1 >= e; e++) for (c = -1; 1 >= c; c++) for (f = 1;; f++) { var h = a + f * c; var k = b + f * e; if (0 > h || h >= NUM_CELL || 0 > k || k >= NUM_CELL) break; if (r[h][k].getType() === PAWN_NULL) break; if (r[h][k].getType() === d) { g += f - 1; break } } return g }; this.cellFlips = function(a, b) { var c, e, f; for (e = -1; 1 >= e; e++) for (c = -1; 1 >= c; c++) for (f = 1;; f++) { var g = a + f * c; var h = b + f * e; if (0 > g || g >= NUM_CELL || 0 > h || h >= NUM_CELL) break; if (r[g][h].getType() === PAWN_NULL) break; if (r[g][h].getType() === d) { for (f--; 0 < f; f--) g = a + f * c, h = b + f * e, r[g][h].reversi(); break } } return 0 }; this.onFlipsEnd = function() { g--; 0 === g && this.changeTurn() }; this.calcFlipCounts = function() { for (var a = 0; a < NUM_CELL; a++) for (var c = 0; c < NUM_CELL; c++) r[a][c].setNumFlips(0), r[a][c].getType() === PAWN_NULL && (r[a][c].setNumFlips(this.numFlips(a, c)), 0 < r[a][c].getNumFlips() && (b = !0, k = 0, d === PAWN_WHITE && s_iGameType === MODE_COMPUTER ? r[a][c].setClickableArea(!1, !1, d) : r[a][c].setClickableArea(!0, s_bShowFlip, d))) }; this.resetFlips = function() { for (var a = 0; a < NUM_CELL; a++) for (var c = 0; c < NUM_CELL; c++) r[a][c].setClickableArea(!1); b = !1 }; this.countPawn = function() { for (var a, b = f = p = 0; b < NUM_CELL; b++) for (var c = 0; c < NUM_CELL; c++) a = r[b][c].getType(), 0 === a ? p++ : 1 === a && f++; w.refreshBlackPawnNumber(p); w.refreshWhitePawnNumber(f) }; this.rate = function(a, b) { if (r[a][b].getType() !== PAWN_NULL || 0 > a || a >= NUM_CELL || 0 > b || b >= NUM_CELL) return 0; var c = r[a][b].getNumFlips(); s_bWeightSquares || (c = 0 < c ? 1 : 0); if (s_bEdgeSensitive && 0 < c) { c += 10; if (0 === a || a === NUM_CELL - 1) c += 4; if (0 === b || b === NUM_CELL - 1) c += 4; if (1 === a || a === NUM_CELL - 2) c -= 5; if (1 === b || b === NUM_CELL - 2) c -= 5; 1 > c && (c = 1) } return c }; this.othelloAI = function() { var a, b, c = 0, d = 0, e; for (b = 0; b < NUM_CELL; b++) for (a = 0; a < NUM_CELL; a++) { var f = this.rate(a, b); r[a][b].setWeight(f); f === c ? d++ : f > c && (c = f, d = 1) } for (; 0 < d;) { var g = Math.floor(Math.random() * d); for (b = e = 0; b < NUM_CELL; b++) for (a = 0; a < NUM_CELL; a++) if (f = r[a][b].getWeight(), f === c) { if (e === g) { this.cellClicked(a, b, r[a][b].getNumFlips()); return } e++ } } }; s_oGame = this; var C = this; this._init() } var s_oGame; function CInterface() { var a, c, b, d, g, k, e, f, p, h, q, m, r, w = null, v = null; this._init = function() { var n = s_oSpriteLibrary.getSprite("but_exit"); g = CANVAS_WIDTH - n.height / 2 - 20; k = n.height / 2 + 10; p = new CGfxButton(g, k, n, s_oStage); p.addEventListener(ON_MOUSE_UP, this._onExit, this); var x = CANVAS_WIDTH - n.width / 2 - 125; n = s_oSpriteLibrary.getSprite("but_settings"); b = x; d = 10 + n.height / 2; h = new CGfxButton(b, d, n, s_oStage); h.addEventListener(ON_MOUSE_UP, this._onButConfigRelease, this); x = window.document; n = x.documentElement; w = n.requestFullscreen || n.mozRequestFullScreen || n.webkitRequestFullScreen || n.msRequestFullscreen; v = x.exitFullscreen || x.mozCancelFullScreen || x.webkitExitFullscreen || x.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (w = !1); w && screenfull.enabled && (n = s_oSpriteLibrary.getSprite("but_fullscreen"), a = n.width / 4 + 10, c = k, r = new CToggle(a, c, n, s_bFullscreen, s_oStage), r.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); m = new CInfoTurn(780, 1645, PAWN_BLACK, s_oStage); q = new CInfoTurn(490, 300, PAWN_WHITE, s_oStage); e = []; for (x = 0; x < TOT_CELL; x++) e[x] = createBitmap(s_oSpriteLibrary.getSprite("white_chip")), e[x].x = 300 + 10.5 * x, e[x].y = 422, s_oStage.addChild(e[x]); f = []; for (x = 0; x < TOT_CELL; x++) f[x] = createBitmap(s_oSpriteLibrary.getSprite("black_chip")), f[x].x = 960 - 10.5 * x, f[x].y = 1422, s_oStage.addChild(f[x]); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { p.unload(); h.unload(); w && screenfull.enabled && r.unload(); m.unload(); q.unload(); for (var a = 0; a < TOT_CELL; a++) s_oStage.removeChild(e[a]), s_oStage.removeChild(f[a]); s_oInterface = null }; this.refreshButtonPos = function(e, f) { p.setPosition(g - e, f + k); h.setPosition(b - e, f + d); w && screenfull.enabled && r.setPosition(a + e, c + f) }; this.refreshWhitePawnNumber = function(a) { q.refreshPawnNumber(a); for (var b = 0; b < a; b++) e[b].visible = !1; for (b = a; b < TOT_CELL; b++) e[b].visible = !0 }; this.refreshWhiteTime = function(a) { 50 < a && q.refreshTime(formatTime(a)) }; this.refreshBlackPawnNumber = function(a) { m.refreshPawnNumber(a); for (var b = 0; b < a; b++) f[b].visible = !1; for (b = a; b < TOT_CELL; b++) f[b].visible = !0 }; this.refreshBlackTime = function(a) { 50 < a && m.refreshTime(formatTime(a)) }; this.activePlayer = function(a) { a === PAWN_WHITE ? (m.active(!1), q.active(!0)) : (q.active(!1), m.active(!0)) }; this.setInfoVisible = function(a) { q.setPanelVisible(a); m.setPanelVisible(a) }; this._onButConfigRelease = function() { new CConfigPanel }; this._onButRestartRelease = function() { s_oGame.restartGame() }; this.onExitFromHelp = function() { null.unload() }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onExit = function() { new CAreYouSurePanel(s_oInterface._onConfirmExit) }; this._onConfirmExit = function() { $(s_oMain).trigger("end_session"); $(s_oMain).trigger("show_interlevel_ad"); s_oGame.onExit() }; this.resetFullscreenBut = function() { w && screenfull.enabled && r.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? v.call(window.document) : w.call(window.document.documentElement); sizeHandler() }; s_oInterface = this; this._init(); return this } var s_oInterface = null; function CInfoTurn(a, c, b, d) { var g, k, e, f, p, h, q; this._init = function(a, b, c, d) { g = new createjs.Container; g.x = a; g.y = b; d.addChild(g); a = s_oSpriteLibrary.getSprite("bg_turn"); b = { images: [a], framerate: 58, frames: { width: a.width / 2, height: a.height, regX: a.width / 2 / 2, regY: a.height / 2 }, animations: { off: [0, 0, "on"], on: [1, 1, "off"] } }; b = new createjs.SpriteSheet(b); k = createSprite(b, 0, a.width / 2 / 2, a.height / 2, a.width / 2, a.height); k.stop(); g.addChild(k); e = createSprite(b, 1, a.width / 2 / 2, a.height / 2, a.width / 2, a.height); e.stop(); e.x = 10; e.alpha = 0; g.addChild(e); a = s_oSpriteLibrary.getSprite("pawn"); b = { images: [a], frames: { width: a.width / 2, height: a.height, regX: a.width / 2 / 2, regY: a.height / 2 }, animations: { off: [0], on: [1] } }; b = new createjs.SpriteSheet(b); h = createSprite(b, c, a.width / 2 / 2, a.height / 2, a.width / 2, a.height); h.stop(); h.x = c === PAWN_WHITE ? 110 : -220; h.y = -10; g.addChild(h); q = new createjs.Text("x2", "68px " + PRIMARY_FONT, "#ffffff"); q.x = c === PAWN_WHITE ? 160 : -160; q.y = -5; q.textAlign = "left"; q.textBaseline = "middle"; q.lineWidth = 200; g.addChild(q); a = s_oSpriteLibrary.getSprite("time_icon"); f = createBitmap(a); f.regX = a.width / 2; f.regY = a.height / 2; f.scaleX = .8; f.scaleY = .8; f.x = c === PAWN_WHITE ? -230 : 225; f.y = -5; g.addChild(f); p = new createjs.Text("00:00", "58px " + PRIMARY_FONT, "#ffffff"); c === PAWN_WHITE ? (p.x = -180, p.textAlign = "left") : (p.x = 175, p.textAlign = "right"); p.textBaseline = "middle"; p.lineWidth = 200; g.addChild(p) }; this.refreshPawnNumber = function(a) { q.text = "x" + a }; this.refreshTime = function(a) { p.text = a }; this.active = function(a) { a ? (createjs.Tween.get(k).to({ alpha: 0 }, 750, createjs.Ease.cubicOut).to({ alpha: 1 }, 750, createjs.Ease.cubicIn).call(function() { m.active(a) }), createjs.Tween.get(e).to({ alpha: 1 }, 750, createjs.Ease.cubicOut).to({ alpha: 0 }, 750, createjs.Ease.cubicIn)) : (k.alpha = 1, e.alpha = 0, createjs.Tween.removeAllTweens()) }; this.unload = function() { d.removeChild(g) }; this.setBgVisible = function(a) { k.visible = a }; this.setPanelVisible = function(a) { g.visible = a }; this.setPawn = function(a) { h.gotoAndStop(a) }; var m = this; this._init(a, c, b, d) } function CHelpPanel() { var a, c, b, d; this._init = function() { b = new createjs.Container; var g = this; c = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); b.addChild(c); var e = { images: [s_oSpriteLibrary.getSprite("pawn")], frames: { width: PAWN_SIZE, height: PAWN_SIZE, regX: PAWN_SIZE / 2, regY: PAWN_SIZE / 2 }, animations: { black: [0], white: [1] } }; e = new createjs.SpriteSheet(e); a = []; for (var f = 0; 4 > f; f++) a[f] = createSprite(e, f % 2, PAWN_SIZE / 2, PAWN_SIZE / 2, PAWN_SIZE, PAWN_SIZE), a[f].stop(), 2 > f ? (a[f].y = 850, a[f].x = 0 === f % 2 ? CANVAS_WIDTH / 2 + 50 : CANVAS_WIDTH / 2 - 50) : (a[f].y = 950, a[f].x = 0 === f % 2 ? CANVAS_WIDTH / 2 - 50 : CANVAS_WIDTH / 2 + 50); e = 700; f = 180; var p = CANVAS_WIDTH / 2, h = CANVAS_HEIGHT / 2 - 270; new CTLText(b, p - e / 2, h - f / 2, e, f, 40, "center", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_HELP1, !0, !0, !0, !1); p = CANVAS_WIDTH / 2; h = CANVAS_HEIGHT / 2 + 160; e = 700; f = 180; new CTLText(b, p - e / 2, h - f / 2, e, f, 40, "center", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_HELP2, !0, !0, !0, !1); b.addChild(a[0], a[1], a[2], a[3]); b.alpha = 0; s_oStage.addChild(b); createjs.Tween.get(b).to({ alpha: 1 }, 700); d = b.on("pressup", function() { g._onExitHelp() }) }; this.unload = function() { s_oStage.removeChild(b); b.off("pressup", d) }; this._onExitHelp = function() { g.unload(); s_oGame._onExitHelp() }; var g = this; this._init() } function CAlertPanel(a, c, b) { var d, g, k, e; this._init = function(a, c) { s_oGame.pauseGame(!0); d = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); s_oStage.addChild(d); if (b === ALERT_TYPE_NOMOVES) { var f = s_oSpriteLibrary.getSprite("pawn"); f = new createjs.SpriteSheet({ images: [f], frames: { width: PAWN_SIZE, height: PAWN_SIZE, regX: PAWN_SIZE / 2, regY: PAWN_SIZE / 2 }, animations: { black: [0], white: [1] } }); e = createSprite(f, c, PAWN_SIZE / 2, PAWN_SIZE / 2, PAWN_SIZE, PAWN_SIZE); e.stop(); e.x = CANVAS_WIDTH / 2; e.y = 800; s_oStage.addChild(e) } f = s_oSpriteLibrary.getSprite("but_exit"); g = new CGfxButton(993, 640, f, s_oStage); g.addEventListener(ON_MOUSE_UP, this._onExit, this); k = new createjs.Text(a, "80px " + PRIMARY_FONT, "#ffffff"); k.x = CANVAS_WIDTH / 2; k.y = CANVAS_HEIGHT / 2; k.textAlign = "center"; k.textBaseline = "midlle"; k.lineWidth = 600; s_oStage.addChild(k) }; this.unload = function() { g.unload(); s_oStage.removeChild(d); s_oStage.removeChild(k); s_oStage.removeChild(e); s_oGame.pauseGame(!1) }; this._onExit = function() { this.unload(); b === ALERT_TYPE_NOMOVES ? s_oGame.changeTurn() : s_oGame.gameOver() }; this._init(a, c) } function CThinking() { var a, c, b, d, g, k, e; this._init = function() { a = !0; c = 0; b = new createjs.Container; var f = (new createjs.Graphics).beginFill("rgba(0,0,0,0.01)").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k = new createjs.Shape(f); e = k.on("click", function() {}); d = new createjs.Text(TEXT_THINKING, "60px " + PRIMARY_FONT, "#ffffff"); d.x = .5 * CANVAS_WIDTH; d.y = .5 * CANVAS_HEIGHT - 100; d.textAlign = "center"; d.textBaseline = "alphabetic"; d.lineWidth = 800; g = new createjs.Text("", "180px " + PRIMARY_FONT, "#ffffff"); g.x = .5 * CANVAS_WIDTH - 76; g.y = .5 * CANVAS_HEIGHT - 50; g.textAlign = "left"; g.textBaseline = "alphabetic"; g.lineWidth = 800; b.addChild(k, d, g); s_oStage.addChild(b) }; this.unload = function() { a = !1; k.off("click", e); s_oStage.removeChild(b) }; this.update = function() { a && (c += s_iTimeElaps, 0 <= c && c < TIME_LOOP_WAIT / 4 ? g.text = "" : c >= TIME_LOOP_WAIT / 4 && c < 2 * TIME_LOOP_WAIT / 4 ? g.text = "." : c >= 2 * TIME_LOOP_WAIT / 4 && c < 3 * TIME_LOOP_WAIT / 4 ? g.text = ".." : c >= 3 * TIME_LOOP_WAIT / 4 && c < TIME_LOOP_WAIT ? g.text = "..." : c = 0) }; this._init() } function CConfigPanel() { var a, c = null, b, d, g, k; this._init = function() { s_oGame.pauseGame(!0); a = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); a.on("mousedown", function() {}); s_oStage.addChild(a); var e = s_oSpriteLibrary.getSprite("but_exit"); d = new CGfxButton(993, 640, e, s_oStage); d.addEventListener(ON_MOUSE_UP, this._onExit, this); !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (e = s_oSpriteLibrary.getSprite("audio_icon_big"), c = new CToggle(350, 860, e, s_bAudioActive, s_oStage), c.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this), e = 190, b = new CTLText(s_oStage, 460, 860 - e / 2, 550, e, 60, "left", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_AUDIO, !0, !0, !0, !1), e = s_oSpriteLibrary.getSprite("but_flip"), g = new CToggle(350, 1130, e, s_bShowFlip, s_oStage), g.addEventListener(ON_MOUSE_UP, this._onShowNumFlip, this), e = 190, k = new CTLText(s_oStage, 460, 1130 - e / 2, 550, e, 60, "left", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_COUNT, !0, !0, !0, !1)) : (e = s_oSpriteLibrary.getSprite("but_flip"), g = new CToggle(350, 860, e, s_bShowFlip, s_oStage), g.addEventListener(ON_MOUSE_UP, this._onShowNumFlip, this), e = 190, k = new CTLText(s_oStage, 460, 860 - e / 2, 550, e, 60, "left", "#fff", PRIMARY_FONT, 1, 2, 2, TEXT_COUNT, !0, !0, !0, !1)) }; this.unload = function() { s_oStage.removeChild(k.getText()); s_oStage.removeChild(a); d.unload(); g.unload(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) s_oStage.removeChild(b.getText()), c.unload(); s_oGame.pauseGame(!1); a.removeAllEventListeners() }; this._onExit = function() { this.unload() }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onShowNumFlip = function() { s_bShowFlip = !s_bShowFlip; s_oGame.setShowNumFlip() }; this._init() } function CEndPanel(a) { var c, b, d, g, k, e; this._init = function(a) { s_oGame.pauseGame(!0); c = createBitmap(a); c.x = 0; c.y = 0; e = new createjs.Text("", "60px " + PRIMARY_FONT, "#ffffff"); e.x = CANVAS_WIDTH / 2; e.y = CANVAS_HEIGHT / 2 + 200; e.textAlign = "center"; e.textBaseline = "alphabetic"; e.lineWidth = 500; b = new createjs.Container; b.alpha = 0; b.visible = !1; b.addChild(c, e); d = new CInfoTurn(CANVAS_WIDTH / 2, 820, PAWN_BLACK, b); d.setBgVisible(!1); g = new CInfoTurn(CANVAS_WIDTH / 2, 670, PAWN_BLACK, b); g.setBgVisible(!1); g.setPawn(PAWN_WHITE); s_oStage.addChild(b) }; this.unload = function() { b.off("mousedown", k) }; this._initListener = function() { k = b.on("mousedown", this._onExit) }; this.show = function(a, c, h, k) { d.refreshTime(formatTime(h)); g.refreshTime(formatTime(k)); d.refreshPawnNumber(a); g.refreshPawnNumber(c); a > c ? (playSound("win", 1, !1), e.text = TEXT_BLACK + " " + TEXT_GAMEOVER) : a < c ? (s_iGameType === MODE_COMPUTER ? playSound("game_over", 1, !1) : playSound("win", 1, !1), e.text = TEXT_WHITE + " " + TEXT_GAMEOVER) : (playSound("game_over", 1, !1), e.text = TEXT_DRAW); b.visible = !0; var f = this; createjs.Tween.get(b).to({ alpha: 1 }, 500).call(function() { f._initListener() }); $(s_oMain).trigger("save_score", [a, c, h, k, s_iGameType, s_iDifficulty]); $(s_oMain).trigger("share_event", [a, c, s_iGameType]) }; this._onExit = function() { b.off("mousedown", k); d.unload(); g.unload(); s_oStage.removeChild(b); $(s_oMain).trigger("end_session"); $(s_oMain).trigger("show_interlevel_ad"); s_oGame.onExit() }; this._init(a); return this } function CCell(a, c, b, d, g, k) { var e, f, p, h = 0, q, m, r, w, v, n, x; this._init = function(a, b, c, d, g, k) { e = c; f = d; p = g; m = new createjs.Container; m.x = a; m.y = b; k.addChild(m); a = { images: [s_oSpriteLibrary.getSprite("pawn")], frames: { width: PAWN_SIZE, height: PAWN_SIZE, regX: PAWN_SIZE / 2, regY: PAWN_SIZE / 2 }, animations: { black: [0], white: [1] } }; a = new createjs.SpriteSheet(a); r = createSprite(a, c, PAWN_SIZE / 2, PAWN_SIZE / 2, PAWN_SIZE, PAWN_SIZE); r.stop(); m.addChild(r); v = new createjs.Shape; v.graphics.setStrokeStyle(8); v.graphics.beginStroke("rgba(255,255,255,1)").drawCircle(0, 0, 35); v.visible = !1; m.addChild(v); n = new createjs.Text(h, "50px " + PRIMARY_FONT, "#ffffff"); n.textAlign = "center"; n.textBaseline = "middle"; n.visible = !1; m.addChild(n); w = new createjs.Shape; w.graphics.beginFill("rgba(158,0,0,0.01)").drawRect(-CELL_LENGTH / 2, -CELL_LENGTH / 2, CELL_LENGTH, CELL_LENGTH); x = w.on("mousedown", this._onCellClick); w.visible = !1; m.addChild(w) }; this.unload = function() { k.removeChild(m); w.off("mousedown", x) }; this.setClickableArea = function(a, b, c) { w.visible = a; n.text = h; c === PAWN_WHITE ? (n.color = "white", v.graphics.beginStroke("rgba(255,255,255,1)").drawCircle(0, 0, 35)) : (n.color = "black", v.graphics.beginStroke("rgba(0,0,0,1)").drawCircle(0, 0, 35)); b ? (v.visible = a, n.visible = a, m.cursor = "pointer") : (v.visible = !1, n.visible = !1, m.cursor = null) }; this.setColor = function(a) { e === PAWN_NULL && (r.gotoAndStop(a), e = a) }; this.reversi = function() { e === PAWN_WHITE ? (e = PAWN_BLACK, createjs.Tween.get(m).to({ scaleX: .1 }, 200).call(function() { r.gotoAndStop(PAWN_BLACK) }).to({ scaleX: 1 }, 200).call(function() { s_oGame.onFlipsEnd() })) : (e = PAWN_WHITE, createjs.Tween.get(m).to({ scaleX: .1 }, 200).call(function() { r.gotoAndStop(PAWN_WHITE) }).to({ scaleX: 1 }, 200).call(function() { s_oGame.onFlipsEnd() })) }; this._onCellClick = function() { s_oGame.cellClicked(f, p, h) }; this.getType = function() { return e }; this.setNumFlips = function(a) { h = a }; this.getNumFlips = function() { return h }; this.setWeight = function(a) { q = a }; this.getWeight = function() { return q }; this._init(a, c, b, d, g, k) } function CCreditsPanel() { var a, c, b, d, g, k, e; this._init = function() { k = new createjs.Container; s_oStage.addChild(k); var f = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); k.addChild(f); d = new createjs.Shape; d.graphics.beginFill("rgba(0,0,0,0.7)").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k.addChild(d); f = s_oSpriteLibrary.getSprite("msg_box"); c = createBitmap(f); c.x = CANVAS_WIDTH / 2; c.y = CANVAS_HEIGHT / 2; c.regX = f.width / 2; c.regY = f.height / 2; k.addChild(c); g = new createjs.Shape; g.graphics.beginFill("#0f0f0f").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); g.alpha = .01; e = g.on("click", this._onLogoButRelease); k.addChild(g); f = s_oSpriteLibrary.getSprite("but_exit"); a = CANVAS_WIDTH / 2 + 340; b = new CGfxButton(a, 650, f, k); b.addEventListener(ON_MOUSE_UP, this.unload, this); f = 600; var p = 60, h = CANVAS_WIDTH / 2; new CTLText(k, h - f / 2, 860 - p / 2, f, p, 46, "center", "#fff", "Arial", 1, 2, 2, TEXT_CREDITS_DEVELOPED, !0, !0, !0, !1); f = s_oSpriteLibrary.getSprite("logo_credits"); p = createBitmap(f); p.regX = f.width / 2; p.regY = f.height / 2; p.x = CANVAS_WIDTH / 2; p.y = 950; k.addChild(p); f = 600; p = 60; h = CANVAS_WIDTH / 2; new CTLText(k, h - f / 2, 1040 - p / 2, f, p, 44, "center", "#fff", "Arial", 1, 2, 2, "www.codethislab.com", !0, !0, !0, !1) }; this.unload = function() { g.off("click", e); b.unload(); b = null; s_oStage.removeChild(k) }; this._onLogoButRelease = function() { window.open("http://www.codethislab.com/index.php?&l=en") }; this._init() } function CAreYouSurePanel(a) { var c, b, d, g, k, e, f; this._init = function(a) { k = new createjs.Shape; k.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k.alpha = 0; f = k.on("mousedown", function() {}); s_oStage.addChild(k); e = new createjs.Container; s_oStage.addChild(e); a = s_oSpriteLibrary.getSprite("msg_box"); var h = createBitmap(a); h.regX = a.width / 2; h.regY = a.height / 2; e.addChild(h); e.x = CANVAS_WIDTH / 2; e.y = CANVAS_HEIGHT / 2; c = new createjs.Text(TEXT_ARE_SURE, " 100px " + PRIMARY_FONT, "#000000"); c.y = -220; c.textAlign = "center"; c.textBaseline = "middle"; c.lineWidth = 600; c.outline = 5; b = new createjs.Text(TEXT_ARE_SURE, " 100px " + PRIMARY_FONT, "#ffffff"); b.y = c.y; b.textAlign = "center"; b.textBaseline = "middle"; b.lineWidth = 600; e.addChild(b); d = new CGfxButton(150, 150, s_oSpriteLibrary.getSprite("but_yes"), e); d.addEventListener(ON_MOUSE_UP, this._onButYes, this); g = new CGfxButton(-150, 150, s_oSpriteLibrary.getSprite("but_no"), e); g.addEventListener(ON_MOUSE_UP, this._onButNo, this); g.pulseAnimation() }; this._onButYes = function() { p.unload(); a() }; this._onButNo = function() { p.unload() }; this.changeMessage = function(a, d) { c.text = a; b.text = a; d && (c.font = " " + d + "px " + PRIMARY_FONT, b.font = " " + d + "px " + PRIMARY_FONT) }; this.unload = function() { g.unload(); d.unload(); s_oStage.removeChild(k); s_oStage.removeChild(e); k.off("mousedown", f) }; var p = this; this._init(a) } 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, c, b, d) { null !== this._oText && (this._oText.shadow = new createjs.Shadow(a, c, b, d)) }, setColor: function(a) { this._oText.color = a }, setAlpha: function(a) { this._oText.alpha = a }, setY: function(a) { this._y = this._oText.y = 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, b, d, g, k, e, f, p, h, q, m, r, w, v, n, x) { this._oContainer = a; this._x = c; this._y = b; this._iWidth = d; this._iHeight = g; this._bMultiline = n; this._iFontSize = k; this._szAlign = e; this._szColor = f; this._szFont = p; this._iPaddingH = q; this._iPaddingV = m; this._bVerticalAlign = v; this._bFitText = w; this._bDebug = x; this._oDebugShape = null; this._fLineHeightFactor = h; this._oText = null; r && this.__createText(r) } 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("."), b = c.length; 2 < b && (a = c[b - 2] + "." + c[b - 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 (b) { c = !0 } return { topFrame: a, err: c } }, getBestPageUrl = function(a) { var c = a.topFrame, b = ""; if (a.err) try { try { b = window.top.location.href } catch (g) { var d = window.location.ancestorOrigins; b = d[d.length - 1] } } catch (g) { b = c.document.referrer } else b = c.location.href; return b }, 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)], b = 0; b < c.length; b++) if (c[b] === a) return !0; return !1 };
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генераци� �траницы: 0 |
proxy
|
phpinfo
|
�а�тройка