Ce script ne devrait pas être installé directement. C'est une librairie créée pour d'autres scripts. Elle doit être inclus avec la commande // @require https://update.greasyfork.org/scripts/36288/236649/Hey.js
this.msgpack || (function(globalScope) {
globalScope.msgpack = {
pack: msgpackpack, // msgpack.pack(data:Mix,
// toString:Boolean = false):ByteArray/ByteString/false
// [1][mix to String] msgpack.pack({}, true) -> "..."
// [2][mix to ByteArray] msgpack.pack({}) -> [...]
unpack: msgpackunpack, // msgpack.unpack(data:BinaryString/ByteArray):Mix
// [1][String to mix] msgpack.unpack("...") -> {}
// [2][ByteArray to mix] msgpack.unpack([...]) -> {}
worker: "msgpack.js", // msgpack.worker - WebWorkers script filename
upload: msgpackupload, // msgpack.upload(url:String, option:Hash, callback:Function)
download: msgpackdownload // msgpack.download(url:String, option:Hash, callback:Function)
};
var _ie = /MSIE/.test(navigator.userAgent),
_bin2num = {}, // BinaryStringToNumber { "\00": 0, ... "\ff": 255 }
_num2bin = {}, // NumberToBinaryString { 0: "\00", ... 255: "\ff" }
_num2b64 = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"abcdefghijklmnopqrstuvwxyz0123456789+/").split(""),
_buf = [], // decode buffer
_idx = 0, // decode buffer[index]
_error = 0, // msgpack.pack() error code. 1 = CYCLIC_REFERENCE_ERROR
_isArray = Array.isArray || (function(mix) {
return Object.prototype.toString.call(mix) === "[object Array]";
}),
_toString = String.fromCharCode, // CharCode/ByteArray to String
_MAX_DEPTH = 512;
// for WebWorkers Code Block
self.importScripts && (onmessage = function(event) {
if (event.data.method === "pack") {
postMessage(base64encode(msgpackpack(event.data.data)));
} else {
postMessage(msgpackunpack(event.data.data));
}
});
// msgpack.pack
function msgpackpack(data, // @param Mix:
toString) { // @param Boolean(= false):
// @return ByteArray/BinaryString/false:
// false is error return
// [1][mix to String] msgpack.pack({}, true) -> "..."
// [2][mix to ByteArray] msgpack.pack({}) -> [...]
_error = 0;
var byteArray = encode([], data, 0);
return _error ? false
: toString ? byteArrayToByteString(byteArray)
: byteArray;
}
// msgpack.unpack
function msgpackunpack(data) { // @param BinaryString/ByteArray:
// @return Mix/undefined:
// undefined is error return
// [1][String to mix] msgpack.unpack("...") -> {}
// [2][ByteArray to mix] msgpack.unpack([...]) -> {}
_buf = typeof data === "string" ? toByteArray(data) : data;
_idx = -1;
return decode(); // mix or undefined
}
// inner - encoder
function encode(rv, // @param ByteArray: result
mix, // @param Mix: source data
depth) { // @param Number: depth
var size, i, iz, c, pos, // for UTF8.encode, Array.encode, Hash.encode
high, low, sign, exp, frac; // for IEEE754
if (mix == null) { // null or undefined -> 0xc0 ( null )
rv.push(0xc0);
} else if (mix === false) { // false -> 0xc2 ( false )
rv.push(0xc2);
} else if (mix === true) { // true -> 0xc3 ( true )
rv.push(0xc3);
} else {
switch (typeof mix) {
case "number":
if (mix !== mix) { // isNaN
rv.push(0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff); // quiet NaN
} else if (mix === Infinity) {
rv.push(0xcb, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); // positive infinity
} else if (Math.floor(mix) === mix) { // int or uint
if (mix < 0) {
// int
if (mix >= -32) { // negative fixnum
rv.push(0xe0 + mix + 32);
} else if (mix > -0x80) {
rv.push(0xd0, mix + 0x100);
} else if (mix > -0x8000) {
mix += 0x10000;
rv.push(0xd1, mix >> 8, mix & 0xff);
} else if (mix > -0x80000000) {
mix += 0x100000000;
rv.push(0xd2, mix >>> 24, (mix >> 16) & 0xff,
(mix >> 8) & 0xff, mix & 0xff);
} else {
high = Math.floor(mix / 0x100000000);
low = mix & 0xffffffff;
rv.push(0xd3, (high >> 24) & 0xff, (high >> 16) & 0xff,
(high >> 8) & 0xff, high & 0xff,
(low >> 24) & 0xff, (low >> 16) & 0xff,
(low >> 8) & 0xff, low & 0xff);
}
} else {
// uint
if (mix < 0x80) {
rv.push(mix); // positive fixnum
} else if (mix < 0x100) { // uint 8
rv.push(0xcc, mix);
} else if (mix < 0x10000) { // uint 16
rv.push(0xcd, mix >> 8, mix & 0xff);
} else if (mix < 0x100000000) { // uint 32
rv.push(0xce, mix >>> 24, (mix >> 16) & 0xff,
(mix >> 8) & 0xff, mix & 0xff);
} else {
high = Math.floor(mix / 0x100000000);
low = mix & 0xffffffff;
rv.push(0xcf, (high >> 24) & 0xff, (high >> 16) & 0xff,
(high >> 8) & 0xff, high & 0xff,
(low >> 24) & 0xff, (low >> 16) & 0xff,
(low >> 8) & 0xff, low & 0xff);
}
}
} else { // double
// THX!! @edvakf
// http://javascript.g.hatena.ne.jp/edvakf/20101128/1291000731
sign = mix < 0;
sign && (mix *= -1);
// add offset 1023 to ensure positive
// 0.6931471805599453 = Math.LN2;
exp = ((Math.log(mix) / 0.6931471805599453) + 1023) | 0;
// shift 52 - (exp - 1023) bits to make integer part exactly 53 bits,
// then throw away trash less than decimal point
frac = mix * Math.pow(2, 52 + 1023 - exp);
// S+-Exp(11)--++-----------------Fraction(52bits)-----------------------+
// || || |
// v+----------++--------------------------------------------------------+
// 00000000|00000000|00000000|00000000|00000000|00000000|00000000|00000000
// 6 5 55 4 4 3 2 1 8 0
// 3 6 21 8 0 2 4 6
//
// +----------high(32bits)-----------+ +----------low(32bits)------------+
// | | | |
// +---------------------------------+ +---------------------------------+
// 3 2 21 1 8 0
// 1 4 09 6
low = frac & 0xffffffff;
sign && (exp |= 0x800);
high = ((frac / 0x100000000) & 0xfffff) | (exp << 20);
rv.push(0xcb, (high >> 24) & 0xff, (high >> 16) & 0xff,
(high >> 8) & 0xff, high & 0xff,
(low >> 24) & 0xff, (low >> 16) & 0xff,
(low >> 8) & 0xff, low & 0xff);
}
break;
case "string":
// http://d.hatena.ne.jp/uupaa/20101128
iz = mix.length;
pos = rv.length; // keep rewrite position
rv.push(0); // placeholder
// utf8.encode
for (i = 0; i < iz; ++i) {
c = mix.charCodeAt(i);
if (c < 0x80) { // ASCII(0x00 ~ 0x7f)
rv.push(c & 0x7f);
} else if (c < 0x0800) {
rv.push(((c >>> 6) & 0x1f) | 0xc0, (c & 0x3f) | 0x80);
} else if (c < 0x10000) {
rv.push(((c >>> 12) & 0x0f) | 0xe0,
((c >>> 6) & 0x3f) | 0x80, (c & 0x3f) | 0x80);
}
}
size = rv.length - pos - 1;
if (size < 32) {
rv[pos] = 0xa0 + size; // rewrite
} else if (size < 0x10000) { // 16
rv.splice(pos, 1, 0xda, size >> 8, size & 0xff);
} else if (size < 0x100000000) { // 32
rv.splice(pos, 1, 0xdb,
size >>> 24, (size >> 16) & 0xff,
(size >> 8) & 0xff, size & 0xff);
}
break;
default: // array or hash
if (++depth >= _MAX_DEPTH) {
_error = 1; // CYCLIC_REFERENCE_ERROR
return rv = []; // clear
}
if (_isArray(mix)) {
size = mix.length;
if (size < 16) {
rv.push(0x90 + size);
} else if (size < 0x10000) { // 16
rv.push(0xdc, size >> 8, size & 0xff);
} else if (size < 0x100000000) { // 32
rv.push(0xdd, size >>> 24, (size >> 16) & 0xff,
(size >> 8) & 0xff, size & 0xff);
}
for (i = 0; i < size; ++i) {
encode(rv, mix[i], depth);
}
} else { // hash
// http://d.hatena.ne.jp/uupaa/20101129
pos = rv.length; // keep rewrite position
rv.push(0); // placeholder
size = 0;
for (i in mix) {
++size;
encode(rv, i, depth);
encode(rv, mix[i], depth);
}
if (size < 16) {
rv[pos] = 0x80 + size; // rewrite
} else if (size < 0x10000) { // 16
rv.splice(pos, 1, 0xde, size >> 8, size & 0xff);
} else if (size < 0x100000000) { // 32
rv.splice(pos, 1, 0xdf,
size >>> 24, (size >> 16) & 0xff,
(size >> 8) & 0xff, size & 0xff);
}
}
}
}
return rv;
}
// inner - decoder
function decode() { // @return Mix:
var size, i, iz, c, num = 0,
sign, exp, frac, ary, hash,
buf = _buf, type = buf[++_idx];
if (type >= 0xe0) { // Negative FixNum (111x xxxx) (-32 ~ -1)
return type - 0x100;
}
if (type < 0xc0) {
if (type < 0x80) { // Positive FixNum (0xxx xxxx) (0 ~ 127)
return type;
}
if (type < 0x90) { // FixMap (1000 xxxx)
num = type - 0x80;
type = 0x80;
} else if (type < 0xa0) { // FixArray (1001 xxxx)
num = type - 0x90;
type = 0x90;
} else { // if (type < 0xc0) { // FixRaw (101x xxxx)
num = type - 0xa0;
type = 0xa0;
}
}
switch (type) {
case 0xc0: return null;
case 0xc2: return false;
case 0xc3: return true;
case 0xca: // float
num = buf[++_idx] * 0x1000000 + (buf[++_idx] << 16) +
(buf[++_idx] << 8) + buf[++_idx];
sign = num & 0x80000000; // 1bit
exp = (num >> 23) & 0xff; // 8bits
frac = num & 0x7fffff; // 23bits
if (!num || num === 0x80000000) { // 0.0 or -0.0
return 0;
}
if (exp === 0xff) { // NaN or Infinity
return frac ? NaN : Infinity;
}
return (sign ? -1 : 1) *
(frac | 0x800000) * Math.pow(2, exp - 127 - 23); // 127: bias
case 0xcb: // double
num = buf[++_idx] * 0x1000000 + (buf[++_idx] << 16) +
(buf[++_idx] << 8) + buf[++_idx];
sign = num & 0x80000000; // 1bit
exp = (num >> 20) & 0x7ff; // 11bits
frac = num & 0xfffff; // 52bits - 32bits (high word)
if (!num || num === 0x80000000) { // 0.0 or -0.0
_idx += 4;
return 0;
}
if (exp === 0x7ff) { // NaN or Infinity
_idx += 4;
return frac ? NaN : Infinity;
}
num = buf[++_idx] * 0x1000000 + (buf[++_idx] << 16) +
(buf[++_idx] << 8) + buf[++_idx];
return (sign ? -1 : 1) *
((frac | 0x100000) * Math.pow(2, exp - 1023 - 20) // 1023: bias
+ num * Math.pow(2, exp - 1023 - 52));
// 0xcf: uint64, 0xce: uint32, 0xcd: uint16
case 0xcf: num = buf[++_idx] * 0x1000000 + (buf[++_idx] << 16) +
(buf[++_idx] << 8) + buf[++_idx];
return num * 0x100000000 +
buf[++_idx] * 0x1000000 + (buf[++_idx] << 16) +
(buf[++_idx] << 8) + buf[++_idx];
case 0xce: num += buf[++_idx] * 0x1000000 + (buf[++_idx] << 16);
case 0xcd: num += buf[++_idx] << 8;
case 0xcc: return num + buf[++_idx];
// 0xd3: int64, 0xd2: int32, 0xd1: int16, 0xd0: int8
case 0xd3: num = buf[++_idx];
if (num & 0x80) { // sign -> avoid overflow
return ((num ^ 0xff) * 0x100000000000000 +
(buf[++_idx] ^ 0xff) * 0x1000000000000 +
(buf[++_idx] ^ 0xff) * 0x10000000000 +
(buf[++_idx] ^ 0xff) * 0x100000000 +
(buf[++_idx] ^ 0xff) * 0x1000000 +
(buf[++_idx] ^ 0xff) * 0x10000 +
(buf[++_idx] ^ 0xff) * 0x100 +
(buf[++_idx] ^ 0xff) + 1) * -1;
}
return num * 0x100000000000000 +
buf[++_idx] * 0x1000000000000 +
buf[++_idx] * 0x10000000000 +
buf[++_idx] * 0x100000000 +
buf[++_idx] * 0x1000000 +
buf[++_idx] * 0x10000 +
buf[++_idx] * 0x100 +
buf[++_idx];
case 0xd2: num = buf[++_idx] * 0x1000000 + (buf[++_idx] << 16) +
(buf[++_idx] << 8) + buf[++_idx];
return num < 0x80000000 ? num : num - 0x100000000; // 0x80000000 * 2
case 0xd1: num = (buf[++_idx] << 8) + buf[++_idx];
return num < 0x8000 ? num : num - 0x10000; // 0x8000 * 2
case 0xd0: num = buf[++_idx];
return num < 0x80 ? num : num - 0x100; // 0x80 * 2
// 0xdb: raw32, 0xda: raw16, 0xa0: raw ( string )
case 0xdb: num += buf[++_idx] * 0x1000000 + (buf[++_idx] << 16);
case 0xda: num += (buf[++_idx] << 8) + buf[++_idx];
case 0xa0: // utf8.decode
for (ary = [], i = _idx, iz = i + num; i < iz; ) {
c = buf[++i]; // lead byte
ary.push(c < 0x80 ? c : // ASCII(0x00 ~ 0x7f)
c < 0xe0 ? ((c & 0x1f) << 6 | (buf[++i] & 0x3f)) :
((c & 0x0f) << 12 | (buf[++i] & 0x3f) << 6
| (buf[++i] & 0x3f)));
}
_idx = i;
return ary.length < 10240 ? _toString.apply(null, ary)
: byteArrayToByteString(ary);
// 0xdf: map32, 0xde: map16, 0x80: map
case 0xdf: num += buf[++_idx] * 0x1000000 + (buf[++_idx] << 16);
case 0xde: num += (buf[++_idx] << 8) + buf[++_idx];
case 0x80: hash = {};
while (num--) {
// make key/value pair
size = buf[++_idx] - 0xa0;
for (ary = [], i = _idx, iz = i + size; i < iz; ) {
c = buf[++i]; // lead byte
ary.push(c < 0x80 ? c : // ASCII(0x00 ~ 0x7f)
c < 0xe0 ? ((c & 0x1f) << 6 | (buf[++i] & 0x3f)) :
((c & 0x0f) << 12 | (buf[++i] & 0x3f) << 6
| (buf[++i] & 0x3f)));
}
_idx = i;
hash[_toString.apply(null, ary)] = decode();
}
return hash;
// 0xdd: array32, 0xdc: array16, 0x90: array
case 0xdd: num += buf[++_idx] * 0x1000000 + (buf[++_idx] << 16);
case 0xdc: num += (buf[++_idx] << 8) + buf[++_idx];
case 0x90: ary = [];
while (num--) {
ary.push(decode());
}
return ary;
}
return;
}
// inner - byteArray To ByteString
function byteArrayToByteString(byteArray) { // @param ByteArray
// @return String
// http://d.hatena.ne.jp/uupaa/20101128
try {
return _toString.apply(this, byteArray); // toString
} catch(err) {
; // avoid "Maximum call stack size exceeded"
}
var rv = [], i = 0, iz = byteArray.length, num2bin = _num2bin;
for (; i < iz; ++i) {
rv[i] = num2bin[byteArray[i]];
}
return rv.join("");
}
// msgpack.download - load from server
function msgpackdownload(url, // @param String:
option, // @param Hash: { worker, timeout, before, after }
// option.worker - Boolean(= false): true is use WebWorkers
// option.timeout - Number(= 10): timeout sec
// option.before - Function: before(xhr, option)
// option.after - Function: after(xhr, option, { status, ok })
callback) { // @param Function: callback(data, option, { status, ok })
// data - Mix/null:
// option - Hash:
// status - Number: HTTP status code
// ok - Boolean:
option.method = "GET";
option.binary = true;
ajax(url, option, callback);
}
// msgpack.upload - save to server
function msgpackupload(url, // @param String:
option, // @param Hash: { data, worker, timeout, before, after }
// option.data - Mix:
// option.worker - Boolean(= false): true is use WebWorkers
// option.timeout - Number(= 10): timeout sec
// option.before - Function: before(xhr, option)
// option.after - Function: after(xhr, option, { status, ok })
callback) { // @param Function: callback(data, option, { status, ok })
// data - String: responseText
// option - Hash:
// status - Number: HTTP status code
// ok - Boolean:
option.method = "PUT";
option.binary = true;
if (option.worker && globalScope.Worker) {
var worker = new Worker(msgpack.worker);
worker.onmessage = function(event) {
option.data = event.data;
ajax(url, option, callback);
};
worker.postMessage({ method: "pack", data: option.data });
} else {
// pack and base64 encode
option.data = base64encode(msgpackpack(option.data));
ajax(url, option, callback);
}
}
// inner -
function ajax(url, // @param String:
option, // @param Hash: { data, ifmod, method, timeout,
// header, binary, before, after, worker }
// option.data - Mix: upload data
// option.ifmod - Boolean: true is "If-Modified-Since" header
// option.method - String: "GET", "POST", "PUT"
// option.timeout - Number(= 10): timeout sec
// option.header - Hash(= {}): { key: "value", ... }
// option.binary - Boolean(= false): true is binary data
// option.before - Function: before(xhr, option)
// option.after - Function: after(xhr, option, { status, ok })
// option.worker - Boolean(= false): true is use WebWorkers
callback) { // @param Function: callback(data, option, { status, ok })
// data - String/Mix/null:
// option - Hash:
// status - Number: HTTP status code
// ok - Boolean:
function readyStateChange() {
if (xhr.readyState === 4) {
var data, status = xhr.status, worker, byteArray,
rv = { status: status, ok: status >= 200 && status < 300 };
if (!run++) {
if (method === "PUT") {
data = rv.ok ? xhr.responseText : "";
} else {
if (rv.ok) {
if (option.worker && globalScope.Worker) {
worker = new Worker(msgpack.worker);
worker.onmessage = function(event) {
callback(event.data, option, rv);
};
worker.postMessage({ method: "unpack",
data: xhr.responseText });
gc();
return;
} else {
byteArray = _ie ? toByteArrayIE(xhr)
: toByteArray(xhr.responseText);
data = msgpackunpack(byteArray);
}
}
}
after && after(xhr, option, rv);
callback(data, option, rv);
gc();
}
}
}
function ng(abort, status) {
if (!run++) {
var rv = { status: status || 400, ok: false };
after && after(xhr, option, rv);
callback(null, option, rv);
gc(abort);
}
}
function gc(abort) {
abort && xhr && xhr.abort && xhr.abort();
watchdog && (clearTimeout(watchdog), watchdog = 0);
xhr = null;
globalScope.addEventListener &&
globalScope.removeEventListener("beforeunload", ng, false);
}
var watchdog = 0,
method = option.method || "GET",
header = option.header || {},
before = option.before,
after = option.after,
data = option.data || null,
xhr = globalScope.XMLHttpRequest ? new XMLHttpRequest() :
globalScope.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") :
null,
run = 0, i,
overrideMimeType = "overrideMimeType",
setRequestHeader = "setRequestHeader",
getbinary = method === "GET" && option.binary;
try {
xhr.onreadystatechange = readyStateChange;
xhr.open(method, url, true); // ASync
before && before(xhr, option);
getbinary && xhr[overrideMimeType] &&
xhr[overrideMimeType]("text/plain; charset=x-user-defined");
data &&
xhr[setRequestHeader]("Content-Type",
"application/x-www-form-urlencoded");
for (i in header) {
xhr[setRequestHeader](i, header[i]);
}
globalScope.addEventListener &&
globalScope.addEventListener("beforeunload", ng, false); // 400: Bad Request
xhr.send(data);
watchdog = setTimeout(function() {
ng(1, 408); // 408: Request Time-out
}, (option.timeout || 10) * 1000);
} catch (err) {
ng(0, 400); // 400: Bad Request
}
}
// inner - BinaryString To ByteArray
function toByteArray(data) { // @param BinaryString: "\00\01"
// @return ByteArray: [0x00, 0x01]
var rv = [], bin2num = _bin2num, remain,
ary = data.split(""),
i = -1, iz;
iz = ary.length;
remain = iz % 8;
while (remain--) {
++i;
rv[i] = bin2num[ary[i]];
}
remain = iz >> 3;
while (remain--) {
rv.push(bin2num[ary[++i]], bin2num[ary[++i]],
bin2num[ary[++i]], bin2num[ary[++i]],
bin2num[ary[++i]], bin2num[ary[++i]],
bin2num[ary[++i]], bin2num[ary[++i]]);
}
return rv;
}
// inner - BinaryString to ByteArray
function toByteArrayIE(xhr) {
var rv = [], data, remain,
charCodeAt = "charCodeAt",
loop, v0, v1, v2, v3, v4, v5, v6, v7,
i = -1, iz;
iz = vblen(xhr);
data = vbstr(xhr);
loop = Math.ceil(iz / 2);
remain = loop % 8;
while (remain--) {
v0 = data[charCodeAt](++i); // 0x00,0x01 -> 0x0100
rv.push(v0 & 0xff, v0 >> 8);
}
remain = loop >> 3;
while (remain--) {
v0 = data[charCodeAt](++i);
v1 = data[charCodeAt](++i);
v2 = data[charCodeAt](++i);
v3 = data[charCodeAt](++i);
v4 = data[charCodeAt](++i);
v5 = data[charCodeAt](++i);
v6 = data[charCodeAt](++i);
v7 = data[charCodeAt](++i);
rv.push(v0 & 0xff, v0 >> 8, v1 & 0xff, v1 >> 8,
v2 & 0xff, v2 >> 8, v3 & 0xff, v3 >> 8,
v4 & 0xff, v4 >> 8, v5 & 0xff, v5 >> 8,
v6 & 0xff, v6 >> 8, v7 & 0xff, v7 >> 8);
}
iz % 2 && rv.pop();
return rv;
}
// inner - base64.encode
function base64encode(data) { // @param ByteArray:
// @return Base64String:
var rv = [],
c = 0, i = -1, iz = data.length,
pad = [0, 2, 1][data.length % 3],
num2bin = _num2bin,
num2b64 = _num2b64;
if (globalScope.btoa) {
while (i < iz) {
rv.push(num2bin[data[++i]]);
}
return btoa(rv.join(""));
}
--iz;
while (i < iz) {
c = (data[++i] << 16) | (data[++i] << 8) | (data[++i]); // 24bit
rv.push(num2b64[(c >> 18) & 0x3f],
num2b64[(c >> 12) & 0x3f],
num2b64[(c >> 6) & 0x3f],
num2b64[ c & 0x3f]);
}
pad > 1 && (rv[rv.length - 2] = "=");
pad > 0 && (rv[rv.length - 1] = "=");
return rv.join("");
}
// --- init ---
(function() {
var i = 0, v;
for (; i < 0x100; ++i) {
v = _toString(i);
_bin2num[v] = i; // "\00" -> 0x00
_num2bin[i] = v; // 0 -> "\00"
}
// http://twitter.com/edvakf/statuses/15576483807
for (i = 0x80; i < 0x100; ++i) { // [Webkit][Gecko]
_bin2num[_toString(0xf700 + i)] = i; // "\f780" -> 0x80
}
})();
_ie && document.write('<script type="text/vbscript">\
Function vblen(b)vblen=LenB(b.responseBody)End Function\n\
Function vbstr(b)vbstr=CStr(b.responseBody)+chr(0)End Function</'+'script>');
})(this);// msgpac.
window.msgpack = this.msgpack;
(function() {
var _WebSocket = window._WebSocket = window.WebSocket;
var $ = window.jQuery;
var msgpack = window.msgpack;
var options = {
enableMultiCells: false,
enablePosition: false,
enableCross: false
};
// game states
var map_server = null;
var player_name = [];
var players = [];
var id_players = [];
var cells = [];
var current_cell_ids = [];
var start_x = -7000,
start_y = -7000,
end_x = 7000,
end_y = 7000,
length_x = 14000,
length_y = 14000;
var render_timer = null;
function miniMapSendRawData(data) {
if (map_server !== null && map_server.readyState === window._WebSocket.OPEN) {
var array = new Uint8Array(data);
map_server.send(array.buffer);
}
}
function miniMapConnectToServer(address, onOpen, onClose) {
try {
var ws = new window._WebSocket(address);
} catch (ex) {
onClose();
console.error(ex);
return false;
}
ws.binaryType = "arraybuffer";
ws.onopen = function() {
onOpen();
//console.log(address + ' connected');
}
ws.onmessage = function(event) {
var buffer = new Uint8Array(event.data);
var packet = msgpack.unpack(buffer);
switch(packet.type) {
case 128:
for (var i=0; i < packet.data.addition.length; ++i) {
var cell = packet.data.addition[i];
if (! miniMapIsRegisteredToken(cell.id))
{
miniMapRegisterToken(
cell.id,
miniMapCreateToken(cell.id, cell.color)
);
}
var size_n = cell.size/length_x;
miniMapUpdateToken(cell.id, (cell.x - start_x)/length_x, (cell.y - start_y)/length_y, size_n);
}
for (var i=0; i < packet.data.deletion.length; ++i) {
var id = packet.data.deletion[i];
miniMapUnregisterToken(id);
}
break;
}
}
ws.onerror = function() {
onClose();
console.error('failed to connect to map server');
}
ws.onclose = function() {
onClose();
map_server = null;
//console.log('map server disconnected');
}
map_server = ws;
}
function miniMapRender() {
var canvas = window.mini_map;
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (var id in window.mini_map_tokens) {
var token = window.mini_map_tokens[id];
var x = token.x * canvas.width;
var y = token.y * canvas.height;
var size = token.size * canvas.width;
ctx.beginPath();
ctx.arc(
x,
y,
size,
0,
2 * Math.PI,
false
);
ctx.closePath();
ctx.fillStyle = token.color;
ctx.fill();
if (id_players[id] !== undefined) {
ctx.font = size * 2 + 'px Arial';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillStyle = 'white';
ctx.fillText(id_players[id] + 1, x, y);
}
};
}
function miniMapDrawCross(x, y) {
var canvas = window.mini_map;
var ctx = canvas.getContext('2d');
ctx.lineWidth = 0.5;
ctx.beginPath();
ctx.moveTo(0, y * canvas.height);
ctx.lineTo(canvas.width, y * canvas.height);
ctx.moveTo(x * canvas.width, 0);
ctx.lineTo(x * canvas.width, canvas.height);
ctx.closePath();
ctx.strokeStyle = '#FFFFFF';
ctx.stroke();
}
function miniMapCreateToken(id, color) {
var mini_map_token = {
id: id,
color: color,
x: 0,
y: 0,
size: 0
};
return mini_map_token;
}
function miniMapRegisterToken(id, token) {
if (window.mini_map_tokens[id] === undefined) {
// window.mini_map.append(token);
window.mini_map_tokens[id] = token;
}
}
function miniMapUnregisterToken(id) {
if (window.mini_map_tokens[id] !== undefined) {
// window.mini_map_tokens[id].detach();
delete window.mini_map_tokens[id];
}
}
function miniMapIsRegisteredToken(id) {
return window.mini_map_tokens[id] !== undefined;
}
function miniMapUpdateToken(id, x, y, size) {
if (window.mini_map_tokens[id] !== undefined) {
window.mini_map_tokens[id].x = x;
window.mini_map_tokens[id].y = y;
window.mini_map_tokens[id].size = size + 0.015;
return true;
} else {
return false;
}
}
function miniMapUpdatePos(x, y) {
window.mini_map_pos.text('x: ' + x.toFixed(0) + ', y: ' + y.toFixed(0));
}
function miniMapReset() {
cells = [];
window.mini_map_tokens = [];
}
function miniMapInit() {
window.mini_map_tokens = [];
cells = [];
current_cell_ids = [];
start_x = -7000;
start_y = -7000;
end_x = 7000;
end_y = 7000;
length_x = 14000;
length_y = 14000;
// minimap dom
if ($('#mini-map-wrapper').length === 0) {
var wrapper = $('<div>').attr('id', 'mini-map-wrapper').css({
position: 'fixed',
bottom: 10,
right: 10,
width: 150,
height: 150,
// background: 'rgba(128, 128, 128, 0.58)'
background: "url('img/mini_map.png')"
});
var mini_map = $('<canvas>').attr({
id: 'mini-map',
width: 150,
height: 150
}).css({
width: '100%',
height: '100%',
position: 'relative'
});
wrapper.append(mini_map).appendTo(document.body);
window.mini_map = mini_map[0];
}
// minimap renderer
if (render_timer === null)
render_timer = setInterval(miniMapRender, 1000 / 30);
// minimap location
if ($('#mini-map-pos').length === 0) {
window.mini_map_pos = $('<div>').attr('id', 'mini-map-pos').css({
bottom: 10,
right: 10,
color: 'white',
fontSize: 15,
fontWeight: 800,
position: 'fixed'
}).appendTo(document.body);
}
// minimap party
}
// cell constructor
function Cell(id, x, y, size, color, name) {
cells[id] = this;
this.id = id;
this.color = color;
this.points = [];
this.pointsAcc = [];
this.setName(name);
}
Cell.prototype = {
id: 0,
points: null,
pointsAcc: null,
name: null,
nameCache: null,
sizeCache: null,
x: 0,
y: 0,
size: 0,
ox: 0,
oy: 0,
oSize: 0,
nx: 0,
ny: 0,
nSize: 0,
updateTime: 0,
updateCode: 0,
drawTime: 0,
destroyed: false,
isVirus: false,
isAgitated: false,
wasSimpleDrawing: true,
destroy: function() {
delete cells[this.id];
id = current_cell_ids.indexOf(this.id);
-1 != id && current_cell_ids.splice(id, 1);
this.destroyed = true;
if (map_server === null || map_server.readyState !== window._WebSocket.OPEN) {
miniMapUnregisterToken(this.id);
}
},
setName: function(name) {
this.name = name;
},
updatePos: function() {
if (map_server === null || map_server.readyState !== window._WebSocket.OPEN) {
if (options.enableMultiCells || -1 != current_cell_ids.indexOf(this.id)) {
if (! miniMapIsRegisteredToken(this.id))
{
miniMapRegisterToken(
this.id,
miniMapCreateToken(this.id, this.color)
);
}
var size_n = this.nSize/length_x;
miniMapUpdateToken(this.id, (this.nx - start_x)/length_x, (this.ny - start_y)/length_y, size_n);
}
}
}
};
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
};
function camel2cap(str) {
return str.replace(/([A-Z])/g, function(s){return ' ' + s.toLowerCase();}).capitalize();
};
// create a linked property from slave object
// whenever master[prop] update, slave[prop] update
function refer(master, slave, prop) {
Object.defineProperty(master, prop, {
get: function(){
return slave[prop];
},
set: function(val) {
slave[prop] = val;
},
enumerable: true,
configurable: true
});
};
// extract a websocket packet which contains the information of cells
function extractCellPacket(data, offset) {
////
var dataToSend = {
destroyQueue : [],
nodes : [],
nonVisibleNodes : []
};
////
var I = +new Date;
var qa = false;
var b = Math.random(), c = offset;
var size = data.getUint16(c, true);
c = c + 2;
// Nodes to be destroyed (killed)
for (var e = 0; e < size; ++e) {
var p = cells[data.getUint32(c, true)],
f = cells[data.getUint32(c + 4, true)],
c = c + 8;
p && f && (
f.destroy(),
f.ox = f.x,
f.oy = f.y,
f.oSize = f.size,
f.nx = p.x,
f.ny = p.y,
f.nSize = f.size,
f.updateTime = I,
dataToSend.destroyQueue.push(f.id));
}
// Nodes to be updated
for (e = 0; ; ) {
var d = data.getUint32(c, true);
c += 4;
if (0 == d) {
break;
}
++e;
var p = data.getInt32(c, true),
c = c + 4,
f = data.getInt32(c, true),
c = c + 4;
g = data.getInt16(c, true);
c = c + 2;
for (var h = data.getUint8(c++), m = data.getUint8(c++), q = data.getUint8(c++), h = (h << 16 | m << 8 | q).toString(16); 6 > h.length; )
h = "0" + h;
var h = "#" + h,
k = data.getUint8(c++),
m = !!(k & 1),
q = !!(k & 16);
k & 2 && (c += 4);
k & 4 && (c += 8);
k & 8 && (c += 16);
for (var n, k = ""; ; ) {
n = data.getUint16(c, true);
c += 2;
if (0 == n)
break;
k += String.fromCharCode(n)
}
n = k;
k = null;
var updated = false;
// if d in cells then modify it, otherwise create a new cell
cells.hasOwnProperty(d)
? (k = cells[d],
k.updatePos(),
k.ox = k.x,
k.oy = k.y,
k.oSize = k.size,
k.color = h,
updated = true)
: (k = new Cell(d, p, f, g, h, n),
k.pX = p,
k.pY = f);
k.isVirus = m;
k.isAgitated = q;
k.nx = p;
k.ny = f;
k.nSize = g;
k.updateCode = b;
k.updateTime = I;
n && k.setName(n);
// ignore food creation
}
// Destroy queue + nonvisible nodes
b = data.getUint32(c, true);
c += 4;
for (e = 0; e < b; e++) {
d = data.getUint32(c, true);
c += 4, k = cells[d];
null != k && k.destroy();
dataToSend.nonVisibleNodes.push(d);
}
var packet = {
type: 16,
data: dataToSend
}
miniMapSendRawData(msgpack.pack(packet));
}
// extract the type of packet and dispatch it to a corresponding extractor
function extractPacket(event) {
var c = 0;
var data = new DataView(event.data);
240 == data.getUint8(c) && (c += 5);
var opcode = data.getUint8(c);
c++;
switch (opcode) {
case 16: // cells data
extractCellPacket(data, c);
break;
case 20: // cleanup ids
current_cell_ids = [];
break;
case 32: // cell id belongs me
var id = data.getUint32(c, true);
if (current_cell_ids.indexOf(id) === -1)
current_cell_ids.push(id);
miniMapSendRawData(msgpack.pack({
type: 32,
data: id
}));
break;
case 64: // get borders
start_x = data.getFloat64(c, !0), c += 8,
start_y = data.getFloat64(c, !0), c += 8,
end_x = data.getFloat64(c, !0), c += 8,
end_y = data.getFloat64(c, !0), c += 8,
center_x = (start_x + end_x) / 2,
center_y = (start_y + end_y) / 2,
length_x = Math.abs(start_x - end_x),
length_y = Math.abs(start_y - end_y);
}
};
function extractSendPacket(data) {
var view = new DataView(data);
switch (view.getUint8(0, true)) {
case 0:
player_name = [];
for (var i=1; i < data.byteLength; i+=2) {
player_name.push(view.getUint16(i, true));
}
miniMapSendRawData(msgpack.pack({
type: 0,
data: player_name
}));
break;
}
}
// the injected point, overwriting the WebSocket constructor
window.WebSocket = function(url, protocols) {
//console.log('Listen');
if (protocols === undefined) {
protocols = [];
}
var ws = new _WebSocket(url, protocols);
refer(this, ws, 'binaryType');
refer(this, ws, 'bufferedAmount');
refer(this, ws, 'extensions');
refer(this, ws, 'protocol');
refer(this, ws, 'readyState');
refer(this, ws, 'url');
this.send = function(data){
extractSendPacket(data);
return ws.send.call(ws, data);
};
this.close = function(){
return ws.close.call(ws);
};
this.onopen = function(event){};
this.onclose = function(event){};
this.onerror = function(event){};
this.onmessage = function(event){};
ws.onopen = function(event) {
miniMapInit();
agar_server = url;
miniMapSendRawData(msgpack.pack({
type: 100,
data: {url: url, region: $('#region').val(), gamemode: $('#gamemode').val(), party: location.hash}
}));
if (this.onopen)
return this.onopen.call(ws, event);
}.bind(this);
ws.onmessage = function(event) {
extractPacket(event);
if (this.onmessage)
return this.onmessage.call(ws, event);
}.bind(this);
ws.onclose = function(event) {
if (this.onclose)
return this.onclose.call(ws, event);
}.bind(this);
ws.onerror = function(event) {
if (this.onerror)
return this.onerror.call(ws, event);
}.bind(this);
};
window.WebSocket.prototype = _WebSocket;
$(window.document).ready(function() {
miniMapInit();
});
$(window).load(function() {
var main_canvas = document.getElementById('canvas');
if (main_canvas && main_canvas.onmousemove) {
document.onmousemove = main_canvas.onmousemove;
main_canvas.onmousemove = null;
}
});
})();
(function (d, e) {
//
//alert();
var isTyping = false;
var chattxt;
function Ib() {
Ca = !0;
ab();
e("#mini-map-wrapper").hide();
setInterval(ab, 18E4);
J = Da = document.getElementById("canvas");
f = J.getContext("2d");
J.onmousedown = function (a) {
if (bb) {
var b = a.clientX - (5 + m / 5 / 2),
c = a.clientY - (5 + m / 5 / 2);
if (Math.sqrt(b * b + c * c) <= m / 5 / 2) {
aa();
K(17);
return
}
}
ja = a.clientX;
ka = a.clientY;
Ea();
aa()
};
J.onmousemove = function (a) {
ja = a.clientX;
ka = a.clientY;
Ea()
};
J.onmouseup = function () {};
/firefox/i.test(navigator.userAgent) ? document.addEventListener("DOMMouseScroll", cb, !1) : document.body.onmousewheel = cb;
J.onfocus = function () {
isTyping = false;
};
document.getElementById("chat_textbox").onblur = function () {
isTyping = false;
};
document.getElementById("chat_textbox").onfocus = function () {
isTyping = true;
};
var spacePressed = false,
qPressed = false,
wPressed = false;
function spltt()
{
//alert(isTyping);
if(isTyping != true)
{
(aa(), K(17), a = !0);
}
}
function fedvir()
{
if(isTyping != true)
{
(aa(), K(21), c = !0);
}
}
var a = !0,
b = !1,
c = !1;
d.onkeydown = function (k) {
32 != k.keyCode || a || spltt();
81 != k.keyCode || b || (K(18), b = !0);
87 != k.keyCode || c || fedvir();
27 == k.keyCode && Fa(300)
13 == k.keyCode && cht();
};
var lastChatCount = 0;
function cht(){
if (isTyping) {
isTyping = false;
document.getElementById("chat_textbox").blur();
chattxt = document.getElementById("chat_textbox").value;
/////REKLAM KORUMA/////
if (chattxt.length > 0) sendChat(chattxt);
document.getElementById("chat_textbox").value = "";
}
else {
if (!hasOverlay) {
document.getElementById("chat_textbox").focus();
isTyping = true;
}
}
lastChatCount = 0;
}
d.onkeyup = function (k) {
32 == k.keyCode && (a = !1);
87 == k.keyCode && (c = !1);
81 == k.keyCode && b && (K(19), b = !1)
};
d.onblur = function () {
K(19);
c = b = a = !1
};
d.onresize = db;
d.requestAnimationFrame(eb);
setInterval(aa, 40);
t && e("#region").val(t);
fb();
la(e("#region").val());
0 == Ga && t && L();
S = !0;
e("#overlays").show();
db();
d.location.hash && 6 <= d.location.hash.length && gb(d.location.hash);
}
function sendChat(str) {
if (Y() && (str.length < 200) && (str.length > 0)) {
var msg = P(2 + 2 * str.length);
var offset = 0;
msg.setUint8(offset++, 99);
msg.setUint8(offset++, 0); // flags (0 for now)
for (var i = 0; i < str.length; ++i) {
msg.setUint16(offset, str.charCodeAt(i), !0);
offset += 2;
}
Q(msg);
}
}
function cb( a ) {
M *= Math.pow(.9, a.wheelDelta / -120 || a.detail || 0);
if(.9>M){
M < .05 / g && (M = .05 / g)
} else{
M > .9 / g && (M = .9 / g)
}
}
function Jb() {
if (.4 > g) ba = null;
else {
for (var a = Number.POSITIVE_INFINITY, b = Number.POSITIVE_INFINITY, c = Number.NEGATIVE_INFINITY, k = Number.NEGATIVE_INFINITY, d = 0, n = 0; n < y.length; n++) {
var e = y[n];
!e.N() || e.R || 20 >= e.size * g || (d = Math.max(e.size, d), a = Math.min(e.x, a), b = Math.min(e.y, b), c = Math.max(e.x, c), k = Math.max(e.y, k))
}
ba = Kb.la({
ca: a - (d + 100),
da: b - (d + 100),
oa: c + (d + 100),
pa: k + (d + 100),
ma: 2,
na: 4
});
for (n = 0; n < y.length; n++) if (e = y[n],
e.N() && !(20 >= e.size * g)) for (a = 0; a < e.a.length; ++a) b = e.a[a].x, c = e.a[a].y, b < u - m / 2 / g || c < v - q / 2 / g || b > u + m / 2 / g || c > v + q / 2 / g || ba.m(e.a[a])
}
}
function Ea() {
ma = (ja - m / 2) / g + u;
na = (ka - q / 2) / g + v
}
function ab() {
null == oa && (oa = {}, e("#region").children().each(function () {
var a = e(this),
b = a.val();
b && (oa[b] = a.text())
}));
e.get("info.php", function (a) {
var b = {}, c;
for (c in a.regions) {
var k = c.split(":")[0];
b[k] = b[k] || 0;
b[k] += a.regions[c].numPlayers
}
for (c in b) e('#region option[value="' + c + '"]').text(oa[c] + " (" + b[c] + " players)")
},
"json")
}
function hb() {
hasOverlay = false;
e("#adsBottom").hide();
e("#overlays").hide();
e("#stats").hide();
e("#mainPanel").hide();
e("#mini-map-wrapper").show();
T = S = !1;
fb();
d.googletag && d.googletag.pubads && d.googletag.pubads().clear && d.googletag.pubads().clear(d.aa.concat(d.ab))
}
function la(a) {
a && a != t && (e("#region").val() != a && e("#region").val(a), t = d.localStorage.location = a, e(".region-message").hide(), e(".region-message." + a).show(), e(".btn-needs-server").prop("disabled", !1), Ca && L())
}
function Fa(a) {
S || T || (H = null, ib(d.aa), 1E3 > a && (x = 1), S = !0, e("#mainPanel").show(),
0 < a ? e("#overlays").fadeIn(a) : e("#overlays").show())
}
function ca(a) {
if(a ==":rainbow")
{
host = [""];
}
else if(a == ":ffa")
{
host = ["151.80.110.119:1001"];
}
else if(a == ":ffa2")
{
host = ["74.222.20.47:1002"];
}
else if(a == ":giant")
{
host = ["163.172.55.162:1003"];
}
else if(a == ":giant2")
{
host = ["163.172.55.162:1099"];
}
else if(a == ":giant13")
{
host = ["151.80.110.119:1003"];
}
else if(a == ":giantus")
{
host = ["74.222.20.47:1003"];
}
else if(a == ":giantmass")
{
host = ["151.80.108.25:1219"];
}
else if(a == ":giantmass2")
{
host = ["74.222.20.47:1222"];
}
else if(a == ":bigbox")
{
host = ["151.80.108.25:1007"];
}
else if(a == ":bigbox2")
{
host = ["163.172.105.2:1007"];
}
else if(a == ":bigboxus")
{
host = ["74.222.20.47:1008"];
}
else if(a ==":team")
{
host = ["151.80.108.25:1009"];
}
else if(a ==":teamus")
{
host = ["74.222.20.47:1010"];
}
else
{
a = ":ffa"
host = ["151.80.230.81:1001"];
}
e("#helloContainer").attr("data-gamemode", a);
U = a;
e("#gamemode").val(a);
}
function fb() {
e("#region").val() ? d.localStorage.location = e("#region").val() : d.localStorage.location && e("#region").val(d.localStorage.location);
e("#region").val() ? e("#locationKnown").append(e("#region")) : e("#locationUnknown").append(e("#region"))
}
function ib(a) {
pa && (pa = !1, setTimeout(function () {
pa = !0
}, 6E4 * jb), d.googletag && d.googletag.pubads && d.googletag.pubads().refresh && d.googletag.pubads().refresh(a))
}
function da(a) {
return d.i18n[a] || d.i18n_dict.en[a] || a
}
function kb() {
Ha("ws://"+ host);
}
function L() {
Ca && t && (e("#overlays").show(), kb())
}
function Ha(a, b) {
if (s) {
s.onopen = null;
s.onmessage = null;
s.onclose = null;
try {
s.close()
} catch (c) {}
s = null
}
var c = a;
a = c;
A = [];
h = [];
I = {};
y = [];
V = [];
w = [];
B = C = null;
O = 0;
ea = !1;
//console.log("Connecting to " + a);
a = a + '/?base=' + base;
s = new WebSocket(a);
s.binaryType = "arraybuffer";
s.onopen = function () {
var a;
//console.log("socket open");
a = P(5);
a.setUint8(0, 254);
a.setUint32(1, 5, !0);
Q(a);
a = P(5);
a.setUint8(0, 255);
a.setUint32(1, 154669603, !0);
Q(a);
mb()
};
s.onmessage = Lb;
s.onclose = Mb;
s.onerror = function () {
//console.log("socket error")
}
}
function P(a) {
return new DataView(new ArrayBuffer(a))
}
function Q(a) {
s.send(a.buffer)
}
function Mb() {
ea && (qa = 500);
//console.log("socket close");
setTimeout(L, qa);
qa *= 2
}
function Lb(a) {
Nb(new DataView(a.data))
}
function Nb(a) {
function b() {
for (var b = "";;) {
var d = a.getUint16(c, !0);
c += 2;
if (0 == d) break;
b += String.fromCharCode(d)
}
return b
}
var c = 0;
240 == a.getUint8(c) && (c += 5);
switch (a.getUint8(c++)) {
case 16:
Ob(a, c);
break;
case 17:
fa = a.getFloat32(c, !0);
c += 4;
ga = a.getFloat32(c, !0);
c += 4;
ha = a.getFloat32(c, !0);
c += 4;
break;
case 20:
h = [];
A = [];
break;
case 21:
Ka = a.getInt16(c, !0);
c += 2;
La = a.getInt16(c, !0);
c += 2;
Ma || (Ma = !0, ra = Ka, sa = La);
break;
case 32:
A.push(a.getUint32(c, !0));
c += 4;
break;
case 49:
if (null != C) break;
var k = a.getUint32(c, !0),
c = c + 4;
w = [];
for (var d = 0; d < k; ++d) {
var e = a.getUint32(c, !0),
c = c + 4;
w.push({
id: e,
name: b()
})
}
nb();
break;
case 50:
C = [];
k = a.getUint32(c, !0);
c += 4;
for (d = 0; d < k; ++d) C.push(a.getFloat32(c, !0)), c += 4;
nb();
break;
case 64:
ta = a.getFloat64(c, !0);
c += 8;
ua = a.getFloat64(c, !0);
c += 8;
va = a.getFloat64(c, !0);
c += 8;
wa = a.getFloat64(c, !0);
c += 8;
fa = (va + ta) / 2;
ga = (wa + ua) / 2;
ha = 1;
0 == h.length && (u = fa, v = ga, g = ha);
break;
case 81:
var r = a.getUint32(c, !0),
c = c + 4,
p = a.getUint32(c, !0),
c = c + 4,
f = a.getUint32(c, !0),
c = c + 4;
setTimeout(function () {
W({
e: r,
f: p,
d: f
})
}, 1200)
break;
case 90:
// Server Info / ping
var Uping = (new Date) - latency;
jQuery('#latency').html('Latency ' + Uping + ' ms;');
var Uuptime = a.getFloat64(c, !0);
c += 8;
jQuery('#uptime').html('Uptime ' + Uuptime + ' sec;' );
// Do something with the info
var Uplayers = a.getFloat64(c, !0);
c += 8;
jQuery('#onlineplayers').html('Players ' + Uplayers+ ';' );
// Do something with the info, example >> jQuery('#onlineplayers').html('Players ' + Uplayers );
var Umapsize = a.getFloat64(c, !0);
c += 8;
jQuery('#mapsize').html('Mapsize ' + Umapsize+ ';' );
// Do something with the info, example >> jQuery('#mapsize').html('Mapsize ' + Umapsize );
var Umapfood = a.getFloat64(c, !0);
c += 8;
jQuery('#mapfood').html('Mapfood ' + Umapfood );
// Do something with the info, example >> jQuery('#mapsize').html('Mapfood ' + Umapfood );
if (a.byteLength > 36) {
var Ugamemode = a.getFloat64(c, !0);
// Game mode is the number, so 0 for FFA etc...
}
break;
case 99:
addChat(a, c);
break;
}
}
function addChat(view, offset) {
function getString() {
var text = '',
char;
while ((char = view.getUint16(offset, true)) != 0) {
offset += 2;
text += String.fromCharCode(char);
}
offset += 2;
return text;
}
var flags = view.getUint8(offset++);
// for future expansions
if (flags & 2) {
offset += 4;
}
if (flags & 4) {
offset += 8;
}
if (flags & 8) {
offset += 16;
}
var r = view.getUint8(offset++),
g = view.getUint8(offset++),
b = view.getUint8(offset++),
color = (r << 16 | g << 8 | b).toString(16);
while (color.length > 6) {
color = '0' + color;
}
color = '#' + color;
chatBoard.push({
"name": getString(),
"color": color,
"message": getString(),
"time": Date.now()
});
drawChatBoard();
}
function drawChatBoard() {
chatCanvas = null;
chatCanvas = document.createElement("canvas");
var ctx = chatCanvas.getContext("2d");
var scaleFactor = Math.min(Math.max(m / 1200, 0.75),1); //scale factor = 0.75 to 1
chatCanvas.width = 1000 * scaleFactor;
chatCanvas.height = 550 * scaleFactor;
ctx.scale(scaleFactor, scaleFactor);
var nowtime = Date.now();
var lasttime = 0;
if (chatBoard.length >= 1)
lasttime = chatBoard[chatBoard.length - 1].time;
else return;
var deltat = nowtime - lasttime;
ctx.globalAlpha = 0.8 * Math.exp(-deltat / 25000);
var len = chatBoard.length;
var from = len - 15;
if (from < 0) from = 0;
for (var i = 0; i < (len - from); i++) {
var chatName = new za(18, chatBoard[i + from].color);
chatName.C(chatBoard[i + from].name.split("*")[0]);
var a = ctx.measureText(chatBoard[i + from].name.split("*")[0]);
var width = chatName.getWidth();
var a = chatName.L();
ctx.drawImage(a, 18, chatCanvas.height / scaleFactor - 24 * (len - i - from));
var chatText = new za(18,'#666666');
chatText.C(': ' + chatBoard[i + from].message);
a = chatText.L();
ctx.drawImage(a, 20 + width * 1.8, chatCanvas.height / scaleFactor - 24 * (len - from - i));
}
//ctx.restore();
}
function Ob(a, b) {
function c() {
for (var c = "";;) {
var d = a.getUint16(b, !0);
b += 2;
if (0 == d) break;
c += String.fromCharCode(d)
}
return c
}
function k() {
for (var c = "";;) {
var d = a.getUint8(b++);
if (0 == d) break;
c += String.fromCharCode(d)
}
return c
}
ob = E = Date.now();
ea || (ea = !0, Pb());
var G = Math.random();
Na = !1;
var n = a.getUint16(b, !0);
b += 2;
for (var r = 0; r < n; ++r) {
var p = I[a.getUint32(b, !0)],
f = I[a.getUint32(b + 4, !0)];
b += 8;
p && f && (f.X(), f.s = f.x, f.t = f.y, f.r = f.size, f.J = p.x, f.K = p.y, f.q = f.size, f.Q = E, Qb(p, f))
}
for (r = 0;;) {
n = a.getUint32(b, !0);
b += 4;
if (0 == n) break;
++r;
var g, p = a.getInt32(b, !0);
b += 4;
f = a.getInt32(b, !0);
b += 4;
g = a.getInt16(b, !0);
b += 2;
var l = a.getUint8(b++),
m = a.getUint8(b++),
q = a.getUint8(b++),
m = Rb(l << 16 | m << 8 | q),
q = a.getUint8(b++),
s = !! (q & 1),
x = !! (q & 16),
w = null;
q & 2 && (b += 4 + a.getUint32(b, !0));
q & 4 && (w = k());
var t = c(),
l = null;
I.hasOwnProperty(n) ? (l = I[n], l.P(), l.s = l.x, l.t = l.y, l.r = l.size, l.color = m) : (l = new X(n, p, f, g, m, t), y.push(l), I[n] = l, l.ua = p, l.va = f);
l.h = s;
l.n = x;
l.J = p;
l.K = f;
l.q = g;
l.sa = G;
l.Q = E;
l.ba = q;
l.fa = w;
t && l.B(t); - 1 != A.indexOf(n) && -1 == h.indexOf(l) && (h.push(l), 1 == h.length && (u = l.x, v = l.y, pb(), document.getElementById("overlays").style.display = "none", z = [], Oa = 0, Pa = h[0].color, Qa = !0, qb = Date.now(), R = Ra = Sa = 0))
}
G = a.getUint32(b, !0);
b += 4;
for (r = 0; r < G; r++) n = a.getUint32(b, !0), b += 4, l = I[n], null != l && l.X();
Na && 0 == h.length && (rb = Date.now(), Qa = !1, S || T || (sb ? (ib(d.ab), Sb(), T = !0, e("#overlays").fadeIn(3E3),e("#mini-map-wrapper").hide() , e("#stats").show()) : Fa(3E3)))
}
function Pb() {
e("#connecting").hide();
tb();
N && (N(), N = null);
null != Ta && clearTimeout(Ta);
Ta = setTimeout(function () {
d.ga && (++ub, d.ga("set", "dimension2", ub))
}, 1E4)
}
function aa() {
if (Y()) {
var a = ja - m / 2,
b = ka - q / 2;
64 > a * a + b * b || .01 > Math.abs(vb - ma) && .01 > Math.abs(wb - na) || (vb = ma, wb = na, a = P(21), a.setUint8(0, 16), a.setFloat64(1,
ma, !0), a.setFloat64(9, na, !0), a.setUint32(17, 0, !0), Q(a))
}
}
function tb() {
if (Y() && ea && null != H) {
var a = P(1 + 2 * H.length);
a.setUint8(0, 0);
for (var b = 0; b < H.length; ++b) a.setUint16(1 + 2 * b, H.charCodeAt(b), !0);
Q(a);
H = null
}
}
function Y() {
return null != s && s.readyState == s.OPEN
}
function K(a) {
if (Y()) {
var b = P(1);
b.setUint8(0, a);
Q(b)
}
}
function mb() {
if (Y() && null != D) {
var a = P(1 + D.length);
a.setUint8(0, 81);
for (var b = 0; b < D.length; ++b) a.setUint8(b + 1, D.charCodeAt(b));
Q(a)
}
}
function db() {
m = d.innerWidth;
q = d.innerHeight;
Da.width = J.width = m;
Da.height = J.height = q;
var a = e("#helloContainer");
a.css("transform", "none");
var b = a.height(),
c = d.innerHeight;
b > c / 1.1 ? a.css("transform", "translate(-50%, -50%) scale(" + c / b / 1.1 + ")") : a.css("transform", "translate(-50%, -50%)");
xb()
}
function yb() {
var a;
a = 1 * Math.max(q / 1080, m / 1920);
return a *= M
}
function Tb() {
if (0 != h.length) {
for (var a = 0, b = 0; b < h.length; b++) a += h[b].size;
a = Math.pow(Math.min(64 / a, 1), .4) * yb();
g = (9 * g + a) / 10
}
}
function xb() {
var a, b = Date.now();
++Ub;
E = b;
if (0 < h.length) {
Tb();
for (var c = a = 0, d = 0; d < h.length; d++) h[d].P(),
a += h[d].x / h.length, c += h[d].y / h.length;
fa = a;
ga = c;
ha = g;
u = (u + a) / 2;
v = (v + c) / 2
} else u = (29 * u + fa) / 30, v = (29 * v + ga) / 30, g = (9 * g + ha * yb()) / 10;
Jb();
Ea();
Ua || f.clearRect(0, 0, m, q);
Ua ? (f.fillStyle = xa ? "#111111" : "#F2FBFF", f.globalAlpha = .05, f.fillRect(0, 0, m, q), f.globalAlpha = 1) : Vb();
y.sort(function (a, b) {
return a.size == b.size ? a.id - b.id : a.size - b.size
});
f.save();
f.translate(m / 2, q / 2);
f.scale(g, g);
f.translate(-u, -v);
for (d = 0; d < V.length; d++) V[d].w(f);
for (d = 0; d < y.length; d++) y[d].w(f);
if (Ma) {
ra = (3 * ra + Ka) / 4;
sa = (3 * sa + La) / 4;
f.save();
f.strokeStyle = "#FFAAAA";
f.lineWidth = 10;
f.lineCap = "round";
f.lineJoin = "round";
f.globalAlpha = .5;
f.beginPath();
for (d = 0; d < h.length; d++) f.moveTo(h[d].x, h[d].y), f.lineTo(ra, sa);
f.stroke();
f.restore()
}
f.restore();
B && B.width && f.drawImage(B, m - B.width - 10, 10);
if (!hideChat)
{
if ((chatCanvas != null)&&(chatCanvas.width > 0)) f.drawImage(chatCanvas, 0, q - chatCanvas.height - 50); // draw Chat Board
}
O = Math.max(O, zb());
0 != O && (null == ya && (ya = new za(24, "#FFFFFF")), ya.C(da("score") + ": " + ~~ (O / 100)), c = ya.L(), a = c.width, f.globalAlpha = .2, f.fillStyle = "#000000", f.fillRect(10, 10, a + 10, 34), f.globalAlpha = 1, f.drawImage(c, 15, 15));
Wb();
b = Date.now() - b;
b > 1E3 / 60 ? F -= .01 : b < 1E3 / 65 && (F += .01);.4 > F && (F = .4);
1 < F && (F = 1);
b = E - Ab;
!Y() || S || T ? (x += b / 2E3, 1 < x && (x = 1)) : (x -= b / 300, 0 > x && (x = 0));
0 < x && (f.fillStyle = "#000000", f.globalAlpha = .5 * x, f.fillRect(0, 0, m, q), f.globalAlpha = 1);
Ab = E
}
function skorkaydet() {
var skor = "skor=" + ~~(O / 100) + "&c=1&oyuncuadi="+ oyuncu_adi;
e.ajax({
type:'POST',
url:'skor.php',
data:skor,
success:function(cevap){
console.log("Add:" + ~~(O / 100) + cevap);
}
});
}
function Vb() {
f.fillStyle = xa ? "#111111" : "#F2FBFF";
f.fillRect(0, 0, m, q);
f.save();
f.strokeStyle = xa ? "#AAAAAA" : "#000000";
f.globalAlpha = .2 * g;
for (var a = m / g, b = q / g, c = (-u + a / 2) % 50; c < a; c += 50) f.beginPath(), f.moveTo(c * g - .5, 0), f.lineTo(c * g - .5, b * g), f.stroke();
for (c = (-v + b / 2) % 50; c < b; c += 50) f.beginPath(), f.moveTo(0,
c * g - .5), f.lineTo(a * g, c * g - .5), f.stroke();
f.restore()
}
function Wb() {
if (bb && Va.width) {
var a = m / 5;
f.drawImage(Va, 5, 5, a, a)
}
}
function zb() {
for (var a = 0, b = 0; b < h.length; b++) a += h[b].q * h[b].q;
return a
}
function nb() {
B = null;
if (null != C || 0 != w.length) if (null != C || Aa) {
B = document.createElement("canvas");
var a = B.getContext("2d"),
b = 60,
b = null == C ? b + 24 * w.length : b + 180,
c = Math.min(200, .3 * m) / 200;
B.width = 200 * c;
B.height = b * c;
a.scale(c, c);
a.globalAlpha = .4;
a.fillStyle = "#000000";
a.fillRect(0, 0, 200, b);
a.globalAlpha = 1;
a.fillStyle = "#FFFFFF";
c = null;
c = da("leaderboard");
a.font = "30px Ubuntu";
a.fillText(c, 100 - a.measureText(c).width / 2, 40);
var leaderColors = ["#E6339B", "#FFD700", "#33E660", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF"];
if (null == C) for (a.font = "20px Ubuntu", b = 0; b < w.length; ++b) c = w[b].name.split("*")[0] || da("unnamed_cell"),
Aa || (c = da("unnamed_cell")),
-1 != A.indexOf(w[b].id) ? (h[0].name.split("*")[0] && (c = h[0].name.split("*")[0]),
a.fillStyle = "#FFAAAA") :
a.fillStyle = leaderColors[b],
c = b + 1 + ". " + c, a.fillText(c, 100 - a.measureText(c).width / 2, 70 + 24 * b);
else for (b = c = 0; b < C.length; ++b) {
var d = c + C[b] * Math.PI * 2;
a.fillStyle = Xb[b + 1];
a.beginPath();
a.moveTo(100, 140);
a.arc(100, 140, 80, c, d, !1);
a.fill();
c = d
}
}
}
function Wa(a, b, c, d, e) {
this.V = a;
this.x = b;
this.y = c;
this.i = d;
this.b = e
}
function X(a, b, c, d, e, n) {
this.id = a;
this.s = this.x = b;
this.t = this.y = c;
this.r = this.size = d;
this.color = e;
this.a = [];
this.W();
this.B(n)
}
function Rb(a) {
for (a = a.toString(16); 6 > a.length;) a = "0" + a;
return "#" + a
}
function za(a, b, c, d) {
a && (this.u = a);
b && (this.S = b);
this.U = !! c;
d && (this.v = d)
}
function Yb(a) {
for (var b = a.length, c, d; 0 < b;) d = Math.floor(Math.random() * b), b--, c = a[b], a[b] = a[d], a[d] = c
}
function W(a, b) {
var c = "1" == e("#helloContainer").attr("data-has-account-data");
e("#helloContainer").attr("data-has-account-data", "1");
if (null == b && d.localStorage.loginCache) {
var k = JSON.parse(d.localStorage.loginCache);
k.f = a.f;
k.d = a.d;
k.e = a.e;
d.localStorage.loginCache = JSON.stringify(k)
}
if (c) {
var G = +e(".warball-exp-bar .progress-bar-text").first().text().split("/")[0],
c = +e(".warball-exp-bar .progress-bar-text").first().text().split("/")[1].split(" ")[0],
k = e(".warball-profile-panel .progress-bar-star").first().text();
if (k != a.e) W({
f: c,
d: c,
e: k
}, function () {
e(".warball-profile-panel .progress-bar-star").text(a.e);
e(".warball-exp-bar .progress-bar").css("width", "100%");
e(".progress-bar-star").addClass("animated tada").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function () {
e(".progress-bar-star").removeClass("animated tada")
});
setTimeout(function () {
e(".warball-exp-bar .progress-bar-text").text(a.d + "/" + a.d + " XP");
W({
f: 0,
d: a.d,
e: a.e
}, function () {
W(a, b)
})
}, 1E3)
});
else {
var n = Date.now(),
f = function () {
var c;
c = (Date.now() - n) / 1E3;
c = 0 > c ? 0 : 1 < c ? 1 : c;
c = c * c * (3 - 2 * c);
e(".warball-exp-bar .progress-bar-text").text(~~ (G + (a.f - G) * c) + "/" + a.d + " XP");
e(".warball-exp-bar .progress-bar").css("width", (88 * (G + (a.f - G) * c) / a.d).toFixed(2) + "%");
1 > c ? d.requestAnimationFrame(f) : b && b()
};
d.requestAnimationFrame(f)
}
} else e(".warball-profile-panel .progress-bar-star").text(a.e), e(".warball-exp-bar .progress-bar-text").text(a.f + "/" + a.d + " XP"), e(".warball-exp-bar .progress-bar").css("width", (88 * a.f / a.d).toFixed(2) + "%"), b && b()
}
function Bb(a) {
"string" == typeof a && (a = JSON.parse(a));
Date.now() + 18E5 > a.ka ? e("#helloContainer").attr("data-logged-in",
"0") : (d.localStorage.loginCache = JSON.stringify(a), D = a.ha, e(".warball-profile-name").text(a.name), mb(), W({
f: a.f,
d: a.d,
e: a.e
}), e("#helloContainer").attr("data-logged-in", "1"))
}
function Zb(a) {
a = a.split("\n");
Bb({
name: a[0],
ta: a[1],
ha: a[2],
ka: 1E3 * +a[3],
e: +a[4],
f: +a[5],
d: +a[6]
})
}
function Xa(a) {
if ("connected" == a.status) {
var b = a.authResponse.accessToken;
d.FB.api("/me/picture?width=180&height=180", function (a) {
d.localStorage.fbPictureCache = a.data.url;
e(".warball-profile-picture").attr("src", a.data.url)
});
e("#helloContainer").attr("data-logged-in",
"1");
null != D ? e.ajax("http://agarioplayy.org/", {
error: function () {
D = null;
Xa(a)
},
success: function (a) {
a = a.split("\n");
W({
e: +a[0],
f: +a[1],
d: +a[2]
})
},
dataType: "text",
method: "POST",
cache: !1,
crossDomain: !0,
data: D
}) : e.ajax("http://agarioplayy.org/", {
error: function () {
D = null;
e("#helloContainer").attr("data-logged-in", "0")
},
success: Zb,
dataType: "text",
method: "POST",
cache: !1,
crossDomain: !0,
data: b
})
}
}
function gb(a) {
ca(":party");
e("#helloContainer").attr("data-party-state", "4");
a = decodeURIComponent(a).replace(/.*#/gim,
"");
Ya("#" + d.encodeURIComponent(a));
e.ajax(Za + "//agarioplayy.org", {
error: function () {
e("#helloContainer").attr("data-party-state", "6")
},
success: function (b) {
b = b.split("\n");
e(".partyToken").val("agarioplayy.org/#" + d.encodeURIComponent(a));
e("#helloContainer").attr("data-party-state", "5");
ca(":party");
Ha("ws://" + b[0], a)
},
dataType: "text",
method: "POST",
cache: !1,
crossDomain: !0,
data: a
})
}
function Ya(a) {
d.history && d.history.replaceState && d.history.replaceState({}, d.document.title, a)
}
function Qb(a, b) {
var c = -1 != A.indexOf(a.id),
d = -1 != A.indexOf(b.id),
e = 30 > b.size;
c && e && ++Oa;
e || !c || d || ++Ra
}
function Cb(a) {
a = ~~a;
var b = (a % 60).toString();
a = (~~ (a / 60)).toString();
2 > b.length && (b = "0" + b);
return a + ":" + b
}
function $b() {
if (null == w) return 0;
for (var a = 0; a < w.length; ++a) if (-1 != A.indexOf(w[a].id)) return a + 1;
return 0
}
function Sb() {
skorkaydet();
e(".stats-food-eaten").text(Oa);
e(".stats-time-alive").text(Cb((rb - qb) / 1E3));
e(".stats-leaderboard-time").text(Cb(Sa));
e(".stats-highest-mass").text(~~ (O / 100));
e(".stats-cells-eaten").text(Ra);
e(".stats-top-position").text(0 == R ? ":(" : R);
var a = document.getElementById("statsGraph");
if (a) {
var b = a.getContext("2d"),
c = a.width,
a = a.height;
b.clearRect(0, 0, c, a);
if (2 < z.length) {
for (var d = 200, f = 0; f < z.length; f++) d = Math.max(z[f], d);
b.lineWidth = 3;
b.lineCap = "round";
b.lineJoin = "round";
b.strokeStyle = Pa;
b.fillStyle = Pa;
b.beginPath();
b.moveTo(0, a - z[0] / d * (a - 10) + 10);
for (f = 1; f < z.length; f += Math.max(~~ (z.length / c), 1)) {
for (var n = f / (z.length - 1) * c, r = [], p = -20; 20 >= p; ++p) 0 > f + p || f + p >= z.length || r.push(z[f + p]);
r = r.reduce(function (a, b) {
return a + b
}) / r.length / d;
b.lineTo(n, a - r * (a - 10) + 10)
}
b.stroke();
b.globalAlpha = .5;
b.lineTo(c, a);
b.lineTo(0, a);
b.fill();
b.globalAlpha = 1
}
}
}
if (!d.agarioNoInit) {
var Za = d.location.protocol,
lb = "https:" == Za;
var Da, f, J, m, q, ba, chatCanvas = null,
s = null,
chatBoard = [],
u = 0,
v = 0,
A = [],
h = [],
I = {}, y = [],
V = [],
w = [],
ja = 0,
ka = 0,
ma = -1,
na = -1,
Ub = 0,
E = 0,
Ab = 0,
H = null,
ta = 0,
ua = 0,
va = 1E4,
wa = 1E4,
hideChat = false,
g = 1,
t = null,
Db = !0,
Aa = !0,
$a = !1,
Na = !1,
O = 0,
xa = !1,
hasOverlay = true,
Eb = !1,
fa = u = ~~ ((ta + va) / 2),
ga = v = ~~ ((ua + wa) / 2),
ha = 1,
U = "",
C = null,
Ca = !1,
Ma = !1,
Ka = 0,
La = 0,
ra = 0,
sa = 0,
Fb = 0,
Xb = ["#333333",
"#FF3333", "#33FF33", "#3333FF"],
Ua = !1,
ea = !1,
ob = 0,
D = null,
M = 1,
x = 1,
S = !0,
Ga = 0,
Ia = {};
(function () {
var a = d.location.search;
"?" == a.charAt(0) && (a = a.slice(1));
for (var a = a.split("&"), b = 0; b < a.length; b++) {
var c = a[b].split("=");
Ia[c[0]] = c[1]
}
})();
var bb = "ontouchstart" in d && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(d.navigator.userAgent),
Va = new Image;
Va.src = "img/split.png";
var Gb = document.createElement("canvas");
if ("undefined" == typeof console || "undefined" == typeof DataView || "undefined" == typeof WebSocket || null == Gb || null == Gb.getContext || null == d.localStorage) alert("You browser does not support this game, we recommend you to use Firefox to play this");
else {
var oa = null;
d.setNick = function (a,mySkin) {
//console.log("MY SKIN: " + mySkin);
if(mySkin==""){
mySkin = "0";
}
a = a.split('Admin').join('fake_admin'); // boşluk karakterini temizleme...
a = a.split('ADMIN').join('fake_admin'); // boşluk karakterini temizleme...
a = a.split('admin').join('fake_admin'); // boşluk karakterini temizleme...
if (z.indexOf(T) > - 1) {
alert('Please choose a correct name! This is bad nick!');
return false;
}
a = a.split('Admin').join('fake_admin');
a = a.split('admin').join('fake_admin');
a = a.split('ADMIN').join('fake_admin');
a = a.split('admin').join('fake_admin');
a = a.split('Admin').join('fake_admin');
a = a.split('ADmin').join('fake_admin');
a = a.split('ADMin').join('fake_admin');
a = a.split('ADMIn').join('fake_admin');
a = a.split('ADMIN').join('fake_admin');
a = a.split('AdMiN').join('fake_admin');
var protectName = a.split('*'),
testExpession = /ramm/gi;
if(testExpession.test(protectName[0])){
a = 'fake_rammstein';
};
//a = a.toLowerCase();
a = a + "*" + mySkin;
a = a.split('agario.').join('bad nick');
a = a.split('www.').join('bad nick');
a = a.split('.cafe').join('bad nick');
a = a.split('.org').join('bad nick');
a = a.split('.biz').join('bad nick');
a = a.split('.ca').join('bad nick');
a = a.split('.net').join('bad nick');
hb();
H = a;
oyuncu_adi= H.split("*")[0];
tb();
O = 0
};
d.savescreenshoot = function (arg) {
// if(~~(O / 100) > 10000) {
//var oyuncukim = $.cookie("nick");
var veri = {'ss':arg,'oyuncuadi':oyuncu_adi,'puan':~~(O / 100)}
e.ajax({
type:'POST',
url:'/saveSS.jsp',
data:veri,
success:function(cevap){
console.log(cevap);
}
});
//}
}
d.setHideChat = function (arg) {
hideChat = arg;
if (arg) {
e("#chat_textbox").hide();
}
else {
e("#chat_textbox").show();
}
};
d.setHideMap = function (arg) {
hideMap = arg;
if (arg) {
e("#mini-map-wrapper").hide();
}
else {
e("#mini-map-wrapper").show();
}
};
d.setRegion = la;
d.setSkins = function (a) {
Db = a
};
d.setNames = function (a) {
Aa = a
};
d.setDarkTheme = function (a) {
xa = a
};
d.setColors = function (a) {
$a = a
};
d.setShowMass = function (a) {
Eb = a
};
d.spectate = function () {
H = null;
K(1);
hb()
e("#mini-map-wrapper").hide();
};
d.setGameMode = function (a) {
a != U && (":party" == U && e("#helloContainer").attr("data-party-state","0"), ca(a), ":party" != a && L())
};
d.setAcid = function (a) {
Ua = a
};
null != d.localStorage && (null == d.localStorage.AB9 && (d.localStorage.AB9 = 0 + ~~ (100 * Math.random())), Fb = +d.localStorage.AB9, d.ABGroup = Fb);
e.get(Za + "//agarioplayy.org", function (a) {
var b = a.split(" ");
a = b[0];
b = b[1] || ""; - 1 == ["UA"].indexOf(a) && Hb.push("ussr");
ia.hasOwnProperty(a) && ("string" == typeof ia[a] ? t || la(ia[a]) : ia[a].hasOwnProperty(b) && (t || la(ia[a][b])))
}, "text");
d.ga && d.ga("send", "event", "User-Agent", d.navigator.userAgent, {
nonInteraction: 1
});
var pa = !1,
jb = 0;
setTimeout(function () {
pa = !0
}, Math.max(6E4 * jb, 3E3));
var ia = {
AF: "JP-Tokyo",
ZW: "EU-London"
}, N = null;
d.connect = Ha;
var qa = 500,
Ta = null,
ub = 0,
vb = -1,
wb = -1,
B = null,
F = 1,
ya = null,
eb = function () {
var a = Date.now(),
b = 1E3 / 60;
return function () {
d.requestAnimationFrame(eb);
/* var c = Date.now(),
e = c - a;
e > b && (a = c - e % b, !Y() || 290 > Date.now() - ob ? xb() : console.warn("Skipping draw"), ac())*/
var c = Date.now(),
e = c - a;
e > b && (a = c - e % b, !Y() || 290 > Date.now() - ob ? xb() : console.warn("Skipping draw"), ac())
}
}(),
Z = {}, Hb = "".split(";"),
bc = "".split(";"),
$ = {};
Wa.prototype = {
V: null,
x: 0,
y: 0,
i: 0,
b: 0
};
X.prototype = {
id: 0,
a: null,
name: null,
o: null,
O: null,
x: 0,
y: 0,
size: 0,
s: 0,
t: 0,
r: 0,
J: 0,
K: 0,
q: 0,
ba: 0,
Q: 0,
sa: 0,
ja: 0,
G: !1,
h: !1,
n: !1,
R: !0,
Y: 0,
fa: null,
X: function () {
var a;
for (a = 0; a < y.length; a++) if (y[a] == this) {
y.splice(a, 1);
break
}
delete I[this.id];
a = h.indexOf(this); - 1 != a && (Na = !0, h.splice(a, 1));
a = A.indexOf(this.id); - 1 != a && A.splice(a, 1);
this.G = !0;
0 < this.Y && V.push(this)
},
l: function () {
return Math.max(~~ (.3 * this.size), 24)
},
B: function (a) {
if (this.name = a) null == this.o ? this.o = new za(this.l(), "#FFFFFF", !0, "#000000") : this.o.M(this.l()), this.o.C(this.name)
},
W: function () {
for (var a = this.I(); this.a.length > a;) {
var b = ~~ (Math.random() * this.a.length);
this.a.splice(b, 1)
}
for (0 == this.a.length && 0 < a && this.a.push(new Wa(this, this.x, this.y, this.size, Math.random() - .5)); this.a.length < a;) b = ~~ (Math.random() * this.a.length), b = this.a[b], this.a.push(new Wa(this, b.x, b.y, b.i, b.b))
},
I: function () {
var a = 10;
20 > this.size && (a = 0);
this.h && (a = 30);
var b = this.size;
this.h || (b *= g);
b *= F;
this.ba & 32 && (b *= .25);
return~~Math.max(b, a)
},
qa: function () {
this.W();
for (var a = this.a, b = a.length, c = 0; c < b; ++c) {
var d = a[(c - 1 + b) % b].b,
e = a[(c + 1) % b].b;
a[c].b += (Math.random() - .5) * (this.n ? 3 : 1);
a[c].b *= .7;
10 < a[c].b && (a[c].b = 10); - 10 > a[c].b && (a[c].b = -10);
a[c].b = (d + e + 8 * a[c].b) / 10
}
for (var n = this, f = this.h ? 0 : (this.id / 1E3 + E / 1E4) % (2 * Math.PI), c = 0; c < b; ++c) {
var p = a[c].i,
d = a[(c - 1 + b) % b].i,
e = a[(c + 1) % b].i;
if (15 < this.size && null != ba && 20 < this.size * g && 0 < this.id) {
var h = !1,
Ja = a[c].x,
l = a[c].y;
ba.ra(Ja - 5, l - 5, 10, 10, function (a) {
a.V != n && 25 > (Ja - a.x) * (Ja - a.x) + (l - a.y) * (l - a.y) && (h = !0)
});
!h && (a[c].x < ta || a[c].y < ua || a[c].x > va || a[c].y > wa) && (h = !0);
h && (0 < a[c].b && (a[c].b = 0), a[c].b -= 1)
}
p += a[c].b;
0 > p && (p = 0);
p = this.n ? (19 * p + this.size) / 20 : (12 * p + this.size) / 13;
a[c].i = (d + e + 8 * p) / 10;
d = 2 * Math.PI / b;
e = this.a[c].i;
this.h && 0 == c % 2 && (e += 5);
a[c].x = this.x + Math.cos(d * c + f) * e;
a[c].y = this.y + Math.sin(d * c + f) * e
}
},
P: function () {
if (0 >= this.id) return 1;
var a;
a = (E - this.Q) / 120;
a = 0 > a ? 0 : 1 < a ? 1 : a;
var b = 0 > a ? 0 : 1 < a ? 1 : a;
this.l();
if (this.G && 1 <= b) {
var c = V.indexOf(this); - 1 != c && V.splice(c, 1)
}
this.x = a * (this.J - this.s) + this.s;
this.y = a * (this.K - this.t) + this.t;
this.size = b * (this.q - this.r) + this.r;
return b
},
N: function () {
return 0 >= this.id ? !0 : this.x + this.size + 40 < u - m / 2 / g || this.y + this.size + 40 < v - q / 2 / g || this.x - this.size - 40 > u + m / 2 / g || this.y - this.size - 40 > v + q / 2 / g ? !1 : !0
},
w: function (a) {
if (this.N()) {
++this.Y;
var b = 0 < this.id && !this.h && !this.n && .4 > g;
5 > this.I() && 0 < this.id && (b = !0);
if (this.R && !b) for (var c = 0; c < this.a.length; c++) this.a[c].i = this.size;
this.R = b;
a.save();
this.ja = E;
c = this.P();
this.G && (a.globalAlpha *= 1 - c);
a.lineWidth = 10;
a.lineCap = "round";
a.lineJoin = this.h ? "miter" : "round";
$a ? (a.fillStyle = "#FFFFFF", a.strokeStyle = "#AAAAAA") : (a.fillStyle = this.color, a.strokeStyle = this.color);
if (b) a.beginPath(), a.arc(this.x, this.y, this.size + 5, 0, 2 * Math.PI, !1);
else {
this.qa();
a.beginPath();
var d = this.I();
a.moveTo(this.a[0].x, this.a[0].y);
for (c = 1; c <= d; ++c) {
var e = c % d;
a.lineTo(this.a[e].x, this.a[e].y)
}
}
a.closePath();
c = this.name.toLowerCase().split("*");
//console.log("PRINT THE NAME: " + c);
if(c[1]==""){
c = "";
} else {
c = c[1];
}
//console.log("LOGGING C: " + c);
var rsyr = Math.floor(Math.random() * (100000000000 - 1) + 1);
//alert(c);
!this.n && Db && ":team" != U ? (d = this.fa, null == d ? d = null : ":" == d[0] ? ($.hasOwnProperty(d) || ($[d] = new Image,
$[d].src = d.slice(1)),
d = 0 != $[d].width && $[d].complete ? $[d] : null) : d = null,
d || (1 != Hb.indexOf(c) ? (Z.hasOwnProperty(c) ||
(Z[c] = new Image, Z[c].crossOrigin="anonymous",
//c === customID ? Z[c].src = customSkin : Z[c].src = "http://agarioplayy.org/skins/orig/" + c + ".png?"+rsyr), //#MOD LOAD MY CUSTOM SKIN
//c >= 8000 ? Z[c].src = customSkin : Z[c].src = "http://agarioplayy.org/skins/orig/" + c + ".png?"+rsyr), //#MOD LOAD MY CUSTOM SKIN
c >= 8000 ? Z[c].src = custom_skin_host + "askins/" + c + ".png?"+rsyr : Z[c].src = "http://agarioplayy.org/skins/orig/" + c + ".png?"+rsyr), //#MOD LOAD MY CUSTOM SKIN
//(Z[c] = new Image,
//Z[c].src = "http://agarioplayy.org/skins/orig/" + ".png?"+rsyr),
d = 0 != Z[c].width && Z[c].complete ? Z[c] : null) : d = null)) : d = null;
e = d;
b || a.stroke();
a.fill();
null != e && (a.save(), a.clip(), a.drawImage(e, this.x - this.size, this.y - this.size, 2 * this.size, 2 * this.size), a.restore());
($a || 15 < this.size) && !b && (a.strokeStyle = "#000000", a.globalAlpha *= .1, a.stroke());
//c == customID ? a.globalAlpha = 0 :
a.globalAlpha = 1; // #MOD HIDE MY NAME ONLY DISPLAY OTHERS NORMALY
d = -1 != h.indexOf(this);
b = ~~this.y;
if (0 != this.id && (Aa || d) && this.name && this.o && (null == e || -1 == bc.indexOf(c))) {
e = this.o;
e.C(this.name.split("*")[0]);
e.M(this.l());
c = 0 >= this.id ? 1 : Math.ceil(10 * g) / 10;
e.ea(c);
var e = e.L(),
n = ~~ (e.width / c),
f = ~~ (e.height / c);
a.drawImage(e, ~~this.x - ~~ (n / 2), b - ~~ (f / 2), n, f);
b += e.height / 2 / c + 4
}
0 < this.id && Eb && (d || 0 == h.length && (!this.h || this.n) && 20 < this.size) && (null == this.O && (this.O = new za(this.l() / 2, "#FFFFFF", !0, "#000000")), d = this.O, d.M(this.l() / 2), d.C(~~ (this.size * this.size / 100)), c = Math.ceil(10 * g) / 10, d.ea(c), e = d.L(), n = ~~ (e.width / c), f = ~~ (e.height / c), a.drawImage(e, ~~this.x - ~~ (n / 2), b - ~~ (f / 2), n, f));
a.restore()
}
}
};
za.prototype = {
F: "",
S: "#000000",
U: !1,
v: "#000000",
u: 16,
p: null,
T: null,
k: !1,
D: 1,
_value: "",
_dirty: false,
M: function (a) {
this.u != a && (this.u = a, this.k = !0)
},
ea: function (a) {
this.D != a && (this.D = a, this.k = !0)
},
setStrokeColor: function (a) {
this.v != a && (this.v = a, this.k = !0)
},
C: function (a) {
a != this.F && (this.F = a, this.k = !0)
},
getWidth: function () {
return (f.measureText(this.F).width + 6);
},
L: function () {
null == this.p && (this.p = document.createElement("canvas"), this.T = this.p.getContext("2d"));
if (this.k) {
this.k = !1;
var a = this.p,
b = this.T,
c = this.F,
d = this.D,
e = this.u,
f = e + "px Ubuntu";
b.font = f;
var r = ~~ (.2 * e);
a.width = (b.measureText(c).width + 6) * d;
a.height = (e + r) * d;
b.font = f;
b.scale(d, d);
b.globalAlpha = 1;
b.lineWidth = 3;
b.strokeStyle = this.v;
b.fillStyle = this.S;
this.U && b.strokeText(c, 3, e - r / 2);
b.fillText(c, 3, e - r / 2)
}
return this.p
}
};
Date.now || (Date.now = function () {
return (new Date).getTime()
});
(function () {
for (var a = ["ms", "moz", "webkit", "o"], b = 0; b < a.length && !d.requestAnimationFrame; ++b) d.requestAnimationFrame = d[a[b] + "RequestAnimationFrame"],
d.cancelAnimationFrame = d[a[b] + "CancelAnimationFrame"] || d[a[b] + "CancelRequestAnimationFrame"];
d.requestAnimationFrame || (d.requestAnimationFrame = function (a) {
return setTimeout(a, 1E3 / 60)
}, d.cancelAnimationFrame = function (a) {
clearTimeout(a)
})
})();
var Kb = {
la: function (a) {
function b(a, b, c, d, e) {
this.x = a;
this.y = b;
this.j = c;
this.g = d;
this.depth = e;
this.items = [];
this.c = []
}
var c = a.ma || 2,
d = a.na || 4;
b.prototype = {
x: 0,
y: 0,
j: 0,
g: 0,
depth: 0,
items: null,
c: null,
H: function (a) {
for (var b = 0; b < this.items.length; ++b) {
var c = this.items[b];
if (c.x >= a.x && c.y >= a.y && c.x < a.x + a.j && c.y < a.y + a.g) return !0
}
if (0 != this.c.length) {
var d = this;
return this.$(a, function (b) {
return d.c[b].H(a)
})
}
return !1
},
A: function (a, b) {
for (var c = 0; c < this.items.length; ++c) b(this.items[c]);
if (0 != this.c.length) {
var d = this;
this.$(a, function (c) {
d.c[c].A(a, b)
})
}
},
m: function (a) {
0 != this.c.length ? this.c[this.Z(a)].m(a) : this.items.length >= c && this.depth < d ? (this.ia(), this.c[this.Z(a)].m(a)) : this.items.push(a)
},
Z: function (a) {
return a.x < this.x + this.j / 2 ? a.y < this.y + this.g / 2 ? 0 : 2 : a.y < this.y + this.g / 2 ? 1 : 3
},
$: function (a, b) {
return a.x < this.x + this.j / 2 && (a.y < this.y + this.g / 2 && b(0) || a.y >= this.y + this.g / 2 && b(2)) || a.x >= this.x + this.j / 2 && (a.y < this.y + this.g / 2 && b(1) || a.y >= this.y + this.g / 2 && b(3)) ? !0 : !1
},
ia: function () {
var a = this.depth + 1,
c = this.j / 2,
d = this.g / 2;
this.c.push(new b(this.x, this.y, c, d, a));
this.c.push(new b(this.x + c, this.y, c, d, a));
this.c.push(new b(this.x, this.y + d, c, d, a));
this.c.push(new b(this.x + c, this.y + d, c, d, a));
a = this.items;
this.items = [];
for (c = 0; c < a.length; c++) this.m(a[c])
},
clear: function () {
for (var a = 0; a < this.c.length; a++) this.c[a].clear();
this.items.length = 0;
this.c.length = 0
}
};
var e = {
x: 0,
y: 0,
j: 0,
g: 0
};
return {
root: new b(a.ca, a.da, a.oa - a.ca, a.pa - a.da, 0),
m: function (a) {
this.root.m(a)
},
A: function (a, b) {
this.root.A(a, b)
},
ra: function (a, b, c, d, f) {
e.x = a;
e.y = b;
e.j = c;
e.g = d;
this.root.A(e, f)
},
H: function (a) {
return this.root.H(a)
},
clear: function () {
this.root.clear()
}
}
}
}, pb = function () {
var a = new X(0, 0, 0, 32, "#ED1C24", ""),
b = document.createElement("canvas");
b.width = 32;
b.height = 32;
var c = b.getContext("2d");
return function () {
0 < h.length && (a.color = h[0].color, a.B(h[0].name));
c.clearRect(0, 0, 32, 32);
c.save();
c.translate(16, 16);
c.scale(.4, .4);
a.w(c);
c.restore();
var d = document.getElementById("favicon"),
e = d.cloneNode(!0);
e.setAttribute("href", b.toDataURL("image/png"));
d.parentNode.replaceChild(e, d)
}
}();
e(function () {
pb()
});
e(function () {
+d.localStorage.wannaLogin && (d.localStorage.loginCache && Bb(d.localStorage.loginCache), d.localStorage.fbPictureCache && e(".warball-profile-picture").attr("src", d.localStorage.fbPictureCache))
});
d.facebookLogin = function () {
d.localStorage.wannaLogin = 1
};
d.fbAsyncInit = function () {
function a() {
d.localStorage.wannaLogin = 1;
null == d.FB ? alert("You seem to have something blocking Facebook on your browser, please check for any extensions") : d.FB.login(function (a) {
Xa(a)
}, {
scope: "public_profile, email"
})
}
d.FB.init({
appId: "125735547767875",
cookie: !0,
xfbml: !0,
status: !0,
version: "v2.4"
});
d.FB.Event.subscribe("auth.statusChange", function (b) {
+d.localStorage.wannaLogin && ("connected" == b.status ? Xa(b) : a())
});
d.facebookLogin = a
};
d.logout = function () {
D = null;
e("#helloContainer").attr("data-logged-in", "0");
e("#helloContainer").attr("data-has-account-data", "0");
delete d.localStorage.wannaLogin;
delete d.localStorage.loginCache;
delete d.localStorage.fbPictureCache;
L()
};
var ac = function () {
function a(a, b, c, d, e) {
var f = b.getContext("2d"),
g = b.width;
b = b.height;
a.color = e;
a.B(c);
a.size = d;
f.save();
f.translate(g / 2, b / 2);
a.w(f);
f.restore()
}
for (var b = new X(-1, 0, 0, 32, "#5bc0de", ""), c = new X(-1, 0, 0, 32, "#5bc0de", ""), d = "#0791ff #5a07ff #ff07fe #ffa507 #ff0774 #077fff #3aff07 #ff07ed #07a8ff #ff076e #3fff07 #ff0734 #07ff20 #ff07a2 #ff8207 #07ff0e".split(" "),
f = [], g = 0; g < d.length; ++g) {
var h = g / d.length * 12,
p = 30 * Math.sqrt(g / d.length);
f.push(new X(-1, Math.cos(h) * p, Math.sin(h) * p, 10, d[g], ""))
}
Yb(f);
var m = document.createElement("canvas");
m.getContext("2d");
m.width = m.height = 70;
a(c, m, "", 26, "#ebc0de");
return function () {
e(".cell-spinner").filter(":visible").each(function () {
var c = e(this),
d = Date.now(),
f = this.width,
g = this.height,
h = this.getContext("2d");
h.clearRect(0, 0, f, g);
h.save();
h.translate(f / 2, g / 2);
for (var k = 0; 10 > k; ++k) h.drawImage(m, (.1 * d + 80 * k) % (f + 140) - f / 2 - 70 - 35,
g / 2 * Math.sin((.001 * d + k) % Math.PI * 2) - 35, 70, 70);
h.restore();
(c = c.attr("data-itr")) && (c = da(c));
a(b, this, c || "", +e(this).attr("data-size"), "#5bc0de")
});
e("#statsPellets").filter(":visible").each(function () {
e(this);
var b = this.width,
c = this.height;
this.getContext("2d").clearRect(0, 0, b, c);
for (b = 0; b < f.length; b++) a(f[b], this, "", f[b].size, f[b].color)
})
}
}();
d.createParty = function () {
ca(":party");
N = function (a) {
Ya("/#" + d.encodeURIComponent(a));
e(".partyToken").val("agarioplayy.org/#" + d.encodeURIComponent(a));
e("#helloContainer").attr("data-party-state",
"1")
};
L()
};
d.joinParty = gb;
d.cancelParty = function () {
Ya("/");
e("#helloContainer").attr("data-party-state", "0");
ca("");
L()
};
var z = [],
Oa = 0,
Pa = "#000000",
T = !1,
Qa = !1,
qb = 0,
rb = 0,
Sa = 0,
Ra = 0,
R = 0,
sb = !0;
setInterval(function () {
Qa && z.push(zb() / 100)
}, 1E3 / 60);
setInterval(function () {
if (Y()) {
var a = P(5);
a.setUint8(0, 90);
a.setUint32(1, 1441210800, !0);
latency = new Date;
Q(a)
}
}, 1000);
setInterval(function () {
var a = $b();
0 != a && (++Sa, 0 == R && (R = a), R = Math.min(R, a))
}, 1E3);
d.closeStats = function () {
T = !1;
e("#stats").hide();
Fa(0)
};
d.setSkipStats = function (a) {
sb = !a
};
e(function () {
e(Ib)
})
}
}
})(window, window.jQuery);
// .customSKimage CLICK EVENT HANDLER
$(document).on( "click", ".customSKimage", function() {
//console.log( + _alt + "This is img src: " + _src );
var site_name = "http://agarioplayy.org"
// customID = _alt;
// customSRC = _src;
customID = $(this).attr("rel");
customSRC = $(this).attr("src");
//console.log("This is custom ID:" + customID + " " + customSRC);
//CREATE COOKIE ORIGINAL FUNCTION
if($.cookie('mySkin')){
$.removeCookie('mySkin');
$.cookie('mySkin', customID, { expires: 90, domain: 'agarioplayy.org', path:'/'});
} else {
$.cookie('mySkin', customID, { expires: 90, domain: 'agarioplayy.org', path:'/'});
}
if(customID=="-1"){
$("#selectedSkin").attr("src",site_name+"/skins/150x150/0.png");
}else {
$("#selectedSkin").attr("src", customSRC );
}
// ASSING THE ID & HIDE THE CONTAINER
$("#skin").val(customID);
$(skinContainer).hide();
$("#skinsPage").hide();
$("#skinPageOverlay").hide();
}); // END .customSKimage CLICK EVENT HANDLER
/* function customImgClick(_alt, _src){
// CUSTOM ON CLICK FUNCIOON
function customImgClick(_alt, _src){
//$( "img").on( "click", function() {
//console.log( + _alt + "This is img src: " + _src );
var site_name = "http://agarioplayy.org"
customID = _alt;
customSRC = _src;
//console.log("This is custom ID:" + customID + " " + customSRC);
//CREATE COOKIE ORIGINAL FUNCTION
if($.cookie('mySkin')){
$.removeCookie('mySkin');
$.cookie('mySkin', customID, { expires: 90, domain: 'agarioplayy.org', path:'/'});
} else {
$.cookie('mySkin', customID, { expires: 90, domain: 'agarioplayy.org', path:'/'});
}
if(customID=="-1"){
$("#selectedSkin").attr("src",site_name+"/skins/150x150/0.png");
}else {
$("#selectedSkin").attr("src", customSRC );
}
// ASSING THE ID & HIDE THE CONTAINER
$("#skin").val(customID);
$(skinContainer).hide();
$("#skinsPage").hide();
$("#skinPageOverlay").hide();
//});
}// END CUSTOM ON CLICK FOONCTION *******************************************************************************************************/
$(document).ready(function(){
// CREATE SKIN SKIN BUTTON OPTION
var skinButton = $("<div id='skinButton' class='btn btn-danger' onclick='customSkinListOpen(); return false;'>Custon Skin</div>").appendTo(".side-container_sag > div");
// CREATE CUSTOM SKIN CONTAINER FUNCTION
customSkinListOpen = function(){
// CHECK FOR skinContainer if doesn`t exists CREATE IT else REUSE
if(!$("#skinContainer").length){ //console.log("SKINCONTAINER CREATED");
function CreateSkinContainer(){
// SKIN CONTAINER OUTHER
var skinContainer = $( "<div id='skinContainer'></div>" ).appendTo( "body" );
$(skinContainer).css({"position": "absolute",
"top": "30px",
"width": "915px",
"height": "500px",
"padding": "30px",
"background-color": "white",
"z-index": "9999",
"overflow-y": "scroll"});
// CREATE TITLE ******************************************************************************************************
$(skinContainer).append("<p>Coded by: RAMMSTEIN</p>").css({"text-align": "center"});
$(skinContainer).append("<h2>Chose SKIN</h2>").css({"text-align": "center"});
}// END function CreateSkinContainer()
// GET JSON DATA FROM URL ******************************************************************************************************
$.ajax({
type: 'GET',
//url: "http://lizzcure.com/agarskin.json", // HOST LIZZCURE
url: custom_skin_host + "askins/agarskin.json", //HOST 000WEBHOST
//url: "http://agario.1free-host.com/skins/agarskin.json", // HOST 1FREE-HOST
dataType: "json",
async: false,
success: function(data) {
var items = [];
console.log(this.url);
// CALL to CreateSkinContainer()
CreateSkinContainer();
$.each( data, function( key, val ) { //customImgClick(this.alt, this.src)
items.push( "<li rel='" + key + "'><img onclick='' class='customSKimage' rel='" + key + "' src='" + val + "'</li>" );
});
// CREATE SKIN LIST
$( "<ul/>", {"class": "customSkinList",html: items.join( "" )}).appendTo( skinContainer );
},//END FUNCTION SUCCESS **************************************************************************
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error: " + errorThrown);
event.preventDefault();
}//error: function **************************************************************************
}); //END AJAX
}// END IF
else {
$("#skinContainer").show(); //console.log("SKINCONTAINER REUSED");
}// END ELSE
} //END customSkinListOpen
/****************************************************************************************************************************/
// STYLE THE SKIN LIST
$("<style>")
.prop("type", "text/css")
.html("\
#skinList {\
position: fixed;\
z-index: 102;\
display:none;\
top:50%;\
left:50%;\
}\
ul{\
list-style: outside none none;\
}\
ul.customSkinList li {\
float: left;\
height: 125px;\
margin-left: 4px;\
margin-right: 4px;\
text-align: center;\
width: 125px;\
}\
ul.customSkinList li img {\
border: 4px solid #fff;\
border-radius: 250px;\
box-shadow: 0 8px 6px #bbb;\
height: 100px;\
transform: scale(1);\
transition: all 0.5s ease 0s;\
width: 100px;\
}\
ul.customSkinList li:hover img {\
cursor: pointer;\
transform: scale(1.2);\
transition: all 0.3s ease 0s;\
}").appendTo("head"); // END STYLE
});// END document ready **************************************************************************************************************************************
function clickIE4() {
if (event.button == 2) {
return false;
}
}
function clickNS4(e) {
if (document.layers || document.getElementById && !document.all) {
if (e.which == 2 || e.which == 3) {
//alert(message);
return false;
}
}
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = clickNS4;
} else if (document.all && !document.getElementById) {
document.onmousedown = clickIE4;
}
document.oncontextmenu = new Function("return false")
// IMAGE HOSTS?
//"http://agariopink.000webhostapp.com/";
var custom_skin_host = "http://agariopink.000webhostapp.com/";