您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Extra features for SFGC (http://gc.gamestotal.com/)
当前为
// ==UserScript== // @name Anfit's GC Mods Patched Edition // @description Extra features for SFGC (http://gc.gamestotal.com/) // @include http://gc.gamestotal.com/* // @include http://gc.gamestotal.com/ // @icon http://i1275.photobucket.com/albums/y459/420BadWolf/anfits-gc-mods_zps2c81edbc.png // @namespace http://gc.mmanir.net // @author (c) 2012 Jan 'anfit' Chimiak <[email protected]> + Vorapsak // @version 1 // @note this version has been patched to allow the extension to work while anfit's server is unresponsive. There is no true support at the moment, so don't contact me or anfit about anything wrong with this version. // @license Creative Commons Attribution + Noncommercial 3.0 Unported (CC BY-NC 3.0). If you want to use this in an commercial product, contact the author. // ==/UserScript== /* * jQuery JavaScript Library v1.6.4 * http://jquery.com/ * * Copyright 2011, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Mon Sep 12 18:54:48 2011 -0400 */ (function (a7, K) { var ap = a7.document, bq = a7.navigator, bh = a7.location; var b = (function () { var bB = function (bX, bY) { return new bB.fn.init(bX, bY, bz); }, bR = a7.jQuery, bD = a7.$, bz, bV = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, bJ = /\S/, bF = /^\s+/, bA = /\s+$/, bE = /\d/, bw = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, bK = /^[\],:{}\s]*$/, bT = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, bM = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, bG = /(?:^|:|,)(?:\s*\[)+/g, bu = /(webkit)[ \/]([\w.]+)/, bO = /(opera)(?:.*version)?[ \/]([\w.]+)/, bN = /(msie) ([\w.]+)/, bP = /(mozilla)(?:.*? rv:([\w.]+))?/, bx = /-([a-z]|[0-9])/ig, bW = /^-ms-/, bQ = function (bX, bY) { return (bY + "").toUpperCase(); }, bU = bq.userAgent, bS, by, e, bI = Object.prototype.toString, bC = Object.prototype.hasOwnProperty, bv = Array.prototype.push, bH = Array.prototype.slice, bL = String.prototype.trim, br = Array.prototype.indexOf, bt = {}; bB.fn = bB.prototype = { constructor: bB, init: function (bX, b1, b0) { var bZ, b2, bY, b3; if (!bX) { return this; } if (bX.nodeType) { this.context = this[0] = bX; this.length = 1; return this; } if (bX === "body" && !b1 && ap.body) { this.context = ap; this[0] = ap.body; this.selector = bX; this.length = 1; return this; } if (typeof bX === "string") { if (bX.charAt(0) === "<" && bX.charAt(bX.length - 1) === ">" && bX.length >= 3) { bZ = [null, bX, null]; } else { bZ = bV.exec(bX); } if (bZ && (bZ[1] || !b1)) { if (bZ[1]) { b1 = b1 instanceof bB ? b1[0] : b1; b3 = (b1 ? b1.ownerDocument || b1 : ap); bY = bw.exec(bX); if (bY) { if (bB.isPlainObject(b1)) { bX = [ap.createElement(bY[1])]; bB.fn.attr.call(bX, b1, true); } else { bX = [b3.createElement(bY[1])]; } } else { bY = bB.buildFragment([bZ[1]], [b3]); bX = (bY.cacheable ? bB.clone(bY.fragment) : bY.fragment).childNodes; } return bB.merge(this, bX); } else { b2 = ap.getElementById(bZ[2]); if (b2 && b2.parentNode) { if (b2.id !== bZ[2]) { return b0.find(bX); } this.length = 1; this[0] = b2; } this.context = ap; this.selector = bX; return this; } } else { if (!b1 || b1.jquery) { return (b1 || b0).find(bX); } else { return this.constructor(b1).find(bX); } } } else { if (bB.isFunction(bX)) { return b0.ready(bX); } } if (bX.selector !== K) { this.selector = bX.selector; this.context = bX.context; } return bB.makeArray(bX, this); }, selector: "", jquery: "1.6.4", length: 0, size: function () { return this.length; }, toArray: function () { return bH.call(this, 0); }, get: function (bX) { return bX == null ? this.toArray() : (bX < 0 ? this[this.length + bX] : this[bX]); }, pushStack: function (bY, b0, bX) { var bZ = this.constructor(); if (bB.isArray(bY)) { bv.apply(bZ, bY); } else { bB.merge(bZ, bY); } bZ.prevObject = this; bZ.context = this.context; if (b0 === "find") { bZ.selector = this.selector + (this.selector ? " " : "") + bX; } else { if (b0) { bZ.selector = this.selector + "." + b0 + "(" + bX + ")"; } } return bZ; }, each: function (bY, bX) { return bB.each(this, bY, bX); }, ready: function (bX) { bB.bindReady(); by.done(bX); return this; }, eq: function (bX) { return bX === -1 ? this.slice(bX) : this.slice(bX, +bX + 1); }, first: function () { return this.eq(0); }, last: function () { return this.eq(-1); }, slice: function () { return this.pushStack(bH.apply(this, arguments), "slice", bH.call(arguments).join(",")); }, map: function (bX) { return this.pushStack(bB.map(this, function (bZ, bY) { return bX.call(bZ, bY, bZ); })); }, end: function () { return this.prevObject || this.constructor(null); }, push: bv, sort: [].sort, splice: [].splice }; bB.fn.init.prototype = bB.fn; bB.extend = bB.fn.extend = function () { var b6, bZ, bX, bY, b3, b4, b2 = arguments[0] || {}, b1 = 1, b0 = arguments.length, b5 = false; if (typeof b2 === "boolean") { b5 = b2; b2 = arguments[1] || {}; b1 = 2; } if (typeof b2 !== "object" && !bB.isFunction(b2)) { b2 = {}; } if (b0 === b1) { b2 = this; --b1; } for (; b1 < b0; b1++) { if ((b6 = arguments[b1]) != null) { for (bZ in b6) { bX = b2[bZ]; bY = b6[bZ]; if (b2 === bY) { continue; } if (b5 && bY && (bB.isPlainObject(bY) || (b3 = bB.isArray(bY)))) { if (b3) { b3 = false; b4 = bX && bB.isArray(bX) ? bX : []; } else { b4 = bX && bB.isPlainObject(bX) ? bX : {}; } b2[bZ] = bB.extend(b5, b4, bY); } else { if (bY !== K) { b2[bZ] = bY; } } } } } return b2; }; bB.extend({ noConflict: function (bX) { if (a7.$ === bB) { a7.$ = bD; } if (bX && a7.jQuery === bB) { a7.jQuery = bR; } return bB; }, isReady: false, readyWait: 1, holdReady: function (bX) { if (bX) { bB.readyWait++; } else { bB.ready(true); } }, ready: function (bX) { if ((bX === true && !--bB.readyWait) || (bX !== true && !bB.isReady)) { if (!ap.body) { return setTimeout(bB.ready, 1); } bB.isReady = true; if (bX !== true && --bB.readyWait > 0) { return; } by.resolveWith(ap, [bB]); if (bB.fn.trigger) { bB(ap).trigger("ready").unbind("ready"); } } }, bindReady: function () { if (by) { return; } by = bB._Deferred(); if (ap.readyState === "complete") { return setTimeout(bB.ready, 1); } if (ap.addEventListener) { ap.addEventListener("DOMContentLoaded", e, false); a7.addEventListener("load", bB.ready, false); } else { if (ap.attachEvent) { ap.attachEvent("onreadystatechange", e); a7.attachEvent("onload", bB.ready); var bX = false; try { bX = a7.frameElement == null; } catch (bY) {} if (ap.documentElement.doScroll && bX) { bs(); } } } }, isFunction: function (bX) { return bB.type(bX) === "function"; }, isArray: Array.isArray || function (bX) { return bB.type(bX) === "array"; }, isWindow: function (bX) { return bX && typeof bX === "object" && "setInterval" in bX; }, isNaN: function (bX) { return bX == null || !bE.test(bX) || isNaN(bX); }, type: function (bX) { return bX == null ? String(bX) : bt[bI.call(bX)] || "object"; }, isPlainObject: function (bZ) { if (!bZ || bB.type(bZ) !== "object" || bZ.nodeType || bB.isWindow(bZ)) { return false; } try { if (bZ.constructor && !bC.call(bZ, "constructor") && !bC.call(bZ.constructor.prototype, "isPrototypeOf")) { return false; } } catch (bY) { return false; } var bX; for (bX in bZ) {} return bX === K || bC.call(bZ, bX); }, isEmptyObject: function (bY) { for (var bX in bY) { return false; } return true; }, error: function (bX) { throw bX; }, parseJSON: function (bX) { if (typeof bX !== "string" || !bX) { return null; } bX = bB.trim(bX); if (a7.JSON && a7.JSON.parse) { return a7.JSON.parse(bX); } if (bK.test(bX.replace(bT, "@").replace(bM, "]").replace(bG, ""))) { return (new Function("return " + bX))(); } bB.error("Invalid JSON: " + bX); }, parseXML: function (bZ) { var bX, bY; try { if (a7.DOMParser) { bY = new DOMParser(); bX = bY.parseFromString(bZ, "text/xml"); } else { bX = new ActiveXObject("Microsoft.XMLDOM"); bX.async = "false"; bX.loadXML(bZ); } } catch (b0) { bX = K; } if (!bX || !bX.documentElement || bX.getElementsByTagName("parsererror").length) { bB.error("Invalid XML: " + bZ); } return bX; }, noop: function () {}, globalEval: function (bX) { if (bX && bJ.test(bX)) { (a7.execScript || function (bY) { a7["eval"].call(a7, bY); })(bX); } }, camelCase: function (bX) { return bX.replace(bW, "ms-").replace(bx, bQ); }, nodeName: function (bY, bX) { return bY.nodeName && bY.nodeName.toUpperCase() === bX.toUpperCase(); }, each: function (b0, b3, bZ) { var bY, b1 = 0, b2 = b0.length, bX = b2 === K || bB.isFunction(b0); if (bZ) { if (bX) { for (bY in b0) { if (b3.apply(b0[bY], bZ) === false) { break; } } } else { for (; b1 < b2;) { if (b3.apply(b0[b1++], bZ) === false) { break; } } } } else { if (bX) { for (bY in b0) { if (b3.call(b0[bY], bY, b0[bY]) === false) { break; } } } else { for (; b1 < b2;) { if (b3.call(b0[b1], b1, b0[b1++]) === false) { break; } } } } return b0; }, trim: bL ? function (bX) { return bX == null ? "" : bL.call(bX); } : function (bX) { return bX == null ? "" : bX.toString().replace(bF, "").replace(bA, ""); }, makeArray: function (b0, bY) { var bX = bY || []; if (b0 != null) { var bZ = bB.type(b0); if (b0.length == null || bZ === "string" || bZ === "function" || bZ === "regexp" || bB.isWindow(b0)) { bv.call(bX, b0); } else { bB.merge(bX, b0); } } return bX; }, inArray: function (bZ, b0) { if (!b0) { return -1; } if (br) { return br.call(b0, bZ); } for (var bX = 0, bY = b0.length; bX < bY; bX++) { if (b0[bX] === bZ) { return bX; } } return -1; }, merge: function (b1, bZ) { var b0 = b1.length, bY = 0; if (typeof bZ.length === "number") { for (var bX = bZ.length; bY < bX; bY++) { b1[b0++] = bZ[bY]; } } else { while (bZ[bY] !== K) { b1[b0++] = bZ[bY++]; } } b1.length = b0; return b1; }, grep: function (bY, b3, bX) { var bZ = [], b2; bX = !! bX; for (var b0 = 0, b1 = bY.length; b0 < b1; b0++) { b2 = !! b3(bY[b0], b0); if (bX !== b2) { bZ.push(bY[b0]); } } return bZ; }, map: function (bX, b4, b5) { var b2, b3, b1 = [], bZ = 0, bY = bX.length, b0 = bX instanceof bB || bY !== K && typeof bY === "number" && ((bY > 0 && bX[0] && bX[bY - 1]) || bY === 0 || bB.isArray(bX)); if (b0) { for (; bZ < bY; bZ++) { b2 = b4(bX[bZ], bZ, b5); if (b2 != null) { b1[b1.length] = b2; } } } else { for (b3 in bX) { b2 = b4(bX[b3], b3, b5); if (b2 != null) { b1[b1.length] = b2; } } } return b1.concat.apply([], b1); }, guid: 1, proxy: function (b1, b0) { if (typeof b0 === "string") { var bZ = b1[b0]; b0 = b1; b1 = bZ; } if (!bB.isFunction(b1)) { return K; } var bX = bH.call(arguments, 2), bY = function () { return b1.apply(b0, bX.concat(bH.call(arguments))); }; bY.guid = b1.guid = b1.guid || bY.guid || bB.guid++; return bY; }, access: function (bX, b5, b3, bZ, b2, b4) { var bY = bX.length; if (typeof b5 === "object") { for (var b0 in b5) { bB.access(bX, b0, b5[b0], bZ, b2, b3); } return bX; } if (b3 !== K) { bZ = !b4 && bZ && bB.isFunction(b3); for (var b1 = 0; b1 < bY; b1++) { b2(bX[b1], b5, bZ ? b3.call(bX[b1], b1, b2(bX[b1], b5)) : b3, b4); } return bX; } return bY ? b2(bX[0], b5) : K; }, now: function () { return (new Date()).getTime(); }, uaMatch: function (bY) { bY = bY.toLowerCase(); var bX = bu.exec(bY) || bO.exec(bY) || bN.exec(bY) || bY.indexOf("compatible") < 0 && bP.exec(bY) || []; return { browser: bX[1] || "", version: bX[2] || "0" }; }, sub: function () { function bX(b0, b1) { return new bX.fn.init(b0, b1); } bB.extend(true, bX, this); bX.superclass = this; bX.fn = bX.prototype = this(); bX.fn.constructor = bX; bX.sub = this.sub; bX.fn.init = function bZ(b0, b1) { if (b1 && b1 instanceof bB && !(b1 instanceof bX)) { b1 = bX(b1); } return bB.fn.init.call(this, b0, b1, bY); }; bX.fn.init.prototype = bX.fn; var bY = bX(ap); return bX; }, browser: {} }); bB.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (bY, bX) { bt["[object " + bX + "]"] = bX.toLowerCase(); }); bS = bB.uaMatch(bU); if (bS.browser) { bB.browser[bS.browser] = true; bB.browser.version = bS.version; } if (bB.browser.webkit) { bB.browser.safari = true; } if (bJ.test("\xA0")) { bF = /^[\s\xA0]+/; bA = /[\s\xA0]+$/; } bz = bB(ap); if (ap.addEventListener) { e = function () { ap.removeEventListener("DOMContentLoaded", e, false); bB.ready(); }; } else { if (ap.attachEvent) { e = function () { if (ap.readyState === "complete") { ap.detachEvent("onreadystatechange", e); bB.ready(); } }; } } function bs() { if (bB.isReady) { return; } try { ap.documentElement.doScroll("left"); } catch (bX) { setTimeout(bs, 1); return; } bB.ready(); } return bB; })(); var a = "done fail isResolved isRejected promise then always pipe".split(" "), aE = [].slice; b.extend({ _Deferred: function () { var bt = [], bu, br, bs, e = { done: function () { if (!bs) { var bw = arguments, bx, bA, bz, by, bv; if (bu) { bv = bu; bu = 0; } for (bx = 0, bA = bw.length; bx < bA; bx++) { bz = bw[bx]; by = b.type(bz); if (by === "array") { e.done.apply(e, bz); } else { if (by === "function") { bt.push(bz); } } } if (bv) { e.resolveWith(bv[0], bv[1]); } } return this; }, resolveWith: function (bw, bv) { if (!bs && !bu && !br) { bv = bv || []; br = 1; try { while (bt[0]) { bt.shift().apply(bw, bv); } } finally { bu = [bw, bv]; br = 0; } } return this; }, resolve: function () { e.resolveWith(this, arguments); return this; }, isResolved: function () { return !!(br || bu); }, cancel: function () { bs = 1; bt = []; return this; } }; return e; }, Deferred: function (br) { var e = b._Deferred(), bt = b._Deferred(), bs; b.extend(e, { then: function (bv, bu) { e.done(bv).fail(bu); return this; }, always: function () { return e.done.apply(e, arguments).fail.apply(this, arguments); }, fail: bt.done, rejectWith: bt.resolveWith, reject: bt.resolve, isRejected: bt.isResolved, pipe: function (bv, bu) { return b.Deferred(function (bw) { b.each({ done: [bv, "resolve"], fail: [bu, "reject"] }, function (by, bB) { var bx = bB[0], bA = bB[1], bz; if (b.isFunction(bx)) { e[by](function () { bz = bx.apply(this, arguments); if (bz && b.isFunction(bz.promise)) { bz.promise().then(bw.resolve, bw.reject); } else { bw[bA + "With"](this === e ? bw : this, [bz]); } }); } else { e[by](bw[bA]); } }); }).promise(); }, promise: function (bv) { if (bv == null) { if (bs) { return bs; } bs = bv = {}; } var bu = a.length; while (bu--) { bv[a[bu]] = e[a[bu]]; } return bv; } }); e.done(bt.cancel).fail(e.cancel); delete e.cancel; if (br) { br.call(e, e); } return e; }, when: function (bw) { var br = arguments, bs = 0, bv = br.length, bu = bv, e = bv <= 1 && bw && b.isFunction(bw.promise) ? bw : b.Deferred(); function bt(bx) { return function (by) { br[bx] = arguments.length > 1 ? aE.call(arguments, 0) : by; if (!(--bu)) { e.resolveWith(e, aE.call(br, 0)); } }; } if (bv > 1) { for (; bs < bv; bs++) { if (br[bs] && b.isFunction(br[bs].promise)) { br[bs].promise().then(bt(bs), e.reject); } else { --bu; } } if (!bu) { e.resolveWith(e, br); } } else { if (e !== bw) { e.resolveWith(e, bv ? [bw] : []); } } return e.promise(); } }); b.support = (function () { var bB = ap.createElement("div"), bI = ap.documentElement, bu, bJ, bC, bs, bA, bv, by, br, bz, bD, bx, bH, bF, bt, bw, bE, bK; bB.setAttribute("className", "t"); bB.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; bu = bB.getElementsByTagName("*"); bJ = bB.getElementsByTagName("a")[0]; if (!bu || !bu.length || !bJ) { return {}; } bC = ap.createElement("select"); bs = bC.appendChild(ap.createElement("option")); bA = bB.getElementsByTagName("input")[0]; by = { leadingWhitespace: (bB.firstChild.nodeType === 3), tbody: !bB.getElementsByTagName("tbody").length, htmlSerialize: !! bB.getElementsByTagName("link").length, style: /top/.test(bJ.getAttribute("style")), hrefNormalized: (bJ.getAttribute("href") === "/a"), opacity: /^0.55$/.test(bJ.style.opacity), cssFloat: !! bJ.style.cssFloat, checkOn: (bA.value === "on"), optSelected: bs.selected, getSetAttribute: bB.className !== "t", submitBubbles: true, changeBubbles: true, focusinBubbles: false, deleteExpando: true, noCloneEvent: true, inlineBlockNeedsLayout: false, shrinkWrapBlocks: false, reliableMarginRight: true }; bA.checked = true; by.noCloneChecked = bA.cloneNode(true).checked; bC.disabled = true; by.optDisabled = !bs.disabled; try { delete bB.test; } catch (bG) { by.deleteExpando = false; } if (!bB.addEventListener && bB.attachEvent && bB.fireEvent) { bB.attachEvent("onclick", function () { by.noCloneEvent = false; }); bB.cloneNode(true).fireEvent("onclick"); } bA = ap.createElement("input"); bA.value = "t"; bA.setAttribute("type", "radio"); by.radioValue = bA.value === "t"; bA.setAttribute("checked", "checked"); bB.appendChild(bA); br = ap.createDocumentFragment(); br.appendChild(bB.firstChild); by.checkClone = br.cloneNode(true).cloneNode(true).lastChild.checked; bB.innerHTML = ""; bB.style.width = bB.style.paddingLeft = "1px"; bz = ap.getElementsByTagName("body")[0]; bx = ap.createElement(bz ? "div" : "body"); bH = { visibility: "hidden", width: 0, height: 0, border: 0, margin: 0, background: "none" }; if (bz) { b.extend(bH, { position: "absolute", left: "-1000px", top: "-1000px" }); } for (bE in bH) { bx.style[bE] = bH[bE]; } bx.appendChild(bB); bD = bz || bI; bD.insertBefore(bx, bD.firstChild); by.appendChecked = bA.checked; by.boxModel = bB.offsetWidth === 2; if ("zoom" in bB.style) { bB.style.display = "inline"; bB.style.zoom = 1; by.inlineBlockNeedsLayout = (bB.offsetWidth === 2); bB.style.display = ""; bB.innerHTML = "<div style='width:4px;'></div>"; by.shrinkWrapBlocks = (bB.offsetWidth !== 2); } bB.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>"; bF = bB.getElementsByTagName("td"); bK = (bF[0].offsetHeight === 0); bF[0].style.display = ""; bF[1].style.display = "none"; by.reliableHiddenOffsets = bK && (bF[0].offsetHeight === 0); bB.innerHTML = ""; if (ap.defaultView && ap.defaultView.getComputedStyle) { bv = ap.createElement("div"); bv.style.width = "0"; bv.style.marginRight = "0"; bB.appendChild(bv); by.reliableMarginRight = (parseInt((ap.defaultView.getComputedStyle(bv, null) || { marginRight: 0 }).marginRight, 10) || 0) === 0; } bx.innerHTML = ""; bD.removeChild(bx); if (bB.attachEvent) { for (bE in { submit: 1, change: 1, focusin: 1 }) { bw = "on" + bE; bK = (bw in bB); if (!bK) { bB.setAttribute(bw, "return;"); bK = (typeof bB[bw] === "function"); } by[bE + "Bubbles"] = bK; } } bx = br = bC = bs = bz = bv = bB = bA = null; return by; })(); b.boxModel = b.support.boxModel; var aL = /^(?:\{.*\}|\[.*\])$/, av = /([A-Z])/g; b.extend({ cache: {}, uuid: 0, expando: "jQuery" + (b.fn.jquery + Math.random()).replace(/\D/g, ""), noData: { "embed": true, "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", "applet": true }, hasData: function (e) { e = e.nodeType ? b.cache[e[b.expando]] : e[b.expando]; return !!e && !S(e); }, data: function (bt, br, bv, bu) { if (!b.acceptData(bt)) { return; } var bw, by, bz = b.expando, bx = typeof br === "string", bA = bt.nodeType, e = bA ? b.cache : bt, bs = bA ? bt[b.expando] : bt[b.expando] && b.expando; if ((!bs || (bu && bs && (e[bs] && !e[bs][bz]))) && bx && bv === K) { return; } if (!bs) { if (bA) { bt[b.expando] = bs = ++b.uuid; } else { bs = b.expando; } } if (!e[bs]) { e[bs] = {}; if (!bA) { e[bs].toJSON = b.noop; } } if (typeof br === "object" || typeof br === "function") { if (bu) { e[bs][bz] = b.extend(e[bs][bz], br); } else { e[bs] = b.extend(e[bs], br); } } bw = e[bs]; if (bu) { if (!bw[bz]) { bw[bz] = {}; } bw = bw[bz]; } if (bv !== K) { bw[b.camelCase(br)] = bv; } if (br === "events" && !bw[br]) { return bw[bz] && bw[bz].events; } if (bx) { by = bw[br]; if (by == null) { by = bw[b.camelCase(br)]; } } else { by = bw; } return by; }, removeData: function (bu, bs, bv) { if (!b.acceptData(bu)) { return; } var bw, bx = b.expando, by = bu.nodeType, br = by ? b.cache : bu, bt = by ? bu[b.expando] : b.expando; if (!br[bt]) { return; } if (bs) { bw = bv ? br[bt][bx] : br[bt]; if (bw) { if (!bw[bs]) { bs = b.camelCase(bs); } delete bw[bs]; if (!S(bw)) { return; } } } if (bv) { delete br[bt][bx]; if (!S(br[bt])) { return; } } var e = br[bt][bx]; if (b.support.deleteExpando || !br.setInterval) { delete br[bt]; } else { br[bt] = null; } if (e) { br[bt] = {}; if (!by) { br[bt].toJSON = b.noop; } br[bt][bx] = e; } else { if (by) { if (b.support.deleteExpando) { delete bu[b.expando]; } else { if (bu.removeAttribute) { bu.removeAttribute(b.expando); } else { bu[b.expando] = null; } } } } }, _data: function (br, e, bs) { return b.data(br, e, bs, true); }, acceptData: function (br) { if (br.nodeName) { var e = b.noData[br.nodeName.toLowerCase()]; if (e) { return !(e === true || br.getAttribute("classid") !== e); } } return true; } }); b.fn.extend({ data: function (bu, bw) { var bv = null; if (typeof bu === "undefined") { if (this.length) { bv = b.data(this[0]); if (this[0].nodeType === 1) { var e = this[0].attributes, bs; for (var bt = 0, br = e.length; bt < br; bt++) { bs = e[bt].name; if (bs.indexOf("data-") === 0) { bs = b.camelCase(bs.substring(5)); a1(this[0], bs, bv[bs]); } } } } return bv; } else { if (typeof bu === "object") { return this.each(function () { b.data(this, bu); }); } } var bx = bu.split("."); bx[1] = bx[1] ? "." + bx[1] : ""; if (bw === K) { bv = this.triggerHandler("getData" + bx[1] + "!", [bx[0]]); if (bv === K && this.length) { bv = b.data(this[0], bu); bv = a1(this[0], bu, bv); } return bv === K && bx[1] ? this.data(bx[0]) : bv; } else { return this.each(function () { var bz = b(this), by = [bx[0], bw]; bz.triggerHandler("setData" + bx[1] + "!", by); b.data(this, bu, bw); bz.triggerHandler("changeData" + bx[1] + "!", by); }); } }, removeData: function (e) { return this.each(function () { b.removeData(this, e); }); } }); function a1(bt, bs, bu) { if (bu === K && bt.nodeType === 1) { var br = "data-" + bs.replace(av, "-$1").toLowerCase(); bu = bt.getAttribute(br); if (typeof bu === "string") { try { bu = bu === "true" ? true : bu === "false" ? false : bu === "null" ? null : !b.isNaN(bu) ? parseFloat(bu) : aL.test(bu) ? b.parseJSON(bu) : bu; } catch (bv) {} b.data(bt, bs, bu); } else { bu = K; } } return bu; } function S(br) { for (var e in br) { if (e !== "toJSON") { return false; } } return true; } function bd(bu, bt, bw) { var bs = bt + "defer", br = bt + "queue", e = bt + "mark", bv = b.data(bu, bs, K, true); if (bv && (bw === "queue" || !b.data(bu, br, K, true)) && (bw === "mark" || !b.data(bu, e, K, true))) { setTimeout(function () { if (!b.data(bu, br, K, true) && !b.data(bu, e, K, true)) { b.removeData(bu, bs, true); bv.resolve(); } }, 0); } } b.extend({ _mark: function (br, e) { if (br) { e = (e || "fx") + "mark"; b.data(br, e, (b.data(br, e, K, true) || 0) + 1, true); } }, _unmark: function (bu, bt, br) { if (bu !== true) { br = bt; bt = bu; bu = false; } if (bt) { br = br || "fx"; var e = br + "mark", bs = bu ? 0 : ((b.data(bt, e, K, true) || 1) - 1); if (bs) { b.data(bt, e, bs, true); } else { b.removeData(bt, e, true); bd(bt, br, "mark"); } } }, queue: function (br, e, bt) { if (br) { e = (e || "fx") + "queue"; var bs = b.data(br, e, K, true); if (bt) { if (!bs || b.isArray(bt)) { bs = b.data(br, e, b.makeArray(bt), true); } else { bs.push(bt); } } return bs || []; } }, dequeue: function (bt, bs) { bs = bs || "fx"; var e = b.queue(bt, bs), br = e.shift(), bu; if (br === "inprogress") { br = e.shift(); } if (br) { if (bs === "fx") { e.unshift("inprogress"); } br.call(bt, function () { b.dequeue(bt, bs); }); } if (!e.length) { b.removeData(bt, bs + "queue", true); bd(bt, bs, "queue"); } } }); b.fn.extend({ queue: function (e, br) { if (typeof e !== "string") { br = e; e = "fx"; } if (br === K) { return b.queue(this[0], e); } return this.each(function () { var bs = b.queue(this, e, br); if (e === "fx" && bs[0] !== "inprogress") { b.dequeue(this, e); } }); }, dequeue: function (e) { return this.each(function () { b.dequeue(this, e); }); }, delay: function (br, e) { br = b.fx ? b.fx.speeds[br] || br : br; e = e || "fx"; return this.queue(e, function () { var bs = this; setTimeout(function () { b.dequeue(bs, e); }, br); }); }, clearQueue: function (e) { return this.queue(e || "fx", []); }, promise: function (bz, bs) { if (typeof bz !== "string") { bs = bz; bz = K; } bz = bz || "fx"; var e = b.Deferred(), br = this, bu = br.length, bx = 1, bv = bz + "defer", bw = bz + "queue", by = bz + "mark", bt; function bA() { if (!(--bx)) { e.resolveWith(br, [br]); } } while (bu--) { if ((bt = b.data(br[bu], bv, K, true) || (b.data(br[bu], bw, K, true) || b.data(br[bu], by, K, true)) && b.data(br[bu], bv, b._Deferred(), true))) { bx++; bt.done(bA); } } bA(); return e.promise(); } }); var aJ = /[\n\t\r]/g, ab = /\s+/, aN = /\r/g, g = /^(?:button|input)$/i, D = /^(?:button|input|object|select|textarea)$/i, l = /^a(?:rea)?$/i, aj = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, ba, aU; b.fn.extend({ attr: function (e, br) { return b.access(this, e, br, true, b.attr); }, removeAttr: function (e) { return this.each(function () { b.removeAttr(this, e); }); }, prop: function (e, br) { return b.access(this, e, br, true, b.prop); }, removeProp: function (e) { e = b.propFix[e] || e; return this.each(function () { try { this[e] = K; delete this[e]; } catch (br) {} }); }, addClass: function (bu) { var bw, bs, br, bt, bv, bx, e; if (b.isFunction(bu)) { return this.each(function (by) { b(this).addClass(bu.call(this, by, this.className)); }); } if (bu && typeof bu === "string") { bw = bu.split(ab); for (bs = 0, br = this.length; bs < br; bs++) { bt = this[bs]; if (bt.nodeType === 1) { if (!bt.className && bw.length === 1) { bt.className = bu; } else { bv = " " + bt.className + " "; for (bx = 0, e = bw.length; bx < e; bx++) { if (!~bv.indexOf(" " + bw[bx] + " ")) { bv += bw[bx] + " "; } } bt.className = b.trim(bv); } } } } return this; }, removeClass: function (bv) { var bw, bs, br, bu, bt, bx, e; if (b.isFunction(bv)) { return this.each(function (by) { b(this).removeClass(bv.call(this, by, this.className)); }); } if ((bv && typeof bv === "string") || bv === K) { bw = (bv || "").split(ab); for (bs = 0, br = this.length; bs < br; bs++) { bu = this[bs]; if (bu.nodeType === 1 && bu.className) { if (bv) { bt = (" " + bu.className + " ").replace(aJ, " "); for (bx = 0, e = bw.length; bx < e; bx++) { bt = bt.replace(" " + bw[bx] + " ", " "); } bu.className = b.trim(bt); } else { bu.className = ""; } } } } return this; }, toggleClass: function (bt, br) { var bs = typeof bt, e = typeof br === "boolean"; if (b.isFunction(bt)) { return this.each(function (bu) { b(this).toggleClass(bt.call(this, bu, this.className, br), br); }); } return this.each(function () { if (bs === "string") { var bw, bv = 0, bu = b(this), bx = br, by = bt.split(ab); while ((bw = by[bv++])) { bx = e ? bx : !bu.hasClass(bw); bu[bx ? "addClass" : "removeClass"](bw); } } else { if (bs === "undefined" || bs === "boolean") { if (this.className) { b._data(this, "__className__", this.className); } this.className = this.className || bt === false ? "" : b._data(this, "__className__") || ""; } } }); }, hasClass: function (e) { var bt = " " + e + " "; for (var bs = 0, br = this.length; bs < br; bs++) { if (this[bs].nodeType === 1 && (" " + this[bs].className + " ").replace(aJ, " ").indexOf(bt) > -1) { return true; } } return false; }, val: function (bt) { var e, br, bs = this[0]; if (!arguments.length) { if (bs) { e = b.valHooks[bs.nodeName.toLowerCase()] || b.valHooks[bs.type]; if (e && "get" in e && (br = e.get(bs, "value")) !== K) { return br; } br = bs.value; return typeof br === "string" ? br.replace(aN, "") : br == null ? "" : br; } return K; } var bu = b.isFunction(bt); return this.each(function (bw) { var bv = b(this), bx; if (this.nodeType !== 1) { return; } if (bu) { bx = bt.call(this, bw, bv.val()); } else { bx = bt; } if (bx == null) { bx = ""; } else { if (typeof bx === "number") { bx += ""; } else { if (b.isArray(bx)) { bx = b.map(bx, function (by) { return by == null ? "" : by + ""; }); } } } e = b.valHooks[this.nodeName.toLowerCase()] || b.valHooks[this.type]; if (!e || !("set" in e) || e.set(this, bx, "value") === K) { this.value = bx; } }); } }); b.extend({ valHooks: { option: { get: function (e) { var br = e.attributes.value; return !br || br.specified ? e.value : e.text; } }, select: { get: function (e) { var bw, bu = e.selectedIndex, bx = [], by = e.options, bt = e.type === "select-one"; if (bu < 0) { return null; } for (var br = bt ? bu : 0, bv = bt ? bu + 1 : by.length; br < bv; br++) { var bs = by[br]; if (bs.selected && (b.support.optDisabled ? !bs.disabled : bs.getAttribute("disabled") === null) && (!bs.parentNode.disabled || !b.nodeName(bs.parentNode, "optgroup"))) { bw = b(bs).val(); if (bt) { return bw; } bx.push(bw); } } if (bt && !bx.length && by.length) { return b(by[bu]).val(); } return bx; }, set: function (br, bs) { var e = b.makeArray(bs); b(br).find("option").each(function () { this.selected = b.inArray(b(this).val(), e) >= 0; }); if (!e.length) { br.selectedIndex = -1; } return e; } } }, attrFn: { val: true, css: true, html: true, text: true, data: true, width: true, height: true, offset: true }, attrFix: { tabindex: "tabIndex" }, attr: function (bw, bt, bx, bv) { var br = bw.nodeType; if (!bw || br === 3 || br === 8 || br === 2) { return K; } if (bv && bt in b.attrFn) { return b(bw)[bt](bx); } if (!("getAttribute" in bw)) { return b.prop(bw, bt, bx); } var bs, e, bu = br !== 1 || !b.isXMLDoc(bw); if (bu) { bt = b.attrFix[bt] || bt; e = b.attrHooks[bt]; if (!e) { if (aj.test(bt)) { e = aU; } else { if (ba) { e = ba; } } } } if (bx !== K) { if (bx === null) { b.removeAttr(bw, bt); return K; } else { if (e && "set" in e && bu && (bs = e.set(bw, bx, bt)) !== K) { return bs; } else { bw.setAttribute(bt, "" + bx); return bx; } } } else { if (e && "get" in e && bu && (bs = e.get(bw, bt)) !== null) { return bs; } else { bs = bw.getAttribute(bt); return bs === null ? K : bs; } } }, removeAttr: function (br, e) { var bs; if (br.nodeType === 1) { e = b.attrFix[e] || e; b.attr(br, e, ""); br.removeAttribute(e); if (aj.test(e) && (bs = b.propFix[e] || e) in br) { br[bs] = false; } } }, attrHooks: { type: { set: function (e, br) { if (g.test(e.nodeName) && e.parentNode) { b.error("type property can't be changed"); } else { if (!b.support.radioValue && br === "radio" && b.nodeName(e, "input")) { var bs = e.value; e.setAttribute("type", br); if (bs) { e.value = bs; } return br; } } } }, value: { get: function (br, e) { if (ba && b.nodeName(br, "button")) { return ba.get(br, e); } return e in br ? br.value : null; }, set: function (br, bs, e) { if (ba && b.nodeName(br, "button")) { return ba.set(br, bs, e); } br.value = bs; } } }, propFix: { tabindex: "tabIndex", readonly: "readOnly", "for": "htmlFor", "class": "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder", contenteditable: "contentEditable" }, prop: function (bv, bt, bw) { var br = bv.nodeType; if (!bv || br === 3 || br === 8 || br === 2) { return K; } var bs, e, bu = br !== 1 || !b.isXMLDoc(bv); if (bu) { bt = b.propFix[bt] || bt; e = b.propHooks[bt]; } if (bw !== K) { if (e && "set" in e && (bs = e.set(bv, bw, bt)) !== K) { return bs; } else { return (bv[bt] = bw); } } else { if (e && "get" in e && (bs = e.get(bv, bt)) !== null) { return bs; } else { return bv[bt]; } } }, propHooks: { tabIndex: { get: function (br) { var e = br.getAttributeNode("tabindex"); return e && e.specified ? parseInt(e.value, 10) : D.test(br.nodeName) || l.test(br.nodeName) && br.href ? 0 : K; } } } }); b.attrHooks.tabIndex = b.propHooks.tabIndex; aU = { get: function (br, e) { var bs; return b.prop(br, e) === true || (bs = br.getAttributeNode(e)) && bs.nodeValue !== false ? e.toLowerCase() : K; }, set: function (br, bt, e) { var bs; if (bt === false) { b.removeAttr(br, e); } else { bs = b.propFix[e] || e; if (bs in br) { br[bs] = true; } br.setAttribute(e, e.toLowerCase()); } return e; } }; if (!b.support.getSetAttribute) { ba = b.valHooks.button = { get: function (bs, br) { var e; e = bs.getAttributeNode(br); return e && e.nodeValue !== "" ? e.nodeValue : K; }, set: function (bs, bt, br) { var e = bs.getAttributeNode(br); if (!e) { e = ap.createAttribute(br); bs.setAttributeNode(e); } return (e.nodeValue = bt + ""); } }; b.each(["width", "height"], function (br, e) { b.attrHooks[e] = b.extend(b.attrHooks[e], { set: function (bs, bt) { if (bt === "") { bs.setAttribute(e, "auto"); return bt; } } }); }); } if (!b.support.hrefNormalized) { b.each(["href", "src", "width", "height"], function (br, e) { b.attrHooks[e] = b.extend(b.attrHooks[e], { get: function (bt) { var bs = bt.getAttribute(e, 2); return bs === null ? K : bs; } }); }); } if (!b.support.style) { b.attrHooks.style = { get: function (e) { return e.style.cssText.toLowerCase() || K; }, set: function (e, br) { return (e.style.cssText = "" + br); } }; } if (!b.support.optSelected) { b.propHooks.selected = b.extend(b.propHooks.selected, { get: function (br) { var e = br.parentNode; if (e) { e.selectedIndex; if (e.parentNode) { e.parentNode.selectedIndex; } } return null; } }); } if (!b.support.checkOn) { b.each(["radio", "checkbox"], function () { b.valHooks[this] = { get: function (e) { return e.getAttribute("value") === null ? "on" : e.value; } }; }); } b.each(["radio", "checkbox"], function () { b.valHooks[this] = b.extend(b.valHooks[this], { set: function (e, br) { if (b.isArray(br)) { return (e.checked = b.inArray(b(e).val(), br) >= 0); } } }); }); var aW = /\.(.*)$/, a9 = /^(?:textarea|input|select)$/i, N = /\./g, be = / /g, aB = /[^\w\s.|`]/g, G = function (e) { return e.replace(aB, "\\$&"); }; b.event = { add: function (bt, bx, bC, bv) { if (bt.nodeType === 3 || bt.nodeType === 8) { return; } if (bC === false) { bC = bg; } else { if (!bC) { return; } } var br, bB; if (bC.handler) { br = bC; bC = br.handler; } if (!bC.guid) { bC.guid = b.guid++; } var by = b._data(bt); if (!by) { return; } var bD = by.events, bw = by.handle; if (!bD) { by.events = bD = {}; } if (!bw) { by.handle = bw = function (bE) { return typeof b !== "undefined" && (!bE || b.event.triggered !== bE.type) ? b.event.handle.apply(bw.elem, arguments) : K; }; } bw.elem = bt; bx = bx.split(" "); var bA, bu = 0, e; while ((bA = bx[bu++])) { bB = br ? b.extend({}, br) : { handler: bC, data: bv }; if (bA.indexOf(".") > -1) { e = bA.split("."); bA = e.shift(); bB.namespace = e.slice(0).sort().join("."); } else { e = []; bB.namespace = ""; } bB.type = bA; if (!bB.guid) { bB.guid = bC.guid; } var bs = bD[bA], bz = b.event.special[bA] || {}; if (!bs) { bs = bD[bA] = []; if (!bz.setup || bz.setup.call(bt, bv, e, bw) === false) { if (bt.addEventListener) { bt.addEventListener(bA, bw, false); } else { if (bt.attachEvent) { bt.attachEvent("on" + bA, bw); } } } } if (bz.add) { bz.add.call(bt, bB); if (!bB.handler.guid) { bB.handler.guid = bC.guid; } } bs.push(bB); b.event.global[bA] = true; } bt = null; }, global: {}, remove: function (bF, bA, bs, bw) { if (bF.nodeType === 3 || bF.nodeType === 8) { return; } if (bs === false) { bs = bg; } var bI, bv, bx, bC, bD = 0, bt, by, bB, bu, bz, e, bH, bE = b.hasData(bF) && b._data(bF), br = bE && bE.events; if (!bE || !br) { return; } if (bA && bA.type) { bs = bA.handler; bA = bA.type; } if (!bA || typeof bA === "string" && bA.charAt(0) === ".") { bA = bA || ""; for (bv in br) { b.event.remove(bF, bv + bA); } return; } bA = bA.split(" "); while ((bv = bA[bD++])) { bH = bv; e = null; bt = bv.indexOf(".") < 0; by = []; if (!bt) { by = bv.split("."); bv = by.shift(); bB = new RegExp("(^|\\.)" + b.map(by.slice(0).sort(), G).join("\\.(?:.*\\.)?") + "(\\.|$)"); } bz = br[bv]; if (!bz) { continue; } if (!bs) { for (bC = 0; bC < bz.length; bC++) { e = bz[bC]; if (bt || bB.test(e.namespace)) { b.event.remove(bF, bH, e.handler, bC); bz.splice(bC--, 1); } } continue; } bu = b.event.special[bv] || {}; for (bC = bw || 0; bC < bz.length; bC++) { e = bz[bC]; if (bs.guid === e.guid) { if (bt || bB.test(e.namespace)) { if (bw == null) { bz.splice(bC--, 1); } if (bu.remove) { bu.remove.call(bF, e); } } if (bw != null) { break; } } } if (bz.length === 0 || bw != null && bz.length === 1) { if (!bu.teardown || bu.teardown.call(bF, by) === false) { b.removeEvent(bF, bv, bE.handle); } bI = null; delete br[bv]; } } if (b.isEmptyObject(br)) { var bG = bE.handle; if (bG) { bG.elem = null; } delete bE.events; delete bE.handle; if (b.isEmptyObject(bE)) { b.removeData(bF, K, true); } } }, customEvent: { "getData": true, "setData": true, "changeData": true }, trigger: function (e, bx, bv, bC) { var bA = e.type || e, bs = [], br; if (bA.indexOf("!") >= 0) { bA = bA.slice(0, -1); br = true; } if (bA.indexOf(".") >= 0) { bs = bA.split("."); bA = bs.shift(); bs.sort(); } if ((!bv || b.event.customEvent[bA]) && !b.event.global[bA]) { return; } e = typeof e === "object" ? e[b.expando] ? e : new b.Event(bA, e) : new b.Event(bA); e.type = bA; e.exclusive = br; e.namespace = bs.join("."); e.namespace_re = new RegExp("(^|\\.)" + bs.join("\\.(?:.*\\.)?") + "(\\.|$)"); if (bC || !bv) { e.preventDefault(); e.stopPropagation(); } if (!bv) { b.each(b.cache, function () { var bE = b.expando, bD = this[bE]; if (bD && bD.events && bD.events[bA]) { b.event.trigger(e, bx, bD.handle.elem); } }); return; } if (bv.nodeType === 3 || bv.nodeType === 8) { return; } e.result = K; e.target = bv; bx = bx != null ? b.makeArray(bx) : []; bx.unshift(e); var bB = bv, bt = bA.indexOf(":") < 0 ? "on" + bA : ""; do { var by = b._data(bB, "handle"); e.currentTarget = bB; if (by) { by.apply(bB, bx); } if (bt && b.acceptData(bB) && bB[bt] && bB[bt].apply(bB, bx) === false) { e.result = false; e.preventDefault(); } bB = bB.parentNode || bB.ownerDocument || bB === e.target.ownerDocument && a7; } while (bB && !e.isPropagationStopped()); if (!e.isDefaultPrevented()) { var bu, bz = b.event.special[bA] || {}; if ((!bz._default || bz._default.call(bv.ownerDocument, e) === false) && !(bA === "click" && b.nodeName(bv, "a")) && b.acceptData(bv)) { try { if (bt && bv[bA]) { bu = bv[bt]; if (bu) { bv[bt] = null; } b.event.triggered = bA; bv[bA](); } } catch (bw) {} if (bu) { bv[bt] = bu; } b.event.triggered = K; } } return e.result; }, handle: function (bx) { bx = b.event.fix(bx || a7.event); var br = ((b._data(this, "events") || {})[bx.type] || []).slice(0), bw = !bx.exclusive && !bx.namespace, bu = Array.prototype.slice.call(arguments, 0); bu[0] = bx; bx.currentTarget = this; for (var bt = 0, e = br.length; bt < e; bt++) { var bv = br[bt]; if (bw || bx.namespace_re.test(bv.namespace)) { bx.handler = bv.handler; bx.data = bv.data; bx.handleObj = bv; var bs = bv.handler.apply(this, bu); if (bs !== K) { bx.result = bs; if (bs === false) { bx.preventDefault(); bx.stopPropagation(); } } if (bx.isImmediatePropagationStopped()) { break; } } } return bx.result; }, props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), fix: function (bu) { if (bu[b.expando]) { return bu; } var br = bu; bu = b.Event(br); for (var bs = this.props.length, bw; bs;) { bw = this.props[--bs]; bu[bw] = br[bw]; } if (!bu.target) { bu.target = bu.srcElement || ap; } if (bu.target.nodeType === 3) { bu.target = bu.target.parentNode; } if (!bu.relatedTarget && bu.fromElement) { bu.relatedTarget = bu.fromElement === bu.target ? bu.toElement : bu.fromElement; } if (bu.pageX == null && bu.clientX != null) { var bt = bu.target.ownerDocument || ap, bv = bt.documentElement, e = bt.body; bu.pageX = bu.clientX + (bv && bv.scrollLeft || e && e.scrollLeft || 0) - (bv && bv.clientLeft || e && e.clientLeft || 0); bu.pageY = bu.clientY + (bv && bv.scrollTop || e && e.scrollTop || 0) - (bv && bv.clientTop || e && e.clientTop || 0); } if (bu.which == null && (bu.charCode != null || bu.keyCode != null)) { bu.which = bu.charCode != null ? bu.charCode : bu.keyCode; } if (!bu.metaKey && bu.ctrlKey) { bu.metaKey = bu.ctrlKey; } if (!bu.which && bu.button !== K) { bu.which = (bu.button & 1 ? 1 : (bu.button & 2 ? 3 : (bu.button & 4 ? 2 : 0))); } return bu; }, guid: 100000000, proxy: b.proxy, special: { ready: { setup: b.bindReady, teardown: b.noop }, live: { add: function (e) { b.event.add(this, p(e.origType, e.selector), b.extend({}, e, { handler: ag, guid: e.handler.guid })); }, remove: function (e) { b.event.remove(this, p(e.origType, e.selector), e); } }, beforeunload: { setup: function (bs, br, e) { if (b.isWindow(this)) { this.onbeforeunload = e; } }, teardown: function (br, e) { if (this.onbeforeunload === e) { this.onbeforeunload = null; } } } } }; b.removeEvent = ap.removeEventListener ? function (br, e, bs) { if (br.removeEventListener) { br.removeEventListener(e, bs, false); } } : function (br, e, bs) { if (br.detachEvent) { br.detachEvent("on" + e, bs); } }; b.Event = function (br, e) { if (!this.preventDefault) { return new b.Event(br, e); } if (br && br.type) { this.originalEvent = br; this.type = br.type; this.isDefaultPrevented = (br.defaultPrevented || br.returnValue === false || br.getPreventDefault && br.getPreventDefault()) ? i : bg; } else { this.type = br; } if (e) { b.extend(this, e); } this.timeStamp = b.now(); this[b.expando] = true; }; function bg() { return false; } function i() { return true; } b.Event.prototype = { preventDefault: function () { this.isDefaultPrevented = i; var br = this.originalEvent; if (!br) { return; } if (br.preventDefault) { br.preventDefault(); } else { br.returnValue = false; } }, stopPropagation: function () { this.isPropagationStopped = i; var br = this.originalEvent; if (!br) { return; } if (br.stopPropagation) { br.stopPropagation(); } br.cancelBubble = true; }, stopImmediatePropagation: function () { this.isImmediatePropagationStopped = i; this.stopPropagation(); }, isDefaultPrevented: bg, isPropagationStopped: bg, isImmediatePropagationStopped: bg }; var aa = function (bs) { var bt = bs.relatedTarget, e = false, br = bs.type; bs.type = bs.data; if (bt !== this) { if (bt) { e = b.contains(this, bt); } if (!e) { b.event.handle.apply(this, arguments); bs.type = br; } } }, aR = function (e) { e.type = e.data; b.event.handle.apply(this, arguments); }; b.each({ mouseenter: "mouseover", mouseleave: "mouseout" }, function (br, e) { b.event.special[br] = { setup: function (bs) { b.event.add(this, e, bs && bs.selector ? aR : aa, br); }, teardown: function (bs) { b.event.remove(this, e, bs && bs.selector ? aR : aa); } }; }); if (!b.support.submitBubbles) { b.event.special.submit = { setup: function (br, e) { if (!b.nodeName(this, "form")) { b.event.add(this, "click.specialSubmit", function (bu) { var bt = bu.target, bs = b.nodeName(bt, "input") || b.nodeName(bt, "button") ? bt.type : ""; if ((bs === "submit" || bs === "image") && b(bt).closest("form").length) { aT("submit", this, arguments); } }); b.event.add(this, "keypress.specialSubmit", function (bu) { var bt = bu.target, bs = b.nodeName(bt, "input") || b.nodeName(bt, "button") ? bt.type : ""; if ((bs === "text" || bs === "password") && b(bt).closest("form").length && bu.keyCode === 13) { aT("submit", this, arguments); } }); } else { return false; } }, teardown: function (e) { b.event.remove(this, ".specialSubmit"); } }; } if (!b.support.changeBubbles) { var bj, k = function (br) { var e = b.nodeName(br, "input") ? br.type : "", bs = br.value; if (e === "radio" || e === "checkbox") { bs = br.checked; } else { if (e === "select-multiple") { bs = br.selectedIndex > -1 ? b.map(br.options, function (bt) { return bt.selected; }).join("-") : ""; } else { if (b.nodeName(br, "select")) { bs = br.selectedIndex; } } } return bs; }, Y = function Y(bt) { var br = bt.target, bs, bu; if (!a9.test(br.nodeName) || br.readOnly) { return; } bs = b._data(br, "_change_data"); bu = k(br); if (bt.type !== "focusout" || br.type !== "radio") { b._data(br, "_change_data", bu); } if (bs === K || bu === bs) { return; } if (bs != null || bu) { bt.type = "change"; bt.liveFired = K; b.event.trigger(bt, arguments[1], br); } }; b.event.special.change = { filters: { focusout: Y, beforedeactivate: Y, click: function (bt) { var bs = bt.target, br = b.nodeName(bs, "input") ? bs.type : ""; if (br === "radio" || br === "checkbox" || b.nodeName(bs, "select")) { Y.call(this, bt); } }, keydown: function (bt) { var bs = bt.target, br = b.nodeName(bs, "input") ? bs.type : ""; if ((bt.keyCode === 13 && !b.nodeName(bs, "textarea")) || (bt.keyCode === 32 && (br === "checkbox" || br === "radio")) || br === "select-multiple") { Y.call(this, bt); } }, beforeactivate: function (bs) { var br = bs.target; b._data(br, "_change_data", k(br)); } }, setup: function (bs, br) { if (this.type === "file") { return false; } for (var e in bj) { b.event.add(this, e + ".specialChange", bj[e]); } return a9.test(this.nodeName); }, teardown: function (e) { b.event.remove(this, ".specialChange"); return a9.test(this.nodeName); } }; bj = b.event.special.change.filters; bj.focus = bj.beforeactivate; } function aT(br, bt, e) { var bs = b.extend({}, e[0]); bs.type = br; bs.originalEvent = {}; bs.liveFired = K; b.event.handle.call(bt, bs); if (bs.isDefaultPrevented()) { e[0].preventDefault(); } } if (!b.support.focusinBubbles) { b.each({ focus: "focusin", blur: "focusout" }, function (bt, e) { var br = 0; b.event.special[e] = { setup: function () { if (br++ === 0) { ap.addEventListener(bt, bs, true); } }, teardown: function () { if (--br === 0) { ap.removeEventListener(bt, bs, true); } } }; function bs(bu) { var bv = b.event.fix(bu); bv.type = e; bv.originalEvent = {}; b.event.trigger(bv, null, bv.target); if (bv.isDefaultPrevented()) { bu.preventDefault(); } } }); } b.each(["bind", "one"], function (br, e) { b.fn[e] = function (bx, by, bw) { var bv; if (typeof bx === "object") { for (var bu in bx) { this[e](bu, by, bx[bu], bw); } return this; } if (arguments.length === 2 || by === false) { bw = by; by = K; } if (e === "one") { bv = function (bz) { b(this).unbind(bz, bv); return bw.apply(this, arguments); }; bv.guid = bw.guid || b.guid++; } else { bv = bw; } if (bx === "unload" && e !== "one") { this.one(bx, by, bw); } else { for (var bt = 0, bs = this.length; bt < bs; bt++) { b.event.add(this[bt], bx, bv, by); } } return this; }; }); b.fn.extend({ unbind: function (bu, bt) { if (typeof bu === "object" && !bu.preventDefault) { for (var bs in bu) { this.unbind(bs, bu[bs]); } } else { for (var br = 0, e = this.length; br < e; br++) { b.event.remove(this[br], bu, bt); } } return this; }, delegate: function (e, br, bt, bs) { return this.live(br, bt, bs, e); }, undelegate: function (e, br, bs) { if (arguments.length === 0) { return this.unbind("live"); } else { return this.die(br, null, bs, e); } }, trigger: function (e, br) { return this.each(function () { b.event.trigger(e, br, this); }); }, triggerHandler: function (e, br) { if (this[0]) { return b.event.trigger(e, br, this[0], true); } }, toggle: function (bt) { var br = arguments, e = bt.guid || b.guid++, bs = 0, bu = function (bv) { var bw = (b.data(this, "lastToggle" + bt.guid) || 0) % bs; b.data(this, "lastToggle" + bt.guid, bw + 1); bv.preventDefault(); return br[bw].apply(this, arguments) || false; }; bu.guid = e; while (bs < br.length) { br[bs++].guid = e; } return this.click(bu); }, hover: function (e, br) { return this.mouseenter(e).mouseleave(br || e); } }); var aP = { focus: "focusin", blur: "focusout", mouseenter: "mouseover", mouseleave: "mouseout" }; b.each(["live", "die"], function (br, e) { b.fn[e] = function (bB, by, bD, bu) { var bC, bz = 0, bA, bt, bF, bw = bu || this.selector, bs = bu ? this : b(this.context); if (typeof bB === "object" && !bB.preventDefault) { for (var bE in bB) { bs[e](bE, by, bB[bE], bw); } return this; } if (e === "die" && !bB && bu && bu.charAt(0) === ".") { bs.unbind(bu); return this; } if (by === false || b.isFunction(by)) { bD = by || bg; by = K; } bB = (bB || "").split(" "); while ((bC = bB[bz++]) != null) { bA = aW.exec(bC); bt = ""; if (bA) { bt = bA[0]; bC = bC.replace(aW, ""); } if (bC === "hover") { bB.push("mouseenter" + bt, "mouseleave" + bt); continue; } bF = bC; if (aP[bC]) { bB.push(aP[bC] + bt); bC = bC + bt; } else { bC = (aP[bC] || bC) + bt; } if (e === "live") { for (var bx = 0, bv = bs.length; bx < bv; bx++) { b.event.add(bs[bx], "live." + p(bC, bw), { data: by, selector: bw, handler: bD, origType: bC, origHandler: bD, preType: bF }); } } else { bs.unbind("live." + p(bC, bw), bD); } } return this; }; }); function ag(bB) { var by, bt, bH, bv, e, bD, bA, bC, bz, bG, bx, bw, bF, bE = [], bu = [], br = b._data(this, "events"); if (bB.liveFired === this || !br || !br.live || bB.target.disabled || bB.button && bB.type === "click") { return; } if (bB.namespace) { bw = new RegExp("(^|\\.)" + bB.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); } bB.liveFired = this; var bs = br.live.slice(0); for (bA = 0; bA < bs.length; bA++) { e = bs[bA]; if (e.origType.replace(aW, "") === bB.type) { bu.push(e.selector); } else { bs.splice(bA--, 1); } } bv = b(bB.target).closest(bu, bB.currentTarget); for (bC = 0, bz = bv.length; bC < bz; bC++) { bx = bv[bC]; for (bA = 0; bA < bs.length; bA++) { e = bs[bA]; if (bx.selector === e.selector && (!bw || bw.test(e.namespace)) && !bx.elem.disabled) { bD = bx.elem; bH = null; if (e.preType === "mouseenter" || e.preType === "mouseleave") { bB.type = e.preType; bH = b(bB.relatedTarget).closest(e.selector)[0]; if (bH && b.contains(bD, bH)) { bH = bD; } } if (!bH || bH !== bD) { bE.push({ elem: bD, handleObj: e, level: bx.level }); } } } } for (bC = 0, bz = bE.length; bC < bz; bC++) { bv = bE[bC]; if (bt && bv.level > bt) { break; } bB.currentTarget = bv.elem; bB.data = bv.handleObj.data; bB.handleObj = bv.handleObj; bF = bv.handleObj.origHandler.apply(bv.elem, arguments); if (bF === false || bB.isPropagationStopped()) { bt = bv.level; if (bF === false) { by = false; } if (bB.isImmediatePropagationStopped()) { break; } } } return by; } function p(br, e) { return (br && br !== "*" ? br + "." : "") + e.replace(N, "`").replace(be, "&"); } b.each(("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error").split(" "), function (br, e) { b.fn[e] = function (bt, bs) { if (bs == null) { bs = bt; bt = null; } return arguments.length > 0 ? this.bind(e, bt, bs) : this.trigger(e); }; if (b.attrFn) { b.attrFn[e] = true; } }); /* * Sizzle CSS Selector Engine * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function () { var bB = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, bC = 0, bF = Object.prototype.toString, bw = false, bv = true, bD = /\\/g, bJ = /\W/; [0, 0].sort(function () { bv = false; return 0; }); var bt = function (bO, e, bR, bS) { bR = bR || []; e = e || ap; var bU = e; if (e.nodeType !== 1 && e.nodeType !== 9) { return []; } if (!bO || typeof bO !== "string") { return bR; } var bL, bW, bZ, bK, bV, bY, bX, bQ, bN = true, bM = bt.isXML(e), bP = [], bT = bO; do { bB.exec(""); bL = bB.exec(bT); if (bL) { bT = bL[3]; bP.push(bL[1]); if (bL[2]) { bK = bL[3]; break; } } } while (bL); if (bP.length > 1 && bx.exec(bO)) { if (bP.length === 2 && by.relative[bP[0]]) { bW = bG(bP[0] + bP[1], e); } else { bW = by.relative[bP[0]] ? [e] : bt(bP.shift(), e); while (bP.length) { bO = bP.shift(); if (by.relative[bO]) { bO += bP.shift(); } bW = bG(bO, bW); } } } else { if (!bS && bP.length > 1 && e.nodeType === 9 && !bM && by.match.ID.test(bP[0]) && !by.match.ID.test(bP[bP.length - 1])) { bV = bt.find(bP.shift(), e, bM); e = bV.expr ? bt.filter(bV.expr, bV.set)[0] : bV.set[0]; } if (e) { bV = bS ? { expr: bP.pop(), set: bz(bS) } : bt.find(bP.pop(), bP.length === 1 && (bP[0] === "~" || bP[0] === "+") && e.parentNode ? e.parentNode : e, bM); bW = bV.expr ? bt.filter(bV.expr, bV.set) : bV.set; if (bP.length > 0) { bZ = bz(bW); } else { bN = false; } while (bP.length) { bY = bP.pop(); bX = bY; if (!by.relative[bY]) { bY = ""; } else { bX = bP.pop(); } if (bX == null) { bX = e; } by.relative[bY](bZ, bX, bM); } } else { bZ = bP = []; } } if (!bZ) { bZ = bW; } if (!bZ) { bt.error(bY || bO); } if (bF.call(bZ) === "[object Array]") { if (!bN) { bR.push.apply(bR, bZ); } else { if (e && e.nodeType === 1) { for (bQ = 0; bZ[bQ] != null; bQ++) { if (bZ[bQ] && (bZ[bQ] === true || bZ[bQ].nodeType === 1 && bt.contains(e, bZ[bQ]))) { bR.push(bW[bQ]); } } } else { for (bQ = 0; bZ[bQ] != null; bQ++) { if (bZ[bQ] && bZ[bQ].nodeType === 1) { bR.push(bW[bQ]); } } } } } else { bz(bZ, bR); } if (bK) { bt(bK, bU, bR, bS); bt.uniqueSort(bR); } return bR; }; bt.uniqueSort = function (bK) { if (bE) { bw = bv; bK.sort(bE); if (bw) { for (var e = 1; e < bK.length; e++) { if (bK[e] === bK[e - 1]) { bK.splice(e--, 1); } } } } return bK; }; bt.matches = function (e, bK) { return bt(e, null, null, bK); }; bt.matchesSelector = function (e, bK) { return bt(bK, null, null, [e]).length > 0; }; bt.find = function (bQ, e, bR) { var bP; if (!bQ) { return []; } for (var bM = 0, bL = by.order.length; bM < bL; bM++) { var bN, bO = by.order[bM]; if ((bN = by.leftMatch[bO].exec(bQ))) { var bK = bN[1]; bN.splice(1, 1); if (bK.substr(bK.length - 1) !== "\\") { bN[1] = (bN[1] || "").replace(bD, ""); bP = by.find[bO](bN, e, bR); if (bP != null) { bQ = bQ.replace(by.match[bO], ""); break; } } } } if (!bP) { bP = typeof e.getElementsByTagName !== "undefined" ? e.getElementsByTagName("*") : []; } return { set: bP, expr: bQ }; }; bt.filter = function (bU, bT, bX, bN) { var bP, e, bL = bU, bZ = [], bR = bT, bQ = bT && bT[0] && bt.isXML(bT[0]); while (bU && bT.length) { for (var bS in by.filter) { if ((bP = by.leftMatch[bS].exec(bU)) != null && bP[2]) { var bY, bW, bK = by.filter[bS], bM = bP[1]; e = false; bP.splice(1, 1); if (bM.substr(bM.length - 1) === "\\") { continue; } if (bR === bZ) { bZ = []; } if (by.preFilter[bS]) { bP = by.preFilter[bS](bP, bR, bX, bZ, bN, bQ); if (!bP) { e = bY = true; } else { if (bP === true) { continue; } } } if (bP) { for (var bO = 0; (bW = bR[bO]) != null; bO++) { if (bW) { bY = bK(bW, bP, bO, bR); var bV = bN ^ !! bY; if (bX && bY != null) { if (bV) { e = true; } else { bR[bO] = false; } } else { if (bV) { bZ.push(bW); e = true; } } } } } if (bY !== K) { if (!bX) { bR = bZ; } bU = bU.replace(by.match[bS], ""); if (!e) { return []; } break; } } } if (bU === bL) { if (e == null) { bt.error(bU); } else { break; } } bL = bU; } return bR; }; bt.error = function (e) { throw "Syntax error, unrecognized expression: " + e; }; var by = bt.selectors = { order: ["ID", "NAME", "TAG"], match: { ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function (e) { return e.getAttribute("href"); }, type: function (e) { return e.getAttribute("type"); } }, relative: { "+": function (bP, bK) { var bM = typeof bK === "string", bO = bM && !bJ.test(bK), bQ = bM && !bO; if (bO) { bK = bK.toLowerCase(); } for (var bL = 0, e = bP.length, bN; bL < e; bL++) { if ((bN = bP[bL])) { while ((bN = bN.previousSibling) && bN.nodeType !== 1) {} bP[bL] = bQ || bN && bN.nodeName.toLowerCase() === bK ? bN || false : bN === bK; } } if (bQ) { bt.filter(bK, bP, true); } }, ">": function (bP, bK) { var bO, bN = typeof bK === "string", bL = 0, e = bP.length; if (bN && !bJ.test(bK)) { bK = bK.toLowerCase(); for (; bL < e; bL++) { bO = bP[bL]; if (bO) { var bM = bO.parentNode; bP[bL] = bM.nodeName.toLowerCase() === bK ? bM : false; } } } else { for (; bL < e; bL++) { bO = bP[bL]; if (bO) { bP[bL] = bN ? bO.parentNode : bO.parentNode === bK; } } if (bN) { bt.filter(bK, bP, true); } } }, "": function (bM, bK, bO) { var bN, bL = bC++, e = bH; if (typeof bK === "string" && !bJ.test(bK)) { bK = bK.toLowerCase(); bN = bK; e = br; } e("parentNode", bK, bL, bM, bN, bO); }, "~": function (bM, bK, bO) { var bN, bL = bC++, e = bH; if (typeof bK === "string" && !bJ.test(bK)) { bK = bK.toLowerCase(); bN = bK; e = br; } e("previousSibling", bK, bL, bM, bN, bO); } }, find: { ID: function (bK, bL, bM) { if (typeof bL.getElementById !== "undefined" && !bM) { var e = bL.getElementById(bK[1]); return e && e.parentNode ? [e] : []; } }, NAME: function (bL, bO) { if (typeof bO.getElementsByName !== "undefined") { var bK = [], bN = bO.getElementsByName(bL[1]); for (var bM = 0, e = bN.length; bM < e; bM++) { if (bN[bM].getAttribute("name") === bL[1]) { bK.push(bN[bM]); } } return bK.length === 0 ? null : bK; } }, TAG: function (e, bK) { if (typeof bK.getElementsByTagName !== "undefined") { return bK.getElementsByTagName(e[1]); } } }, preFilter: { CLASS: function (bM, bK, bL, e, bP, bQ) { bM = " " + bM[1].replace(bD, "") + " "; if (bQ) { return bM; } for (var bN = 0, bO; (bO = bK[bN]) != null; bN++) { if (bO) { if (bP ^ (bO.className && (" " + bO.className + " ").replace(/[\t\n\r]/g, " ").indexOf(bM) >= 0)) { if (!bL) { e.push(bO); } } else { if (bL) { bK[bN] = false; } } } } return false; }, ID: function (e) { return e[1].replace(bD, ""); }, TAG: function (bK, e) { return bK[1].replace(bD, "").toLowerCase(); }, CHILD: function (e) { if (e[1] === "nth") { if (!e[2]) { bt.error(e[0]); } e[2] = e[2].replace(/^\+|\s*/g, ""); var bK = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2] === "even" && "2n" || e[2] === "odd" && "2n+1" || !/\D/.test(e[2]) && "0n+" + e[2] || e[2]); e[2] = (bK[1] + (bK[2] || 1)) - 0; e[3] = bK[3] - 0; } else { if (e[2]) { bt.error(e[0]); } } e[0] = bC++; return e; }, ATTR: function (bN, bK, bL, e, bO, bP) { var bM = bN[1] = bN[1].replace(bD, ""); if (!bP && by.attrMap[bM]) { bN[1] = by.attrMap[bM]; } bN[4] = (bN[4] || bN[5] || "").replace(bD, ""); if (bN[2] === "~=") { bN[4] = " " + bN[4] + " "; } return bN; }, PSEUDO: function (bN, bK, bL, e, bO) { if (bN[1] === "not") { if ((bB.exec(bN[3]) || "").length > 1 || /^\w/.test(bN[3])) { bN[3] = bt(bN[3], null, null, bK); } else { var bM = bt.filter(bN[3], bK, bL, true ^ bO); if (!bL) { e.push.apply(e, bM); } return false; } } else { if (by.match.POS.test(bN[0]) || by.match.CHILD.test(bN[0])) { return true; } } return bN; }, POS: function (e) { e.unshift(true); return e; } }, filters: { enabled: function (e) { return e.disabled === false && e.type !== "hidden"; }, disabled: function (e) { return e.disabled === true; }, checked: function (e) { return e.checked === true; }, selected: function (e) { if (e.parentNode) { e.parentNode.selectedIndex; } return e.selected === true; }, parent: function (e) { return !!e.firstChild; }, empty: function (e) { return !e.firstChild; }, has: function (bL, bK, e) { return !!bt(e[3], bL).length; }, header: function (e) { return (/h\d/i).test(e.nodeName); }, text: function (bL) { var e = bL.getAttribute("type"), bK = bL.type; return bL.nodeName.toLowerCase() === "input" && "text" === bK && (e === bK || e === null); }, radio: function (e) { return e.nodeName.toLowerCase() === "input" && "radio" === e.type; }, checkbox: function (e) { return e.nodeName.toLowerCase() === "input" && "checkbox" === e.type; }, file: function (e) { return e.nodeName.toLowerCase() === "input" && "file" === e.type; }, password: function (e) { return e.nodeName.toLowerCase() === "input" && "password" === e.type; }, submit: function (bK) { var e = bK.nodeName.toLowerCase(); return (e === "input" || e === "button") && "submit" === bK.type; }, image: function (e) { return e.nodeName.toLowerCase() === "input" && "image" === e.type; }, reset: function (bK) { var e = bK.nodeName.toLowerCase(); return (e === "input" || e === "button") && "reset" === bK.type; }, button: function (bK) { var e = bK.nodeName.toLowerCase(); return e === "input" && "button" === bK.type || e === "button"; }, input: function (e) { return (/input|select|textarea|button/i).test(e.nodeName); }, focus: function (e) { return e === e.ownerDocument.activeElement; } }, setFilters: { first: function (bK, e) { return e === 0; }, last: function (bL, bK, e, bM) { return bK === bM.length - 1; }, even: function (bK, e) { return e % 2 === 0; }, odd: function (bK, e) { return e % 2 === 1; }, lt: function (bL, bK, e) { return bK < e[3] - 0; }, gt: function (bL, bK, e) { return bK > e[3] - 0; }, nth: function (bL, bK, e) { return e[3] - 0 === bK; }, eq: function (bL, bK, e) { return e[3] - 0 === bK; } }, filter: { PSEUDO: function (bL, bQ, bP, bR) { var e = bQ[1], bK = by.filters[e]; if (bK) { return bK(bL, bP, bQ, bR); } else { if (e === "contains") { return (bL.textContent || bL.innerText || bt.getText([bL]) || "").indexOf(bQ[3]) >= 0; } else { if (e === "not") { var bM = bQ[3]; for (var bO = 0, bN = bM.length; bO < bN; bO++) { if (bM[bO] === bL) { return false; } } return true; } else { bt.error(e); } } } }, CHILD: function (e, bM) { var bP = bM[1], bK = e; switch (bP) { case "only": case "first": while ((bK = bK.previousSibling)) { if (bK.nodeType === 1) { return false; } } if (bP === "first") { return true; } bK = e; case "last": while ((bK = bK.nextSibling)) { if (bK.nodeType === 1) { return false; } } return true; case "nth": var bL = bM[2], bS = bM[3]; if (bL === 1 && bS === 0) { return true; } var bO = bM[0], bR = e.parentNode; if (bR && (bR.sizcache !== bO || !e.nodeIndex)) { var bN = 0; for (bK = bR.firstChild; bK; bK = bK.nextSibling) { if (bK.nodeType === 1) { bK.nodeIndex = ++bN; } } bR.sizcache = bO; } var bQ = e.nodeIndex - bS; if (bL === 0) { return bQ === 0; } else { return (bQ % bL === 0 && bQ / bL >= 0); } } }, ID: function (bK, e) { return bK.nodeType === 1 && bK.getAttribute("id") === e; }, TAG: function (bK, e) { return (e === "*" && bK.nodeType === 1) || bK.nodeName.toLowerCase() === e; }, CLASS: function (bK, e) { return (" " + (bK.className || bK.getAttribute("class")) + " ").indexOf(e) > -1; }, ATTR: function (bO, bM) { var bL = bM[1], e = by.attrHandle[bL] ? by.attrHandle[bL](bO) : bO[bL] != null ? bO[bL] : bO.getAttribute(bL), bP = e + "", bN = bM[2], bK = bM[4]; return e == null ? bN === "!=" : bN === "=" ? bP === bK : bN === "*=" ? bP.indexOf(bK) >= 0 : bN === "~=" ? (" " + bP + " ").indexOf(bK) >= 0 : !bK ? bP && e !== false : bN === "!=" ? bP !== bK : bN === "^=" ? bP.indexOf(bK) === 0 : bN === "$=" ? bP.substr(bP.length - bK.length) === bK : bN === "|=" ? bP === bK || bP.substr(0, bK.length + 1) === bK + "-" : false; }, POS: function (bN, bK, bL, bO) { var e = bK[2], bM = by.setFilters[e]; if (bM) { return bM(bN, bL, bK, bO); } } } }; var bx = by.match.POS, bs = function (bK, e) { return "\\" + (e - 0 + 1); }; for (var bu in by.match) { by.match[bu] = new RegExp(by.match[bu].source + (/(?![^\[]*\])(?![^\(]*\))/.source)); by.leftMatch[bu] = new RegExp(/(^(?:.|\r|\n)*?)/.source + by.match[bu].source.replace(/\\(\d+)/g, bs)); } var bz = function (bK, e) { bK = Array.prototype.slice.call(bK, 0); if (e) { e.push.apply(e, bK); return e; } return bK; }; try { Array.prototype.slice.call(ap.documentElement.childNodes, 0)[0].nodeType; } catch (bI) { bz = function (bN, bM) { var bL = 0, bK = bM || []; if (bF.call(bN) === "[object Array]") { Array.prototype.push.apply(bK, bN); } else { if (typeof bN.length === "number") { for (var e = bN.length; bL < e; bL++) { bK.push(bN[bL]); } } else { for (; bN[bL]; bL++) { bK.push(bN[bL]); } } } return bK; }; } var bE, bA; if (ap.documentElement.compareDocumentPosition) { bE = function (bK, e) { if (bK === e) { bw = true; return 0; } if (!bK.compareDocumentPosition || !e.compareDocumentPosition) { return bK.compareDocumentPosition ? -1 : 1; } return bK.compareDocumentPosition(e) & 4 ? -1 : 1; }; } else { bE = function (bR, bQ) { if (bR === bQ) { bw = true; return 0; } else { if (bR.sourceIndex && bQ.sourceIndex) { return bR.sourceIndex - bQ.sourceIndex; } } var bO, bK, bL = [], e = [], bN = bR.parentNode, bP = bQ.parentNode, bS = bN; if (bN === bP) { return bA(bR, bQ); } else { if (!bN) { return -1; } else { if (!bP) { return 1; } } } while (bS) { bL.unshift(bS); bS = bS.parentNode; } bS = bP; while (bS) { e.unshift(bS); bS = bS.parentNode; } bO = bL.length; bK = e.length; for (var bM = 0; bM < bO && bM < bK; bM++) { if (bL[bM] !== e[bM]) { return bA(bL[bM], e[bM]); } } return bM === bO ? bA(bR, e[bM], -1) : bA(bL[bM], bQ, 1); }; bA = function (bK, e, bL) { if (bK === e) { return bL; } var bM = bK.nextSibling; while (bM) { if (bM === e) { return -1; } bM = bM.nextSibling; } return 1; }; } bt.getText = function (e) { var bK = "", bM; for (var bL = 0; e[bL]; bL++) { bM = e[bL]; if (bM.nodeType === 3 || bM.nodeType === 4) { bK += bM.nodeValue; } else { if (bM.nodeType !== 8) { bK += bt.getText(bM.childNodes); } } } return bK; }; (function () { var bK = ap.createElement("div"), bL = "script" + (new Date()).getTime(), e = ap.documentElement; bK.innerHTML = "<a name='" + bL + "'/>"; e.insertBefore(bK, e.firstChild); if (ap.getElementById(bL)) { by.find.ID = function (bN, bO, bP) { if (typeof bO.getElementById !== "undefined" && !bP) { var bM = bO.getElementById(bN[1]); return bM ? bM.id === bN[1] || typeof bM.getAttributeNode !== "undefined" && bM.getAttributeNode("id").nodeValue === bN[1] ? [bM] : K : []; } }; by.filter.ID = function (bO, bM) { var bN = typeof bO.getAttributeNode !== "undefined" && bO.getAttributeNode("id"); return bO.nodeType === 1 && bN && bN.nodeValue === bM; }; } e.removeChild(bK); e = bK = null; })(); (function () { var e = ap.createElement("div"); e.appendChild(ap.createComment("")); if (e.getElementsByTagName("*").length > 0) { by.find.TAG = function (bK, bO) { var bN = bO.getElementsByTagName(bK[1]); if (bK[1] === "*") { var bM = []; for (var bL = 0; bN[bL]; bL++) { if (bN[bL].nodeType === 1) { bM.push(bN[bL]); } } bN = bM; } return bN; }; } e.innerHTML = "<a href='#'></a>"; if (e.firstChild && typeof e.firstChild.getAttribute !== "undefined" && e.firstChild.getAttribute("href") !== "#") { by.attrHandle.href = function (bK) { return bK.getAttribute("href", 2); }; } e = null; })(); if (ap.querySelectorAll) { (function () { var e = bt, bM = ap.createElement("div"), bL = "__sizzle__"; bM.innerHTML = "<p class='TEST'></p>"; if (bM.querySelectorAll && bM.querySelectorAll(".TEST").length === 0) { return; } bt = function (bX, bO, bS, bW) { bO = bO || ap; if (!bW && !bt.isXML(bO)) { var bV = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(bX); if (bV && (bO.nodeType === 1 || bO.nodeType === 9)) { if (bV[1]) { return bz(bO.getElementsByTagName(bX), bS); } else { if (bV[2] && by.find.CLASS && bO.getElementsByClassName) { return bz(bO.getElementsByClassName(bV[2]), bS); } } } if (bO.nodeType === 9) { if (bX === "body" && bO.body) { return bz([bO.body], bS); } else { if (bV && bV[3]) { var bR = bO.getElementById(bV[3]); if (bR && bR.parentNode) { if (bR.id === bV[3]) { return bz([bR], bS); } } else { return bz([], bS); } } } try { return bz(bO.querySelectorAll(bX), bS); } catch (bT) {} } else { if (bO.nodeType === 1 && bO.nodeName.toLowerCase() !== "object") { var bP = bO, bQ = bO.getAttribute("id"), bN = bQ || bL, bZ = bO.parentNode, bY = /^\s*[+~]/.test(bX); if (!bQ) { bO.setAttribute("id", bN); } else { bN = bN.replace(/'/g, "\\$&"); } if (bY && bZ) { bO = bO.parentNode; } try { if (!bY || bZ) { return bz(bO.querySelectorAll("[id='" + bN + "'] " + bX), bS); } } catch (bU) {} finally { if (!bQ) { bP.removeAttribute("id"); } } } } } return e(bX, bO, bS, bW); }; for (var bK in e) { bt[bK] = e[bK]; } bM = null; })(); }(function () { var e = ap.documentElement, bL = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.msMatchesSelector; if (bL) { var bN = !bL.call(ap.createElement("div"), "div"), bK = false; try { bL.call(ap.documentElement, "[test!='']:sizzle"); } catch (bM) { bK = true; } bt.matchesSelector = function (bP, bR) { bR = bR.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); if (!bt.isXML(bP)) { try { if (bK || !by.match.PSEUDO.test(bR) && !/!=/.test(bR)) { var bO = bL.call(bP, bR); if (bO || !bN || bP.document && bP.document.nodeType !== 11) { return bO; } } } catch (bQ) {} } return bt(bR, null, null, [bP]).length > 0; }; } })(); (function () { var e = ap.createElement("div"); e.innerHTML = "<div class='test e'></div><div class='test'></div>"; if (!e.getElementsByClassName || e.getElementsByClassName("e").length === 0) { return; } e.lastChild.className = "e"; if (e.getElementsByClassName("e").length === 1) { return; } by.order.splice(1, 0, "CLASS"); by.find.CLASS = function (bK, bL, bM) { if (typeof bL.getElementsByClassName !== "undefined" && !bM) { return bL.getElementsByClassName(bK[1]); } }; e = null; })(); function br(bK, bP, bO, bS, bQ, bR) { for (var bM = 0, bL = bS.length; bM < bL; bM++) { var e = bS[bM]; if (e) { var bN = false; e = e[bK]; while (e) { if (e.sizcache === bO) { bN = bS[e.sizset]; break; } if (e.nodeType === 1 && !bR) { e.sizcache = bO; e.sizset = bM; } if (e.nodeName.toLowerCase() === bP) { bN = e; break; } e = e[bK]; } bS[bM] = bN; } } } function bH(bK, bP, bO, bS, bQ, bR) { for (var bM = 0, bL = bS.length; bM < bL; bM++) { var e = bS[bM]; if (e) { var bN = false; e = e[bK]; while (e) { if (e.sizcache === bO) { bN = bS[e.sizset]; break; } if (e.nodeType === 1) { if (!bR) { e.sizcache = bO; e.sizset = bM; } if (typeof bP !== "string") { if (e === bP) { bN = true; break; } } else { if (bt.filter(bP, [e]).length > 0) { bN = e; break; } } } e = e[bK]; } bS[bM] = bN; } } } if (ap.documentElement.contains) { bt.contains = function (bK, e) { return bK !== e && (bK.contains ? bK.contains(e) : true); }; } else { if (ap.documentElement.compareDocumentPosition) { bt.contains = function (bK, e) { return !!(bK.compareDocumentPosition(e) & 16); }; } else { bt.contains = function () { return false; }; } } bt.isXML = function (e) { var bK = (e ? e.ownerDocument || e : 0).documentElement; return bK ? bK.nodeName !== "HTML" : false; }; var bG = function (e, bQ) { var bO, bM = [], bN = "", bL = bQ.nodeType ? [bQ] : bQ; while ((bO = by.match.PSEUDO.exec(e))) { bN += bO[0]; e = e.replace(by.match.PSEUDO, ""); } e = by.relative[e] ? e + "*" : e; for (var bP = 0, bK = bL.length; bP < bK; bP++) { bt(e, bL[bP], bM); } return bt.filter(bN, bM); }; b.find = bt; b.expr = bt.selectors; b.expr[":"] = b.expr.filters; b.unique = bt.uniqueSort; b.text = bt.getText; b.isXMLDoc = bt.isXML; b.contains = bt.contains; })(); var X = /Until$/, al = /^(?:parents|prevUntil|prevAll)/, a5 = /,/, bm = /^.[^:#\[\.,]*$/, P = Array.prototype.slice, H = b.expr.match.POS, at = { children: true, contents: true, next: true, prev: true }; b.fn.extend({ find: function (e) { var bs = this, bu, br; if (typeof e !== "string") { return b(e).filter(function () { for (bu = 0, br = bs.length; bu < br; bu++) { if (b.contains(bs[bu], this)) { return true; } } }); } var bt = this.pushStack("", "find", e), bw, bx, bv; for (bu = 0, br = this.length; bu < br; bu++) { bw = bt.length; b.find(e, this[bu], bt); if (bu > 0) { for (bx = bw; bx < bt.length; bx++) { for (bv = 0; bv < bw; bv++) { if (bt[bv] === bt[bx]) { bt.splice(bx--, 1); break; } } } } } return bt; }, has: function (br) { var e = b(br); return this.filter(function () { for (var bt = 0, bs = e.length; bt < bs; bt++) { if (b.contains(this, e[bt])) { return true; } } }); }, not: function (e) { return this.pushStack(aA(this, e, false), "not", e); }, filter: function (e) { return this.pushStack(aA(this, e, true), "filter", e); }, is: function (e) { return !!e && (typeof e === "string" ? b.filter(e, this).length > 0 : this.filter(e).length > 0); }, closest: function (bA, br) { var bx = [], bu, bs, bz = this[0]; if (b.isArray(bA)) { var bw, bt, bv = {}, e = 1; if (bz && bA.length) { for (bu = 0, bs = bA.length; bu < bs; bu++) { bt = bA[bu]; if (!bv[bt]) { bv[bt] = H.test(bt) ? b(bt, br || this.context) : bt; } } while (bz && bz.ownerDocument && bz !== br) { for (bt in bv) { bw = bv[bt]; if (bw.jquery ? bw.index(bz) > -1 : b(bz).is(bw)) { bx.push({ selector: bt, elem: bz, level: e }); } } bz = bz.parentNode; e++; } } return bx; } var by = H.test(bA) || typeof bA !== "string" ? b(bA, br || this.context) : 0; for (bu = 0, bs = this.length; bu < bs; bu++) { bz = this[bu]; while (bz) { if (by ? by.index(bz) > -1 : b.find.matchesSelector(bz, bA)) { bx.push(bz); break; } else { bz = bz.parentNode; if (!bz || !bz.ownerDocument || bz === br || bz.nodeType === 11) { break; } } } } bx = bx.length > 1 ? b.unique(bx) : bx; return this.pushStack(bx, "closest", bA); }, index: function (e) { if (!e) { return (this[0] && this[0].parentNode) ? this.prevAll().length : -1; } if (typeof e === "string") { return b.inArray(this[0], b(e)); } return b.inArray(e.jquery ? e[0] : e, this); }, add: function (e, br) { var bt = typeof e === "string" ? b(e, br) : b.makeArray(e && e.nodeType ? [e] : e), bs = b.merge(this.get(), bt); return this.pushStack(C(bt[0]) || C(bs[0]) ? bs : b.unique(bs)); }, andSelf: function () { return this.add(this.prevObject); } }); function C(e) { return !e || !e.parentNode || e.parentNode.nodeType === 11; } b.each({ parent: function (br) { var e = br.parentNode; return e && e.nodeType !== 11 ? e : null; }, parents: function (e) { return b.dir(e, "parentNode"); }, parentsUntil: function (br, e, bs) { return b.dir(br, "parentNode", bs); }, next: function (e) { return b.nth(e, 2, "nextSibling"); }, prev: function (e) { return b.nth(e, 2, "previousSibling"); }, nextAll: function (e) { return b.dir(e, "nextSibling"); }, prevAll: function (e) { return b.dir(e, "previousSibling"); }, nextUntil: function (br, e, bs) { return b.dir(br, "nextSibling", bs); }, prevUntil: function (br, e, bs) { return b.dir(br, "previousSibling", bs); }, siblings: function (e) { return b.sibling(e.parentNode.firstChild, e); }, children: function (e) { return b.sibling(e.firstChild); }, contents: function (e) { return b.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : b.makeArray(e.childNodes); } }, function (e, br) { b.fn[e] = function (bv, bs) { var bu = b.map(this, br, bv), bt = P.call(arguments); if (!X.test(e)) { bs = bv; } if (bs && typeof bs === "string") { bu = b.filter(bs, bu); } bu = this.length > 1 && !at[e] ? b.unique(bu) : bu; if ((this.length > 1 || a5.test(bs)) && al.test(e)) { bu = bu.reverse(); } return this.pushStack(bu, e, bt.join(",")); }; }); b.extend({ filter: function (bs, e, br) { if (br) { bs = ":not(" + bs + ")"; } return e.length === 1 ? b.find.matchesSelector(e[0], bs) ? [e[0]] : [] : b.find.matches(bs, e); }, dir: function (bs, br, bu) { var e = [], bt = bs[br]; while (bt && bt.nodeType !== 9 && (bu === K || bt.nodeType !== 1 || !b(bt).is(bu))) { if (bt.nodeType === 1) { e.push(bt); } bt = bt[br]; } return e; }, nth: function (bu, e, bs, bt) { e = e || 1; var br = 0; for (; bu; bu = bu[bs]) { if (bu.nodeType === 1 && ++br === e) { break; } } return bu; }, sibling: function (bs, br) { var e = []; for (; bs; bs = bs.nextSibling) { if (bs.nodeType === 1 && bs !== br) { e.push(bs); } } return e; } }); function aA(bt, bs, e) { bs = bs || 0; if (b.isFunction(bs)) { return b.grep(bt, function (bv, bu) { var bw = !! bs.call(bv, bu, bv); return bw === e; }); } else { if (bs.nodeType) { return b.grep(bt, function (bv, bu) { return (bv === bs) === e; }); } else { if (typeof bs === "string") { var br = b.grep(bt, function (bu) { return bu.nodeType === 1; }); if (bm.test(bs)) { return b.filter(bs, br, !e); } else { bs = b.filter(bs, br); } } } } return b.grep(bt, function (bv, bu) { return (b.inArray(bv, bs) >= 0) === e; }); } var ac = / jQuery\d+="(?:\d+|null)"/g, am = /^\s+/, R = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, d = /<([\w:]+)/, w = /<tbody/i, U = /<|&#?\w+;/, O = /<(?:script|object|embed|option|style)/i, n = /checked\s*(?:[^=]|=\s*.checked.)/i, bi = /\/(java|ecma)script/i, aI = /^\s*<!(?:\[CDATA\[|\-\-)/, ar = { option: [1, "<select multiple='multiple'>", "</select>"], legend: [1, "<fieldset>", "</fieldset>"], thead: [1, "<table>", "</table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"], area: [1, "<map>", "</map>"], _default: [0, "", ""] }; ar.optgroup = ar.option; ar.tbody = ar.tfoot = ar.colgroup = ar.caption = ar.thead; ar.th = ar.td; if (!b.support.htmlSerialize) { ar._default = [1, "div<div>", "</div>"]; } b.fn.extend({ text: function (e) { if (b.isFunction(e)) { return this.each(function (bs) { var br = b(this); br.text(e.call(this, bs, br.text())); }); } if (typeof e !== "object" && e !== K) { return this.empty().append((this[0] && this[0].ownerDocument || ap).createTextNode(e)); } return b.text(this); }, wrapAll: function (e) { if (b.isFunction(e)) { return this.each(function (bs) { b(this).wrapAll(e.call(this, bs)); }); } if (this[0]) { var br = b(e, this[0].ownerDocument).eq(0).clone(true); if (this[0].parentNode) { br.insertBefore(this[0]); } br.map(function () { var bs = this; while (bs.firstChild && bs.firstChild.nodeType === 1) { bs = bs.firstChild; } return bs; }).append(this); } return this; }, wrapInner: function (e) { if (b.isFunction(e)) { return this.each(function (br) { b(this).wrapInner(e.call(this, br)); }); } return this.each(function () { var br = b(this), bs = br.contents(); if (bs.length) { bs.wrapAll(e); } else { br.append(e); } }); }, wrap: function (e) { return this.each(function () { b(this).wrapAll(e); }); }, unwrap: function () { return this.parent().each(function () { if (!b.nodeName(this, "body")) { b(this).replaceWith(this.childNodes); } }).end(); }, append: function () { return this.domManip(arguments, true, function (e) { if (this.nodeType === 1) { this.appendChild(e); } }); }, prepend: function () { return this.domManip(arguments, true, function (e) { if (this.nodeType === 1) { this.insertBefore(e, this.firstChild); } }); }, before: function () { if (this[0] && this[0].parentNode) { return this.domManip(arguments, false, function (br) { this.parentNode.insertBefore(br, this); }); } else { if (arguments.length) { var e = b(arguments[0]); e.push.apply(e, this.toArray()); return this.pushStack(e, "before", arguments); } } }, after: function () { if (this[0] && this[0].parentNode) { return this.domManip(arguments, false, function (br) { this.parentNode.insertBefore(br, this.nextSibling); }); } else { if (arguments.length) { var e = this.pushStack(this, "after", arguments); e.push.apply(e, b(arguments[0]).toArray()); return e; } } }, remove: function (e, bt) { for (var br = 0, bs; (bs = this[br]) != null; br++) { if (!e || b.filter(e, [bs]).length) { if (!bt && bs.nodeType === 1) { b.cleanData(bs.getElementsByTagName("*")); b.cleanData([bs]); } if (bs.parentNode) { bs.parentNode.removeChild(bs); } } } return this; }, empty: function () { for (var e = 0, br; (br = this[e]) != null; e++) { if (br.nodeType === 1) { b.cleanData(br.getElementsByTagName("*")); } while (br.firstChild) { br.removeChild(br.firstChild); } } return this; }, clone: function (br, e) { br = br == null ? false : br; e = e == null ? br : e; return this.map(function () { return b.clone(this, br, e); }); }, html: function (bt) { if (bt === K) { return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(ac, "") : null; } else { if (typeof bt === "string" && !O.test(bt) && (b.support.leadingWhitespace || !am.test(bt)) && !ar[(d.exec(bt) || ["", ""])[1].toLowerCase()]) { bt = bt.replace(R, "<$1></$2>"); try { for (var bs = 0, br = this.length; bs < br; bs++) { if (this[bs].nodeType === 1) { b.cleanData(this[bs].getElementsByTagName("*")); this[bs].innerHTML = bt; } } } catch (bu) { this.empty().append(bt); } } else { if (b.isFunction(bt)) { this.each(function (bv) { var e = b(this); e.html(bt.call(this, bv, e.html())); }); } else { this.empty().append(bt); } } } return this; }, replaceWith: function (e) { if (this[0] && this[0].parentNode) { if (b.isFunction(e)) { return this.each(function (bt) { var bs = b(this), br = bs.html(); bs.replaceWith(e.call(this, bt, br)); }); } if (typeof e !== "string") { e = b(e).detach(); } return this.each(function () { var bs = this.nextSibling, br = this.parentNode; b(this).remove(); if (bs) { b(bs).before(e); } else { b(br).append(e); } }); } else { return this.length ? this.pushStack(b(b.isFunction(e) ? e() : e), "replaceWith", e) : this; } }, detach: function (e) { return this.remove(e, true); }, domManip: function (bx, bB, bA) { var bt, bu, bw, bz, by = bx[0], br = []; if (!b.support.checkClone && arguments.length === 3 && typeof by === "string" && n.test(by)) { return this.each(function () { b(this).domManip(bx, bB, bA, true); }); } if (b.isFunction(by)) { return this.each(function (bD) { var bC = b(this); bx[0] = by.call(this, bD, bB ? bC.html() : K); bC.domManip(bx, bB, bA); }); } if (this[0]) { bz = by && by.parentNode; if (b.support.parentNode && bz && bz.nodeType === 11 && bz.childNodes.length === this.length) { bt = { fragment: bz }; } else { bt = b.buildFragment(bx, this, br); } bw = bt.fragment; if (bw.childNodes.length === 1) { bu = bw = bw.firstChild; } else { bu = bw.firstChild; } if (bu) { bB = bB && b.nodeName(bu, "tr"); for (var bs = 0, e = this.length, bv = e - 1; bs < e; bs++) { bA.call(bB ? a6(this[bs], bu) : this[bs], bt.cacheable || (e > 1 && bs < bv) ? b.clone(bw, true, true) : bw); } } if (br.length) { b.each(br, bl); } } return this; } }); function a6(e, br) { return b.nodeName(e, "table") ? (e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody"))) : e; } function t(e, bx) { if (bx.nodeType !== 1 || !b.hasData(e)) { return; } var bw = b.expando, bt = b.data(e), bu = b.data(bx, bt); if ((bt = bt[bw])) { var by = bt.events; bu = bu[bw] = b.extend({}, bt); if (by) { delete bu.handle; bu.events = {}; for (var bv in by) { for (var bs = 0, br = by[bv].length; bs < br; bs++) { b.event.add(bx, bv + (by[bv][bs].namespace ? "." : "") + by[bv][bs].namespace, by[bv][bs], by[bv][bs].data); } } } } } function ad(br, e) { var bs; if (e.nodeType !== 1) { return; } if (e.clearAttributes) { e.clearAttributes(); } if (e.mergeAttributes) { e.mergeAttributes(br); } bs = e.nodeName.toLowerCase(); if (bs === "object") { e.outerHTML = br.outerHTML; } else { if (bs === "input" && (br.type === "checkbox" || br.type === "radio")) { if (br.checked) { e.defaultChecked = e.checked = br.checked; } if (e.value !== br.value) { e.value = br.value; } } else { if (bs === "option") { e.selected = br.defaultSelected; } else { if (bs === "input" || bs === "textarea") { e.defaultValue = br.defaultValue; } } } } e.removeAttribute(b.expando); } b.buildFragment = function (bv, bt, br) { var bu, e, bs, bw; if (bt && bt[0]) { bw = bt[0].ownerDocument || bt[0]; } if (!bw.createDocumentFragment) { bw = ap; } if (bv.length === 1 && typeof bv[0] === "string" && bv[0].length < 512 && bw === ap && bv[0].charAt(0) === "<" && !O.test(bv[0]) && (b.support.checkClone || !n.test(bv[0]))) { e = true; bs = b.fragments[bv[0]]; if (bs && bs !== 1) { bu = bs; } } if (!bu) { bu = bw.createDocumentFragment(); b.clean(bv, bw, bu, br); } if (e) { b.fragments[bv[0]] = bs ? bu : 1; } return { fragment: bu, cacheable: e }; }; b.fragments = {}; b.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (e, br) { b.fn[e] = function (bs) { var bv = [], by = b(bs), bx = this.length === 1 && this[0].parentNode; if (bx && bx.nodeType === 11 && bx.childNodes.length === 1 && by.length === 1) { by[br](this[0]); return this; } else { for (var bw = 0, bt = by.length; bw < bt; bw++) { var bu = (bw > 0 ? this.clone(true) : this).get(); b(by[bw])[br](bu); bv = bv.concat(bu); } return this.pushStack(bv, e, by.selector); } }; }); function bb(e) { if ("getElementsByTagName" in e) { return e.getElementsByTagName("*"); } else { if ("querySelectorAll" in e) { return e.querySelectorAll("*"); } else { return []; } } } function au(e) { if (e.type === "checkbox" || e.type === "radio") { e.defaultChecked = e.checked; } } function E(e) { if (b.nodeName(e, "input")) { au(e); } else { if ("getElementsByTagName" in e) { b.grep(e.getElementsByTagName("input"), au); } } } b.extend({ clone: function (bu, bw, bs) { var bv = bu.cloneNode(true), e, br, bt; if ((!b.support.noCloneEvent || !b.support.noCloneChecked) && (bu.nodeType === 1 || bu.nodeType === 11) && !b.isXMLDoc(bu)) { ad(bu, bv); e = bb(bu); br = bb(bv); for (bt = 0; e[bt]; ++bt) { if (br[bt]) { ad(e[bt], br[bt]); } } } if (bw) { t(bu, bv); if (bs) { e = bb(bu); br = bb(bv); for (bt = 0; e[bt]; ++bt) { t(e[bt], br[bt]); } } } e = br = null; return bv; }, clean: function (bs, bu, bD, bw) { var bB; bu = bu || ap; if (typeof bu.createElement === "undefined") { bu = bu.ownerDocument || bu[0] && bu[0].ownerDocument || ap; } var bE = [], bx; for (var bA = 0, bv; (bv = bs[bA]) != null; bA++) { if (typeof bv === "number") { bv += ""; } if (!bv) { continue; } if (typeof bv === "string") { if (!U.test(bv)) { bv = bu.createTextNode(bv); } else { bv = bv.replace(R, "<$1></$2>"); var bG = (d.exec(bv) || ["", ""])[1].toLowerCase(), bt = ar[bG] || ar._default, bz = bt[0], br = bu.createElement("div"); br.innerHTML = bt[1] + bv + bt[2]; while (bz--) { br = br.lastChild; } if (!b.support.tbody) { var e = w.test(bv), by = bG === "table" && !e ? br.firstChild && br.firstChild.childNodes : bt[1] === "<table>" && !e ? br.childNodes : []; for (bx = by.length - 1; bx >= 0; --bx) { if (b.nodeName(by[bx], "tbody") && !by[bx].childNodes.length) { by[bx].parentNode.removeChild(by[bx]); } } } if (!b.support.leadingWhitespace && am.test(bv)) { br.insertBefore(bu.createTextNode(am.exec(bv)[0]), br.firstChild); } bv = br.childNodes; } } var bC; if (!b.support.appendChecked) { if (bv[0] && typeof (bC = bv.length) === "number") { for (bx = 0; bx < bC; bx++) { E(bv[bx]); } } else { E(bv); } } if (bv.nodeType) { bE.push(bv); } else { bE = b.merge(bE, bv); } } if (bD) { bB = function (bH) { return !bH.type || bi.test(bH.type); }; for (bA = 0; bE[bA]; bA++) { if (bw && b.nodeName(bE[bA], "script") && (!bE[bA].type || bE[bA].type.toLowerCase() === "text/javascript")) { bw.push(bE[bA].parentNode ? bE[bA].parentNode.removeChild(bE[bA]) : bE[bA]); } else { if (bE[bA].nodeType === 1) { var bF = b.grep(bE[bA].getElementsByTagName("script"), bB); bE.splice.apply(bE, [bA + 1, 0].concat(bF)); } bD.appendChild(bE[bA]); } } } return bE; }, cleanData: function (br) { var bu, bs, e = b.cache, bz = b.expando, bx = b.event.special, bw = b.support.deleteExpando; for (var bv = 0, bt; (bt = br[bv]) != null; bv++) { if (bt.nodeName && b.noData[bt.nodeName.toLowerCase()]) { continue; } bs = bt[b.expando]; if (bs) { bu = e[bs] && e[bs][bz]; if (bu && bu.events) { for (var by in bu.events) { if (bx[by]) { b.event.remove(bt, by); } else { b.removeEvent(bt, by, bu.handle); } } if (bu.handle) { bu.handle.elem = null; } } if (bw) { delete bt[b.expando]; } else { if (bt.removeAttribute) { bt.removeAttribute(b.expando); } } delete e[bs]; } } } }); function bl(e, br) { if (br.src) { b.ajax({ url: br.src, async: false, dataType: "script" }); } else { b.globalEval((br.text || br.textContent || br.innerHTML || "").replace(aI, "/*$0*/")); } if (br.parentNode) { br.parentNode.removeChild(br); } } var af = /alpha\([^)]*\)/i, ao = /opacity=([^)]*)/, z = /([A-Z]|^ms)/g, a8 = /^-?\d+(?:px)?$/i, bk = /^-?\d/, I = /^([\-+])=([\-+.\de]+)/, a3 = { position: "absolute", visibility: "hidden", display: "block" }, ai = ["Left", "Right"], aY = ["Top", "Bottom"], V, aD, aS; b.fn.css = function (e, br) { if (arguments.length === 2 && br === K) { return this; } return b.access(this, e, br, true, function (bt, bs, bu) { return bu !== K ? b.style(bt, bs, bu) : b.css(bt, bs); }); }; b.extend({ cssHooks: { opacity: { get: function (bs, br) { if (br) { var e = V(bs, "opacity", "opacity"); return e === "" ? "1" : e; } else { return bs.style.opacity; } } } }, cssNumber: { "fillOpacity": true, "fontWeight": true, "lineHeight": true, "opacity": true, "orphans": true, "widows": true, "zIndex": true, "zoom": true }, cssProps: { "float": b.support.cssFloat ? "cssFloat" : "styleFloat" }, style: function (bt, bs, bz, bu) { if (!bt || bt.nodeType === 3 || bt.nodeType === 8 || !bt.style) { return; } var bx, by, bv = b.camelCase(bs), br = bt.style, bA = b.cssHooks[bv]; bs = b.cssProps[bv] || bv; if (bz !== K) { by = typeof bz; if (by === "string" && (bx = I.exec(bz))) { bz = (+(bx[1] + 1) * +bx[2]) + parseFloat(b.css(bt, bs)); by = "number"; } if (bz == null || by === "number" && isNaN(bz)) { return; } if (by === "number" && !b.cssNumber[bv]) { bz += "px"; } if (!bA || !("set" in bA) || (bz = bA.set(bt, bz)) !== K) { try { br[bs] = bz; } catch (bw) {} } } else { if (bA && "get" in bA && (bx = bA.get(bt, false, bu)) !== K) { return bx; } return br[bs]; } }, css: function (bu, bt, br) { var bs, e; bt = b.camelCase(bt); e = b.cssHooks[bt]; bt = b.cssProps[bt] || bt; if (bt === "cssFloat") { bt = "float"; } if (e && "get" in e && (bs = e.get(bu, true, br)) !== K) { return bs; } else { if (V) { return V(bu, bt); } } }, swap: function (bt, bs, bu) { var e = {}; for (var br in bs) { e[br] = bt.style[br]; bt.style[br] = bs[br]; } bu.call(bt); for (br in bs) { bt.style[br] = e[br]; } } }); b.curCSS = b.css; b.each(["height", "width"], function (br, e) { b.cssHooks[e] = { get: function (bu, bt, bs) { var bv; if (bt) { if (bu.offsetWidth !== 0) { return o(bu, e, bs); } else { b.swap(bu, a3, function () { bv = o(bu, e, bs); }); } return bv; } }, set: function (bs, bt) { if (a8.test(bt)) { bt = parseFloat(bt); if (bt >= 0) { return bt + "px"; } } else { return bt; } } }; }); if (!b.support.opacity) { b.cssHooks.opacity = { get: function (br, e) { return ao.test((e && br.currentStyle ? br.currentStyle.filter : br.style.filter) || "") ? (parseFloat(RegExp.$1) / 100) + "" : e ? "1" : ""; }, set: function (bu, bv) { var bt = bu.style, br = bu.currentStyle, e = b.isNaN(bv) ? "" : "alpha(opacity=" + bv * 100 + ")", bs = br && br.filter || bt.filter || ""; bt.zoom = 1; if (bv >= 1 && b.trim(bs.replace(af, "")) === "") { bt.removeAttribute("filter"); if (br && !br.filter) { return; } } bt.filter = af.test(bs) ? bs.replace(af, e) : bs + " " + e; } }; } b(function () { if (!b.support.reliableMarginRight) { b.cssHooks.marginRight = { get: function (bs, br) { var e; b.swap(bs, { "display": "inline-block" }, function () { if (br) { e = V(bs, "margin-right", "marginRight"); } else { e = bs.style.marginRight; } }); return e; } }; } }); if (ap.defaultView && ap.defaultView.getComputedStyle) { aD = function (bu, bs) { var br, bt, e; bs = bs.replace(z, "-$1").toLowerCase(); if (!(bt = bu.ownerDocument.defaultView)) { return K; } if ((e = bt.getComputedStyle(bu, null))) { br = e.getPropertyValue(bs); if (br === "" && !b.contains(bu.ownerDocument.documentElement, bu)) { br = b.style(bu, bs); } } return br; }; } if (ap.documentElement.currentStyle) { aS = function (bu, bs) { var bv, br = bu.currentStyle && bu.currentStyle[bs], e = bu.runtimeStyle && bu.runtimeStyle[bs], bt = bu.style; if (!a8.test(br) && bk.test(br)) { bv = bt.left; if (e) { bu.runtimeStyle.left = bu.currentStyle.left; } bt.left = bs === "fontSize" ? "1em" : (br || 0); br = bt.pixelLeft + "px"; bt.left = bv; if (e) { bu.runtimeStyle.left = e; } } return br === "" ? "auto" : br; }; } V = aD || aS; function o(bs, br, e) { var bu = br === "width" ? bs.offsetWidth : bs.offsetHeight, bt = br === "width" ? ai : aY; if (bu > 0) { if (e !== "border") { b.each(bt, function () { if (!e) { bu -= parseFloat(b.css(bs, "padding" + this)) || 0; } if (e === "margin") { bu += parseFloat(b.css(bs, e + this)) || 0; } else { bu -= parseFloat(b.css(bs, "border" + this + "Width")) || 0; } }); } return bu + "px"; } bu = V(bs, br, br); if (bu < 0 || bu == null) { bu = bs.style[br] || 0; } bu = parseFloat(bu) || 0; if (e) { b.each(bt, function () { bu += parseFloat(b.css(bs, "padding" + this)) || 0; if (e !== "padding") { bu += parseFloat(b.css(bs, "border" + this + "Width")) || 0; } if (e === "margin") { bu += parseFloat(b.css(bs, e + this)) || 0; } }); } return bu + "px"; } if (b.expr && b.expr.filters) { b.expr.filters.hidden = function (bs) { var br = bs.offsetWidth, e = bs.offsetHeight; return (br === 0 && e === 0) || (!b.support.reliableHiddenOffsets && (bs.style.display || b.css(bs, "display")) === "none"); }; b.expr.filters.visible = function (e) { return !b.expr.filters.hidden(e); }; } var j = /%20/g, ak = /\[\]$/, bp = /\r?\n/g, bn = /#.*$/, ay = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, aV = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, aH = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, aK = /^(?:GET|HEAD)$/, c = /^\/\//, L = /\?/, a2 = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, q = /^(?:select|textarea)/i, h = /\s+/, bo = /([?&])_=[^&]*/, J = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, A = b.fn.load, W = {}, r = {}, az, s, aO = ["*/"] + ["*"]; try { az = bh.href; } catch (aq) { az = ap.createElement("a"); az.href = ""; az = az.href; } s = J.exec(az.toLowerCase()) || []; function f(e) { return function (bu, bw) { if (typeof bu !== "string") { bw = bu; bu = "*"; } if (b.isFunction(bw)) { var bt = bu.toLowerCase().split(h), bs = 0, bv = bt.length, br, bx, by; for (; bs < bv; bs++) { br = bt[bs]; by = /^\+/.test(br); if (by) { br = br.substr(1) || "*"; } bx = e[br] = e[br] || []; bx[by ? "unshift" : "push"](bw); } } }; } function aQ(br, bA, bv, bz, bx, bt) { bx = bx || bA.dataTypes[0]; bt = bt || {}; bt[bx] = true; var bw = br[bx], bs = 0, e = bw ? bw.length : 0, bu = (br === W), by; for (; bs < e && (bu || !by); bs++) { by = bw[bs](bA, bv, bz); if (typeof by === "string") { if (!bu || bt[by]) { by = K; } else { bA.dataTypes.unshift(by); by = aQ(br, bA, bv, bz, by, bt); } } } if ((bu || !by) && !bt["*"]) { by = aQ(br, bA, bv, bz, "*", bt); } return by; } function ah(bs, bt) { var br, e, bu = b.ajaxSettings.flatOptions || {}; for (br in bt) { if (bt[br] !== K) { (bu[br] ? bs : (e || (e = {})))[br] = bt[br]; } } if (e) { b.extend(true, bs, e); } } b.fn.extend({ load: function (bs, bv, bw) { if (typeof bs !== "string" && A) { return A.apply(this, arguments); } else { if (!this.length) { return this; } } var bu = bs.indexOf(" "); if (bu >= 0) { var e = bs.slice(bu, bs.length); bs = bs.slice(0, bu); } var bt = "GET"; if (bv) { if (b.isFunction(bv)) { bw = bv; bv = K; } else { if (typeof bv === "object") { bv = b.param(bv, b.ajaxSettings.traditional); bt = "POST"; } } } var br = this; b.ajax({ url: bs, type: bt, dataType: "html", data: bv, complete: function (by, bx, bz) { bz = by.responseText; if (by.isResolved()) { by.done(function (bA) { bz = bA; }); br.html(e ? b("<div>").append(bz.replace(a2, "")).find(e) : bz); } if (bw) { br.each(bw, [bz, bx, by]); } } }); return this; }, serialize: function () { return b.param(this.serializeArray()); }, serializeArray: function () { return this.map(function () { return this.elements ? b.makeArray(this.elements) : this; }).filter(function () { return this.name && !this.disabled && (this.checked || q.test(this.nodeName) || aV.test(this.type)); }).map(function (e, br) { var bs = b(this).val(); return bs == null ? null : b.isArray(bs) ? b.map(bs, function (bu, bt) { return { name: br.name, value: bu.replace(bp, "\r\n") }; }) : { name: br.name, value: bs.replace(bp, "\r\n") }; }).get(); } }); b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function (e, br) { b.fn[br] = function (bs) { return this.bind(br, bs); }; }); b.each(["get", "post"], function (e, br) { b[br] = function (bs, bu, bv, bt) { if (b.isFunction(bu)) { bt = bt || bv; bv = bu; bu = K; } return b.ajax({ type: br, url: bs, data: bu, success: bv, dataType: bt }); }; }); b.extend({ getScript: function (e, br) { return b.get(e, K, br, "script"); }, getJSON: function (e, br, bs) { return b.get(e, br, bs, "json"); }, ajaxSetup: function (br, e) { if (e) { ah(br, b.ajaxSettings); } else { e = br; br = b.ajaxSettings; } ah(br, e); return br; }, ajaxSettings: { url: az, isLocal: aH.test(s[1]), global: true, type: "GET", contentType: "application/x-www-form-urlencoded", processData: true, async: true, accepts: { xml: "application/xml, text/xml", html: "text/html", text: "text/plain", json: "application/json, text/javascript", "*": aO }, contents: { xml: /xml/, html: /html/, json: /json/ }, responseFields: { xml: "responseXML", text: "responseText" }, converters: { "* text": a7.String, "text html": true, "text json": b.parseJSON, "text xml": b.parseXML }, flatOptions: { context: true, url: true } }, ajaxPrefilter: f(W), ajaxTransport: f(r), ajax: function (bv, bt) { if (typeof bv === "object") { bt = bv; bv = K; } bt = bt || {}; var bz = b.ajaxSetup({}, bt), bO = bz.context || bz, bC = bO !== bz && (bO.nodeType || bO instanceof b) ? b(bO) : b.event, bN = b.Deferred(), bJ = b._Deferred(), bx = bz.statusCode || {}, by, bD = {}, bK = {}, bM, bu, bH, bA, bE, bw = 0, bs, bG, bF = { readyState: 0, setRequestHeader: function (bP, bQ) { if (!bw) { var e = bP.toLowerCase(); bP = bK[e] = bK[e] || bP; bD[bP] = bQ; } return this; }, getAllResponseHeaders: function () { return bw === 2 ? bM : null; }, getResponseHeader: function (bP) { var e; if (bw === 2) { if (!bu) { bu = {}; while ((e = ay.exec(bM))) { bu[e[1].toLowerCase()] = e[2]; } } e = bu[bP.toLowerCase()]; } return e === K ? null : e; }, overrideMimeType: function (e) { if (!bw) { bz.mimeType = e; } return this; }, abort: function (e) { e = e || "abort"; if (bH) { bH.abort(e); } bB(0, e); return this; } }; function bB(bV, bQ, bW, bS) { if (bw === 2) { return; } bw = 2; if (bA) { clearTimeout(bA); } bH = K; bM = bS || ""; bF.readyState = bV > 0 ? 4 : 0; var bP, b0, bZ, bT = bQ, bU = bW ? bf(bz, bF, bW) : K, bR, bY; if (bV >= 200 && bV < 300 || bV === 304) { if (bz.ifModified) { if ((bR = bF.getResponseHeader("Last-Modified"))) { b.lastModified[by] = bR; } if ((bY = bF.getResponseHeader("Etag"))) { b.etag[by] = bY; } } if (bV === 304) { bT = "notmodified"; bP = true; } else { try { b0 = F(bz, bU); bT = "success"; bP = true; } catch (bX) { bT = "parsererror"; bZ = bX; } } } else { bZ = bT; if (!bT || bV) { bT = "error"; if (bV < 0) { bV = 0; } } } bF.status = bV; bF.statusText = "" + (bQ || bT); if (bP) { bN.resolveWith(bO, [b0, bT, bF]); } else { bN.rejectWith(bO, [bF, bT, bZ]); } bF.statusCode(bx); bx = K; if (bs) { bC.trigger("ajax" + (bP ? "Success" : "Error"), [bF, bz, bP ? b0 : bZ]); } bJ.resolveWith(bO, [bF, bT]); if (bs) { bC.trigger("ajaxComplete", [bF, bz]); if (!(--b.active)) { b.event.trigger("ajaxStop"); } } } bN.promise(bF); bF.success = bF.done; bF.error = bF.fail; bF.complete = bJ.done; bF.statusCode = function (bP) { if (bP) { var e; if (bw < 2) { for (e in bP) { bx[e] = [bx[e], bP[e]]; } } else { e = bP[bF.status]; bF.then(e, e); } } return this; }; bz.url = ((bv || bz.url) + "").replace(bn, "").replace(c, s[1] + "//"); bz.dataTypes = b.trim(bz.dataType || "*").toLowerCase().split(h); if (bz.crossDomain == null) { bE = J.exec(bz.url.toLowerCase()); bz.crossDomain = !! (bE && (bE[1] != s[1] || bE[2] != s[2] || (bE[3] || (bE[1] === "http:" ? 80 : 443)) != (s[3] || (s[1] === "http:" ? 80 : 443)))); } if (bz.data && bz.processData && typeof bz.data !== "string") { bz.data = b.param(bz.data, bz.traditional); } aQ(W, bz, bt, bF); if (bw === 2) { return false; } bs = bz.global; bz.type = bz.type.toUpperCase(); bz.hasContent = !aK.test(bz.type); if (bs && b.active++ === 0) { b.event.trigger("ajaxStart"); } if (!bz.hasContent) { if (bz.data) { bz.url += (L.test(bz.url) ? "&" : "?") + bz.data; delete bz.data; } by = bz.url; if (bz.cache === false) { var br = b.now(), bL = bz.url.replace(bo, "$1_=" + br); bz.url = bL + ((bL === bz.url) ? (L.test(bz.url) ? "&" : "?") + "_=" + br : ""); } } if (bz.data && bz.hasContent && bz.contentType !== false || bt.contentType) { bF.setRequestHeader("Content-Type", bz.contentType); } if (bz.ifModified) { by = by || bz.url; if (b.lastModified[by]) { bF.setRequestHeader("If-Modified-Since", b.lastModified[by]); } if (b.etag[by]) { bF.setRequestHeader("If-None-Match", b.etag[by]); } } bF.setRequestHeader("Accept", bz.dataTypes[0] && bz.accepts[bz.dataTypes[0]] ? bz.accepts[bz.dataTypes[0]] + (bz.dataTypes[0] !== "*" ? ", " + aO + "; q=0.01" : "") : bz.accepts["*"]); for (bG in bz.headers) { bF.setRequestHeader(bG, bz.headers[bG]); } if (bz.beforeSend && (bz.beforeSend.call(bO, bF, bz) === false || bw === 2)) { bF.abort(); return false; } for (bG in { success: 1, error: 1, complete: 1 }) { bF[bG](bz[bG]); } bH = aQ(r, bz, bt, bF); if (!bH) { bB(-1, "No Transport"); } else { bF.readyState = 1; if (bs) { bC.trigger("ajaxSend", [bF, bz]); } if (bz.async && bz.timeout > 0) { bA = setTimeout(function () { bF.abort("timeout"); }, bz.timeout); } try { bw = 1; bH.send(bD, bB); } catch (bI) { if (bw < 2) { bB(-1, bI); } else { b.error(bI); } } } return bF; }, param: function (e, bs) { var br = [], bu = function (bv, bw) { bw = b.isFunction(bw) ? bw() : bw; br[br.length] = encodeURIComponent(bv) + "=" + encodeURIComponent(bw); }; if (bs === K) { bs = b.ajaxSettings.traditional; } if (b.isArray(e) || (e.jquery && !b.isPlainObject(e))) { b.each(e, function () { bu(this.name, this.value); }); } else { for (var bt in e) { v(bt, e[bt], bs, bu); } } return br.join("&").replace(j, "+"); } }); function v(bs, bu, br, bt) { if (b.isArray(bu)) { b.each(bu, function (bw, bv) { if (br || ak.test(bs)) { bt(bs, bv); } else { v(bs + "[" + (typeof bv === "object" || b.isArray(bv) ? bw : "") + "]", bv, br, bt); } }); } else { if (!br && bu != null && typeof bu === "object") { for (var e in bu) { v(bs + "[" + e + "]", bu[e], br, bt); } } else { bt(bs, bu); } } } b.extend({ active: 0, lastModified: {}, etag: {} }); function bf(bz, by, bv) { var br = bz.contents, bx = bz.dataTypes, bs = bz.responseFields, bu, bw, bt, e; for (bw in bs) { if (bw in bv) { by[bs[bw]] = bv[bw]; } } while (bx[0] === "*") { bx.shift(); if (bu === K) { bu = bz.mimeType || by.getResponseHeader("content-type"); } } if (bu) { for (bw in br) { if (br[bw] && br[bw].test(bu)) { bx.unshift(bw); break; } } } if (bx[0] in bv) { bt = bx[0]; } else { for (bw in bv) { if (!bx[0] || bz.converters[bw + " " + bx[0]]) { bt = bw; break; } if (!e) { e = bw; } } bt = bt || e; } if (bt) { if (bt !== bx[0]) { bx.unshift(bt); } return bv[bt]; } } function F(bD, bv) { if (bD.dataFilter) { bv = bD.dataFilter(bv, bD.dataType); } var bz = bD.dataTypes, bC = {}, bw, bA, bs = bz.length, bx, by = bz[0], bt, bu, bB, br, e; for (bw = 1; bw < bs; bw++) { if (bw === 1) { for (bA in bD.converters) { if (typeof bA === "string") { bC[bA.toLowerCase()] = bD.converters[bA]; } } } bt = by; by = bz[bw]; if (by === "*") { by = bt; } else { if (bt !== "*" && bt !== by) { bu = bt + " " + by; bB = bC[bu] || bC["* " + by]; if (!bB) { e = K; for (br in bC) { bx = br.split(" "); if (bx[0] === bt || bx[0] === "*") { e = bC[bx[1] + " " + by]; if (e) { br = bC[br]; if (br === true) { bB = e; } else { if (e === true) { bB = br; } } break; } } } } if (!(bB || e)) { b.error("No conversion from " + bu.replace(" ", " to ")); } if (bB !== true) { bv = bB ? bB(bv) : e(br(bv)); } } } } return bv; } var ax = b.now(), u = /(\=)\?(&|$)|\?\?/i; b.ajaxSetup({ jsonp: "callback", jsonpCallback: function () { return b.expando + "_" + (ax++); } }); b.ajaxPrefilter("json jsonp", function (bz, bw, by) { var bt = bz.contentType === "application/x-www-form-urlencoded" && (typeof bz.data === "string"); if (bz.dataTypes[0] === "jsonp" || bz.jsonp !== false && (u.test(bz.url) || bt && u.test(bz.data))) { var bx, bs = bz.jsonpCallback = b.isFunction(bz.jsonpCallback) ? bz.jsonpCallback() : bz.jsonpCallback, bv = a7[bs], e = bz.url, bu = bz.data, br = "$1" + bs + "$2"; if (bz.jsonp !== false) { e = e.replace(u, br); if (bz.url === e) { if (bt) { bu = bu.replace(u, br); } if (bz.data === bu) { e += (/\?/.test(e) ? "&" : "?") + bz.jsonp + "=" + bs; } } } bz.url = e; bz.data = bu; a7[bs] = function (bA) { bx = [bA]; }; by.always(function () { a7[bs] = bv; if (bx && b.isFunction(bv)) { a7[bs](bx[0]); } }); bz.converters["script json"] = function () { if (!bx) { b.error(bs + " was not called"); } return bx[0]; }; bz.dataTypes[0] = "json"; return "script"; } }); b.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /javascript|ecmascript/ }, converters: { "text script": function (e) { b.globalEval(e); return e; } } }); b.ajaxPrefilter("script", function (e) { if (e.cache === K) { e.cache = false; } if (e.crossDomain) { e.type = "GET"; e.global = false; } }); b.ajaxTransport("script", function (bs) { if (bs.crossDomain) { var e, br = ap.head || ap.getElementsByTagName("head")[0] || ap.documentElement; return { send: function (bt, bu) { e = ap.createElement("script"); e.async = "async"; if (bs.scriptCharset) { e.charset = bs.scriptCharset; } e.src = bs.url; e.onload = e.onreadystatechange = function (bw, bv) { if (bv || !e.readyState || /loaded|complete/.test(e.readyState)) { e.onload = e.onreadystatechange = null; if (br && e.parentNode) { br.removeChild(e); } e = K; if (!bv) { bu(200, "success"); } } }; br.insertBefore(e, br.firstChild); }, abort: function () { if (e) { e.onload(0, 1); } } }; } }); var B = a7.ActiveXObject ? function () { for (var e in M) { M[e](0, 1); } } : false, y = 0, M; function aG() { try { return new a7.XMLHttpRequest(); } catch (br) {} } function ae() { try { return new a7.ActiveXObject("Microsoft.XMLHTTP"); } catch (br) {} } b.ajaxSettings.xhr = a7.ActiveXObject ? function () { return !this.isLocal && aG() || ae(); } : aG; (function (e) { b.extend(b.support, { ajax: !! e, cors: !! e && ("withCredentials" in e) }); })(b.ajaxSettings.xhr()); if (b.support.ajax) { b.ajaxTransport(function (e) { if (!e.crossDomain || b.support.cors) { var br; return { send: function (bx, bs) { var bw = e.xhr(), bv, bu; if (e.username) { bw.open(e.type, e.url, e.async, e.username, e.password); } else { bw.open(e.type, e.url, e.async); } if (e.xhrFields) { for (bu in e.xhrFields) { bw[bu] = e.xhrFields[bu]; } } if (e.mimeType && bw.overrideMimeType) { bw.overrideMimeType(e.mimeType); } if (!e.crossDomain && !bx["X-Requested-With"]) { bx["X-Requested-With"] = "XMLHttpRequest"; } try { for (bu in bx) { bw.setRequestHeader(bu, bx[bu]); } } catch (bt) {} bw.send((e.hasContent && e.data) || null); br = function (bG, bA) { var bB, bz, by, bE, bD; try { if (br && (bA || bw.readyState === 4)) { br = K; if (bv) { bw.onreadystatechange = b.noop; if (B) { delete M[bv]; } } if (bA) { if (bw.readyState !== 4) { bw.abort(); } } else { bB = bw.status; by = bw.getAllResponseHeaders(); bE = {}; bD = bw.responseXML; if (bD && bD.documentElement) { bE.xml = bD; } bE.text = bw.responseText; try { bz = bw.statusText; } catch (bF) { bz = ""; } if (!bB && e.isLocal && !e.crossDomain) { bB = bE.text ? 200 : 404; } else { if (bB === 1223) { bB = 204; } } } } } catch (bC) { if (!bA) { bs(-1, bC); } } if (bE) { bs(bB, bz, bE, by); } }; if (!e.async || bw.readyState === 4) { br(); } else { bv = ++y; if (B) { if (!M) { M = {}; b(a7).unload(B); } M[bv] = br; } bw.onreadystatechange = br; } }, abort: function () { if (br) { br(0, 1); } } }; } }); } var Q = {}, a4, m, aw = /^(?:toggle|show|hide)$/, aM = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, aZ, aC = [ ["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"] ], a0; b.fn.extend({ show: function (bt, bw, bv) { var bs, bu; if (bt || bt === 0) { return this.animate(aX("show", 3), bt, bw, bv); } else { for (var br = 0, e = this.length; br < e; br++) { bs = this[br]; if (bs.style) { bu = bs.style.display; if (!b._data(bs, "olddisplay") && bu === "none") { bu = bs.style.display = ""; } if (bu === "" && b.css(bs, "display") === "none") { b._data(bs, "olddisplay", x(bs.nodeName)); } } } for (br = 0; br < e; br++) { bs = this[br]; if (bs.style) { bu = bs.style.display; if (bu === "" || bu === "none") { bs.style.display = b._data(bs, "olddisplay") || ""; } } } return this; } }, hide: function (bs, bv, bu) { if (bs || bs === 0) { return this.animate(aX("hide", 3), bs, bv, bu); } else { for (var br = 0, e = this.length; br < e; br++) { if (this[br].style) { var bt = b.css(this[br], "display"); if (bt !== "none" && !b._data(this[br], "olddisplay")) { b._data(this[br], "olddisplay", bt); } } } for (br = 0; br < e; br++) { if (this[br].style) { this[br].style.display = "none"; } } return this; } }, _toggle: b.fn.toggle, toggle: function (bs, br, bt) { var e = typeof bs === "boolean"; if (b.isFunction(bs) && b.isFunction(br)) { this._toggle.apply(this, arguments); } else { if (bs == null || e) { this.each(function () { var bu = e ? bs : b(this).is(":hidden"); b(this)[bu ? "show" : "hide"](); }); } else { this.animate(aX("toggle", 3), bs, br, bt); } } return this; }, fadeTo: function (e, bt, bs, br) { return this.filter(":hidden").css("opacity", 0).show().end().animate({ opacity: bt }, e, bs, br); }, animate: function (bu, br, bt, bs) { var e = b.speed(br, bt, bs); if (b.isEmptyObject(bu)) { return this.each(e.complete, [false]); } bu = b.extend({}, bu); return this[e.queue === false ? "each" : "queue"](function () { if (e.queue === false) { b._mark(this); } var by = b.extend({}, e), bF = this.nodeType === 1, bC = bF && b(this).is(":hidden"), bv, bz, bx, bE, bD, bB, bw, bA, bG; by.animatedProperties = {}; for (bx in bu) { bv = b.camelCase(bx); if (bx !== bv) { bu[bv] = bu[bx]; delete bu[bx]; } bz = bu[bv]; if (b.isArray(bz)) { by.animatedProperties[bv] = bz[1]; bz = bu[bv] = bz[0]; } else { by.animatedProperties[bv] = by.specialEasing && by.specialEasing[bv] || by.easing || "swing"; } if (bz === "hide" && bC || bz === "show" && !bC) { return by.complete.call(this); } if (bF && (bv === "height" || bv === "width")) { by.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY]; if (b.css(this, "display") === "inline" && b.css(this, "float") === "none") { if (!b.support.inlineBlockNeedsLayout) { this.style.display = "inline-block"; } else { bE = x(this.nodeName); if (bE === "inline") { this.style.display = "inline-block"; } else { this.style.display = "inline"; this.style.zoom = 1; } } } } } if (by.overflow != null) { this.style.overflow = "hidden"; } for (bx in bu) { bD = new b.fx(this, by, bx); bz = bu[bx]; if (aw.test(bz)) { bD[bz === "toggle" ? bC ? "show" : "hide" : bz](); } else { bB = aM.exec(bz); bw = bD.cur(); if (bB) { bA = parseFloat(bB[2]); bG = bB[3] || (b.cssNumber[bx] ? "" : "px"); if (bG !== "px") { b.style(this, bx, (bA || 1) + bG); bw = ((bA || 1) / bD.cur()) * bw; b.style(this, bx, bw + bG); } if (bB[1]) { bA = ((bB[1] === "-=" ? -1 : 1) * bA) + bw; } bD.custom(bw, bA, bG); } else { bD.custom(bw, bz, ""); } } } return true; }); }, stop: function (br, e) { if (br) { this.queue([]); } this.each(function () { var bt = b.timers, bs = bt.length; if (!e) { b._unmark(true, this); } while (bs--) { if (bt[bs].elem === this) { if (e) { bt[bs](true); } bt.splice(bs, 1); } } }); if (!e) { this.dequeue(); } return this; } }); function bc() { setTimeout(an, 0); return (a0 = b.now()); } function an() { a0 = K; } function aX(br, e) { var bs = {}; b.each(aC.concat.apply([], aC.slice(0, e)), function () { bs[this] = br; }); return bs; } b.each({ slideDown: aX("show", 1), slideUp: aX("hide", 1), slideToggle: aX("toggle", 1), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function (e, br) { b.fn[e] = function (bs, bu, bt) { return this.animate(br, bs, bu, bt); }; }); b.extend({ speed: function (bs, bt, br) { var e = bs && typeof bs === "object" ? b.extend({}, bs) : { complete: br || !br && bt || b.isFunction(bs) && bs, duration: bs, easing: br && bt || bt && !b.isFunction(bt) && bt }; e.duration = b.fx.off ? 0 : typeof e.duration === "number" ? e.duration : e.duration in b.fx.speeds ? b.fx.speeds[e.duration] : b.fx.speeds._default; e.old = e.complete; e.complete = function (bu) { if (b.isFunction(e.old)) { e.old.call(this); } if (e.queue !== false) { b.dequeue(this); } else { if (bu !== false) { b._unmark(this); } } }; return e; }, easing: { linear: function (bs, bt, e, br) { return e + br * bs; }, swing: function (bs, bt, e, br) { return ((-Math.cos(bs * Math.PI) / 2) + 0.5) * br + e; } }, timers: [], fx: function (br, e, bs) { this.options = e; this.elem = br; this.prop = bs; e.orig = e.orig || {}; } }); b.fx.prototype = { update: function () { if (this.options.step) { this.options.step.call(this.elem, this.now, this); }(b.fx.step[this.prop] || b.fx.step._default)(this); }, cur: function () { if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) { return this.elem[this.prop]; } var e, br = b.css(this.elem, this.prop); return isNaN(e = parseFloat(br)) ? !br || br === "auto" ? 0 : br : e; }, custom: function (bv, bu, bt) { var e = this, bs = b.fx; this.startTime = a0 || bc(); this.start = bv; this.end = bu; this.unit = bt || this.unit || (b.cssNumber[this.prop] ? "" : "px"); this.now = this.start; this.pos = this.state = 0; function br(bw) { return e.step(bw); } br.elem = this.elem; if (br() && b.timers.push(br) && !aZ) { aZ = setInterval(bs.tick, bs.interval); } }, show: function () { this.options.orig[this.prop] = b.style(this.elem, this.prop); this.options.show = true; this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur()); b(this.elem).show(); }, hide: function () { this.options.orig[this.prop] = b.style(this.elem, this.prop); this.options.hide = true; this.custom(this.cur(), 0); }, step: function (bu) { var bt = a0 || bc(), e = true, bv = this.elem, br = this.options, bs, bx; if (bu || bt >= br.duration + this.startTime) { this.now = this.end; this.pos = this.state = 1; this.update(); br.animatedProperties[this.prop] = true; for (bs in br.animatedProperties) { if (br.animatedProperties[bs] !== true) { e = false; } } if (e) { if (br.overflow != null && !b.support.shrinkWrapBlocks) { b.each(["", "X", "Y"], function (by, bz) { bv.style["overflow" + bz] = br.overflow[by]; }); } if (br.hide) { b(bv).hide(); } if (br.hide || br.show) { for (var bw in br.animatedProperties) { b.style(bv, bw, br.orig[bw]); } } br.complete.call(bv); } return false; } else { if (br.duration == Infinity) { this.now = bt; } else { bx = bt - this.startTime; this.state = bx / br.duration; this.pos = b.easing[br.animatedProperties[this.prop]](this.state, bx, 0, 1, br.duration); this.now = this.start + ((this.end - this.start) * this.pos); } this.update(); } return true; } }; b.extend(b.fx, { tick: function () { for (var br = b.timers, e = 0; e < br.length; ++e) { if (!br[e]()) { br.splice(e--, 1); } } if (!br.length) { b.fx.stop(); } }, interval: 13, stop: function () { clearInterval(aZ); aZ = null; }, speeds: { slow: 600, fast: 200, _default: 400 }, step: { opacity: function (e) { b.style(e.elem, "opacity", e.now); }, _default: function (e) { if (e.elem.style && e.elem.style[e.prop] != null) { e.elem.style[e.prop] = (e.prop === "width" || e.prop === "height" ? Math.max(0, e.now) : e.now) + e.unit; } else { e.elem[e.prop] = e.now; } } } }); if (b.expr && b.expr.filters) { b.expr.filters.animated = function (e) { return b.grep(b.timers, function (br) { return e === br.elem; }).length; }; } function x(bt) { if (!Q[bt]) { var e = ap.body, br = b("<" + bt + ">").appendTo(e), bs = br.css("display"); br.remove(); if (bs === "none" || bs === "") { if (!a4) { a4 = ap.createElement("iframe"); a4.frameBorder = a4.width = a4.height = 0; } e.appendChild(a4); if (!m || !a4.createElement) { m = (a4.contentWindow || a4.contentDocument).document; m.write((ap.compatMode === "CSS1Compat" ? "<!doctype html>" : "") + "<html><body>"); m.close(); } br = m.createElement(bt); m.body.appendChild(br); bs = b.css(br, "display"); e.removeChild(a4); } Q[bt] = bs; } return Q[bt]; } var T = /^t(?:able|d|h)$/i, Z = /^(?:body|html)$/i; if ("getBoundingClientRect" in ap.documentElement) { b.fn.offset = function (bE) { var bu = this[0], bx; if (bE) { return this.each(function (e) { b.offset.setOffset(this, bE, e); }); } if (!bu || !bu.ownerDocument) { return null; } if (bu === bu.ownerDocument.body) { return b.offset.bodyOffset(bu); } try { bx = bu.getBoundingClientRect(); } catch (bB) {} var bD = bu.ownerDocument, bs = bD.documentElement; if (!bx || !b.contains(bs, bu)) { return bx ? { top: bx.top, left: bx.left } : { top: 0, left: 0 }; } var by = bD.body, bz = aF(bD), bw = bs.clientTop || by.clientTop || 0, bA = bs.clientLeft || by.clientLeft || 0, br = bz.pageYOffset || b.support.boxModel && bs.scrollTop || by.scrollTop, bv = bz.pageXOffset || b.support.boxModel && bs.scrollLeft || by.scrollLeft, bC = bx.top + br - bw, bt = bx.left + bv - bA; return { top: bC, left: bt }; }; } else { b.fn.offset = function (bB) { var bv = this[0]; if (bB) { return this.each(function (bC) { b.offset.setOffset(this, bB, bC); }); } if (!bv || !bv.ownerDocument) { return null; } if (bv === bv.ownerDocument.body) { return b.offset.bodyOffset(bv); } b.offset.initialize(); var by, bs = bv.offsetParent, br = bv, bA = bv.ownerDocument, bt = bA.documentElement, bw = bA.body, bx = bA.defaultView, e = bx ? bx.getComputedStyle(bv, null) : bv.currentStyle, bz = bv.offsetTop, bu = bv.offsetLeft; while ((bv = bv.parentNode) && bv !== bw && bv !== bt) { if (b.offset.supportsFixedPosition && e.position === "fixed") { break; } by = bx ? bx.getComputedStyle(bv, null) : bv.currentStyle; bz -= bv.scrollTop; bu -= bv.scrollLeft; if (bv === bs) { bz += bv.offsetTop; bu += bv.offsetLeft; if (b.offset.doesNotAddBorder && !(b.offset.doesAddBorderForTableAndCells && T.test(bv.nodeName))) { bz += parseFloat(by.borderTopWidth) || 0; bu += parseFloat(by.borderLeftWidth) || 0; } br = bs; bs = bv.offsetParent; } if (b.offset.subtractsBorderForOverflowNotVisible && by.overflow !== "visible") { bz += parseFloat(by.borderTopWidth) || 0; bu += parseFloat(by.borderLeftWidth) || 0; } e = by; } if (e.position === "relative" || e.position === "static") { bz += bw.offsetTop; bu += bw.offsetLeft; } if (b.offset.supportsFixedPosition && e.position === "fixed") { bz += Math.max(bt.scrollTop, bw.scrollTop); bu += Math.max(bt.scrollLeft, bw.scrollLeft); } return { top: bz, left: bu }; }; } b.offset = { initialize: function () { var e = ap.body, br = ap.createElement("div"), bu, bw, bv, bx, bs = parseFloat(b.css(e, "marginTop")) || 0, bt = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; b.extend(br.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" }); br.innerHTML = bt; e.insertBefore(br, e.firstChild); bu = br.firstChild; bw = bu.firstChild; bx = bu.nextSibling.firstChild.firstChild; this.doesNotAddBorder = (bw.offsetTop !== 5); this.doesAddBorderForTableAndCells = (bx.offsetTop === 5); bw.style.position = "fixed"; bw.style.top = "20px"; this.supportsFixedPosition = (bw.offsetTop === 20 || bw.offsetTop === 15); bw.style.position = bw.style.top = ""; bu.style.overflow = "hidden"; bu.style.position = "relative"; this.subtractsBorderForOverflowNotVisible = (bw.offsetTop === -5); this.doesNotIncludeMarginInBodyOffset = (e.offsetTop !== bs); e.removeChild(br); b.offset.initialize = b.noop; }, bodyOffset: function (e) { var bs = e.offsetTop, br = e.offsetLeft; b.offset.initialize(); if (b.offset.doesNotIncludeMarginInBodyOffset) { bs += parseFloat(b.css(e, "marginTop")) || 0; br += parseFloat(b.css(e, "marginLeft")) || 0; } return { top: bs, left: br }; }, setOffset: function (bt, bC, bw) { var bx = b.css(bt, "position"); if (bx === "static") { bt.style.position = "relative"; } var bv = b(bt), br = bv.offset(), e = b.css(bt, "top"), bA = b.css(bt, "left"), bB = (bx === "absolute" || bx === "fixed") && b.inArray("auto", [e, bA]) > -1, bz = {}, by = {}, bs, bu; if (bB) { by = bv.position(); bs = by.top; bu = by.left; } else { bs = parseFloat(e) || 0; bu = parseFloat(bA) || 0; } if (b.isFunction(bC)) { bC = bC.call(bt, bw, br); } if (bC.top != null) { bz.top = (bC.top - br.top) + bs; } if (bC.left != null) { bz.left = (bC.left - br.left) + bu; } if ("using" in bC) { bC.using.call(bt, bz); } else { bv.css(bz); } } }; b.fn.extend({ position: function () { if (!this[0]) { return null; } var bs = this[0], br = this.offsetParent(), bt = this.offset(), e = Z.test(br[0].nodeName) ? { top: 0, left: 0 } : br.offset(); bt.top -= parseFloat(b.css(bs, "marginTop")) || 0; bt.left -= parseFloat(b.css(bs, "marginLeft")) || 0; e.top += parseFloat(b.css(br[0], "borderTopWidth")) || 0; e.left += parseFloat(b.css(br[0], "borderLeftWidth")) || 0; return { top: bt.top - e.top, left: bt.left - e.left }; }, offsetParent: function () { return this.map(function () { var e = this.offsetParent || ap.body; while (e && (!Z.test(e.nodeName) && b.css(e, "position") === "static")) { e = e.offsetParent; } return e; }); } }); b.each(["Left", "Top"], function (br, e) { var bs = "scroll" + e; b.fn[bs] = function (bv) { var bt, bu; if (bv === K) { bt = this[0]; if (!bt) { return null; } bu = aF(bt); return bu ? ("pageXOffset" in bu) ? bu[br ? "pageYOffset" : "pageXOffset"] : b.support.boxModel && bu.document.documentElement[bs] || bu.document.body[bs] : bt[bs]; } return this.each(function () { bu = aF(this); if (bu) { bu.scrollTo(!br ? bv : b(bu).scrollLeft(), br ? bv : b(bu).scrollTop()); } else { this[bs] = bv; } }); }; }); function aF(e) { return b.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : false; } b.each(["Height", "Width"], function (br, e) { var bs = e.toLowerCase(); b.fn["inner" + e] = function () { var bt = this[0]; return bt && bt.style ? parseFloat(b.css(bt, bs, "padding")) : null; }; b.fn["outer" + e] = function (bu) { var bt = this[0]; return bt && bt.style ? parseFloat(b.css(bt, bs, bu ? "margin" : "border")) : null; }; b.fn[bs] = function (bv) { var bw = this[0]; if (!bw) { return bv == null ? null : this; } if (b.isFunction(bv)) { return this.each(function (bA) { var bz = b(this); bz[bs](bv.call(this, bA, bz[bs]())); }); } if (b.isWindow(bw)) { var bx = bw.document.documentElement["client" + e], bt = bw.document.body; return bw.document.compatMode === "CSS1Compat" && bx || bt && bt["client" + e] || bx; } else { if (bw.nodeType === 9) { return Math.max(bw.documentElement["client" + e], bw.body["scroll" + e], bw.documentElement["scroll" + e], bw.body["offset" + e], bw.documentElement["offset" + e]); } else { if (bv === K) { var by = b.css(bw, bs), bu = parseFloat(by); return b.isNaN(bu) ? by : bu; } else { return this.css(bs, typeof bv === "string" ? bv : bv + "px"); } } } }; }); a7.jQuery = a7.$ = b; })(window); /* * jQuery Templates Plugin 1.0.0pre * http://github.com/jquery/jquery-tmpl * Requires jQuery 1.4.2 * * Copyright Software Freedom Conservancy, Inc. * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ (function (i, f) { var t = i.fn.domManip, h = "_tmplitem", u = /^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /, p = {}, e = {}, y, x = { key: 0, data: {} }, w = 0, q = 0, g = []; function k(B, A, D, E) { var C = { data: E || (E === 0 || E === false) ? E : (A ? A.data : {}), _wrap: A ? A._wrap : null, tmpl: null, parent: A || null, nodes: [], calls: c, nest: b, wrap: n, html: r, update: z }; if (B) { i.extend(C, B, { nodes: [], parent: A }); } if (D) { C.tmpl = D; C._ctnt = C._ctnt || C.tmpl(i, C); C.key = ++w; (g.length ? e : p)[w] = C; } return C; } i.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (A, B) { i.fn[A] = function (C) { var F = [], I = i(C), E, G, D, J, H = this.length === 1 && this[0].parentNode; y = p || {}; if (H && H.nodeType === 11 && H.childNodes.length === 1 && I.length === 1) { I[B](this[0]); F = this; } else { for (G = 0, D = I.length; G < D; G++) { q = G; E = (G > 0 ? this.clone(true) : this).get(); i(I[G])[B](E); F = F.concat(E); } q = 0; F = this.pushStack(F, A, I.selector); } J = y; y = null; i.tmpl.complete(J); return F; }; }); i.fn.extend({ tmpl: function (C, B, A) { return i.tmpl(this[0], C, B, A); }, tmplItem: function () { return i.tmplItem(this[0]); }, template: function (A) { return i.template(A, this[0]); }, domManip: function (E, H, G, I) { if (E[0] && i.isArray(E[0])) { var B = i.makeArray(arguments), A = E[0], F = A.length, C = 0, D; while (C < F && !(D = i.data(A[C++], "tmplItem"))) {} if (D && q) { B[2] = function (J) { i.tmpl.afterManip(this, J, G); }; } t.apply(this, B); } else { t.apply(this, arguments); } q = 0; if (!y) { i.tmpl.complete(p); } return this; } }); i.extend({ tmpl: function (C, F, E, B) { var D, A = !B; if (A) { B = x; C = i.template[C] || i.template(null, C); e = {}; } else { if (!C) { C = B.tmpl; p[B.key] = B; B.nodes = []; if (B.wrapped) { s(B, B.wrapped); } return i(m(B, null, B.tmpl(i, B))); } } if (!C) { return []; } if (typeof F === "function") { F = F.call(B || {}); } if (E && E.wrapped) { s(E, E.wrapped); } D = i.isArray(F) ? i.map(F, function (G) { return G ? k(E, B, C, G) : null; }) : [k(E, B, C, F)]; return A ? i(m(B, null, D)) : D; }, tmplItem: function (B) { var A; if (B instanceof i) { B = B[0]; } while (B && B.nodeType === 1 && !(A = i.data(B, "tmplItem")) && (B = B.parentNode)) {} return A || x; }, template: function (B, A) { if (A) { if (typeof A === "string") { A = l(A); } else { if (A instanceof i) { A = A[0] || {}; } } if (A.nodeType) { A = i.data(A, "tmpl") || i.data(A, "tmpl", l(A.innerHTML)); } return typeof B === "string" ? (i.template[B] = A) : A; } return B ? (typeof B !== "string" ? i.template(null, B) : (i.template[B] || i.template(null, u.test(B) ? B : i(B)))) : null; }, encode: function (A) { return ("" + A).split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'"); } }); i.extend(i.tmpl, { tag: { "tmpl": { _default: { $2: "null" }, open: "if($notnull_1){__=__.concat($item.nest($1,$2));}" }, "wrap": { _default: { $2: "null" }, open: "$item.calls(__,$1,$2);__=[];", close: "call=$item.calls();__=call._.concat($item.wrap(call,__));" }, "each": { _default: { $2: "$index, $value" }, open: "if($notnull_1){$.each($1a,function($2){with(this){", close: "}});}" }, "if": { open: "if(($notnull_1) && $1a){", close: "}" }, "else": { _default: { $1: "true" }, open: "}else if(($notnull_1) && $1a){" }, "html": { open: "if($notnull_1){__.push($1a);}" }, "=": { _default: { $1: "$data" }, open: "if($notnull_1){__.push($.encode($1a));}" }, "!": { open: "" } }, complete: function (A) { p = {}; }, afterManip: function v(C, A, D) { var B = A.nodeType === 11 ? i.makeArray(A.childNodes) : A.nodeType === 1 ? [A] : []; D.call(C, A); o(B); q++; } }); function m(A, E, C) { var D, B = C ? i.map(C, function (F) { return (typeof F === "string") ? (A.key ? F.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g, "$1 " + h + '="' + A.key + '" $2') : F) : m(F, A, F._ctnt); }) : A; if (E) { return B; } B = B.join(""); B.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/, function (G, H, F, I) { D = i(F).get(); o(D); if (H) { D = a(H).concat(D); } if (I) { D = D.concat(a(I)); } }); return D ? D : a(B); } function a(B) { var A = document.createElement("div"); A.innerHTML = B; return i.makeArray(A.childNodes); } function l(A) { return new Function("jQuery", "$item", "var $=jQuery,call,__=[],$data=$item.data;" + "with($data){__.push('" + i.trim(A).replace(/([\\'])/g, "\\$1").replace(/[\r\t\n]/g, " ").replace(/\$\{([^\}]*)\}/g, "{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g, function (I, C, G, D, E, J, F) { var L = i.tmpl.tag[G], B, H, K; if (!L) { throw "Unknown template tag: " + G; } B = L._default || []; if (J && !/\w$/.test(E)) { E += J; J = ""; } if (E) { E = j(E); F = F ? ("," + j(F) + ")") : (J ? ")" : ""); H = J ? (E.indexOf(".") > -1 ? E + j(J) : ("(" + E + ").call($item" + F)) : E; K = J ? H : "(typeof(" + E + ")==='function'?(" + E + ").call($item):(" + E + "))"; } else { K = H = B.$1 || "null"; } D = j(D); return "');" + L[C ? "close" : "open"].split("$notnull_1").join(E ? "typeof(" + E + ")!=='undefined' && (" + E + ")!=null" : "true").split("$1a").join(K).split("$1").join(H).split("$2").join(D || B.$2 || "") + "__.push('"; }) + "');}return __;"); } function s(B, A) { B._wrap = m(B, true, i.isArray(A) ? A : [u.test(A) ? A : i(A).html()]).join(""); } function j(A) { return A ? A.replace(/\\'/g, "'").replace(/\\\\/g, "\\") : null; } function d(A) { var B = document.createElement("div"); B.appendChild(A.cloneNode(true)); return B.innerHTML; } function o(G) { var I = "_" + q, B, A, E = {}, F, D, C; for (F = 0, D = G.length; F < D; F++) { if ((B = G[F]).nodeType !== 1) { continue; } A = B.getElementsByTagName("*"); for (C = A.length - 1; C >= 0; C--) { H(A[C]); } H(B); } function H(O) { var L, N = O, M, J, K; if ((K = O.getAttribute(h))) { while (N.parentNode && (N = N.parentNode).nodeType === 1 && !(L = N.getAttribute(h))) {} if (L !== K) { N = N.parentNode ? (N.nodeType === 11 ? 0 : (N.getAttribute(h) || 0)) : 0; if (!(J = p[K])) { J = e[K]; J = k(J, p[N] || e[N]); J.key = ++w; p[w] = J; } if (q) { P(K); } } O.removeAttribute(h); } else { if (q && (J = i.data(O, "tmplItem"))) { P(J.key); p[J.key] = J; N = i.data(O.parentNode, "tmplItem"); N = N ? N.key : 0; } } if (J) { M = J; while (M && M.key != N) { M.nodes.push(O); M = M.parent; } delete J._ctnt; delete J._wrap; i.data(O, "tmplItem", J); } function P(Q) { Q = Q + I; J = E[Q] = (E[Q] || k(J, p[J.parent.key + I] || J.parent)); } } } function c(C, A, D, B) { if (!C) { return g.pop(); } g.push({ _: C, tmpl: A, item: this, data: D, options: B }); } function b(A, C, B) { return i.tmpl(i.template(A), C, B, this); } function n(C, A) { var B = C.options || {}; B.wrapped = A; return i.tmpl(i.template(C.tmpl), C.data, B, C.item); } function r(B, C) { var A = this._wrap; return i.map(i(i.isArray(A) ? A.join("") : A).filter(B || "*"), function (D) { return C ? D.innerText || D.textContent : D.outerHTML || d(D); }); } function z() { var A = this.nodes; i.tmpl(null, null, null, this).insertBefore(A[0]); i(A).remove(); } })(jQuery); /* * Log console * Requires jQuery 1.6.3 * * Copyright 2011, Jan Chimiak * This document is licensed as free software under the terms of the * MIT License: http://www.opensource.org/licenses/mit-license.php */ var console = (function () { $("body").append('<div id="a-logappender-wrap"><div class="body"><div id="a-logappender"></div></div>'); function c(g, f) { var d, e; if (g.join) { return g.join(f); } d = ""; for (e = 0; e < g.length; e = e + 1) { d += g[e]; if (e + 1 < g.length) { g += f; } } return d; } function b(f, g, h) { var e, d; e = c(f, ", "); d = h !== "log" ? $("<div>[" + h + "] " + e + "</ div>") : $("<div> " + e + "</ div>"); $("#a-logappender").prepend(d); d.fadeOut(g); if (unsafeWindow.console && jQuery.browser.mozilla) { unsafeWindow.console[h].apply(this, f); } } var a = { level: "INFO", log: function () { b(arguments, 5000, "log"); }, error: function () { b(arguments, 11000, "error"); }, warn: function () { if (a.level === "ERROR") { return; } b(arguments, 9000, "warn"); }, info: function () { if (a.level === "WARN" || a.level === "ERROR") { return; } b(arguments, 7000, "info"); }, debug: function () { if (a.level === "WARN" || a.level === "INFO" || a.level === "ERROR") { return; } b(arguments, 5000, "debug"); } }; return a; })(); /* * Non-Firefox support for main GM functions * Requires jQuery 1.6.3 * * Copyright 2011, Jan Chimiak * This document is licensed as free software under the terms of the * MIT License: http://www.opensource.org/licenses/mit-license.php */ if (!this.GM_getValue || (this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported") > -1)) { this.GM_getValue = function (a, b) { if (localStorage[a] === undefined) { return b; } if (localStorage[a] === "false") { return false; } if (localStorage[a] === "true") { return true; } return localStorage[a]; }; this.GM_setValue = function (a, b) { return (localStorage[a] = b); }; this.GM_deleteValue = function (a) { return delete localStorage[a]; }; /* * Anfit's GC Mods * (c) 2012 Jan 'anfit' Chimiak * http://gc.mmanir.net/ * * This document is licensed as free software under the terms of the * Creative Commons Attribution + Noncommercial 3.0 Unported (CC BY-NC 3.0). * If you want to use this in an commercial product, contact the author. */ } var app = {}; app.version = "5.0.30"; app.releaseNotes = "(2012-04-12): This release fixes some minor bugs, mainly makes the removal of the ugly blue background (from previous version) optional."; app.gameServer = "http://gc.gamestotal.com/"; app.modsServer = "http://128.0.0.1"; app.mod = {}; app.util = {}; app.util.sortByPowerDesc = function (d, c) { return ((d.power > c.power) ? -1 : ((d.power < c.power) ? 1 : 0)); }; app.util.startDragging = function (f) { var d = { zIndex: 0 }; d.elNode = f.target; if (d.elNode.nodeType === 3) { d.elNode = d.elNode.parentNode; } if (d.elNode.nodeName === "INPUT" || d.elNode.nodeName === "SPAN") { return; } while (!d.elNode.className.match("draggable")) { d.elNode = d.elNode.parentNode; } var b = d.elNode.id; d.cursorStartX = f.clientX + window.scrollX; d.cursorStartY = f.clientY + window.scrollY; d.elStartLeft = parseInt(d.elNode.style.left, 10); d.elStartTop = parseInt(d.elNode.style.top, 10); d.elStartRight = d.elStartLeft + parseInt(d.elNode.clientWidth, 10); d.elStartBottom = d.elStartTop + parseInt(d.elNode.clientHeight, 10); d.elNode.style.zIndex = d.zIndex + 1; function a(l) { var g = l.clientX + window.scrollX; var m = l.clientY + window.scrollY; var k, j, h, i; k = d.elStartTop + m - d.cursorStartY; j = d.elStartLeft + g - d.cursorStartX; h = d.elStartBottom + m - d.cursorStartY; i = d.elStartRight + g - d.cursorStartX; if (k > 0 && j > 0 && h + 5 < window.innerHeight && i + 5 < window.innerWidth) { d.elNode.style.left = j + "px"; d.elNode.style.top = k + "px"; } } function c(j) { var g = j.clientX + window.scrollX; var k = j.clientY + window.scrollY; var i; var h; i = d.elStartTop + k - d.cursorStartY; h = d.elStartLeft + g - d.cursorStartX; $(document).unbind("mousemove." + b, a); $(document).unbind("mouseup." + b, c); $(document).trigger("dragStop", [b, i, h]); } $(document).bind("mousemove." + b, a); $(document).bind("mouseup." + b, c); }; app.util.countInArray = function (b, e) { var d = 0; for (var a = 0; a < e.length; a = a + 1) { if (e[a] === b) { d = d + 1; } } return d; }; app.util.formatCurrency = function (c) { var a = c + ""; for (var b = 0; b < Math.round(a.length / 3 - 0.5); b = b + 1) { a = a.replace(/(\d)(\d{3})($|,)/g, "$1,$2$3"); } return a; }; app.util.getRandomNumber = function (b, a) { return Math.random() * (a - b) + b; }; app.PropertyDomNode = function (b, a, c) { this.el = c; this.min = b; this.max = a; this.connected = false; }; app.PropertyDomNode.prototype.setValue = function (a) { if (this.connected !== true) { return; } this.el.html(this.prefix + app.util.formatCurrency(a) + this.suffix); this.refreshEl(); }; app.PropertyDomNode.prototype.setMax = function (a) { if (this.connected !== true) { return; } this.max = 1 * a; this.refreshEl(); }; app.PropertyDomNode.prototype.setMin = function (a) { if (this.connected !== true) { return; } this.min = 1 * a; this.refreshEl(); }; app.PropertyDomNode.prototype.refreshEl = function () { var a = this.el.text().replace(/\D/g, "") * 1; if (a > this.max || a < this.min) { this.el.removeClass("bodybox", "a-bodybox-yellow").addClass("a-bodybox-red"); } else { if (a === this.max) { this.el.removeClass("bodybox", "a-bodybox-red").addClass("a-bodybox-yellow"); } else { this.el.removeClass("a-bodybox-yellow"); this.el.removeClass("a-bodybox-red"); this.el.addClass("bodybox"); } } }; app.PropertyDomNode.prototype.connect = function (a) { this.el = a; this.connected = true; this.prefix = this.el.html().replace(/-{0,1}\d.*/, ""); this.suffix = this.el.html().replace(/.*\d/, ""); this.refreshEl(); }; app.Property = function (d, c, a, b) { this.defaultMax = a; this.defaultMin = c; this.parent = b; this.id = d; this.max = this.parent.getValue(this.id + ".max") ? this.parent.getValue(this.id + ".max") : this.defaultMax; this.min = this.parent.getValue(this.id + ".min") ? this.parent.getValue(this.id + ".min") : this.defaultMin; this.domDao = new app.PropertyDomNode(this.min, this.max); }; app.Property.prototype.setEl = function (a) { this.dom = a; if (this.parent.isNewest()) { this.domDao.connect(a); } var b = this; $(this.dom).click(function (h) { var g, f, c, d; h.stopPropagation(); g = $(this).position().left - ($(this).outerWidth()) / 2; f = $(this).position().top + $(this).outerHeight(); var i = b.id; c = b.max; d = b.min; $("body").append('<table id="change-property-' + i + '" class="a-property" style="top: ' + f + "; left: " + g + ';"><tr><td><b>Limits for ' + i + ':</b></td><td><button id="close-' + i + '" class="a-property-close">x</input></td></tr><tr><td>max:</td><td><input type="text" id="max-' + i + '" value="' + c + '"></td></tr><tr><td>min:</td><td><input type="text" id="min-' + i + '" value="' + d + '"/></td></tr><tr><td colspan="2"><button id="restore-default-' + i + '" class="a-property-restore">restore default values</button></td></tr></table>'); $("#max-" + i).change(function () { b.setMax($(this).val()); }); $("#min-" + i).change(function () { b.setMin($(this).val()); }); $("#restore-default-" + i).click(function () { b.setMin(b.defaultMin); $("#min-" + i).val(b.defaultMin); b.setMax(b.defaultMax); $("#max-" + i).val(b.defaultMax); }); $("body").click(function () { $("#change-property-" + i).remove(); }); $("#close-" + i).click(function () { $("#change-property-" + i).remove(); }); $("#change-property-" + i).click(function (j) { j.stopPropagation(); }); }); }; app.Property.prototype.setValue = function (a) { this.parent.setValue(this.id, a); this.domDao.setValue(a); }; app.Property.prototype.setMax = function (b, a) { if (a === true) { this.defaultMax = b; } this.domDao.setMax(b); this.parent.setValue(this.id + ".max", b); this.max = b; }; app.Property.prototype.setMin = function (b, a) { if (a === true) { this.defaultMin = b; } this.domDao.setMin(b); this.parent.setValue(this.id + ".min", b); this.min = b; }; app.Property.prototype.getValue = function () { return this.parent.getValue(this.id); }; app.Property.prototype.addValue = function (a) { this.setValue(1 * a + this.getValue()); }; app.Property.prototype.subtractValue = function (a) { this.setValue(-1 * a + this.getValue()); }; app.Property.prototype.updateEl = function (a) { if (a !== undefined) { this.domDao.setValue(a); } else { this.domDao.setValue(this.getValue()); } }; app.ModControl = function (b) { this.mods = b.mods; this.location = document.location.href.replace(new RegExp(".*/"), "").replace(/&\d\d\d\d&/, ""); this.timestamp = (new Date()).getTime(); this.cash = new app.Property("cash", 0, 999999999999, this); this.food = new app.Property("food", 0, 2000000000, this); this.turns = new app.Property("turns", 0, 0, this); this.power = new app.Property("power", 0, 1199999999, this); var c; if (this.isPropertyPage() && this.isNewest()) { c = this.readProperties(); this.assignAccessorEls(); c = this.setServer(c, c.serverName); this.serializeProperties(c); this.setGlobalValue("a-propertycheck-timestamp", this.timestamp); this.setValue("a-propertycheck-timestamp", this.timestamp); } else { if (this.isPropertyPage() && !this.isNewest()) { c = this.readProperties(); this.assignAccessorEls(); c = this.deserializeProperties(); c = this.setServer(c, c.serverName); } else { c = this.deserializeProperties(); c = this.setServer(c, c.serverName); } } this.empireName = c.empireName; this.userName = c.userName; this.server = c.server; this.isPaid = c.paid; this.antiReload = c.antiReload; this.authenticated = c.authenticated; this.authToken = c.authToken; if (!this.empireName) { this.loaded = false; return; } else { this.loaded = true; } this.forceDefaultSettings(); this.showMessage("Anfit GC Mods " + app.version, app.releaseNotes, "a-release-" + app.version); if (!this.getValue("a-last-update-check")) { this.setValue("a-last-update-check", this.timestamp); } }; app.ModControl.prototype.isPropertyPage = function (b) { if (b === undefined) { b = $("body"); } var a = $("table.smallfont td.bodybox:has(a:contains('Private Messages')), table.smallfont td:has(a > font:contains('Private Messages'))", b); if (a.length) { a.attr("id", "a-privatemessages"); return true; } return false; }; app.ModControl.prototype.readProperties = function (b) { if (b === undefined) { b = $("body"); } var c = $("td.bodybox:contains('$'),td.bodybox:contains('$') ~ td.bodybox", b); var a = { cash: -1, food: -1, power: -1, turns: -1, serverName: "", empireName: "", userName: "", antireload: -1, paid: false }; a.cash = c.eq(0).text().replace(/\D/g, "") * 1; a.food = c.eq(1).text().replace(/\D/g, "") * 1; a.power = c.eq(2).text().replace(/\D/g, "") * 1; a.turns = c.eq(3).text().replace(/\D/g, "") * 1; a.serverName = $.trim(c.eq(4).text()); a.empireName = $.trim(c.eq(5).text()); a.userName = a.serverName + "." + a.empireName; a.antiReload = $("a:contains('Private Messages')", b).attr("href").replace(/.*\&(\d*)\&.*/, "$1") * 1; if ($("img[src*='logo_gc2']").length) { a.paid = true; } a.authToken = this.getGlobalValue(a.userName + ".a-authentication-token"); a.authenticated = a.authToken ? true : false; return a; }; app.ModControl.prototype.assignAccessorEls = function () { var a = $("td.bodybox:contains('$'),td.bodybox:contains('$') ~ td.bodybox"); this.cash.setEl(a.eq(0)); this.food.setEl(a.eq(1)); this.power.setEl(a.eq(2)); this.turns.setEl(a.eq(3)); a.eq(0).parent().removeAttr("onmouseover"); a.eq(0).parent().removeAttr("onclick"); }; app.ModControl.prototype.deserializeProperties = function () { var a = { cash: -1, food: -1, power: -1, turns: -1, serverName: "", empireName: "", userName: "", antiReload: -1, paid: false }; a.serverName = this.getGlobalValue("serverName"); a.empireName = this.getGlobalValue("empireName"); a.userName = this.getGlobalValue("userName"); a.cash = this.getGlobalValue(a.userName + "." + this.cash.id); a.food = this.getGlobalValue(a.userName + "." + this.food.id); a.power = this.getGlobalValue(a.userName + "." + this.power.id); a.turns = this.getGlobalValue(a.userName + "." + this.turns.id); a.antiReload = this.getGlobalValue(a.userName + ".antiReload"); a.paid = this.getGlobalValue(a.userName + ".isPaid"); a.authToken = this.getGlobalValue(a.userName + ".a-authentication-token"); a.authenticated = a.authToken ? true : false; return a; }; app.ModControl.prototype.serializeProperties = function (a) { this.setGlobalValue("serverName", a.serverName); this.setGlobalValue("empireName", a.empireName); this.setGlobalValue("userName", a.userName); this.setGlobalValue(a.userName + "." + "isPaid", a.paid); this.setGlobalValue(a.userName + "." + "antiReload", a.antiReload); this.setGlobalValue(a.userName + "." + "cash", a.cash); this.setGlobalValue(a.userName + "." + "food", a.food); this.setGlobalValue(a.userName + "." + "turns", a.turns); this.setGlobalValue(a.userName + "." + "power", a.power); }; app.ModControl.prototype.setServer = function (b, d) { b.server = { id: -1, name: "", turnRate: -1, turnHold: -1 }; var c = [{ id: 0, name: "Normal", turnRate: 900000, turnHold: 180 }, { id: 1, name: "Fast", turnRate: 300000, turnHold: 150 }, { id: 2, name: "Slow", turnRate: 1800000, turnHold: 250 }, { id: 3, name: "Ultra", turnRate: 120000, turnHold: 100 }, { id: 4, name: "RT", turnRate: 7800, turnHold: 30 }, { id: 5, name: "DM", turnRate: 3000, turnHold: 120 }]; for (var a = 0; a < c.length; a = a + 1) { if (c[a].name === d) { b.server = c[a]; break; } } if (b.paid) { b.server.turnRate = b.server.turnRate * 0.85; b.server.turnHold = b.server.turnHold * 1.5; } this.turns.setMax(b.server.turnHold, true); if (b.server.name === "DM") { app.gameServer += "dm/"; } return b; }; app.ModControl.prototype.getGlobalValue = function (a, e) { var c = GM_getValue(a); if (c === "false") { return false; } if (c === false) { return false; } if (c === "true") { return true; } if (c === true) { return true; } if (c * 1 === 0 && typeof c === "string" && c.match("\n|\t| ")) { return c; } if (c * 1 * 0 === 0) { return c * 1; } if (e === "JSON_AS_ARRAY") { var b = []; if (c) { b = $.parseJSON(c); if (!b) { b = []; } } return b; } if (e === "JSON_AS_OBJECT") { var d = {}; if (c) { d = $.parseJSON(c); if (!d) { d = {}; } } return d; } return c; }; app.ModControl.prototype.openInTab = function (a) { GM_openInTab(a); }; app.ModControl.prototype.setGlobalValue = function (a, b) { if (typeof (b) === "number" && b > 100000) { GM_setValue(a, b.toString()); } else { GM_setValue(a, b); } }; app.ModControl.prototype.getValue = function (a, b) { return this.getGlobalValue(this.userName + "." + a, b); }; app.ModControl.prototype.setValue = function (a, b) { this.setGlobalValue(this.userName + "." + a, b); }; app.ModControl.prototype.isNewest = function () { if (this.getGlobalValue("a-propertycheck-timestamp")) { return this.timestamp - this.getGlobalValue("a-propertycheck-timestamp") >= 0; } return true; }; app.ModControl.prototype.forceDefaultSettings = function () { var a = this; $.each(this.mods, function (b, c) { if(c) { if (c.defaultValue !== undefined && a.getValue(c.id) === undefined) { a.setValue(c.id, c.defaultValue); } if (!c.items) { return; } $.each(c.items, function (d, e) { if (e.id) { if (e.defaultValue !== undefined && a.getValue(e.id) === undefined) { a.setValue(e.id, e.defaultValue); } e.value = a.getValue(e.id); } }); } }); }; app.ModControl.prototype.showMessage = function (d, a, e) { if (e) { e = e.replace(/\W/g, ""); } var c = this; if (!e || this.getValue(e) !== false) { var b = $("body").prepend('<div class="a-info-wrap">' + '<div class="a-info-title" id="' + e + '">' + d + "</div>" + '<div class="a-info" >' + a + "</div>" + "</div>"); $(".a-info-title", b).click(function (h) { var g = $(h.target), k = g.attr("id"), j = g.offset(), i = h.pageX - j.left, f = h.pageY - j.top; if (g.hasClass("a-info-title") && 770 < i && i < 796 && 0 < f && f < 16) { g.parent().fadeOut("slow", function () { $(this).remove(); if (k) { c.setValue(k, false); } }); } }); } }; app.ModControl.prototype.runMods = function () { var c = '<li class="a-mod" id="${id}"><div class="a-mod-line" ><ul><li class="a-mod-submit"><input type=checkbox id="${id}-checkbox" /></li><li class="a-mod-name"><a name=${id}></a><b>${title}</b><br /></li></div></ul><div class="a-mod-line" ><i>${description}</i></div><div><ul class="a-mod-item" /></div></li>'; var e = '<li class="a-mod-item-list"><ul class="a-mod-item-parts"><li class="a-mod-item-parts-body">${description}<br /><textarea id="${id}" cols="70">${value}</textarea></li></ul></li>'; var f = '<li class="a-mod-item-input"><ul class="a-mod-item-parts"><li class="a-mod-item-parts-body"><span class="a-mod-item-input-desc">${description}</span><span class="a-mod-item-input-submit"><input id="${id}" value="${value}" /></span></li></ul></li>'; var a = '<li class="a-mod-item-info">${text}</li>'; var b = '<li class="a-mod-item-checkbox"><ul class="a-mod-item-parts"><li class="a-mod-item-parts-submit"><input id="${id}" type="checkbox" /></li><li class="a-mod-item-parts-body">${description}</li></ul></li>'; if (gc.location.match(/i.cfm.f.option($|#.*)/)) { $("table.bodybox[width='550'] > tbody > tr > td").attr("id", "a-options-wrap").append('<div id="a-about"><div><b>Welcome, ' + gc.empireName + '!</b></div><div class="a-separator"/><div>Thank you for trying Anfit\'s Mods for Spacefed GC v.' + app.version + '. All mods are listed below with short explanations. Also, some of the mods require additional configuration they can be switched on.<div class="a-separator"/><div>My mods cannot affect gameplay, they are just UI (User Interface) tweaks, to make this game slightly more playable.</div><div class="a-separator"/><div>To enable more advanced tweaks which interact with other players please enter your gc.mmanir.net authentication token.</div><div class="a-separator"/><div><i>What? Authentication token? What is it? Why?</i></div><div class="a-separator"/><div>Some more advanced mods share data between players. You always know when and how. The best example of this are status tags: you set your status text, all other users of Anfit\'s Mods can see it in the ranking lists, you can see theirs.</div><div>This is possible only through another server located at gc.mmanir.net (one I\'m hosting). To authenticate with this server you have to: </div><div><ol><li>Create an account and login at <a href="http://gc.mmanir.net" target="blank">gc.mmanir.net</a>.</li><li>Retrieve an authentication token (it\'s provided just after login page).</li><li>Copy the authentication token here.</li></ol></div><div><b>Enter your authentication token here</b>: <input id="a-authentication-token" type="text" size="32" /></div><div class="a-separator"/><div>If you have problems, questions or ideas while using Anfit\'s GC Mods contact me (<a href="http://gc.mmanir.net/">Anfit</a>) at <a href="mailto:[email protected]?subject=[GC Mods]">[email protected]</a> or send me a <a href="javascript:cmsgu(\'i.cfm?popup=msguser&uid=213512\');">private message</a> at GC/normal.</div><div>'); var d = gc.getValue("a-authentication-token") || ""; $("#a-authentication-token").val(d); if (!gc.authenticated) { $("#a-authentication-token").parent().css("background-color", "ff0000"); $("#a-authentication-token").parent().children().filter("b").css("color", "00ffff"); } $("#a-authentication-token").change(function () { var g = $(this).val(); gc.authenticated = true; $(this).addClass("a-loading"); }); } $.each(this.mods, function (h, i) { if (i && gc.location.match(/i.cfm.f.option($|#.*)/)) { $.tmpl(c, i).appendTo("#a-options-wrap"); $("#" + i.id + "-checkbox").prop("checked", gc.getValue(i.id)); var g = $("#" + i.id + " ul.a-mod-item"); if (i.items) { $.each(i.items, function (j, k) { if (k.id) { k.value = gc.getValue(k.id); } switch (k.type) { case "list": $.tmpl(e, k).appendTo(g); $("#" + k.id).change(function () { gc.setValue(k.id, $("#" + k.id).val()); }); break; case "info": $.tmpl(a, k).appendTo(g); break; case "input": $.tmpl(f, k).appendTo(g); $("#" + k.id).change(function () { gc.setValue(k.id, $("#" + k.id).val()); }); break; case "checkbox": $.tmpl(b, k).appendTo(g); $("#" + k.id).prop("checked", k.value); $("#" + k.id).click(function () { gc.setValue(k.id, $("#" + k.id).prop("checked")); }); break; default: console.error("[Options] Unrecognized option type"); break; } }); } $("#" + i.id + "-checkbox").click(function () { gc.setValue($(this).attr("id").replace("-checkbox", ""), $(this).prop("checked")); }); if (i.onAfterRender) { i.onAfterRender.call(this); } } if (i && i.filter.call()) { i.plugin.call(); } }); }; app.ModControl.prototype.xhr = function (a) { if (!a || !a.url) { console.error("[Ajax] empty xhr request"); return; } var b = { method: "POST", url: a.url, headers: { "Accept": "application/atom+xml,application/xml,text/xml", "Content-type": "application/x-www-form-urlencoded" }, onload: function (c) { var f = $("td.bodybox a:contains('Private Messages')"); var g; if (f.length) { var d = f.first().attr("href"); if (d) { g = d.replace(/\D/g, ""); } if (g) { gc.setValue("antiReload", g); } } if (c.status !== 200) { if (a.onFailure) { a.onFailure.call(this, c.responseText); } return; } if (c.responseText.indexOf("{") === 0 && $.isPlainObject($.parseJSON(c.responseText))) {} else { if (gc.isPropertyPage(c.responseText)) { var e = gc.readProperties(c.responseText); e = gc.setServer(e, e.serverName); gc.serializeProperties(e); gc.turns.updateEl(); gc.power.updateEl(); gc.cash.updateEl(); gc.food.updateEl(); } } if (a.successCondition && $(a.successCondition, c.responseText).length) { a.onSuccess.call(this, c.responseText); } else { if (a.successCondition) { a.onFailure.call(this, c.responseText); } else { a.onSuccess.call(this, c.responseText); } } }, onerror: function (c) { console.error("XHR error", a, c); a.onFailure.call(this, c); } }; if (a.data) { b.data = a.data; } if (a.method) { b.method = a.method; } if (a.extra) { b.extra = a.extra; } GM_xmlhttpRequest(b); }; app.mod.automatedcapsulelab = { id: "a-automatedcapsulelab", defaultValue: true, title: "Automated capsule lab", description: "Shows a list of fusable artifacts (incl. your stocks). Clicking on the list fills the fusion form...", items: [{ type: "checkbox", id: "a-automatedcapsulelab-showall", description: "Show all artifacts, not only those you can fuse" }], filter: function () { if (!gc.getValue("a-automatedcapsulelab")) { return false; } if (gc.location.match(/i.cfm.*f.com_project2.id.3$/) && $("select").length) { return true; } if (gc.location.indexOf("com_market_use") !== -1) { return true; } return false; }, plugin: function () { if (gc.location.match(/com_market_use$/)) { (function () { var i = []; $("table.table_back[width='50%'] tr.table_row1").each(function () { i.push({ id: $("td a:first", this).attr("href").replace(/.*id=/, "").replace(/\D/, "", "g") * 1, stock: $.trim($("td:eq(2)", this).text()) * 1 }); }); gc.setValue("a-automatedcapsulelab-stocks", JSON.stringify(i)); })(); return; } else { if (gc.location.match(/com_market_use.*id=/)) { (function () { var r = $("table.table_back[width='50%'] tr.table_row1:first"); var t = $("td a:first", r).attr("href").replace(/.*id=/, "").replace(/\D/, "", "g") * 1; var s = $("td:eq(2)", r).text().replace(/\D/, "", "g") * 1; var q = gc.getValue("a-automatedcapsulelab-stocks", "JSON_AS_ARRAY"); for (var p = 0; p < q.length; p = p + 1) { if (q[p].id === t) { console.log(q[p]); q.splice(p, 1); break; } } q.unshift({ id: t, stock: s }); gc.setValue("a-automatedcapsulelab-stocks", JSON.stringify(q)); })(); return; } } if (!gc.getValue("a-automatedcapsulelab-definitions")) { gc.setValue("a-automatedcapsulelab-definitions", '{"items":[{"id":10,"type":"Common","name":"Energy Pod","effect":"Used to fuse other artifacts","ingredients":[]},{"id":13,"type":"Common","name":"White Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":14,"type":"Common","name":"Black Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":15,"type":"Common","name":"Blue Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":16,"type":"Common","name":"Green Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":17,"type":"Common","name":"Orange Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":18,"type":"Common","name":"Yellow Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":19,"type":"Common","name":"Purple Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":20,"type":"Common","name":"Gray Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":21,"type":"Common","name":"Brown Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":22,"type":"Common","name":"Moccasin Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":23,"type":"Common","name":"Golden Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":24,"type":"Common","name":"Turquoise Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":25,"type":"Common","name":"Aqua Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":26,"type":"Common","name":"Pink Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":27,"type":"Common","name":"Plum Orb","effect":"Used to fuse other artifacts","ingredients":[]},{"id":7,"type":"Special","name":"Organic Base","effect":"Used to fuse other artifacts","ingredients":[]},{"id":8,"type":"Special","name":"Assimillated Base","effect":"Used to fuse other artifacts","ingredients":[]},{"id":28,"type":"Uncommon","name":"Cuarto Mapa","effect":"Gives Artifact Formulas","ingredients":[{"id":13,"amount":1},{"id":14,"amount":1},{"id":15,"amount":1},{"id":16,"amount":1},{"id":17,"amount":1}]},{"id":29,"type":"Uncommon","name":"Bronze Dinero","effect":"Target empire credits increase a small amount","ingredients":[{"id":14,"amount":1},{"id":17,"amount":1},{"id":16,"amount":1},{"id":15,"amount":1},{"id":18,"amount":1}]},{"id":30,"type":"Uncommon","name":"Silver Dinero","effect":"Target empire credits increase a small amount","ingredients":[{"id":18,"amount":1},{"id":13,"amount":1},{"id":20,"amount":1},{"id":19,"amount":1},{"id":26,"amount":1}]},{"id":31,"type":"Uncommon","name":"Gold Dinero","effect":"Target empire credits increase a small amount","ingredients":[{"id":20,"amount":1},{"id":26,"amount":1},{"id":25,"amount":1},{"id":24,"amount":1},{"id":27,"amount":1}]},{"id":32,"type":"Uncommon","name":"Platinum Dinero","effect":"Target empire credits increase a small amount","ingredients":[{"id":25,"amount":2},{"id":27,"amount":1},{"id":26,"amount":2},{"id":26,"amount":2},{"id":25,"amount":2}]},{"id":33,"type":"Uncommon","name":"Amber Dinero","effect":"Target empire credits decrease a small amount","ingredients":[{"id":18,"amount":2},{"id":21,"amount":1},{"id":19,"amount":1},{"id":20,"amount":1},{"id":18,"amount":2}]},{"id":34,"type":"Uncommon","name":"Garnet Dinero","effect":"Target empire credits decrease a small amount","ingredients":[{"id":16,"amount":1},{"id":22,"amount":2},{"id":24,"amount":1},{"id":23,"amount":1},{"id":22,"amount":2}]},{"id":35,"type":"Uncommon","name":"Topaz Dinero","effect":"Target empire credits decrease a small amount","ingredients":[{"id":15,"amount":1},{"id":23,"amount":1},{"id":17,"amount":1},{"id":24,"amount":1},{"id":26,"amount":1}]},{"id":36,"type":"Uncommon","name":"Opal Dinero","effect":"Target empire credits decrease a small amount","ingredients":[{"id":10,"amount":2},{"id":18,"amount":1},{"id":25,"amount":1},{"id":15,"amount":1},{"id":10,"amount":2}]},{"id":37,"type":"Uncommon","name":"Amethyst Dinero","effect":"Target empire credits decrease a small amount","ingredients":[{"id":10,"amount":1},{"id":23,"amount":1},{"id":17,"amount":1},{"id":16,"amount":1},{"id":21,"amount":1}]},{"id":11,"type":"Unique","name":"STC","effect":"Target empire receives 10 turns","ingredients":[{"id":46,"amount":1},{"id":47,"amount":1},{"id":44,"amount":1},{"id":45,"amount":1},{"id":43,"amount":1}]},{"id":38,"type":"Rare","name":"Minor Suerte","effect":"Gives Luck","ingredients":[{"id":28,"amount":1},{"id":7,"amount":1},{"id":30,"amount":1},{"id":29,"amount":1},{"id":31,"amount":1}]},{"id":39,"type":"Rare","name":"Major Suerte","effect":"Gives Luck","ingredients":[{"id":8,"amount":1},{"id":30,"amount":1},{"id":29,"amount":1},{"id":31,"amount":1},{"id":32,"amount":1}]},{"id":40,"type":"Rare","name":"Minor Requerido","effect":"Target empire raw material decreases","ingredients":[{"id":30,"amount":1},{"id":7,"amount":1},{"id":31,"amount":1},{"id":32,"amount":1},{"id":33,"amount":1}]},{"id":41,"type":"Rare","name":"Minor Gente","effect":"Target empire population decreases(Doesnt work)","ingredients":[{"id":34,"amount":1},{"id":32,"amount":2},{"id":32,"amount":2},{"id":31,"amount":1},{"id":8,"amount":1}]},{"id":42,"type":"Rare","name":"Minor Alimento","effect":"Target empire food decreases","ingredients":[{"id":36,"amount":1},{"id":34,"amount":1},{"id":35,"amount":1},{"id":33,"amount":1},{"id":32,"amount":1}]},{"id":43,"type":"Rare","name":"Minor Cosecha","effect":"Target empire population decreases","ingredients":[{"id":33,"amount":1},{"id":34,"amount":1},{"id":35,"amount":1},{"id":36,"amount":1},{"id":37,"amount":1}]},{"id":44,"type":"Rare","name":"Minor Tierra","effect":"Target empire Ore decreases","ingredients":[{"id":31,"amount":1},{"id":30,"amount":3},{"id":28,"amount":1},{"id":30,"amount":3},{"id":30,"amount":3}]},{"id":45,"type":"Rare","name":"Traicione","effect":"Target empire loyalty decreases","ingredients":[{"id":36,"amount":1},{"id":33,"amount":2},{"id":29,"amount":1},{"id":28,"amount":1},{"id":33,"amount":2}]},{"id":12,"type":"Unique","name":"BTC","effect":"Gives 100 Turns(up to max any over are wasted)","ingredients":[{"id":11,"amount":2},{"id":58,"amount":1},{"id":59,"amount":1},{"id":11,"amount":2},{"id":57,"amount":1}]},{"id":46,"type":"Unique","name":"Minor Gordo","effect":"Increases max land on top planet +20-40 land (not homeworld)","ingredients":[{"id":43,"amount":2},{"id":43,"amount":2},{"id":44,"amount":1},{"id":42,"amount":1},{"id":41,"amount":1}]},{"id":47,"type":"Rare","name":"Minor Barrera","effect":"Prevents artifacts of any type to be used on Empire. Breakable with 5 rares","ingredients":[{"id":28,"amount":2},{"id":36,"amount":2},{"id":28,"amount":2},{"id":36,"amount":2},{"id":30,"amount":1}]},{"id":48,"type":"Unique","name":"Historia","effect":"Target empire loses 40 turns","ingredients":[{"id":38,"amount":1},{"id":11,"amount":1},{"id":40,"amount":1},{"id":39,"amount":1},{"id":43,"amount":1}]},{"id":49,"type":"Unique","name":"Minor Afortunado","effect":"Gives Luck","ingredients":[{"id":40,"amount":1},{"id":39,"amount":1},{"id":38,"amount":2},{"id":41,"amount":1},{"id":38,"amount":2}]},{"id":50,"type":"Unique","name":"Major Afortunado","effect":"Gives Luck","ingredients":[{"id":39,"amount":1},{"id":40,"amount":1},{"id":41,"amount":2},{"id":42,"amount":1},{"id":41,"amount":2}]},{"id":51,"type":"Unique","name":"Minor Estructura","effect":"Destroys infrastructure on outermost planet of target empire","ingredients":[{"id":41,"amount":1},{"id":40,"amount":1},{"id":11,"amount":1},{"id":43,"amount":1},{"id":42,"amount":1}]},{"id":52,"type":"Unique","name":"Major Alimento","effect":"You don\'t notice any effect","ingredients":[{"id":47,"amount":2},{"id":46,"amount":3},{"id":47,"amount":2},{"id":46,"amount":3},{"id":46,"amount":3}]},{"id":53,"type":"Unique","name":"Major Cosecha","effect":"You don\'t notice any effect","ingredients":[{"id":46,"amount":2},{"id":45,"amount":3},{"id":45,"amount":3},{"id":46,"amount":2},{"id":45,"amount":3}]},{"id":54,"type":"Unique","name":"Major Tierra","effect":"You don\'t notice any effect","ingredients":[{"id":43,"amount":2},{"id":44,"amount":3},{"id":44,"amount":3},{"id":43,"amount":2},{"id":44,"amount":3}]},{"id":55,"type":"Unique","name":"Persiana","effect":"Attacks against empire are halted for a time. Generally 2-3 attack attempts","ingredients":[{"id":40,"amount":1},{"id":11,"amount":2},{"id":41,"amount":1},{"id":11,"amount":2},{"id":42,"amount":1}]},{"id":56,"type":"Special","name":"Major Gordo","effect":"Adds 60-100 land on outermost planets. Does not work on homeworld","ingredients":[{"id":58,"amount":1},{"id":55,"amount":1},{"id":46,"amount":1},{"id":50,"amount":1},{"id":12,"amount":1}]},{"id":57,"type":"Unique","name":"Major Barrera","effect":"Prevents artifacts of any kind being used on target empire. Breakable with 20 rare artifacts","ingredients":[{"id":40,"amount":1},{"id":41,"amount":1},{"id":42,"amount":1}]},{"id":58,"type":"Unique","name":"Regalo","effect":"Gives Random number of a Random Artifacts, excluding other Regalos. Works best during Rare dig and after luck artifacts","ingredients":[{"id":46,"amount":1},{"id":34,"amount":1},{"id":45,"amount":1},{"id":42,"amount":1},{"id":43,"amount":1}]},{"id":59,"type":"Unique","name":"Major Producto","effect":"Decreases Consumer Goods of Target Empire (Roughly 500k)","ingredients":[{"id":43,"amount":1},{"id":44,"amount":1},{"id":45,"amount":1},{"id":41,"amount":1},{"id":42,"amount":1}]},{"id":60,"type":"Unique","name":"Major Dinero","effect":"Decreases target empire credits 3%","ingredients":[{"id":42,"amount":1},{"id":43,"amount":1},{"id":44,"amount":1},{"id":33,"amount":1},{"id":40,"amount":1}]},{"id":61,"type":"Special","name":"Grand Estructura","effect":"Destroys infrastructure on outermost planet","ingredients":[{"id":46,"amount":1},{"id":51,"amount":1},{"id":48,"amount":1},{"id":49,"amount":1},{"id":52,"amount":1}]},{"id":62,"type":"Special","name":"Grand Alimenter","effect":"Target Empire food Increases","ingredients":[{"id":50,"amount":1},{"id":49,"amount":1},{"id":51,"amount":1},{"id":53,"amount":1},{"id":52,"amount":1}]},{"id":63,"type":"Special","name":"Grand Cosecha","effect":"Target Empire food increases","ingredients":[{"id":50,"amount":1},{"id":52,"amount":1},{"id":51,"amount":1},{"id":54,"amount":1},{"id":53,"amount":1}]},{"id":64,"type":"Special","name":"Grand Gente","effect":"Target Empire population decreases","ingredients":[{"id":53,"amount":1},{"id":12,"amount":1},{"id":54,"amount":1},{"id":11,"amount":1},{"id":50,"amount":1}]},{"id":65,"type":"Special","name":"Grand Tierra","effect":"Target Empire Ore decreases 25%","ingredients":[{"id":52,"amount":1},{"id":54,"amount":1},{"id":53,"amount":1},{"id":55,"amount":1},{"id":56,"amount":1}]},{"id":66,"type":"Special","name":"Grand Requerido","effect":"Target Empire raw material decreases approx 3%","ingredients":[{"id":56,"amount":1},{"id":55,"amount":1},{"id":54,"amount":1},{"id":53,"amount":1},{"id":57,"amount":1}]},{"id":67,"type":"Special","name":"Grand Barrera","effect":"Prevents artifacts of any kind being used on target empire","ingredients":[{"id":55,"amount":1},{"id":54,"amount":1},{"id":57,"amount":1},{"id":56,"amount":1},{"id":58,"amount":1}]},{"id":68,"type":"Special","name":"Grand Producto","effect":"Target Empires consumer goods decrease","ingredients":[{"id":58,"amount":2},{"id":52,"amount":2},{"id":42,"amount":1},{"id":58,"amount":2},{"id":52,"amount":2}]},{"id":69,"type":"Special","name":"Grand Alimento","effect":"Target Empire food decreases","ingredients":[{"id":56,"amount":1},{"id":48,"amount":1},{"id":57,"amount":1},{"id":59,"amount":1},{"id":58,"amount":1}]},{"id":70,"type":"Special","name":"Grand Dinero","effect":"Target empire credits decrease 10%","ingredients":[{"id":53,"amount":1},{"id":52,"amount":1},{"id":51,"amount":1},{"id":40,"amount":1},{"id":55,"amount":1}]},{"id":9,"type":"Special","name":"PCC","effect":"Random planet assigned to border","ingredients":[{"id":29,"amount":1},{"id":62,"amount":1},{"id":64,"amount":1},{"id":63,"amount":1},{"id":65,"amount":1}]}]}'); } gc.showMessage("Unresearched capsule lab warning", "Please note, that if you entered this page from a link in the extra menu of Anfit's GC mods, but had not researched Capsule Lab, then investing turns here will not gain you anything...", "a-automatedcapsulelab-warning"); var c = function (i) { this.id = i.id; this.amount = i.amount; }; c.prototype.validate = function () { if (this.id === undefined) { return false; } if (this.amount === undefined) { return false; } return true; }; var k = function (q) { this.id = q.id; this.name = q.name; this.type = q.type; this.stock = q.stock; this.effect = q.effect; this.ingredients = []; if (q.ingredients !== undefined) { for (var r = 0; r < q.ingredients.length; r = r + 1) { var p = new c(q.ingredients[r]); if (p.validate() === true) { this.ingredients.push(p); } else { console.error("An erroneous ingredient spotted in artifact " + this.id); } } } }; k.prototype.validate = function () { if (this.id === undefined) { return false; } if (this.name === undefined) { return false; } if (this.type === undefined) { return false; } return true; }; var b = function (v) { this.items = []; this.keys = {}; this.results = {}; var u = $.parseJSON(v); var t = 0; if (u.items !== undefined) { for (var s = 0; s < u.items.length; s = s + 1) { var q = new k(u.items[s]); if (q.validate() === true) { this.items.push(q); this.keys["a_" + q.id] = t; for (var r = 0; r < q.ingredients.length; r = r + 1) { var p = this.results["a_" + q.ingredients[r].id]; if (p === undefined) { this.results["a_" + q.ingredients[r].id] = []; } this.results["a_" + q.ingredients[r].id].push(t); } t = t + 1; } else { console.error("An erroneous artifact spotted in artifactlist argument at " + s); } } } }; b.prototype.get = function (p) { var i = this.keys["a_" + p]; if (i === undefined) { return undefined; } return this.items[i]; }; b.prototype.getResults = function (u) { var t = this.results["a_" + u]; if (t === undefined) { return undefined; } var p = []; for (var s = 0; s < t.length; s = s + 1) { var r = t[s]; var q = this.items[r]; if (q) { p.push(q); } } return p; }; b.prototype.onAfterSuccessfulFuse = function (p) { for (var r = 0; r < this.items.length; r = r + 1) { if (this.items[r].id === 0) { continue; } if (this.items[r].id === p.id) { this.items[r].stock = this.items[r].stock + 1; } for (var q = 0; q < p.ingredients.length; q = q + 1) { if (this.items[r].id === p.ingredients[q].id) { this.items[r].stock = this.items[r].stock - p.ingredients[q].amount; break; } } } this.resetFusable(); }; b.prototype.stringify = function () { var q = this.keys; var p = this.results; delete this.keys; delete this.results; var i = JSON.stringify(this); this.keys = q; this.results = p; return i; }; b.prototype.setStock = function (q, p) { if (q === 0) { console.debug("ArtifactList.setStock: Zero artifact is not allowed"); return; } var i = this.get(q); if (i) { i.stock = p; } else { console.debug("ArtifactList.setStock: No such artifact: " + q, this.items); return; } }; b.prototype.resetFusable = function () { var t; for (t = 0; t < this.items.length; t = t + 1) { delete this.items[t].fusable; } for (t = 0; t < this.items.length; t = t + 1) { var p = this.items[t]; if (p.id === 0) { continue; } var s = this.getResults(p.id); if (s !== undefined) { for (var r = 0; r < s.length; r = r + 1) { var u = Math.floor(p.stock / app.util.countInArray(s[r], s)); if (!u) { u = 0; } var q = s[r].fusable; if (q === undefined) { s[r].fusable = u; } else { s[r].fusable = Math.min(u, q); } } } } }; var j; var a; var e; var h; var d; var m = function (u) { var s = j.get(u), p = []; $('select[name^="g"]').val(0); $("#a-automatedcapsulelab-ingredients-body").show(); $("#a-automatedcapsulelab-ingredients-body tr:gt(0)").remove(); gc.setValue("a-automatedcapsulelab-last", u); $("input[type='submit']:first").val("Fuse " + s.name); for (var t = 0; t < s.ingredients.length; t = t + 1) { var r = j.get(s.ingredients[t].id); p.push(r); $('select[name="g' + (t + 1) + '"]').val(r.id); } var q = '<tr class="table_row1"><td>${name}</td><td width="1%" align="center"><small>${type}</small></td><td align="right">${stock}</td><td align="right">${fusable}</td></tr>'; $.tmpl(q, p).appendTo("#a-automatedcapsulelab-ingredients-body"); $("#a-artifact-effect").html(s.effect); }; if (!gc.getValue("a-automatedcapsulelab-stocks")) { console.log("[Automated capsule lab] Artifacts stock is not cached. Re-caching. Please wait until the page reloads."); gc.xhr({ url: "i.cfm?f=com_market_use", method: "GET", successCondition: "b:contains('ARTIFACTS')", onSuccess: function (i) { var p = []; $("table.table_back[width='50%'] tr.table_row1", i).each(function () { p.push({ id: $("td a:first", this).attr("href").replace(/.*id=/, "").replace(/\D/, "", "g") * 1, stock: $("td:eq(2)", this).text().replace(/\D/, "", "g") * 1 }); }); gc.setValue("a-automatedcapsulelab-stocks", JSON.stringify(p)); document.location.href = app.gameServer + "i.cfm?f=com_project2&id=3"; }, onFailure: function (i) { console.error("[Automated capsule lab] Failed to re-cache artifacts stocks with a background xhr."); } }); return; } var f = gc.getValue("a-automatedcapsulelab-stocks", "JSON_AS_ARRAY"); j = new b(gc.getValue("a-automatedcapsulelab-definitions")); for (d = 0; d < f.length; d = d + 1) { j.setStock(f[d].id, f[d].stock); } j.resetFusable(); var g = gc.getValue("a-automatedcapsulelab-last"); if (g && $("b:contains('was successfully created')").length) { var n = j.get(g); j.onAfterSuccessfulFuse(n); var l = []; for (d = 0; d < j.items.length; d = d + 1) { l.push({ id: j.items[d].id, stock: j.items[d].stock }); } gc.setValue("a-automatedcapsulelab-stocks", JSON.stringify(l)); } $("table.bodybox[width='310']").attr("id", "a-automatedcapsulelab-rightpanel-wrap"); h = $("#a-automatedcapsulelab-rightpanel-wrap div:first"); h.attr("id", "a-automatedcapsulelab-rightpanel-body"); $("a:last", h).remove(); h.append('<table width="230" class="a-table" id="a-automatedcapsulelab-ingredients-wrap"><tbody id="a-automatedcapsulelab-ingredients-body"><tr class="table_row0"><th>Ingredient</th><th width="1%" align="center">Type</th><th align="right">Stock</th><th align="right">Fusable</th></tr></tbody></table><div id="a-artifact-effect" />'); a = $("table.bodybox[width='250']"); a.attr("id", "a-automatedcapsulelab-leftpanel-wrap"); e = $("#a-automatedcapsulelab-leftpanel-wrap tbody"); e.attr("id", "a-automatedcapsulelab-leftpanel-body"); e.html('<div class="a-bold">Anfit\'s Upgraded Capsule Lab</div>'); e.append('<div>Allows fusing artifacts</div><table id="a-automatedcapsulelab-artifacts-wrap" class="a-table"><tbody id="a-automatedcapsulelab-artifacts-body"><tr class="table_row0"><th>Artifact</th><th width="1%" align="center">Type</th><th align="right">Stock</th><th align="right">Fusable</th></tr></tbody></table><div><a href="i.cfm?&f=com_project">Back to project list</a></div>'); var o = '<tr id="a-automatedcapsulelab-artifact-${id}" class="table_row1 fusable-${fusable}"><td><a href="i.cfm?&f=com_market_use&id=${id}">${name}</a></td><td align="center"><small>${type}</small></td><td align="right">${stock}</td><td align="right">${fusable}</td></tr>'; $.tmpl(o, j.items).appendTo("#a-automatedcapsulelab-artifacts-body"); if (!gc.getValue("a-automatedcapsulelab-showall")) { $("#a-automatedcapsulelab-artifacts-body .fusable-0, #a-automatedcapsulelab-artifacts-body .fusable-").hide(); } $("#a-automatedcapsulelab-artifacts-body tr").click(function (i) { var p = $(this); var q = p.attr("id").replace("a-automatedcapsulelab-artifact-", ""); if (p.hasClass("table_row1")) { p.addClass("table_row0").removeClass("table_row1"); p.siblings("tr:gt(0).table_row0").addClass("table_row1").removeClass("table_row0"); m(q); } }); window.addEventListener("keypress", function (q) { for (var p = q.target; p; p = p.parentNode) { if (p.nodeName === "TEXTAREA" || p.nodeName === "INPUT" || p.nodeName === "BUTTON") { return; } } if (String.fromCharCode(q.which) === "q") { if (!gc.getValue("AGC_chainReactor")) { gc.setValue("AGC_chainReactor", 1); $("#a-automatedcapsulelab-leftpanel-wrap").addClass("automated"); } else { gc.setValue("AGC_chainReactor", 0); $("#a-automatedcapsulelab-leftpanel-wrap").removeClass("automated"); } } }, true); $("#a-automatedcapsulelab-artifacts-body #a-automatedcapsulelab-artifact-" + g).addClass("table_row0").removeClass("table_row1"); if (g) { m(g); } if (gc.getValue("AGC_chainReactor")) { $("#a-automatedcapsulelab-leftpanel-wrap").addClass("automated"); if ($("#a-automatedcapsulelab-rightpanel-body").text().match("Not enought")) { console.error("Cannot fuse any more of the selected artifact, run out of ingredients"); } else { window.setTimeout(function () { $("input[type='submit']:first")[0].click(); }, app.util.getRandomNumber(232, 3201)); } } } }; app.mod.battlesmarkup = { id: "a-battlesmarkup", defaultValue: true, title: "Battles markup", description: "Replaces copy-pasted battle logs in fed chat and in the forums with a neat table.", filter: function () { if (!gc.getValue("a-battlesmarkup")) { return false; } if (gc.location.indexOf("fed_forum") !== -1) { return true; } return false; }, plugin: function () { var e = /^\s*([\-\w \.\(\)]+)\s+([\d,]+)\s+([\d,]+)\s+([\d,]+)\s*$/gi; var d = '<ul class="a-battlesmarkup-ship"><li class="a-battlesmarkup-ship-name">$1</li><li class="a-battlesmarkup-ship-amount">$2</li><li class="a-battlesmarkup-ship-lost">$3</li><li class="a-battlesmarkup-ship-remaining">$4</li></ul>'; var c = $("table.table_back[width='500'] table tr td:odd"); var b = 0; var a; c.each(function () { $(this).contents().each(function () { if (this.nodeType === 3 && this.textContent.match(e)) { if (b === 0) { b = 1; } else { $(a).remove(); } $(this).replaceWith(this.textContent.replace(e, d)); } else { if (this.nodeType === 3) { if (b === 1) { b = 0; } } else { if (this.nodeName === "BR") { a = this; } } } }); }); } }; app.mod.chathighlighter = { id: "a-chathighlighter", title: "Chat highlighter", description: "Assign colours to particular phrases in the chat! (requested by Certicom).", items: [{ type: "list", id: "a-chathighlighter-list", defaultValue: "ace700;FF0000\nborrok;00FF00", description: "One entry per line, marked phrase separated from a hexadecimal color with a semi-colon:" }], filter: function () { if (!gc.getValue("a-chathighlighter")) { return false; } if (!gc.getValue("a-chathighlighter-list")) { return false; } if (!$("#chat, table.bodybox[width='105'], td[colspan='3'] table.table_back").length) { return false; } return true; }, plugin: function () { function c(e, d, f) { e.contents().each(function () { if (this.nodeType === 3 && $(this).text().match(d)) { $(this).replaceWith($(this).text().replace(d, '<span style="color: #' + f + '">' + d + "</span>", "g")); } else { if (this.nodeType === 3) {} else { if ($(this).text().match(d)) { c($(this), d, f); } } } }); } var b = gc.getValue("a-chathighlighter-list") ? gc.getValue("a-chathighlighter-list").split("\n") : []; var a = function () { for (var e = 0; e < b.length; e = e + 1) { if (!b[e].match(";")) { console.error("[Chat highlighter] Setting '" + b[e] + "' is incorrect. There should be a semicolon in it."); continue; } var g = b[e].split(";"); var d = g[0]; var f = g[1]; if ((f.length !== 6 && f.length !== 3) || f.replace(/\D/g, "") === "") { console.error("[Chat highlighter] Setting '" + b[e] + "' is incorrect. The assigned colour value is incorrect."); continue; } c($("#chat, table.bodybox[width='105'], td[colspan='3'] table.table_back"), d, f); } }; a(); if (gc.location.indexOf("i_chat.cfm") !== -1) { window.setInterval(a, 10000); } } }; app.mod.clicktocontinue = { id: "a-clicktocontinue", defaultValue: true, title: "Click to continue", description: 'Some pages show a "Click to continue" message. This mod clicks there automatically.', filter: function () { if (!gc.getValue("a-clicktocontinue")) { return false; } return true; }, plugin: function () { var a = $("a:contains('Click here to continue.')"); if (a.length) { a[0].click(); } } }; app.mod.clusterbuilder = { id: "a-clusterbuilder", defaultValue: true, title: "Cluster builder", description: "Build your C1s and C2s really fast. You must have researched respective colony levels first, of course...", filter: function () { if (!gc.getValue("a-clusterbuilder")) { return false; } if (gc.location.match(/f=com_col$/)) { return true; } return false; }, plugin: function () { var a = $("input[value='Plunder Colony']"); a.after("<br /><span class=\"table_row1 a-clusterbuilder-button a-button\" id=\"a-clusterbuilder-createc1\">Create a C1</span> <span class=\"table_row1 a-clusterbuilder-button a-button\" id=\"a-clusterbuilder-createc2\">Create a C2</span> <select id=\"a-clusterbuilder-mineral\"> <option value=\"1\">Terran Metal</option> <option value=\"2\">Red Crystal</option> <option value=\"3\">White Crystal</option> <option value=\"4\">Rutile</option> <option value=\"5\">Composite</option> <option value=\"6\" selected=\"selected\">Strafez Organism</option></select>"); $("#a-clusterbuilder-createc1").click(function (c) { var b = $("#a-clusterbuilder-mineral option:selected").val(); gc.xhr({ url: app.gameServer + "i.cfm?&" + gc.getValue("antiReload") + "&f=com_colupgrade&tid=20&con=1", data: "goodid=" + b, onFailure: function (d) { console.error("[Cluster builder] XHR query to create a C1 cluster failed."); }, successCondition: "td:contains('New C1 was formed !')", onSuccess: function (d) { console.log("[Cluster builder] A new C1 cluster was formed."); } }); }); $("#a-clusterbuilder-createc2").click(function (c) { var b = $("#a-clusterbuilder-mineral option:selected").val(); gc.xhr({ url: app.gameServer + "i.cfm?&" + gc.getValue("antiReload") + "&f=com_colupgrade&tid=21&con=1", data: "goodid=" + b, onFailure: function (d) { console.error("[Cluster builder] XHR query to create a C2 cluster failed."); }, successCondition: "td:contains('New C2 was formed !')", onSuccess: function (d) { console.log("[Cluster builder] A new C2 cluster was formed."); } }); }); } }; app.mod.commoncss = { id: "a-commoncss", defaultValue: true, title: "Common css actions", description: "Css manipulations common to most mods, eg.: on mouse over background change for action buttons.", items: [{ type: "info", text: "You really should not disable this part, but if you want to take the eye candy off, feel free to do so." }], filter: function () { if (!gc.getValue("a-commoncss")) { return false; } return true; }, plugin: function () { $(".a-button").hover(function () { $(this).addClass("table_row0").removeClass("table_row1"); }, function () { $(this).removeClass("table_row0").addClass("table_row1"); }); $(".a-revbutton").hover(function () { $(this).removeClass("table_row0").addClass("table_row1"); }, function () { $(this).addClass("table_row0").removeClass("table_row1"); }); } }; app.mod.credits = { id: "a-credits", defaultValue: true, title: "Credits", description: "Adds a short info blob about the mods to status page.", filter: function () { if (!gc.getValue("a-credits")) { return false; } if (gc.location.match(/com_empire&cm=2/)) { return true; } if (gc.location.match(/com_empire&cm=4/)) { return true; } return false; }, plugin: function () { var a = '<div id="a-credits-text">You\'re using <a href="javascript:cmsgu(\'i.cfm?popup=msguser&uid=213512\');">Anfit</a>\'s GC Mod Pack v.${version} <a href="i.cfm?f=option">Check out the options and enjoy!</a> <a href="http://gc.mmanir.net"><img src="data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys%2FRD84QzQ5Ojf%2F2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf%2FwAARCAAKAAoDASIAAhEBAxEB%2F8QAFwAAAwEAAAAAAAAAAAAAAAAAAgQGB%2F%2FEACAQAAEFAAICAwAAAAAAAAAAAAECAwQFERIhAAZRUpH%2FxAAUAQEAAAAAAAAAAAAAAAAAAAAF%2F8QAGREBAAMBAQAAAAAAAAAAAAAAAQACAwQi%2F9oADAMBAAIRAxEAPwAPX6Wt9IZXZzkGfFXCbkKjvw0K5cwCSFYcQnQOX26A77lri%2Fp3LecuK8lDCpDhaQls4lPI4BgzM%2BOvGba1sXaOVDdsJa4ojlIYU8oowDocdzBg%2FPM28NribHphuPLXrF0Wf%2F%2FZ"/></a> (${paid} account${authenticated})</div>'; $.tmpl(a, { paid: gc.isPaid ? "paid" : "normal", authenticated: gc.authenticated ? "" : ", UNAUTHENTICATED with modserver", version: app.version }).appendTo("td:contains('Welcome to (SFGC) Galactic Conquest'):last"); } }; app.mod.disbandertweaks = { id: "a-disbandertweaks", defaultValue: true, title: "Fleet disbander tweaks", description: 'Slightly improves the "Manage Fleet" page. Calculates total PR and fleet PR after disbanding, shows 130% and 150% threshold, etc.', items: [{ type: "info", text: "You can also disband stacks entire from the manage fleet page if you have that mod enabled." }], filter: function () { if (!gc.getValue("a-disbandertweaks")) { return false; } if (gc.location.match(/com_disband$/)) { return true; } return false; }, plugin: function () { $("table.bodybox[width='550'] td:first").append("<div>Anfit's tweaks:<ul><li>All you have to do is type in the input fields.</li><li>Quick disband (-10/-50) idea by VorteX...</li></ul></div>"); var d = $("table.table_back[width='500'] table"); var e = $("tr", d); if (e && e.length === 1) { return; } e.first().append('<td class="a-revbutton a-disbandertweaks-disband10" title="Click to prepare a 10% stack disband query">-10</td><td class="a-revbutton a-disbandertweaks-disband50" title="Click to prepare a 50% stack disband query">-50</td><td class="a-revbutton a-disbandertweaks-disbandall" title="Click to prepare a full stack disband query">all</small></td>'); e.filter("tr:gt(0)").append('<td class="a-button a-disbandertweaks-disband10" title="Click to prepare a 10% stack disband query">-10</td><td class="a-button a-disbandertweaks-disband50" title="Click to prepare a 50% stack disband query">-50</td><td class="a-button a-disbandertweaks-disbandall" title="Click to prepare a full stack disband query">all</small></td>'); $("tr.table_row0:first", d).parent().attr("id", "a-disbandertweaks-parentTable"); $("td.a-disbandertweaks-disband10:first").click(function () { $("td.a-disbandertweaks-disband10:gt(0)").each(function () { $(this)[0].click(); }); }); $("td.a-disbandertweaks-disband50:first").click(function () { $("td.a-disbandertweaks-disband50:gt(0)").each(function () { $(this)[0].click(); }); }); $("td.a-disbandertweaks-disbandall:first").click(function () { $("td.a-disbandertweaks-disbandall:gt(0)").each(function () { $(this)[0].click(); }); }); $("tr:gt(0)", d).each(function () { var h = $.trim($("td:eq(0)", this).text()); var g = $("td:eq(5)", this).text().replace(/\D/g, ""); var l = $("td:eq(3)", this).text().replace(/\D/g, ""); var k = $("td:eq(4)", this).text().replace(/\D/g, ""); var j = k / l; var m = $("td:eq(2) input", this); m.val(0); var n = $("td:eq(3)", this); var i = $("td:eq(4)", this); var f = $("td:eq(6)", this); f.addClass("a-disbandertweaks-stackpr"); $("td.a-disbandertweaks-disband10", this).click(function (o) { m.val(Math.floor(l * 0.1)); m.trigger("change"); }); $("td.a-disbandertweaks-disband50", this).click(function (o) { m.val(Math.floor(l * 0.5)); m.trigger("change"); }); $("td.a-disbandertweaks-disbandall", this).click(function (o) { m.val(l); m.trigger("change"); }); m.change(function (s) { var r = $(this).val().replace(/\D/g, "") * 1; var q = Math.max(l - r, 0); n.html(app.util.formatCurrency(q) + " "); i.html(app.util.formatCurrency(q * j) + " "); f.html(app.util.formatCurrency(q * g)); var o = 0; $("td.a-disbandertweaks-stackpr").each(function () { o += $(this).text().replace(/\D/g, "") * 1; }); var p = $("#a-disbandertweaks-fleetPr").attr("basePr") * 1; $("#a-disbandertweaks-fleetPr").text(app.util.formatCurrency(o)); $("#a-disbandertweaks-totalPr").text(app.util.formatCurrency(p + o)); $("#a-disbandertweaks-totalPr130").text(app.util.formatCurrency(Math.floor((p + o) / 1.3))); $("#a-disbandertweaks-totalPr150").text(app.util.formatCurrency(Math.floor((p + o) / 1.5))); }); }); var a = 0; $("td.a-disbandertweaks-stackpr").each(function () { a += $(this).text().replace(/\D/g, "") * 1; }); var c = 1 * gc.power.getValue() - a; var b = '<tr class="table_row0"><td colspan="5"/><td>total fleet pr:</td><td id="a-disbandertweaks-fleetPr" align="right" basepr="${basePr}">${fleetPr}</td><td> </td><td> </td><td> </td></tr><tr class="table_row0"><td colspan="5"/><td>total pr:</td><td id="a-disbandertweaks-totalPr" align="right">${totalPr}</td><td> </td><td> </td><td> </td></tr><tr class="table_row0"><td colspan="5"/><td>pr / 130%:</td><td id="a-disbandertweaks-totalPr130" align="right">${totalPr130}</td><td> </td><td> </td><td> </td></tr><tr class="table_row0"><td colspan="5"/><td>pr / 150%:</td><td id="a-disbandertweaks-totalPr150" align="right">${totalPr150}</td><td> </td><td> </td><td> </td></tr>'; $.tmpl(b, { basePr: c, fleetPr: app.util.formatCurrency(a), totalPr: app.util.formatCurrency(gc.power.getValue()), totalPr130: app.util.formatCurrency(Math.floor(gc.power.getValue() / 1.3)), totalPr150: app.util.formatCurrency(Math.floor(gc.power.getValue() / 1.5)) }).appendTo("#a-disbandertweaks-parentTable", d); } }; app.mod.fedchat = { id: "a-fedchat", defaultValue: true, title: "Fed chat instead of Chat", description: "Replaces the usual chat on main GC pages (on the right) with fed discussion board.", filter: function () { if (!gc.getValue("a-fedchat")) { return false; } if (gc.location.indexOf("fed_forum") !== -1) { return false; } if ($("table.bodybox[width='105'] tbody tr td")[0]) { return true; } return false; }, plugin: function () { var a = $("table.bodybox[width='105'] tbody tr td:first"); if (!gc.getValue("a-fedchat-lastupdate") || !gc.getValue("a-fedchat-lastupdate")) { gc.setValue("a-fedchat-lastupdate", gc.timestamp); } if (gc.timestamp - 600000 > gc.getValue("a-fedchat-lastupdate") || !gc.getValue("fedchat.html")) { gc.xhr({ method: "GET", url: app.gameServer + "i.cfm?f=fed_forum", onFailure: function (b) { console.error("[Fed chat] XHR query to get posts failed"); }, onSuccess: function (b) { var c = ""; $("tr.table_row1[valign='top'], tr.table_row2", b).each(function () { var d = $(this).children().first().html().replace(/\s+<a.*/, ""); var e = $(this).children().last().text(); c += "<u>" + d + "</u>: " + e + '<br/><img height="5" src="i/w/sp_.gif"/><br/>'; }); gc.setValue("a-fedchat-lastupdate", gc.timestamp); a.html(c); gc.setValue("fedchat.html", c); } }); } else { a.html(gc.getValue("fedchat.html")); } a.attr("title", "Doubleclick to switch to fedchat"); a.dblclick(function () { document.location.href = "http://gc.gamestotal.com/i.cfm?f=fed_forum"; }); } }; app.mod.fedpms = { id: "a-fedpms", defaultValue: true, title: "Fed private messages", description: "Send a pm to all the members of your federation with a single click.", items: [{ type: "info", text: "This mods adds a special message box below on the page listing members of the fed you are in." }], filter: function () { if (!gc.getValue("a-fedpms")) { return false; } if (gc.location.indexOf("fed_member") !== -1 || gc.location.match(/#post/)) { return true; } return false; }, plugin: function () { if (gc.location.match(/#post/)) { $("textarea[name='forum2']").val(gc.getValue("a-fedpms-message")); $("input[name='remLen2']").val(gc.getValue("a-fedpms-remaining")); $("input[value*='Send']")[0].click(); return; } $("table.bodybox[width='400'] td:first").prepend('<div><center>PM all of the above, except yourself, via this form:<br /><textarea cols=67 rows=5 id="message"></textarea><br /><br /><input id="a-fedpms-submit" type="button" value="submit" /></center><br /></div>'); var b = []; $("a[href*='msguser']").each(function () { var c = $.trim($(this).text()); if (c !== gc.empireName) { b.push(c); } }); $("body:first").append('<iframe id="a-fedpms-iframe"></iframe>'); function a() { var c = b.shift(); gc.setValue("a-fedpms-recipient", c); gc.setValue("a-fedpms-status", "SENDING"); console.log("[Fed PMs] Sending message to " + c + " ..."); $("#a-fedpms-iframe")[0].src = "i.cfm?popup=msguser&nic=" + c + "&se=" + gc.server.id + "#post"; } $("#a-fedpms-iframe").load(function (d) { if ($(this)[0].src) { var c = gc.getValue("a-fedpms-status"); if (c === "SENDING") { console.log("[Fed PMs] Message to " + gc.getValue("a-fedpms-recipient") + " sent or sending failed silently."); gc.setValue("a-fedpms-status", "IDLE"); if (b.length) { a(); } else { $("#message").val(""); gc.setValue("a-fedpms-message", ""); gc.setValue("a-fedpms-remaining", ""); gc.setValue("a-fedpms-recipient", ""); gc.setValue("a-fedpms-status", ""); console.log("[Fed PMs] Outgoing message queue is empty."); } } } }); $("#a-fedpms-submit").click(function () { var d = $("#message").val().substring(0, 2000); var c = 2000 - d.length; gc.setValue("a-fedpms-message", d); gc.setValue("a-fedpms-remaining", c); console.log("[Fed PMs] PMs are being sent to your fedmates. Do not close this window for a while unless you want to stop sending..."); a(); }); } }; app.mod.forumkillfile = { id: "a-forumkillfile", title: "Forum killfile", description: "Removes forum posts and threads by users you list in the settings.", items: [{ type: "list", id: "a-forumkillfile-list", defaultValue: "usernameOne,usernameTwo", description: "Enter name of people you want to ignore, comma-separated (in one line)" }], filter: function () { if (!gc.getValue("a-forumkillfile")) { return false; } if (!gc.getValue("a-forumkillfile-list")) { return false; } if (gc.location.indexOf("hef") !== -1) { return true; } return false; }, plugin: function () { var b = gc.getValue("a-forumkillfile-list").replace(/ /g, "").split(","); for (var c = 0; c < b.length; c = c + 1) { var a = b[c]; if (!a) { continue; } $("tr td.fs font:contains('" + a + "')").parent().parent().addClass("a-forumkillfile-hidden"); $("tr td:first-child a:contains('" + a + "')").parent().parent().addClass("a-forumkillfile-hidden"); $("tr.tb1 td:first-child").attr("width", "1%"); } } }; app.mod.infratweak = { id: "a-infratweak", defaultValue: true, title: "Infrastructure building tweak", description: "Build at most 99999 of anything on a colony (at once) instead of 999.", filter: function () { if (!gc.getValue("a-infratweak")) { return false; } if (gc.location.match(/com_col.*colid/)) { return true; } return false; }, plugin: function () { $("input[maxlength='3']").attr("maxlength", 5); } }; app.mod.keybindings = { id: "a-keybindings", title: "Key bindings", description: "Add key bindings of your choice to most GC pages (all except forum - if you feel forum should be included, contact me - Anfit).", items: [{ type: "list", id: "a-keybindings-list", defaultValue: app.gameServer + "forum2/;F\n" + app.gameServer + "i.cfm?&antireload&f=com_ship2&shiptype=19;V", description: 'Replace SFGC\'s antireload with "antireload". V is capital v and stands for "Shift+v".' }], filter: function () { if (!gc.getValue("a-keybindings")) { return false; } if (!gc.getValue("a-keybindings-list")) { return false; } if (gc.location.indexOf("i.cfm") !== -1) { return true; } return false; }, plugin: function () { $(window).keypress(function (e) { var g = $(e.target).parentsUntil("TEXTAREA, INPUT, BUTTON"); if (g.length) { return; } var d = gc.getValue("a-keybindings-list").replace(/antireload/g, gc.getValue("antiReload")).split("\n"); for (var b = 0; b < d.length; b = b + 1) { var f = d[b].split(";"); var a = f[1]; var c = f[0]; if (f.length !== 2 || a.length !== 1) { console.error("[Key bindings] config line " + d[b] + " is wrong..."); continue; } if (String.fromCharCode(e.which) === a) { document.location.href = c; } } }); } }; app.mod.markettweaks = { id: "a-markettweaks", defaultValue: true, title: "Market tweaks", description: "Adds small improvements to the market (buy faster and similar, see notes added to the market pages). Thx, Wingnut for the idea!.", items: [{ type: "info", text: "Type in a price total and is calculates the amount; click on the topmost offer to fill in the purchase form with that amount; ctrl-click on the topmost offer to buy it." }], filter: function () { if (!gc.getValue("a-markettweaks")) { return false; } if (gc.location.indexOf("market2") !== -1) { return true; } return false; }, plugin: function () { $("input[name^='total']").removeAttr("onfocus"); $("input[name='totalbuy']").change(function (b) { $("input[name='amount']").val(Math.floor($("input[name='totalbuy']").val() / $("input[name='price']").val())); }); $("input[name='totalsell']").change(function (b) { $("input[name='amount']").val(Math.floor($("input[name='totalsell']").val() / $("input[name='price']").val())); }); var a = $("table.bodybox[width='550'] table.table_back:eq(3) table tr:eq(1)"); a.attr("title", "Click to fill the buy field with the amount from the topmost offer. Ctrl-click to buy this offer, instead."); a.addClass("a-button"); a.click(function (b) { $("input[name='amount']").val($("td:eq(1)", this).text().replace(/^\s*|,|\s*$/g, "")); if (b.ctrlKey === true) { $("input[name='buyflag']")[0].click(); } }); $("table.bodybox[width='550'] td:first").append("<div><ul><li>Type total price and amount gets calculated automagickally (idea by wingnut),</li><li>Click on the topmost offer to fill the buy field with that amount,</li><li>Ctrl-click on the topmost offer to BUY it.</li></ul></div>"); } }; app.mod.newbieranking = { id: "a-newbieranking", defaultValue: true, title: "Ranking around newbie protection", description: "Replaces the absurd empty 'Rank near me' page for empires in Newbie Protection with something which may show some empires around thr 5000PR threashold. If your servers is underpopulated you might want to change the threshold value below to something higher (idea: wingnut).", items: [{ id: "a-newbieranking-threshold", defaultValue: "7000", type: "list", description: 'Show empires with power rating this high or lower. If no empires above newbie protection, but below this value exist, then the usual "Nothing listed here" message will be shown...' }], filter: function () { if (!gc.getValue("a-newbieranking")) { return false; } if (!gc.location.indexOf("rank") !== -1) { return false; } if (gc.power.getValue() >= 5000) { return false; } return true; }, plugin: function () { $("a[href$='rank2']").attr("href", "i.cfm?f=rank2&nx=" + gc.getValue("a-newbieranking-threshold")); } }; app.mod.pagetitles = { id: "a-pagetitles", defaultValue: true, title: "Page titles", description: "Adds sensible page titles to most GC Pages. Makes multi-tab browsing way more user-friendly: different pages get different tab titles.", items: [{ type: "info", text: "A page title == global prefix + local prefix + page title. Here you can change the first one and toggle the second one on/off." }, { type: "input", id: "a-pagetitles-tag", description: "Set the global prefix here:", defaultValue: "(GC) " }, { type: "checkbox", id: "a-pagetitles-allowlocal", description: 'Allow local prefixes like "Build:" before shipnames and "Market:" before minerals etc?' }], filter: function () { if (!gc.getValue("a-pagetitles")) { return false; } return true; }, plugin: function () { var f = gc.getValue("a-pagetitles-tag"); var g = f ? f : ""; var c = ""; var a = [{ title: "Counters", regexp: "rank2.*ty=3" }, { title: "Rank near me", regexp: "rank2" }, { title: "Top Stats", regexp: "rank_s" }, { title: "Top Planets", regexp: "rank.*ty=1" }, { title: "Top Ranking", regexp: "rank$" }, { title: "Options", regexp: "option" }, { title: "Fed Battles", regexp: "fed_prev" }, { title: "Feds2", regexp: "fed_join2" }, { title: "Feds", regexp: "fed_join$" }, { title: "Fedchat", regexp: "fed_forum" }, { title: "Fed Details", regexp: "fed_detail" }, { title: "Fed...", regexp: "fed_" }, { title: "Research Mining", regexp: "com_research2.*rtype=5" }, { title: "Research Agriculture", regexp: "com_research2.*rtype=4" }, { title: "Research Industry", regexp: "com_research2.*rtype=3" }, { title: "Research Commercial", regexp: "com_research2.*rtype=2" }, { title: "Research Housing", regexp: "com_research2.*rtype=1" }, { title: "Research", regexp: "com_research$" }, { title: "Capsule Lab", regexp: "com_project2.*id=3.*new=1" }, { title: "Loktar", regexp: "com_project2.*id=2.*new=1" }, { title: "Hektar", regexp: "com_project2.*id=1.*new=1" }, { title: "Projects", regexp: "com_project" }, { title: "Missions", regexp: "com_mission" }, { title: "Strafez", regexp: "com_market2.*gid=6" }, { title: "Composite", regexp: "com_market2.*gid=5" }, { title: "Rutile", regexp: "com_market2.*gid=4" }, { title: "White Crystal", regexp: "com_market2.*gid=3" }, { title: "Consumer Goods", regexp: "com_market2.*gid=24" }, { title: "Raws", regexp: "com_market2.*gid=23" }, { title: "Ore", regexp: "com_market2.*gid=22" }, { title: "Food", regexp: "com_market2.*gid=21" }, { title: "Red Crystal", regexp: "com_market2.*gid=2" }, { title: "Terran Metal", regexp: "com_market2.*gid=1" }, { title: "Market", regexp: "com_market$" }, { title: "Intelligence", regexp: "com_intel" }, { title: "Income", regexp: "com_income" }, { title: "Explore", regexp: "com_explore" }, { title: "Events", regexp: "com_empire.*cm=4" }, { title: "Summary", regexp: "com_empire.*cm=3" }, { title: "Events", regexp: "com_empire.*cm=2" }, { title: "Fleet", regexp: "com_disband" }, { title: "Create C3", regexp: "com_colupgrade.*tid=22" }, { title: "Create C2", regexp: "com_colupgrade.*tid=21" }, { title: "Create C1", regexp: "com_colupgrade.*tid=20" }, { title: "Clustering", regexp: "com_colupgrade" }, { title: "Reward", regexp: "com_col_r.*colid.\d+" }, { title: "Plunder", regexp: "com_col_plunder.*colid.\d+" }, { title: "Dig", regexp: "com_col_find.*colid.\d+" }, { title: "Colony", regexp: "com_col.*colid.\d+" }, { title: "Colonies", regexp: "com_col" }, { title: "Battle Result", regexp: "com_attack3" }, { title: "Attack Info", regexp: "com_attack2" }, { title: "Battle Logs", regexp: "com_attack_prev" }, { title: "Attack", regexp: "com_attack" }, { title: "Forum", regexp: "hef.cfm" }, { title: "Chat", regexp: "com_msgsector" }, { title: "Post to Chat", regexp: "popup=msgsector" }, { title: "Build Ships", regexp: "com_ship" }, { title: "Artifacts", regexp: "com_market_use" }]; var e = ""; if (gc.location.indexOf("com_ship2") !== -1) { e = "Build: "; var b = $("td[width='40%']:first"); if (b.length) { c = $.trim(b.text()); } else { c = "Build"; } } else { if (gc.location.indexOf("com_market2") !== -1) { e = "Market: "; } for (var d = 0; d < a.length; d = d + 1) { if (gc.location.match(new RegExp(a[d].regexp))) { c = a[d].title; break; } } } if (gc.getValue("a-pagetitles-allowlocal")) { g += e; } g += c; if (c) { document.title = g; } } }; app.mod.planetplunderer = { id: "a-planetplunderer", defaultValue: true, title: "Planet plunderer", description: "Fast plunder for non-paid accounts.", items: [{ type: "info", text: "Adds direct plunder buttons to planet list. Support Stephen so he can update GC oh so often. Or be a cheap bastard and use this tweak... And, no, you cannot plunder somebody else's planets, I have checked >:)" }], filter: function () { if (!gc.getValue("a-planetplunderer")) { return false; } if (gc.isPaid) { return false; } if (gc.location.match(/f=com_col$/)) { return true; } return false; }, plugin: function () { var b = $("table.table_back[width='100%'] table[width='100%']"); $("tr:first", b).append("<td> x </td>"); $("tr td:first", b).remove(); var c = $("tr.table_row1", b); c.each(function () { var d = $("input", this).val(); $(this).children().first().remove(); if (d) { $(this).append('<td class="a-planetplunderer-plunderable a-button" planetid="' + d + '"> x </td>'); } else { $(this).append("<td> </td>"); } }); $(".a-planetplunderer-plunderable").click(function () { var d = $(this).attr("planetid"); gc.xhr({ url: app.gameServer + "i.cfm?&f=com_col_plunder&cid=" + d + "&co=1", successCondition: "b:contains('Colony has been destroyed')", onSuccess: function (e) { console.log("[Planet plunderer] Planet " + d + " was destroyed."); $("td.a-planetplunderer-plunderable[planetid='" + d + "']").parent().remove(); }, onFailure: function (e) { console.error("[Planet plunderer] XHR query to plunder aa planet " + d + " failed."); } }); }); var a = $("input[value='Plunder Colony']"); a.hide(); } }; app.mod.presetbuilder = { id: "a-presetbuilder", defaultValue: true, title: "Preset builder", description: "Build stacks fast from saved presets.", items: [{ type: "info", text: "This mod replaces the quick dial. It offers some of the functionalities its predecessor. Is quite likely to be actively developed in the future." }], filter: function () { if (!gc.getValue("a-presetbuilder")) { return false; } if (gc.location.indexOf("rank") !== -1) { return true; } if (gc.location.indexOf("com_explore") !== -1) { return true; } if (gc.location.indexOf("com_attack") !== -1) { return true; } return false; }, plugin: function () { $("body").append('<div id="a-presetbuilder-wrap" class="draggable" title="These presets can be edited from the Build Ships page"><b>Presets: </b><br/><table class="a-table" width="100%" id="a-presetbuilder-saves"><tbody><tr class="table_row2"><td id="a-ship-save-a" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-b" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-c" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-d" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-e" class="a-presetbuilder-save a-button"> </td></tr><tr class="table_row2"><td id="a-ship-save-f" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-g" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-h" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-i" class="a-presetbuilder-save a-button"> </td><td id="a-ship-save-j" class="a-presetbuilder-save a-button"> </td></tr></tbody></table></div><div id="a-presetbuilder-save-infobox" style="display: none;"><table width="100%"><tbody><tr></tr></tbody></table></div>'); var a = gc.getValue("a-allships", "JSON_AS_ARRAY"); var c = "How to use the preset builder"; var b = "Preset builder allows to build many different ships at once, fast. You have to define a preset first in the ship builder. Afterwards you can just click on an item in the preset list to build it, if you have the resources and turns of course."; gc.showMessage(c, b, "a-presetbuilder-usagehelp"); var d = $("#a-presetbuilder-wrap b:contains('Presets')"); d.append('<img src="i/help.gif" title="' + c + '" />').click(function () { if (!$("#a-presetbuilder-usagehelp").length) { gc.showMessage(c, b); } }); $("#a-presetbuilder-wrap").css("top", typeof gc.getValue("a-presetbuilder-wrap-top") === "undefined" ? 108 : gc.getValue("a-presetbuilder-wrap-top")); $("#a-presetbuilder-wrap").css("left", typeof gc.getValue("a-presetbuilder-wrap-left") === "undefined" ? 0 : gc.getValue("a-presetbuilder-wrap-left")); $("#a-presetbuilder-wrap").mousedown(app.util.startDragging); $(document).bind("dragStop", function (i, f, h, g) { gc.setValue(f + "-top", h); gc.setValue(f + "-left", g); }); $(".a-presetbuilder-save").each(function () { var f = $(this).attr("id"); var e = gc.getValue(f + "-name"); if (e) { $(this).text(e); } }); $(".a-presetbuilder-save").click(function () { var j = $(this).attr("id"); var g = gc.getValue(j + "-value", "JSON_AS_ARRAY"); if (g.length) { var h = function (i) { var k = $("td:contains('You bought ')", i).contents().filter(function () { return this.nodeType === 3 && this.textContent.match("You bought"); }); console.log("[Preset builder] " + k.text()); }; var f = function (i) { var k = $("b:contains('SHIPS')", i).text(); var l = $("font[color='red'] > b", i).text(); console.error("[Preset builder] " + k + ": " + l); }; for (var e = 0; e < g.length; e = e + 1) { gc.xhr({ url: "i.cfm?&f=com_ship2&shiptype=" + g[e].id, data: "amount=" + g[e].amount, successCondition: "td:contains('You bought ')", onSuccess: h, onFailure: f }); } } }); $(".a-presetbuilder-save").hover(function (l) { var f = $(this).attr("id"); var o = gc.getValue(f + "-value"); if (o && o !== "[]") { $(this).text("build"); var m = gc.getValue(f + "-value", "JSON_AS_ARRAY"); var g = { name: "total", amount: "", turns: 0, power: 0 }; var h = []; for (var j = 0; j < m.length; j = j + 1) { var n = jQuery.extend(true, {}, a[m[j].id]); n.amount = m[j].amount; n.turns = Math.ceil(m[j].amount / n.build); n.power = n.power * n.amount; g.turns += n.turns; g.power += n.power; h.push(n); } h.sort(app.util.sortByPowerDesc); var p = '<tr class="a-presetbuilder-save-body"><td align="left" width="70%">${name}</td><td align="right" width="10%">${amount}</td><td align="right" width="10%">${turns}</td><td align="right" width="10%">${power}</td></tr>'; $("#a-presetbuilder-save-infobox").attr("style", "display: block; top: " + (l.clientY + 25) + "px; left: " + (l.clientX + 5) + "px;"); $.tmpl(p, h).appendTo("#a-presetbuilder-save-infobox tbody"); var k = '<tr id="a-presetbuilder-totals-body"><td align="left" width="70%">${name}</td><td align="right" width="10%">${amount}</td><td align="right" width="10%">${turns}</td><td align="right" width="10%">${power}</td></tr>'; $.tmpl(k, g).appendTo("#a-presetbuilder-save-infobox tbody"); } }, function () { var g = $(this).attr("id"); var f = gc.getValue(g + "-value"); if (f && f !== "[]") { var e = gc.getValue(g + "-name"); $(this).text(e); $("#a-presetbuilder-save-infobox tr").remove(); $("#a-presetbuilder-save-infobox").hide(); } else { $(this).html(" "); } }); } }; app.mod.rankingtweaks = { id: "a-rankingtweaks", defaultValue: true, title: "Ranking tweaks", description: "Many tweaks to the ranking list. See below for a details.", items: [{ type: "checkbox", id: "a-rankingtweaks-statuses", defaultValue: true, description: "Enable empire statuses" }, { type: "info", text: "Show your empire's status and other empires' statuses in the ranking list below empire name (others will still see yours). Status is a short text meant to be visible to others. It will be visible to other users of this mod. Statuses are stored on my (Anfit's) server, so they can be changed and re-checked only if that server is up and running." }, { type: "input", id: "a-rankingtweaks-statuses-mystatus", defaultValue: "I have installed Anfit Mods", description: "Your empire's status:" }, { type: "input", id: "a-rankingtweaks-statuses-forceupdate", description: "Statuses are re-checked (redownloaded) only every two days, but you can do it manualy by clicking here:" }, { type: "checkbox", id: "a-rankingtweaks-labels", defaultValue: true, description: "Enable empire labels?" }, { type: "info", text: 'A label is a short text you add. This tweak adds a new column (titled "Label") in the ranking list in which you can set custom labels. If you doubleclick a cell in this column, you will be prompted to add your label. It can be anything as it will be visible just for you.' }, { type: "checkbox", id: "a-rankingtweaks-fedtags", defaultValue: true, description: "Enable empire fed tags?" }, { type: "info", text: 'Fed tag is the name of the federation an empire is in (or "N/A"). This tweak makes it possible to show fed tags in the the ranking list, below empire names. To make it less server intensive you have to doubleclick on the race field of the empire, which fed tag you want to check. Please note that (to save server load), once checked it will be cached for 7 days - unless you doubleclick again.' }, { type: "checkbox", id: "a-rankingtweaks-fedtags-showall", defaultValue: true, description: "Show all cached fed tags" }, { type: "checkbox", id: "a-rankingtweaks-bloodwar", description: "Enable Blood War?" }, { type: "info", text: "Blood War is an extension of the fed tag tweak. If you enable it tweak, you'll see federations your federation is in war with in red, allies will be shown in green, and neutrals in blue. This is not automatic, you have to define which fed is which below. Just fed names, no extra data, one per line!" }, { type: "list", id: "a-rankingtweaks-bloodwar-enemies", description: "Name your blood enemies.", defaultValue: "Example Fed One\nExample Fed Two" }, { type: "list", id: "a-rankingtweaks-bloodwar-allies", description: "Name your kin.", defaultValue: "Example Fed One\nExample Fed Two" }, { type: "list", id: "a-rankingtweaks-bloodwar-neutrals", description: "Name the neutral bystanders.", defaultValue: "Example Fed One\nExample Fed Two" }], filter: function () { if (!gc.getValue("a-rankingtweaks")) { return false; } if (gc.location.indexOf("rank") !== -1) { return true; } return false; } }; app.mod.researchtweak = { id: "a-researchtweak", defaultValue: true, title: "Reasearch tweak", description: "Reasearch at most 999 turns of anything (at once) instead of 9.", filter: function () { if (!gc.getValue("a-researchtweak")) { return false; } if (gc.location.indexOf("com_research") !== -1) { return true; } return false; }, plugin: function () { $("input[name='turns']").attr("maxlength", 3).val(999); } }; app.mod.shipbuilder = { id: "a-shipbuilder", defaultValue: true, title: "Ship builder", description: "Build many stacks at once, clean and fast.", items: [{ type: "info", text: "This mod replaces the old fleet builder mod. Old functionalities are still there: a doubleclick removes a saved preset. The main new thing is that this mods acquires ship data dynamically, whenever you visit a build page of a particular ship. If some of the data (e.g. build rates) are wrong, just visit the apropriate ship page. Also: you can use this to manage existing fleets..." }, { type: "checkbox", defaultValue: true, id: "a-shipbuilder-resetafterbuild", description: "Reset form after successful build" }], filter: function () { if (!gc.getValue("a-shipbuilder")) { return false; } if (gc.location.indexOf("com_ship") !== -1) { return true; } return false; }, plugin: function () { var g, r, f, m; g = function (v) { if (v === undefined) { v = $("body"); } var u = $("table.table_back table", v); var w = {}; w.id = $("form[name='stepform']", v).attr("action").replace(/.*shiptype=/, "") * 1; w.type = $.trim($("td:contains('Class')", u).next().text()); w.build = $.trim($("td:contains('1 turn produces')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.weapon = $.trim($("td:contains('Weapon')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.damage = {}; w.damage.energy = $.trim($("td:contains('Energy Damage')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.damage.kinetic = $.trim($("td:contains('Kinetic Damage')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.damage.missile = $.trim($("td:contains('Missile Damage')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.damage.chemical = $.trim($("td:contains('Chemical Damage')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.hull = $.trim($("td:contains('Hull')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.range = $.trim($("td:contains('Range')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.scanner = $.trim($("td:contains('Scanner rating')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.power = $.trim($("td:contains('Power rating')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.cost = $.trim($("td:contains('Cost per unit')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.upkeep = $.trim($("td:contains('Upkeep')", u).next().text().replace(/[^\.\d]/g, "")) * 1; w.minerals = {}; w.minerals.terranMetal = $.trim($("td:contains('Terran Metal')", u).next().next().text().replace(/[^\.\d]/g, "")) * 1; w.minerals.redCrystal = $.trim($("td:contains('Red Crystal')", u).next().next().text().replace(/[^\.\d]/g, "")) * 1; w.minerals.whiteCrystal = $.trim($("td:contains('White Crystal')", u).next().next().text().replace(/[^\.\d]/g, "")) * 1; w.minerals.rutile = $.trim($("td:contains('Rutile')", u).next().next().text().replace(/[^\.\d]/g, "")) * 1; w.minerals.composite = $.trim($("td:contains('Composite')", u).next().next().text().replace(/[^\.\d]/g, "")) * 1; w.minerals.strafezOrganism = $.trim($("td:contains('Strafez Organism')", u).next().next().text().replace(/[^\.\d]/g, "")) * 1; return w; }; if (!gc.getValue("a-allships", "JSON_AS_ARRAY")) { gc.setValue("a-allships", "[ null, { \"id\": 1, \"name\": \"T.Ryu-jin\", \"power\": 8, \"cost\": 88, \"upkeep\": 3, \"weapon\": 5, \"hull\": 10, \"range\": 1, \"race\": \"Terran\", \"type\": \"Fighter\", \"damage\": { \"energy\": 5, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 1, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 4500 }, { \"id\": 2, \"name\": \"Viator\", \"power\": 1, \"cost\": 27, \"upkeep\": 30, \"weapon\": 0, \"hull\": 3, \"range\": 1, \"race\": \"Terran\", \"type\": \"Scout\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 9, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 80 }, { \"id\": 3, \"name\": \"T.Maru\", \"power\": 51, \"cost\": 590, \"upkeep\": 22, \"weapon\": 35, \"hull\": 10015, \"range\": 3, \"race\": \"Terran\", \"type\": \"Corvette\", \"damage\": { \"energy\": 35, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 5, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 650 }, { \"id\": 4, \"name\": \"T.Sentouki\", \"power\": 174, \"cost\": 1855, \"upkeep\": 125, \"weapon\": 56, \"hull\": 500, \"range\": 7, \"race\": \"Terran\", \"type\": \"Frigate\", \"damage\": { \"energy\": 28, \"kinetic\": 28, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 10, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 5, \"name\": \"T.Garuda\", \"power\": 956, \"cost\": 9420, \"upkeep\": 750, \"weapon\": 400, \"hull\": 200030, \"range\": 9, \"race\": \"Terran\", \"type\": \"Destroyer\", \"damage\": { \"energy\": 400, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 50, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 28 }, { \"id\": 6, \"name\": \"T.Kalieum\", \"power\": 1701, \"cost\": 15435, \"upkeep\": 1800, \"weapon\": 350, \"hull\": 400050, \"range\": 8, \"race\": \"Terran\", \"type\": \"Cruiser\", \"damage\": { \"energy\": 350, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 100, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 7, \"name\": \"Light fighter-drone\", \"power\": 5, \"cost\": 66, \"upkeep\": 1, \"weapon\": 5, \"hull\": 520, \"range\": 1, \"race\": \"\", \"type\": \"Fighter\", \"damage\": { \"energy\": 5, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 7000 }, { \"id\": 8, \"name\": \"Light Corvette\", \"power\": 34, \"cost\": 364, \"upkeep\": 6, \"weapon\": 20, \"hull\": 5020, \"range\": 3, \"race\": \"\", \"type\": \"Corvette\", \"damage\": { \"energy\": 20, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 2, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 800 }, { \"id\": 9, \"name\": \"Light Frigate\", \"power\": 126, \"cost\": 1265, \"upkeep\": 25, \"weapon\": 53, \"hull\": 25020, \"range\": 5, \"race\": \"\", \"type\": \"Frigate\", \"damage\": { \"energy\": 53, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 8, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 120 }, { \"id\": 10, \"name\": \"Small Strafez Fodder\", \"power\": 55, \"cost\": 535, \"upkeep\": 1, \"weapon\": 0, \"hull\": 200, \"range\": 1, \"race\": \"\", \"type\": \"Special\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 0, \"build\": 700, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 2 } }, { \"id\": 11, \"name\": \"Large Strafez Fodder\", \"power\": 205, \"cost\": 2035, \"upkeep\": 5, \"weapon\": 0, \"hull\": 80095, \"range\": 1, \"race\": \"\", \"type\": \"Special\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 0, \"build\": 180, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 } }, { \"id\": 12, \"name\": \"Small Strafez Runner\", \"power\": 115, \"cost\": 1046, \"upkeep\": 2, \"weapon\": 80, \"hull\": 1, \"range\": 7, \"race\": \"\", \"type\": \"Special\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 80 }, \"scanner\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 2 }, \"build\": 400 }, { \"id\": 13, \"name\": \"Large Strafez Runner\", \"power\": 435, \"cost\": 4247, \"upkeep\": 12, \"weapon\": 400, \"hull\": 299.95, \"range\": 7, \"race\": \"\", \"type\": \"Special\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 400 }, \"scanner\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 14, \"name\": \"T.Empereur\", \"power\": 5881, \"cost\": 52475, \"upkeep\": 5400, \"weapon\": 2500, \"hull\": 800020, \"range\": 7, \"race\": \"Terran\", \"type\": \"Battleship\", \"damage\": { \"energy\": 1500, \"kinetic\": 1000, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 500, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 8 }, { \"id\": 15, \"name\": \"C.Aries\", \"power\": 51, \"cost\": 617, \"upkeep\": 37, \"weapon\": 20, \"hull\": 200, \"range\": 1, \"race\": \"\", \"type\": \"Corvette\", \"damage\": { \"energy\": 20, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 2, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 16, \"name\": \"C.Gemini\", \"power\": 243, \"cost\": 2784, \"upkeep\": 230, \"weapon\": 53, \"hull\": 1000, \"range\": 5, \"race\": \"\", \"type\": \"Frigate\", \"damage\": { \"energy\": 53, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 4, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 40 }, { \"id\": 17, \"name\": \"C.Taurus\", \"power\": 1488, \"cost\": 14595, \"upkeep\": 1300, \"weapon\": 400, \"hull\": 4000, \"range\": 7, \"race\": \"\", \"type\": \"Destroyer\", \"damage\": { \"energy\": 200, \"kinetic\": 200, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 85, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 18, \"name\": \"C.Cancer\", \"power\": 1804, \"cost\": 18355, \"upkeep\": 1800, \"weapon\": 350, \"hull\": 6000, \"range\": 6, \"race\": \"\", \"type\": \"Cruiser\", \"damage\": { \"energy\": 350, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 25, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 19, \"name\": \"Viator II\", \"power\": 25, \"cost\": 636, \"upkeep\": 400, \"weapon\": 0, \"hull\": 1, \"range\": 1, \"race\": \"Terran\", \"type\": \"Scout\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 500, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 160 }, { \"id\": 20, \"name\": \"P.Apollo\", \"power\": 66, \"cost\": 811, \"upkeep\": 55, \"weapon\": 80, \"hull\": 25, \"range\": 5, \"race\": \"Terran\", \"type\": \"Corvette\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 80, \"chemical\": 0 }, \"scanner\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 220 }, { \"id\": 21, \"name\": \"P.Odin\", \"power\": 201, \"cost\": 2311, \"upkeep\": 255, \"weapon\": 212, \"hull\": 125, \"range\": 9, \"race\": \"Terran\", \"type\": \"Frigate\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 212, \"chemical\": 0 }, \"scanner\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 90 }, { \"id\": 22, \"name\": \"P.Thor\", \"power\": 1624, \"cost\": 16905, \"upkeep\": 1600, \"weapon\": 1600, \"hull\": 500, \"range\": 11, \"race\": \"Terran\", \"type\": \"Destroyer\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 1600, \"chemical\": 0 }, \"scanner\": 50, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 23, \"name\": \"P.Zeus\", \"power\": 1755, \"cost\": 17175, \"upkeep\": 3000, \"weapon\": 1400, \"hull\": 1000, \"range\": 10, \"race\": \"Terran\", \"type\": \"Cruiser\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 1400, \"chemical\": 0 }, \"scanner\": 50, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 24, \"name\": \"Nirvana\", \"power\": 18030, \"cost\": 175410, \"upkeep\": 22000, \"weapon\": 12000, \"hull\": 2000060, \"range\": 6, \"race\": \"Terran\", \"type\": \"Dreadnought\", \"damage\": { \"energy\": 5000, \"kinetic\": 5000, \"missile\": 2000, \"chemical\": 0 }, \"scanner\": 200, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }, { \"id\": 25, \"name\": \"Chimaera\", \"power\": 21393, \"cost\": 213765, \"upkeep\": 10054, \"weapon\": 10000, \"hull\": 45000, \"range\": 5, \"race\": \"Terran\", \"type\": \"Starbase\", \"damage\": { \"energy\": 4000, \"kinetic\": 6000, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 500, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }, { \"id\": 26, \"name\": \"Eel\", \"power\": 60, \"type\": \"Fighter\", \"weapon\": 50, \"damage\": { \"energy\": 0, \"kinetic\": 25, \"missile\": 25, \"chemical\": 0 }, \"hull\": 505, \"range\": 3, \"scanner\": 13, \"cost\": 655, \"upkeep\": 10, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 300 }, { \"id\": 27, \"name\": \"Ray\", \"power\": 82, \"type\": \"Corvette\", \"weapon\": 50, \"damage\": { \"energy\": 25, \"kinetic\": 25, \"missile\": 0, \"chemical\": 0 }, \"hull\": 150, \"range\": 6, \"scanner\": 10, \"cost\": 917, \"upkeep\": 12, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 250 }, { \"id\": 28, \"name\": \"Piranha\", \"power\": 379, \"type\": \"Frigate\", \"weapon\": 80, \"damage\": { \"energy\": 40, \"kinetic\": 40, \"missile\": 0, \"chemical\": 0 }, \"hull\": 750, \"range\": 5, \"scanner\": 50, \"cost\": 3332, \"upkeep\": 56, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 45 }, { \"id\": 29, \"name\": \"Barracuda\", \"power\": 2272, \"type\": \"Destroyer\", \"weapon\": 800, \"damage\": { \"energy\": 600, \"kinetic\": 200, \"missile\": 0, \"chemical\": 0 }, \"hull\": 300080, \"range\": 8, \"scanner\": 250, \"cost\": 19440, \"upkeep\": 522, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 14 }, { \"id\": 30, \"name\": \"Shark\", \"power\": 2052, \"type\": \"Cruiser\", \"weapon\": 500, \"damage\": { \"energy\": 250, \"kinetic\": 250, \"missile\": 0, \"chemical\": 0 }, \"hull\": 500030, \"range\": 7, \"scanner\": 100, \"cost\": 19180, \"upkeep\": 307, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 31, \"name\": \"Pyth\", \"power\": 22527, \"type\": \"Battleship\", \"weapon\": 20000, \"damage\": { \"energy\": 7500, \"kinetic\": 7500, \"missile\": 5000, \"chemical\": 0 }, \"hull\": 2000015, \"range\": 6, \"scanner\": 6500, \"cost\": 244195, \"upkeep\": 4280, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }, { \"id\": 32, \"name\": \"M.Lyth\", \"power\": 30040, \"type\": \"Dreadnought\", \"weapon\": 15000, \"damage\": { \"energy\": 3000, \"kinetic\": 0, \"missile\": 12000, \"chemical\": 0 }, \"hull\": 3500035, \"range\": 7, \"scanner\": 1250, \"cost\": 270270, \"upkeep\": 52052, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 2 }, { \"id\": 33, \"name\": \"M.Hal\", \"power\": 23, \"type\": \"Fighter\", \"weapon\": 20, \"damage\": { \"energy\": 20, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 2520, \"range\": 4, \"scanner\": 1, \"cost\": 287, \"upkeep\": 5, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1500 }, { \"id\": 34, \"name\": \"M.Alium\", \"power\": 46, \"type\": \"Corvette\", \"weapon\": 30, \"damage\": { \"energy\": 30, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 50, \"range\": 4, \"scanner\": 5, \"cost\": 487, \"upkeep\": 28, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 500 }, { \"id\": 35, \"name\": \"M.Illite\", \"power\": 182, \"type\": \"Frigate\", \"weapon\": 80, \"damage\": { \"energy\": 80, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 40010, \"range\": 6, \"scanner\": 10, \"cost\": 1880, \"upkeep\": 130, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 125 }, { \"id\": 36, \"name\": \"M.Epidote\", \"power\": 936, \"type\": \"Destroyer\", \"weapon\": 500, \"damage\": { \"energy\": 500, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 150010, \"range\": 9, \"scanner\": 50, \"cost\": 9195, \"upkeep\": 740, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 28 }, { \"id\": 37, \"name\": \"M.Chlor\", \"power\": 1656, \"type\": \"Cruiser\", \"weapon\": 500, \"damage\": { \"energy\": 500, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 500010, \"range\": 8, \"scanner\": 50, \"cost\": 17160, \"upkeep\": 1900, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 38, \"name\": \"M.Flysch\", \"power\": 7231, \"type\": \"Battleship\", \"weapon\": 3000, \"damage\": { \"energy\": 1500, \"kinetic\": 500, \"missile\": 1000, \"chemical\": 0 }, \"hull\": 1000015, \"range\": 7, \"scanner\": 500, \"cost\": 64225, \"upkeep\": 5254, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 9 }, { \"id\": 39, \"name\": \"A.Aragonite\", \"power\": 5035, \"type\": \"Dreadnought\", \"weapon\": 2500, \"damage\": { \"energy\": 1000, \"kinetic\": 1500, \"missile\": 0, \"chemical\": 0 }, \"hull\": 600025, \"range\": 7, \"scanner\": 200, \"cost\": 45445, \"upkeep\": 5982, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 12 }, { \"id\": 40, \"name\": \"M.Lakko\", \"power\": 24444, \"type\": \"Starbase\", \"weapon\": 23700, \"damage\": { \"energy\": 7700, \"kinetic\": 0, \"missile\": 16000, \"chemical\": 0 }, \"hull\": 3650095, \"range\": 3, \"scanner\": 416, \"cost\": 286791, \"upkeep\": 20666, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }, { \"id\": 41, \"name\": \"A.Kryo\", \"power\": 75182, \"type\": \"Starbase\", \"weapon\": 6000, \"damage\": { \"energy\": 1500, \"kinetic\": 1500, \"missile\": 3000, \"chemical\": 0 }, \"hull\": 15000020, \"range\": 7, \"scanner\": 8000, \"cost\": 601480, \"upkeep\": 32328, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 2 }, { \"id\": 42, \"name\": \"Seeker\", \"power\": 2, \"type\": \"Scout\", \"weapon\": 0, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 195, \"range\": 1, \"scanner\": 40, \"cost\": 61, \"upkeep\": 60, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 60 }, { \"id\": 43, \"name\": \"Ranger\", \"power\": 50, \"type\": \"Scout\", \"weapon\": 0, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 195, \"range\": 1, \"scanner\": 1000, \"cost\": 1261, \"upkeep\": 800, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 160 }, { \"id\": 44, \"name\": \"G.Livid\", \"power\": 13013, \"type\": \"Fighter\", \"weapon\": 8000, \"damage\": { \"energy\": 0, \"kinetic\": 8000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 2500085, \"range\": 5, \"scanner\": 4000, \"cost\": 140365, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, null, null, null, null, null, null, null, null, { \"id\": 53, \"name\": \"G.Livid (r)\", \"power\": 12513, \"type\": \"Fighter\", \"weapon\": 5000, \"damage\": { \"energy\": 0, \"kinetic\": 5000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 2500075, \"range\": 5, \"scanner\": 2750, \"cost\": 121615, \"upkeep\": 15641, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 4 }, { \"id\": 54, \"name\": \"G.Agate\", \"power\": 13135, \"type\": \"Fighter\", \"weapon\": 5000, \"damage\": { \"energy\": 0, \"kinetic\": 5000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 2500020, \"range\": 4, \"scanner\": 2700, \"cost\": 208814, \"upkeep\": 1712, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 4 }, { \"id\": 55, \"name\": \"G.Amethyst\", \"power\": 18018, \"type\": \"Corvette\", \"weapon\": 15000, \"damage\": { \"energy\": 15000, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 24000, \"range\": 6, \"scanner\": 1800, \"cost\": 329892, \"upkeep\": 2030, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 4 }, { \"id\": 56, \"name\": \"G.Quartz\", \"power\": 36068, \"type\": \"Frigate\", \"weapon\": 14000, \"damage\": { \"energy\": 0, \"kinetic\": 14000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 8000020, \"range\": 5, \"scanner\": 3500, \"cost\": 592766, \"upkeep\": 4596, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }, { \"id\": 57, \"name\": \"L.Garnet\", \"power\": 16303, \"type\": \"Frigate\", \"weapon\": 8000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 8000, \"chemical\": 0 }, \"hull\": 2000010, \"range\": 8, \"scanner\": 2050, \"cost\": 248981, \"upkeep\": 1834, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 5 }, { \"id\": 58, \"name\": \"G.Corundum\", \"power\": 55028, \"type\": \"Destroyer\", \"weapon\": 30000, \"damage\": { \"energy\": 18750, \"kinetic\": 11250, \"missile\": 0, \"chemical\": 0 }, \"hull\": 6500070, \"range\": 7, \"scanner\": 4500, \"cost\": 855858, \"upkeep\": 5357, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 2 }, { \"id\": 59, \"name\": \"L.Topaz\", \"power\": 49081, \"type\": \"Cruiser\", \"weapon\": 16000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 16000, \"chemical\": 0 }, \"hull\": 10000045, \"range\": 7, \"scanner\": 2700, \"cost\": 759069, \"upkeep\": 5091, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 60, \"name\": \"G.Fluorite\", \"power\": 69768, \"type\": \"Cruiser\", \"weapon\": 30000, \"damage\": { \"energy\": 30000, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 16000010, \"range\": 3, \"scanner\": 1500, \"cost\": 1173120, \"upkeep\": 7500, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 61, \"name\": \"L.Emerald\", \"power\": 41636, \"type\": \"Destroyer\", \"weapon\": 30000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 30000, \"chemical\": 0 }, \"hull\": 2000060, \"range\": 9, \"scanner\": 3400, \"cost\": 647673, \"upkeep\": 4536, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 2 }, { \"id\": 62, \"name\": \"G.Diamond\", \"power\": 139532, \"type\": \"Starbase\", \"weapon\": 20000, \"damage\": { \"energy\": 10000, \"kinetic\": 10000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 24000015, \"range\": 7, \"scanner\": 15000, \"cost\": 1863823, \"upkeep\": 17946, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 63, \"name\": \"S.Lapiz\", \"power\": 25, \"type\": \"Scout\", \"weapon\": 0, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 520, \"range\": 1, \"scanner\": 500, \"cost\": 1074, \"upkeep\": 50, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 30 }, { \"id\": 64, \"name\": \"S.Opal\", \"power\": 75, \"type\": \"Scout\", \"weapon\": 0, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 520, \"range\": 1, \"scanner\": 1500, \"cost\": 3168, \"upkeep\": 150, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 65, \"name\": \"D.Hammerhead\", \"power\": 3612, \"type\": \"Frigate\", \"weapon\": 4000, \"damage\": { \"energy\": 0, \"kinetic\": 1500, \"missile\": 2500, \"chemical\": 0 }, \"hull\": 300015, \"range\": 7, \"scanner\": 75, \"cost\": 41955, \"upkeep\": 632, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 9 }, { \"id\": 66, \"name\": \"D.Bullhead\", \"power\": 6336, \"type\": \"Cruiser\", \"weapon\": 3250, \"damage\": { \"energy\": 1250, \"kinetic\": 0, \"missile\": 2000, \"chemical\": 0 }, \"hull\": 700025, \"range\": 8, \"scanner\": 400, \"cost\": 57160, \"upkeep\": 1140, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 6 }, { \"id\": 67, \"name\": \"D.Angel\", \"power\": 23206, \"type\": \"Battleship\", \"weapon\": 22000, \"damage\": { \"energy\": 0, \"kinetic\": 7000, \"missile\": 15000, \"chemical\": 0 }, \"hull\": 1500010, \"range\": 7, \"scanner\": 0, \"cost\": 244850, \"upkeep\": 4614, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 4 }, { \"id\": 68, \"name\": \"M.Chlorite\", \"power\": 1236, \"type\": \"Destroyer\", \"weapon\": 1000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 1000, \"chemical\": 0 }, \"hull\": 800, \"range\": 9, \"scanner\": 60, \"cost\": 12330, \"upkeep\": 962, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 22 }, { \"id\": 69, \"name\": \"Manta\", \"power\": 74, \"type\": \"Fighter\", \"weapon\": 75, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 75, \"chemical\": 0 }, \"hull\": 50, \"range\": 6, \"scanner\": 15, \"cost\": 882, \"upkeep\": 13, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 250 }, { \"id\": 70, \"name\": \"G.Lictor\", \"power\": 51178, \"type\": \"Juggernaught\", \"weapon\": 14000, \"damage\": { \"energy\": 10000, \"kinetic\": 4000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 8000040, \"range\": 5, \"scanner\": 2500, \"cost\": 428440, \"upkeep\": 40000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 2 }, { \"id\": 71, \"name\": \"Hercules\", \"power\": 45402, \"cost\": 385310, \"upkeep\": 35000, \"weapon\": 20000, \"hull\": 4500030, \"range\": 5, \"race\": \"Terran\", \"type\": \"Juggernaught\", \"damage\": { \"energy\": 0, \"kinetic\": 12000, \"missile\": 8000, \"chemical\": 0 }, \"scanner\": 2000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 2 }, { \"id\": 72, \"name\": \"Strafez Queen\", \"power\": 896, \"cost\": 8121, \"upkeep\": 20, \"weapon\": 700, \"hull\": 2599.95, \"range\": 8, \"race\": \"\", \"type\": \"Special\", \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 700 }, \"scanner\": 30, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 40 }, { \"id\": 73, \"name\": \"F.Axe\", \"power\": 178, \"cost\": 1898, \"upkeep\": 152, \"weapon\": 65, \"hull\": 500, \"range\": 5, \"race\": \"\", \"type\": \"Frigate\", \"damage\": { \"energy\": 0, \"kinetic\": 65, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 8, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 74, \"name\": \"F.Sword\", \"power\": 1152, \"cost\": 11400, \"upkeep\": 955, \"weapon\": 600, \"hull\": 2000, \"range\": 8, \"race\": \"\", \"type\": \"Destroyer\", \"damage\": { \"energy\": 0, \"kinetic\": 600, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 60, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 75, \"name\": \"F.Spear\", \"power\": 1512, \"cost\": 14670, \"upkeep\": 2100, \"weapon\": 400, \"hull\": 4000, \"range\": 6, \"race\": \"\", \"type\": \"Cruiser\", \"damage\": { \"energy\": 0, \"kinetic\": 400, \"missile\": 0, \"chemical\": 0 }, \"scanner\": 50, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 76, \"name\": \"Pike\", \"power\": 1276, \"type\": \"Destroyer\", \"weapon\": 1000, \"damage\": { \"energy\": 500, \"kinetic\": 500, \"missile\": 0, \"chemical\": 0 }, \"hull\": 100010, \"range\": 9, \"scanner\": 60, \"cost\": 12780, \"upkeep\": 382, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, null, null, { \"id\": 79, \"name\": \"K.Hun-Li\", \"power\": 51224, \"type\": \"Destroyer\", \"weapon\": 14000, \"damage\": { \"energy\": 0, \"kinetic\": 4000, \"missile\": 0, \"chemical\": 10000 }, \"hull\": 5000050, \"range\": 6, \"scanner\": 7500, \"cost\": 663602, \"upkeep\": 5343, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 80, \"name\": \"K.Hun-Xe\", \"power\": 71322, \"type\": \"Cruiser\", \"weapon\": 12000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 4000, \"chemical\": 8000 }, \"hull\": 8000050, \"range\": 5, \"scanner\": 11000, \"cost\": 883831, \"upkeep\": 7596, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 81, \"name\": \"Sting\", \"power\": 1611, \"type\": \"Cruiser\", \"weapon\": 1000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 1000, \"chemical\": 0 }, \"hull\": 2000, \"range\": 8, \"scanner\": 50, \"cost\": 15685, \"upkeep\": 272, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 82, \"name\": \"Tourmaline\", \"power\": 6510, \"type\": \"Fighter\", \"weapon\": 8000, \"damage\": { \"energy\": 0, \"kinetic\": 8000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 1500040, \"range\": 4, \"scanner\": 250, \"cost\": 153414, \"upkeep\": 720, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 6 }, { \"id\": 83, \"name\": \"Ruby\", \"power\": 11268, \"type\": \"Corvette\", \"weapon\": 13000, \"damage\": { \"energy\": 0, \"kinetic\": 13000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 1600050, \"range\": 6, \"scanner\": 350, \"cost\": 237432, \"upkeep\": 1220, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 5 }, { \"id\": 84, \"name\": \"V.Borrelly\", \"power\": 452, \"type\": \"Destroyer\", \"weapon\": 400, \"damage\": { \"energy\": 0, \"kinetic\": 100, \"missile\": 0, \"chemical\": 300 }, \"hull\": 50050, \"range\": 8, \"scanner\": 0, \"cost\": 4965, \"upkeep\": 271, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 60 }, { \"id\": 85, \"name\": \"V.Chiron\", \"power\": 18482, \"type\": \"Starbase\", \"weapon\": 8000, \"damage\": { \"energy\": 0, \"kinetic\": 3000, \"missile\": 0, \"chemical\": 5000 }, \"hull\": 3000050, \"range\": 7, \"scanner\": 1000, \"cost\": 170980, \"upkeep\": 9241, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }, { \"id\": 86, \"name\": \"Kohoutek\", \"power\": 20, \"type\": \"Scout\", \"weapon\": 0, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 120, \"range\": 1, \"scanner\": 400, \"cost\": 511, \"upkeep\": 200, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 180 }, { \"id\": 87, \"name\": \"R.Pinnace\", \"power\": 162, \"type\": \"Corvette\", \"weapon\": 200, \"damage\": { \"energy\": 0, \"kinetic\": 200, \"missile\": 0, \"chemical\": 0 }, \"hull\": 200, \"range\": 4, \"scanner\": 0, \"cost\": 2100, \"upkeep\": 74, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 200 }, { \"id\": 88, \"name\": \"R.Sloop\", \"power\": 558, \"type\": \"Frigate\", \"weapon\": 550, \"damage\": { \"energy\": 550, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 75010, \"range\": 7, \"scanner\": 0, \"cost\": 6547, \"upkeep\": 177, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 55 }, { \"id\": 89, \"name\": \"H.Galleon\", \"power\": 2056, \"type\": \"Destroyer\", \"weapon\": 900, \"damage\": { \"energy\": 0, \"kinetic\": 800, \"missile\": 100, \"chemical\": 0 }, \"hull\": 450010, \"range\": 9, \"scanner\": 100, \"cost\": 20595, \"upkeep\": 417, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 22 }, { \"id\": 90, \"name\": \"R.Schooner\", \"power\": 2136, \"type\": \"Destroyer\", \"weapon\": 1150, \"damage\": { \"energy\": 900, \"kinetic\": 0, \"missile\": 250, \"chemical\": 0 }, \"hull\": 2500, \"range\": 9, \"scanner\": 170, \"cost\": 19815, \"upkeep\": 476, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 91, \"name\": \"H.Barkentine\", \"power\": 3246, \"type\": \"Cruiser\", \"weapon\": 1300, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 1300, \"chemical\": 0 }, \"hull\": 500030, \"range\": 8, \"scanner\": 300, \"cost\": 29360, \"upkeep\": 949, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 14 }, { \"id\": 92, \"name\": \"K.Yang-Fo\", \"power\": 747092, \"type\": \"Juggernaught\", \"weapon\": 45000, \"damage\": { \"energy\": 0, \"kinetic\": 15000, \"missile\": 15000, \"chemical\": 15000 }, \"hull\": 45000060, \"range\": 2, \"scanner\": 106333, \"cost\": 4629313, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 200 }, { \"id\": 93, \"name\": \"K.Yang-Xe\", \"power\": 747092, \"type\": \"Juggernaught\", \"weapon\": 42000, \"damage\": { \"energy\": 15000, \"kinetic\": 0, \"missile\": 15000, \"chemical\": 12000 }, \"hull\": 45000099, \"range\": 2, \"scanner\": 106333, \"cost\": 4614313, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 200 }, { \"id\": 94, \"name\": \"K.Wai-Li\", \"power\": 373555, \"type\": \"Dreadnought\", \"weapon\": 32000, \"damage\": { \"energy\": 9000, \"kinetic\": 0, \"missile\": 0, \"chemical\": 23000 }, \"hull\": 30000099, \"range\": 3, \"scanner\": 54708, \"cost\": 2457513, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 200 }, { \"id\": 95, \"name\": \"K.Wai-Xe\", \"power\": 373555, \"type\": \"Dreadnought\", \"weapon\": 32000, \"damage\": { \"energy\": 0, \"kinetic\": 9000, \"missile\": 0, \"chemical\": 23000 }, \"hull\": 30000099, \"range\": 3, \"scanner\": 54708, \"cost\": 2457513, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 200 }, { \"id\": 96, \"name\": \"K.Wei-Li\", \"power\": 186772, \"type\": \"Battleship\", \"weapon\": 22000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 10000, \"chemical\": 12000 }, \"hull\": 15000060, \"range\": 5, \"scanner\": 31000, \"cost\": 1262410, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 400 }, { \"id\": 97, \"name\": \"K.Wei-Xe\", \"power\": 168094, \"type\": \"Battleship\", \"weapon\": 22000, \"damage\": { \"energy\": 0, \"kinetic\": 10000, \"missile\": 0, \"chemical\": 12000 }, \"hull\": 15000099, \"range\": 5, \"scanner\": 31000, \"cost\": 1169020, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 98, \"name\": \"F.Broadsword\", \"power\": 1116, \"type\": \"Destroyer\", \"weapon\": 700, \"damage\": { \"energy\": 0, \"kinetic\": 700, \"missile\": 0, \"chemical\": 0 }, \"hull\": 100010, \"range\": 9, \"scanner\": 80, \"cost\": 10500, \"upkeep\": 635, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 20 }, { \"id\": 99, \"name\": \"Tyr\", \"power\": 13035, \"cost\": 130245, \"upkeep\": 14500, \"weapon\": 10000, \"hull\": 1200020, \"range\": 7, \"race\": \"Terran\", \"type\": \"Dreadnought\", \"damage\": { \"energy\": 500, \"kinetic\": 500, \"missile\": 9000, \"chemical\": 0 }, \"scanner\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 5 }, { \"id\": 100, \"name\": \"Scorpion\", \"power\": 73606, \"cost\": 548850, \"upkeep\": 27500, \"weapon\": 8000, \"hull\": 10500020, \"range\": 7, \"race\": \"Terran\", \"type\": \"Starbase\", \"damage\": { \"energy\": 1000, \"kinetic\": 1000, \"missile\": 6000, \"chemical\": 0 }, \"scanner\": 9500, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 101, \"name\": \"M.Calcite\", \"power\": 1701, \"type\": \"Cruiser\", \"weapon\": 850, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 850, \"chemical\": 0 }, \"hull\": 2000, \"range\": 8, \"scanner\": 100, \"cost\": 15435, \"upkeep\": 962, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 18 }, { \"id\": 102, \"name\": \"A.Hoko\", \"power\": 9945, \"type\": \"Starbase\", \"weapon\": 4000, \"damage\": { \"energy\": 1000, \"kinetic\": 1000, \"missile\": 2000, \"chemical\": 0 }, \"hull\": 1000015, \"range\": 10, \"scanner\": 400, \"cost\": 82725, \"upkeep\": 4475, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 7 }, { \"id\": 103, \"name\": \"Tiger\", \"power\": 1496, \"type\": \"Destroyer\", \"weapon\": 1200, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 1200, \"chemical\": 0 }, \"hull\": 1500, \"range\": 9, \"scanner\": 50, \"cost\": 15495, \"upkeep\": 448, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 18 }, { \"id\": 104, \"name\": \"H.Brigantine\", \"power\": 286, \"type\": \"Frigate\", \"weapon\": 300, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 100, \"chemical\": 200 }, \"hull\": 30035, \"range\": 6, \"scanner\": 0, \"cost\": 3365, \"upkeep\": 90, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 135 }, { \"id\": 105, \"name\": \"R.Snow\", \"power\": 6804, \"type\": \"Battleship\", \"weapon\": 4000, \"damage\": { \"energy\": 1800, \"kinetic\": 0, \"missile\": 2200, \"chemical\": 0 }, \"hull\": 750010, \"range\": 7, \"scanner\": 330, \"cost\": 63795, \"upkeep\": 1908, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 10 }, { \"id\": 106, \"name\": \"H.Man-O-War\", \"power\": 450, \"type\": \"Starbase\", \"weapon\": 250, \"damage\": { \"energy\": 100, \"kinetic\": 150, \"missile\": 0, \"chemical\": 0 }, \"hull\": 60020, \"range\": 7, \"scanner\": 13, \"cost\": 4333, \"upkeep\": 200, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 80 }, { \"id\": 107, \"name\": \"D. Mako\", \"power\": 12645, \"type\": \"Starbase\", \"weapon\": 3000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 3000 }, \"hull\": 15000, \"range\": 7, \"scanner\": 1453, \"cost\": 98498, \"upkeep\": 2000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 108, \"name\": \"D. Luminous\", \"power\": 12645, \"type\": \"Starbase\", \"weapon\": 7000, \"damage\": { \"energy\": 0, \"kinetic\": 7000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 10000100, \"range\": 7, \"scanner\": 903, \"cost\": 111698, \"upkeep\": 2000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 109, \"name\": \"D. Megalodon\", \"power\": 72902, \"type\": \"Juggernaught\", \"weapon\": 50000, \"damage\": { \"energy\": 10000, \"kinetic\": 0, \"missile\": 20000, \"chemical\": 20000 }, \"hull\": 6500030, \"range\": 6, \"scanner\": 0, \"cost\": 695820, \"upkeep\": 4000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 110, \"name\": \"D. Icithio\", \"power\": 12645, \"type\": \"Starbase\", \"weapon\": 11000, \"damage\": { \"energy\": 11000, \"kinetic\": 0, \"missile\": 0, \"chemical\": 0 }, \"hull\": 900050, \"range\": 8, \"scanner\": 152, \"cost\": 129707, \"upkeep\": 2000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 111, \"name\": \"D. White\", \"power\": 12645, \"type\": \"Starbase\", \"weapon\": 12000, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 12000, \"chemical\": 0 }, \"hull\": 7000, \"range\": 10, \"scanner\": 50, \"cost\": 132125, \"upkeep\": 2000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 112, \"name\": \"Strafez King\", \"power\": 890, \"type\": \"Special\", \"weapon\": 550, \"damage\": { \"energy\": 0, \"kinetic\": 0, \"missile\": 0, \"chemical\": 550 }, \"hull\": 20090, \"range\": 8, \"scanner\": 50, \"cost\": 7580, \"upkeep\": 60, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 40 }, { \"id\": 113, \"name\": \"T.Fenrir\", \"power\": 1512, \"type\": \"Cruiser\", \"weapon\": 600, \"damage\": { \"energy\": 350, \"kinetic\": 250, \"missile\": 0, \"chemical\": 0 }, \"hull\": 2800, \"range\": 8, \"scanner\": 68, \"cost\": 14208, \"upkeep\": 1400, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 18 }, { \"id\": 114, \"name\": \"D.Thresher\", \"power\": 11956, \"type\": \"Battleship\", \"weapon\": 9000, \"damage\": { \"energy\": 7000, \"kinetic\": 1000, \"missile\": 1000, \"chemical\": 0 }, \"hull\": 800030, \"range\": 7, \"scanner\": 450, \"cost\": 115300, \"upkeep\": 2032, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 4 }, { \"id\": 115, \"name\": \"C.Leo\", \"power\": 2848, \"type\": \"Cruiser\", \"weapon\": 1000, \"damage\": { \"energy\": 500, \"kinetic\": 500, \"missile\": 0, \"chemical\": 0 }, \"hull\": 5000, \"range\": 7, \"scanner\": 175, \"cost\": 25735, \"upkeep\": 2100, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 10 }, { \"id\": 116, \"name\": \"H.Corsair\", \"power\": 110, \"type\": \"Fighter\", \"weapon\": 75, \"damage\": { \"energy\": 25, \"kinetic\": 0, \"missile\": 0, \"chemical\": 50 }, \"hull\": 10030, \"range\": 4, \"scanner\": 20, \"cost\": 1110, \"upkeep\": 22, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 300 }, { \"id\": 117, \"name\": \"K.Hun-Zen\", \"power\": 61780, \"type\": \"Cruiser\", \"weapon\": 18000, \"damage\": { \"energy\": 8000, \"kinetic\": 0, \"missile\": 0, \"chemical\": 10000 }, \"hull\": 6000025, \"range\": 6, \"scanner\": 5750, \"cost\": 803515, \"upkeep\": 6000, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 1 }, { \"id\": 118, \"name\": \"V.Cronus\", \"power\": 2016, \"type\": \"Cruiser\", \"weapon\": 1000, \"damage\": { \"energy\": 300, \"kinetic\": 0, \"missile\": 0, \"chemical\": 700 }, \"hull\": 200020, \"range\": 8, \"scanner\": 140, \"cost\": 17800, \"upkeep\": 950, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 16 }, { \"id\": 119, \"name\": \"K.Hun-Zen\", \"power\": 1500003, \"type\": \"Starbase\", \"weapon\": 345000, \"damage\": { \"energy\": 80000, \"kinetic\": 75000, \"missile\": 100000, \"chemical\": 90000 }, \"hull\": 100000099, \"range\": 4, \"scanner\": 214530, \"cost\": 10689585, \"upkeep\": 0, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 100 }, { \"id\": 120, \"name\": \"G.Sapphire\", \"power\": 17624, \"type\": \"Destroyer\", \"weapon\": 12000, \"damage\": { \"energy\": 2000, \"kinetic\": 10000, \"missile\": 0, \"chemical\": 0 }, \"hull\": 2000045, \"range\": 6, \"scanner\": 1000, \"cost\": 174180, \"upkeep\": 16300, \"minerals\": { \"terranMetal\": 0, \"redCrystal\": 0, \"whiteCrystal\": 0, \"rutile\": 0, \"composite\": 0, \"strafezOrganism\": 0 }, \"build\": 3 }]"); } var d = gc.getValue("a-allships", "JSON_AS_ARRAY"); var h = []; $("table.table_back[width='95%'] table tr.table_row1").each(function (x) { var v = $(this); var w = $("td:eq(1) a", this).attr("href").replace(/.*shiptype=/, "") * 1; var u = d[w]; if (!u) { u = {}; } u.race = $.trim($("td:eq(0)", this).text()); u.name = $.trim($("td:eq(1)", this).text()); u.id = w; u.type = $.trim($("td:eq(2)", this).text()); u.cost = $.trim($("td:eq(3)", this).text()).replace(/[^\.\d]/g, "") * 1; u.upkeep = $.trim($("td:eq(4)", this).text()).replace(/[^\.\d]/g, "") * 1; u.weapon = $.trim($("td:eq(5)", this).text()).replace(/[^\.\d]/g, "") * 1; u.hull = $.trim($("td:eq(6)", this).text()).replace(/[^\.\d]/g, "") * 1; u.range = $.trim($("td:eq(7)", this).text()).replace(/[^\.\d]/g, "") * 1; u.power = $.trim($("td:eq(8)", this).text()).replace(/[^\.\d]/g, "") * 1; if (!u.order) { u.order = x; } if (!u.build) { gc.showMessage("Incomplete " + u.name + " data", "Data for " + u.name + " appears to be incomplete, please wait until it gets harvested. Reload this page after you see an appropriate success message in mod console (left bottom page corner)."); gc.xhr({ url: "i.cfm?f=com_ship2&shiptype=" + w, onSuccess: function (y) { d[w] = g(y); gc.setValue("a-allships", JSON.stringify(d)); console.log("Harvested data of " + u.name + "."); }, onFailure: function (y) { console.log("Query to the ship page for " + u.name + " returned no reply. Terminated."); } }); } d[w] = u; h.push(u); }); h.sort(function (w, u) { var x = 0, v = 0; if (w && w.order) { x = w.order; } if (u && u.order) { v = u.order; } if (typeof x === "string" || typeof v === "string") { return (x + "").localeCompare((v + "")); } return x - v; }); if (gc.location.match(/com_ship$/)) { gc.setValue("a-shipbuilder-shipsAvailable", JSON.stringify(h)); } if (gc.location.match(/com_ship.*shiptype/)) { var k = (gc.location + "").replace(/.*shiptype=/, "") * 1; var a = d[k]; if (!a) { a = {}; } $.extend(a, g()); d[k] = a; } gc.setValue("a-allships", JSON.stringify(d)); var e = $("b:contains('BUILDING SHIPS')"); gc.showMessage("Ship data caching", 'For the ship builder to work it requires valid ship data (power rating, build rate, etc.). Some of that can and will be harvested from the <a href="i.cfm?f=com_ship">ship list page</a>. However, if any build rate on this page is incorrect or missing, it has to be harvested from that ship\'s respective build page (e.g. <a href="i.cfm?f=com_ship2&shiptype=10">this page for Small Strafez Fodder</a>). There, that ship\'s data will be harvested and cached, to be used in the ship builder and other mods which require detailed ship data. The ship builder page will have to be refreshed afterward to use the newly cached data. This process is automated in case of missing data, but it its incorrect, you have to do it on your own. I would be nice if you emailed me that that happened, though.', "a-shipbuilder-shipdatahelp"); var c = "How to use the ship builder"; var n = 'Ship builder allows to build many different ships at once, fast. The ship types you can build are listed below. The input fields are where you place amounts, which is reflected by the stack building queue below the ship list. If you have enough turns to build what you selected, you will see a submit button there, too.<br />Please note, that some cells in the ship list change background when you move your mouse over them. Those are shortcuts to add/remove from given stack.<br />Furthermore, that above the ship list there are 10 slots for saving fleet presets - just click to save what is currently in the form, to be pasted later. These presets can be used by other mods to quickly build what you want e.g. from the ranking list.<br/ >Lastly, the stack list below the ship list shows not only the stacks you want to build but also the stacks you have already got (queried remotely from the disband page). If you wish to refresh it, either build something or click the "R" header. It may become inaccurate after a while.'; gc.showMessage(c, n, "a-shipbuilder-usagehelp"); e.text("SHIP BUILDER"); e.append('<img src="i/help.gif" title="' + c + '" />').click(function () { if (!$("#a-shipbuilder-usagehelp").length) { gc.showMessage(c, n); } }); e.siblings("b ~ a, b ~ table").remove(); e.next().next().after("<table width=\"70px\" class=\"a-table a-shipbuilder-submit-wrap\"> <tbody> <tr align=\"center\" class=\"table_row1\"> <td class=\"a-button\" id=\"a-shipbuilder-submit\" title=\"Build the stacks above\">Build all</td> </tr> </tbody></table><br /><table class=\"a-table\" width=\"95%\" id=\"a-shipbuilder-saves\"> <tbody> <tr class=\"table_row2\"> <td id=\"a-ship-save-a\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-b\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-c\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-d\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-e\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-f\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-g\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-h\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-i\" class=\"a-shipbuilder-save a-button\"> </td> <td id=\"a-ship-save-j\" class=\"a-shipbuilder-save a-button\"> </td> </tr> </tbody></table><br /><br /><table class=\"a-table\" width=\"95%\" id=\"a-shipbuilder-ships-wrap\"> <tbody> <tr align=\"center\" class=\"table_row0\"> <td>Race</td> <td width=\"30%\">Name</td> <td width=\"10%\">Amount</td> <td>Build Rate</td> <td>Cost</td> <td>PR</td> <td>Stack PR</td> <td>Order</td> </tr> <tr align=\"center\" class=\"table_row0 a-shipbuilder-actionsrow\"> <td class=\"a-revbutton a-shipbuilder-addoneall\" title=\"Click to add one to all build requests\">+1</td> <td width=\"30%\"></td> <td width=\"10%\"></td> <td class=\"a-revbutton a-shipbuilder-addturnall\" title=\"Click to add one turnful to all build requests\">+T</td> <td class=\"a-revbutton a-shipbuilder-removeturnall\" title=\"Click to remove one to all build requests\">-T</td> <td class=\"a-revbutton a-shipbuilder-doubleall\" title=\"Click to double all build requests\">x2</td> <td class=\"a-revbutton a-shipbuilder-clearall\" title=\"Click to clear all build requests\">clear</td> <td class=\"a-revbutton a-shipbuilder-resetorder\" title=\"Click to reset ship order\">reset</td> </tr> </tbody></table><br /><br /><table width=\"95%\" class=\"a-table\" id=\"a-shipbuilder-stacks-wrap\"> <tbody> <tr align=\"center\" class=\"table_row0\"> <td width=\"20%\">Name</td> <td width=\"10%\">To build</td> <td width=\"10%\">In fleet</td> <td>Turns</td> <td>Cost</td> <td>Upkeep</td> <td>Weapon</td> <td>Hull</td> <td>Scanner</td> <td>Power<br> Rating</td> <td id=\"a-shipbuilder-refresh-stacks\" title=\"Refresh\" class=\"a-revbutton\">R</td> </tr> </tbody></table><br /><br /><table width=\"70px\" class=\"a-table a-shipbuilder-submit-wrap\"> <tbody> <tr align=\"center\" class=\"table_row1\"> <td class=\"a-button\" id=\"a-shipbuilder-submit\" title=\"Build the stacks above\">Build all</td> </tr> </tbody></table><br /><br /><table class=\"a-table\" id=\"a-shipbuilder-options\" width=\"100%\"> <tbody> <tr align=\"left\" class=\"table_row0\"> <td> <input type=\"checkbox\" id=\"a-shipbuilder-resetafterbuild\" />Reset form after build </td> </tr> <tr align=\"left\" class=\"table_row0\"> <td> <input type=\"checkbox\" id=\"a-shipbuilder-optimize\" />Optimize requests to minimize upkeep (not implemented yet) </td> </tr> </tbody></table><div id=\"a-shipbuilder-save-infobox\" style=\"display: none;\"><table width=\"100%\"> <tbody> <tr></tr> </tbody></table></div>"); var b = "<tr class=\"table_row1\" id=\"a-shipbuilder-ship-${id}\" sid=\"${id}\"> <td class=\"a-button a-shipbuilder-addone\" title=\"Click to add just one to build request\">${race}</td> <td align=\"left\"><a href=\"i.cfm?f=com_ship2&shiptype=${id}\" class=\"\">${name}</a></td> <td align=\"center\" class=\"a-shipbuilder-input\"><input type=\"text\" style=\"width: 50px;\" /></td> <td align=\"right\" class=\"a-button a-shipbuilder-addturn\" title=\"Click to add a turnful to build request\">${build}</td> <td align=\"right\" class=\"a-button a-shipbuilder-removeturn\" title=\"Click to remove a turnful to build request\">${cost}</td> <td align=\"right\" class=\"a-button a-shipbuilder-double\" title=\"Click to double build request\">${power}</td> <td align=\"right\" class=\"a-button a-shipbuilder-clear a-shipbuilder-stackpower\" title=\"Click to clear build request\">${stack_power}</td> <td align=\"right\" class=\"a-button a-shipbuilder-order\"><input type=\"text\" style=\"width: 50px;\" value=\"${order}\"/></td></tr>"; $.tmpl(b, h).appendTo("#a-shipbuilder-ships-wrap tbody"); var p = []; var q = "<tr class=\"table_row1 a-shipbuilder-stack\" id=\"a-shipbuilder-ship-${id}\"id=\"${id}\"> <td align=\"left\"><a href=\"i.cfm?f=com_ship2&shiptype=${id}\" class=\"\">${name}</a></td> <td align=\"right\">${amount}</td> <td align=\"right\">${existing}</td> <td align=\"right\">${turns}</td> <td align=\"right\">${cost}</td> <td align=\"right\">${upkeep}</td> <td align=\"right\">${weapon}</td> <td align=\"right\">${hull}</td> <td align=\"right\">${scanner}</td> <td align=\"right\">${power}</td> <td align=\"right\" class=\"a-button a-shipbuilder-disbandall\" disbandId=\"${disband}\" disbandAmount=\"${existing}\" title=\"Click to disband this stack\">x</td></tr>"; var j = "<tr class=\"table_row0\" id=\"a-shipbuilder-ship-totals\"> <td align=\"left\">Totals</td> <td align=\"right\">${amount}</td> <td align=\"right\"> </td> <td align=\"right\">${turns}</td> <td align=\"right\">${cost}</td> <td align=\"right\">${upkeep}</td> <td align=\"right\">${weapon}</td> <td align=\"right\">${hull}</td> <td align=\"right\">${scanner}</td> <td align=\"right\">${power}</td> <td align=\"right\"> </td></tr>"; var s = {}; var t = function () { var w = jQuery.extend(true, [], p); w.sort(app.util.sortByPowerDesc); $("#a-shipbuilder-stacks-wrap tbody tr.table_row1, #a-shipbuilder-ship-totals").remove(); $.tmpl(q, w).appendTo("#a-shipbuilder-stacks-wrap tbody"); $("#a-shipbuilder-stacks-wrap td.a-button").hover(function () { $(this).addClass("table_row0").removeClass("table_row1"); }, function () { $(this).removeClass("table_row0").addClass("table_row1"); }); $(".a-shipbuilder-disbandall").click(function () { gc.xhr({ url: "i.cfm?f=com_disband", data: "submitflag=1&" + $(this).attr("disbandId") + "=" + $(this).attr("disbandAmount"), onSuccess: r }); }); s = {}; for (var v = 0; v < p.length; v = v + 1) { if (!p[v]) { continue; } for (var u in p[v]) { if (p[v].hasOwnProperty(u)) { if (!s[u]) { s[u] = 0; } s[u] += p[v][u]; } } } $.tmpl(j, s).appendTo("#a-shipbuilder-stacks-wrap tbody"); }; f = gc.getValue("a-shipbuilder-resetafterbuild") === true ? true : false; $("#a-shipbuilder-resetafterbuild").prop("checked", f); $("#a-shipbuilder-resetafterbuild").click(function () { f = !f; gc.setValue("a-shipbuilder-resetafterbuild", f); }); m = gc.getValue("a-shipbuilder-optimize") === true ? true : false; $("#a-shipbuilder-optimize").prop("checked", m); $("#a-shipbuilder-optimize").click(function () { m = !m; gc.setValue("a-shipbuilder-optimize", m); }); var o = function (y, A) { var w = y.siblings(".a-shipbuilder-input").children().first(); var v = w.val().replace(/\D/, "", "g") * 1; var x = A(v); var u = y.parent().attr("sid"); if (!x && !p[u]) { return; } w.val(x ? x : ""); var z = 0; var B = jQuery.extend(true, {}, d[u]); if (p[u] && p[u].existing) { B.existing = p[u].existing; B.disband = p[u].disband; z = p[u].existing * 1; } if (p[u] && !(x + z)) { delete p[u]; } else { p[u] = B; p[u].amount = x; p[u].turns = Math.ceil(x / B.build); p[u].cost = B.cost * x; p[u].upkeep = B.upkeep * (x + z); p[u].weapon = B.weapon * (x + z); p[u].hull = B.hull * (x + z); p[u].power = B.power * (x + z); p[u].scanner = B.scanner * (x + z); } t(); y.siblings(".a-shipbuilder-stackpower").text(p[u].power); }; $(".a-shipbuilder-addone").click(function () { o($(this), function (u) { return u + 1; }); }); $(".a-shipbuilder-addturn").click(function () { var w = $(this); var v = w.parent().attr("sid"); var u = d[v].build; o(w, function (x) { return x + u; }); }); $(".a-shipbuilder-removeturn").click(function () { var w = $(this); var v = w.parent().attr("sid"); var u = d[v].build; o(w, function (x) { return Math.max(x - u, 0); }); }); $(".a-shipbuilder-double").click(function () { o($(this), function (u) { return u * 2; }); }); $(".a-shipbuilder-clear").click(function () { o($(this), function (u) { return 0; }); }); $(".a-shipbuilder-addoneall").click(function () { $("td.a-shipbuilder-input input").each(function () { var u = $(this).parent().next(); o(u, function (w) { return w + 1; }); }); }); $(".a-shipbuilder-addturnall").click(function () { $("td.a-shipbuilder-input input").each(function () { var w = $(this).parent().next(); var v = w.parent().attr("sid"); var u = d[v].build; o(w, function (x) { return x + u; }); }); }); $(".a-shipbuilder-removeturnall").click(function () { $("td.a-shipbuilder-input input").each(function () { var w = $(this).parent().next(); var v = w.parent().attr("sid"); var u = d[v].build; o(w, function (x) { return Math.max(x - u, 0); }); }); }); $(".a-shipbuilder-doubleall").click(function () { $("td.a-shipbuilder-input input").each(function () { var u = $(this).parent().next(); o(u, function (w) { return w * 2; }); }); }); $(".a-shipbuilder-clearall").click(function () { $("td.a-shipbuilder-input input").each(function () { var u = $(this).parent().next(); o(u, function (w) { return 0; }); }); }); $(".a-shipbuilder-resetorder").click(function () { for (var u = 0; u < d.length; u = u + 1) { if (d[u] && d[u].order) { delete d[u].order; } } gc.setValue("a-allships", JSON.stringify(d)); console.log("Order was reset, please refresh page."); }); $("td.a-shipbuilder-order input").change(function () { var v = $(this).parent(); var u = v.parent().attr("sid"); var w = d[u]; if (w) { w.order = $(this).val(); } }); $("td.a-shipbuilder-input input").change(function () { var u = $(this).parent().next(); o(u, function (w) { return w; }); }); $(".a-shipbuilder-save").each(function () { var v = $(this).attr("id"); var u = gc.getValue(v + "-name"); if (u) { $(this).text(u); } }); $(".a-shipbuilder-save").dblclick(function () { var v = $(this).attr("id"); var u = gc.getValue(v + "-value"); if (u && u !== "[]") { gc.setValue(v + "-value", ""); gc.setValue(v + "-name", ""); $(this).html(" "); } }); $(".a-shipbuilder-save").click(function () { var v; var y = $(this).attr("id"); var x = gc.getValue(y + "-value", "JSON_AS_ARRAY"); if (x.length) { for (v = 0; v < x.length; v = v + 1) { var w = $("#a-shipbuilder-ship-" + x[v].id + " td.a-shipbuilder-input").next(); o(w, function (z) { return x[v].amount; }); } } else { x = []; for (v = 0; v < p.length; v = v + 1) { if (p[v] && p[v].amount) { x.push({ id: v, amount: p[v].amount }); } } if (!x.length) { return; } var u = prompt("Enter a label for this stack preset, 10 characters at most, preferably 7"); if (u) { gc.setValue(y + "-value", JSON.stringify(x)); u = u.substring(0, 10); gc.setValue(y + "-name", u); $(this).text(u); console.log("[Ship builder] A preset " + u + " was created."); } } }); var l = function (A) { var B = $(this).attr("id"); var z = gc.getValue(B + "-value"); if (z && z !== "[]") { $(this).text("paste"); var y = gc.getValue(B + "-value", "JSON_AS_ARRAY"); var v = []; for (var w = 0; w < y.length; w = w + 1) { var u = jQuery.extend(true, {}, d[y[w].id]); u.amount = y[w].amount; u.turns = Math.ceil(y[w].amount / u.build); v.push(u); } v.sort(app.util.sortByPowerDesc); var x = '<tr class="a-shipbuilder-save-body""><td align="left" width="70%">${name}</td><td align="right" width="10%">${amount}</td><td align="right" width="10%">${turns}</td><td align="right" width="10%">${power}</td></tr>'; $("#a-shipbuilder-save-infobox").attr("style", "display: block; top: " + (A.clientY + 15) + "px; left: " + $(this).position().left + 5 + "px;"); $.tmpl(x, v).appendTo("#a-shipbuilder-save-infobox tbody"); } else { if (s.power > 0) { $(this).text("save"); } } }; var i = function () { var w = $(this).attr("id"); var v = gc.getValue(w + "-value"); if (v && v !== "[]") { var u = gc.getValue(w + "-name"); $(this).text(u); $("#a-shipbuilder-save-infobox tr").remove(); $("#a-shipbuilder-save-infobox").hide(); } else { $(this).html(" "); } }; $(".a-shipbuilder-save").hover(l, i); $(".a-shipbuilder-submit-wrap").click(function () { var x = $(this); var v = 0, u, z = 0; for (u = 0; u < p.length; u = u + 1) { if (p[u] && p[u].amount && p[u].id) { v += p[u].turns * 1; z = z + 1; } } var y = function (A) { var B = $("td:contains('You bought ')", A).contents().filter(function () { return this.nodeType === 3 && this.textContent.match("You bought"); }); console.log("[Ship builder] " + B.text()); gc.turns.subtractValue(this.extra.turns); gc.cash.subtractValue(this.extra.cost); z = z - 1; if (f && z === 0) { console.log("Resetting building form"); $("td.a-shipbuilder-input input").each(function () { var C = $(this).parent().next(); o(C, function (D) { return 0; }); }); } if (z === 0) { r(); } }; var w = function (A) { var B = $("b:contains('SHIPS')", A).text(); var C = $("font[color='red'] > b", A).text(); console.error("[Ship builder] " + B + ": " + C); }; if (v > gc.turns.getValue()) { console.log("Not enough turns to build all stacks"); return; } for (u = 0; u < p.length; u = u + 1) { if (p[u] && p[u].amount && p[u].id) { gc.xhr({ extra: p[u], url: "i.cfm?&f=com_ship2&shiptype=" + p[u].id, data: "amount=" + p[u].amount, successCondition: "td:contains('You bought ')", onSuccess: y, onFailure: w }); } } }); r = function () { gc.xhr({ url: "i.cfm?f=com_disband", method: "GET", onSuccess: function (u) { var v; for (v = 0; v < p.length; v = v + 1) { if (p[v]) { p[v].existing = 0; } } $("input[name^='dis']", u).each(function () { var y = $(this); var B = y.attr("name"); var w = $.trim(y.parent().prev().prev().text()); var z = y.parent().next().text().replace(/[^\.\d]/g, ""); var C = 0; for (v = 0; v < d.length; v = v + 1) { if (d[v] && d[v].name === w) { C = v; break; } } var A = jQuery.extend(true, {}, d[C]); var x = 0; if (p[C] && p[C].amount) { x = p[C].amount; } else { p[C] = jQuery.extend(true, {}, d[C]); } p[C].existing = z; p[C].disband = B; p[C].turns = Math.ceil(x / A.build); p[C].cost = A.cost * x; p[C].upkeep = A.upkeep * (x + z); p[C].weapon = A.weapon * (x + z); p[C].hull = A.hull * (x + z); p[C].power = A.power * (x + z); p[C].scanner = A.scanner * (x + z); }); for (v = 0; v < p.length; v = v + 1) { if (p[v] && (!p[v].amount && !p[v].existing)) { delete p[v]; } } t(); } }); }; r(); $("#a-shipbuilder-refresh-stacks").click(r); } }; app.mod.stylehandler = { id: "a-stylehandler", defaultValue: true, title: "CSS tweaks", description: "Adapts game CSS stylesheet.", items: [{ type: "checkbox", id: "a-stylehandler-nobgimage", defaultValue: true, description: "Remove background images from most gc pages." }], filter: function () { if (!gc.getValue("a-stylehandler")) { return false; } return true; }, plugin: function () { if (gc.getValue("a-stylehandler-nobgimage") && gc.isPropertyPage()) { $("body").addClass("no-blue-image"); } } }; app.mod.tabbedpms = { id: "a-tabbedpms", defaultValue: true, title: "Tabbed private messages", description: "When it spots the blinking yellow annoyance it opens a new tab with PM inbox. And more...", items: [{ type: "checkbox", id: "a-tabbedpms-autoopen", defaultValue: true, description: "Jump to new PMs automagically (in new tab each)?" }], filter: function () { if (!gc.getValue("a-tabbedpms")) { return false; } if (gc.location.indexOf("i.cfm") !== -1) { return true; } return false; }, plugin: function () { if ($("td[background*='blink']").length && !gc.location.match(/.*f=pm/)) { gc.openInTab(app.gameServer + "i.cfm?f=pm"); } if (gc.location.match(/.*f=pm$/)) { var a = $("table.table_back[width='80%'] img[src='i/w/pm_n.gif']"); if (a.length) { var c; if (a.length > 1) { c = a.length + " PMs"; } else { c = a.first().parent().siblings().eq(2).text(); } document.title = c; if (gc.getValue("a-tabbedpms-autoopen")) { if (a.length > 1) { a.each(function () { var d = $(this).first().parent().siblings().eq(3).children().first().attr("href"); gc.openInTab(app.gameServer + d); }); } else { var b = a.first().parent().siblings().eq(3).children().first().attr("href"); document.location.href = app.gameServer + b; } } } } else { if (gc.location.match(/.*f=pm/)) { document.title = $.trim($("img[src='i/w/pm_add.gif']").first().parent().parent().text()); } } } }; app.mod.turnticker = { id: "a-turnticker", defaultValue: true, title: "Turn ticker", description: "Updates the turn counts while you wait. Relative to last sync with gc servers (req.: Taiaha).", items: [{ type: "info", text: "It should also spot that you have logged onto another game speed in another tab and notify you (server gets marked with red)." }, { type: "checkbox", id: "a-turnticker-showturns", description: "Show turns in tab titles" }, { type: "checkbox", id: "a-turnticker-showmaxedturns", description: "Show maxed-out turns in tab titles" }], filter: function () { if (!gc.getValue("a-turnticker")) { return false; } return true; }, plugin: function () { var b = new Date().getTime(); window.setInterval(function () { var d = (gc.getValue("a-propertycheck-timestamp") - b) % gc.server.turnRate; if (gc.userName === gc.getGlobalValue("userName")) { $("#a-server-name").removeClass("a-bodybox-red").addClass("bodybox"); } else { $("#a-server-name").removeClass("bodybox").addClass("a-bodybox-red"); } if (gc.turns.getValue() >= gc.turns.max) { return; } if (d < 0) { if (gc.isNewest()) { gc.turns.addValue(1); } if (gc.turns.getValue() < gc.turns.max) { window.setTimeout(function () { if (gc.isNewest()) { gc.turns.addValue(1); } }, (gc.server.turnRate - d)); } } else { window.setTimeout(function () { if (gc.isNewest()) { gc.turns.addValue(1); } }, d); } }, gc.server.turnRate); var a = true; var c = document.title; if (gc.getValue("a-turnticker-showturns")) { document.title = gc.turns.getValue() + " " + c; } window.setInterval(function () { if (gc.getValue("a-turnticker-showturns")) { document.title = gc.turns.getValue() + " " + c; } if (gc.isNewest() === false && gc.userName === gc.getGlobalValue("userName")) { gc.turns.updateEl(); gc.power.updateEl(); gc.food.updateEl(); gc.cash.updateEl(); $("a").each(function () { var d = $(this).attr("href"); if (d) { $(this).attr("href", d.replace(/&\d\d\d\d&/, "&" + gc.getValue("antiReload") + "&")); } }); $("form").each(function () { var d = $(this).attr("action"); if (d) { $(this).attr("action", d.replace(/&\d\d\d\d&/, "&" + gc.getValue("antiReload") + "&")); } }); $("input").each(function () { var d = this.getAttribute("onclick"); if (d) { this.setAttribute("onclick", d.replace(/&\d\d\d\d&/, "&" + gc.getValue("antiReload") + "&")); } }); } if (gc.getValue("a-turnticker-showmaxedturns") && gc.turns.getValue() === gc.turns.max) { if (a) { document.title = gc.turns.getValue() + " " + c; a = false; } else { document.title = (gc.turns.getValue() + "").replace(/./g, "_") + " " + c; a = true; } } }, 1000); } }; (function (a) { a.gc = new app.ModControl({ mods: [app.mod.automatedcapsulelab, app.mod.battlesmarkup, app.mod.chathighlighter, app.mod.clicktocontinue, app.mod.clusterbuilder, app.mod.credits, app.mod.disbandertweaks, app.mod.extramenu, app.mod.fedchat, app.mod.fedpms, app.mod.forumkillfile, app.mod.infratweak, app.mod.researchtweak, app.mod.keybindings, app.mod.markettweaks, app.mod.pagetitles, app.mod.planetplunderer, app.mod.presetbuilder, app.mod.rankingtweaks, app.mod.newbieranking, app.mod.shipbuilder, app.mod.stylehandler, app.mod.tabbedpms, app.mod.turnticker, app.mod.commoncss] }); if (gc.loaded === false) { return; } $("head:first").append('<style type="text/css">.a-bodybox-red{background-image:url(data:image/gif;base64,R0lGODlhMgAyAKEBALAAAP8AAP8AAP8AACH/C05FVFNDQVBFMi4wAwEAAAAh+QQEMgD/ACwAAAAAMgAyAAACM4yPqcvtD6OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofEovGITConBQAh+QQBMgABACwAAAAAMgAyAAACM4SPqcvtD6OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofEovGITConBQA7);border:1px solid #595959;color:#9EDCFE;}.a-bodybox-yellow{background-image:url(data:image/gif;base64,R0lGODlhMgAyAJEAAP//ALCwAP4BAgAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQEMgD/ACwAAAAAMgAyAAACM4SPqcvtD6OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofEovGITConBQAh+QQFMgACACwAAAAAMgAyAAACM4yPqcvtD6OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofEovGITConBQA7);border:1px solid #595959;color:#4f4f00;}.a-hidden{display:none;}.a-separator{height:10px;}.a-table{border-collapse:collapse;border-spacing:0;border-width:0 0 1px 1px;}.a-table td,.a-table th{border-width:1px 1px 0 0;margin:0;padding:1px;}.a-table,.a-table td,.a-table th{border-color:gray;border-style:solid;}#a-about{border:1px solid #595959;text-align:left;margin:5px 5px 20px;padding:4px;}.a-mod{border:1px solid #595959;list-style:none;text-align:left;margin:5px;padding:4px;}.a-mod-item{list-style-type:none;margin-left:5px;margin-top:7px;padding-left:15px;}.a-mod-item li{margin:6px;}.a-mod-item-parts{padding:0;}.a-mod-item-parts li{display:inline;margin:0;}.a-mod-item-parts-submit input{cursor:pointer;margin-left:-20px;vertical-align:middle;}.a-mod-line li{display:inline;}.a-mod-line ul{padding-left:0;margin:0;}.a-mod-submit{cursor:pointer;float:right;}.a-info-wrap{background-color:#383838;width:796px;padding:1px;border:solid 1px yellow;color:white;margin-left:auto;margin-right:auto;margin-top:2px;border-radius:4px 4px 4px 4px;}.a-info-title{font-weight:bold;color:#A4A400;width:100%;padding:3px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAADXCAYAAADFuwsIAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJEwoLKCBHKKsAAALnSURBVGje7dtNaxNBGMDxfxLNgmmtynZ9CV2jNLQVFNQcdE85RTAeBCVnPek938VPkFM+QYkhIItzEm+iqFF8jWlqm4htM9Wqh8zUdUm0Z3l+EJaZzLM7M8/s7dkEf0oAHjANHAD2ARvmtwJsxwdbGeCUCRpnB3gL9GxHylwPAktAmsmSwGFz/WI7UsB8bBZ/cxyYscGeWRsArVbrWhiGN2w7DMMbzWazHLvBCUzQIdtTKpVm8vl8wXGcaaVUYmdn5+fCwkKgtR4EQfBAKfXVDJ0G0ikgZ6fcbrd1r9d7UiwWz3qeN++67pzWelCtVu8tLy/3Y09fT8bXWqvVet1ut23bnU7nZb1eXx2z9lQS0NEepdRN3/cvaK0HWutBLpe7GN2DiO3dbQcIgmAqm80u2alWq9V7WuuB7/uLhUIhmv9tYCthcnvW5rxcLh/OZDIpO9VKpeL2+/1vjUZjEAl+Baza9c6a07UX68CL6AnbBH6aFCT+Efga+MGYgQdM6qbimwO8Az5PejGi0sB+c4i2gS2EEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBD/n3hFcRI4AxxlVBmfBtYYlSE/Bb5OCvaAwASN8w14BDyzHbaKOgtcYXKBvx07BzjAB9uRBq4yKnzei1mzjC92jY79p9Vq3Q7D8I5th2F4p9ls3ord4ByMSqyztqdUKnn5fH7RcRxHKXXX1Okvaa2HQRAcUUqtRfZnKgVcMrtMu93e6PV6L4rF4nnP8465rjurtR6aOv1Psae/S9pAq1arvel2ux3b7nQ6H+v1+tsxa08nGX1rsUspddf3/VNa66HWepjL5U5H9yBiIwnsTicIgiPZbPaknaqp0x/6vn+yUCjMRAI3gbUEo+L26zZV5XL5eCaT2W+nWqlU/H6/P2w0GiuR4IfAc3vCFoHLe8zze+B+9ISt8vv7k8Q/AkPg+7gXwzUzcGP9m8BjzJcBk94qa8qcc8dkY23coF8WkP7lZPMGIgAAAABJRU5ErkJggg==) 777px 5px no-repeat transparent;}.a-info{padding:3px 15px 3px 3px;}.a-info-title:hover{background-position:777px -195px;}.a-loading{background:url(data:image/gif;base64,R0lGODlhDgAOAIQAAAQCBIyOjERCRBweHMzKzBQSFFxaXLSytCwuLGRmZAwKDJyanCQmJBwaHLy6vGxubAQGBJSSlFRSVCQiJPz+/BQWFFxeXLS2tDQyNGxqbAwODAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQIBgAAACwAAAAADgAOAAAFbuAmiso0QeMIVBXQMEwDsYBYwc3NVO9uw4ONprDpNUSQhiyVXFYEmFpqAyjIJAYDYyqETSQWLVfjfSKkqVVDIUxkjiOE4wA3RCIZiEQCuFAoCyISAREJDwQEDwd/ESRYGgGIAQ0LAURTCAcHCFMhACH5BAgGAAAALAAAAAAOAA4AhAQCBISGhERCRCQiJBQSFMzKzGRmZLS2tDQ2NAwKDIyOjFRSVBwaHHRydOTm5Dw+PAQGBIyKjERGRCQmJBQWFGxqbDw6PAwODJSSlFxeXBweHHx6fPz+/AAAAAAAAAAAAAVzYCeKyTBA4whQFMBMEwOxgEjBzD1R727Dms6F0OkxRBCGLJVcJhiEWqoDiRwsA9hl2qlwOI7sZDs1fB3JFheiuHYSDwFxNMBEKCJLJiOAWCwACgUFGyIIewILChgLAYMNSAgICQYYChUUGxVkKQMBAQNTIQAh+QQIBgAAACwAAAAADgAOAAAFceAmiso0QeMIVBXQMEwzLEEhVnCDM9VBUZEbbLDR2C6/hQjSaKBGCMehsVE0CoDUMhNATGAa7UZCIBy+jLCWbGa2xBAuYsN0phqZhHo3ADAmAFwRBkIxGAYWGAkRERIiKw0AAhYGAhoGEk8pFRISFVohACH5BAgGAAAALAAAAAAOAA4AhAQCBISGhERCRCQiJBQSFMzKzGRmZLS2tDQ2NAwKDIyOjFRSVBwaHHRydOTm5Dw+PAQGBIyKjERGRCQmJBQWFGxqbDw6PAwODJSSlFxeXBweHHx6fPz+/AAAAAAAAAAAAAVwYCeKj+NY4whQFHBw3EFt1SVS08REcBQVhcYtx0gYKhAMcCOCMIopjSJA6SQYBECquTBMBjnb1oLBBMATcYpsdra2HUh3EH9CUoTHIzGcaDoXNgIZGSgdODoEORSDGQgiKwwADEQJCAh3WwkDA3wpIQAh+QQIBgAAACwAAAAADgAOAAAFc+AmithxYeNYBMsQEERQSJIiBhR1PHCWRBGJaJFzAGiAX8QgGhwciFQjkShsFI0CICWCYASVCYOh4W4mFoNETDYzDBYJpFHZcgHfymbegKTmFX4bFWMDGxplA2MNIoQMWWMVDYsiAJIAk4+YWmYKExM2KSEAIfkECAYAAAAsAAAAAA4ADgCEBAIEhIaEREJEJCIkFBIUzMrMZGZktLa0NDY0DAoMjI6MVFJUHBocdHJ05ObkPD48BAYEjIqMREZEJCYkFBYUbGpsPDo8DA4MlJKUXF5cHB4cfHp8/P78AAAAAAAAAAAABXFgJ4pDEAzjeDUNVWGYkVgIJDZFES0KtjyZDEK0ySkgNIggaBFRAgqUSvBIdB6HiC3VAVAYEAeHY+B2LpPJQEw2E9IDrNYMIDCsAIZmK0owGABOaRpnFx0MaRQiiBMMbxNfaQwidYCMlgSBXAkDA1YpIQAh+QQIBgAAACwAAAAADgAOAAAFc+AmipUkVeOoSIYmWIYAVRUgSkGUYDDWMAzUxhCJZACMCWAAbIg0iYRQBBk0bIjAA5ISAQoNyIVAkHQ3GuDkQDZ308lshtv9NhSbwcGBSEEaYSILFBQOaBp5QEIBhAcFij8MThsFEQuATQANBTZdEEl4KSEAIfkECAYAAAAsAAAAAA4ADgCEBAIEhIaEREJEJCIkFBIUzMrMZGZktLa0NDY0DAoMjI6MVFJUHBocdHJ05ObkPD48BAYEjIqMREZEJCYkFBYUbGpsPDo8DA4MlJKUXF5cHB4cfHp8/P78AAAAAAAAAAAABXJgJ4rJMEDjCCFWQk0TA1EUICJZ9rwTxcAUkSWzkHQIic4vRnoICCkIQ9YZGBaoVAdAkAUwGIu2c4ENvgqxtjwxXbMpgC9JiWAG0amtsykUFBAGBhAaQCINfgEKHBwKSwwkFRsUB4wHAAwEeykWDg5qIyEAOw==) no-repeat right top;}#a-authentication-token{width:228px;}.no-blue-image{background-image:none;}#a-logappender{float:left;left:10px;overflow:hidden;width:100%;}#a-logappender-wrap{bottom:0;left:0;overflow:auto;position:fixed;width:380px;}.a-battlesmarkup-ship{width:383px!important;list-style:none;padding-left:5px;margin:5px;}.a-battlesmarkup-ship-lost{width:60px!important;color:#faa;}.a-battlesmarkup-ship-amount{width:60px!important;}.a-battlesmarkup-ship-name{width:202px!important;}.a-battlesmarkup-ship-remaining{width:60px!important;color:#afa;}ul.a-battlesmarkup-ship>li{display:inline;float:left;width:50px;}.a-clusterbuilder-button{border:1px solid gray;padding:3px;}#a-credits-text{margin-top:5px;}#a-fedpms-iframe{color:#FFF;filter:alpha(opacity=0);height:0;opacity:0;width:0;}.a-forumkillfile-hidden{display:none;}#a-presetbuilder-wrap{position:fixed;width:300px;}#a-presetbuilder-save-infobox{background-color:#000;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACF0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgMy4w72kx8AAAAQNJREFUeJzt0TENACEAwMDnpWAF96hiRgEd7hQ06Vhz7I+M/3UAN0NiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIk52jsB+O+6+asAAAAASUVORK5CYII=);border:1px solid #C46200;color:#FFF;display:block;filter:alpha(opacity=85);font-size:xx-small;left:5px;opacity:.85;position:fixed;text-align:left;top:5px;width:252px;padding:4px;}#a-presetbuilder-totals-body td{border-top:1px solid #C46200;}#a-presetbuilder-saves td{text-align:center;width:10%;}.a-shipbuilder-actionsrow{font-size:xx-small;height:25px;}.a-rankingtweaks-bloodwar-ally{color:#0f0;}.a-rankingtweaks-bloodwar-enemy{color:red;}.a-rankingtweaks-bloodwar-neutral{color:#00f;}.a-rankingtweaks-fedtag{font-size:x-small;padding-left:3px;}.a-rankingtweaks-statustag{font-size:x-small;font-style:italic;padding-left:3px;}#a-shipbuilder-save-infobox{background-color:#000;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAACF0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgMy4w72kx8AAAAQNJREFUeJzt0TENACEAwMDnpWAF96hiRgEd7hQ06Vhz7I+M/3UAN0NiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIkxJMaQGENiDIk52jsB+O+6+asAAAAASUVORK5CYII=);border:1px solid #C46200;color:#FFF;display:block;filter:alpha(opacity=85);font-size:xx-small;left:5px;opacity:.85;position:fixed;text-align:left;top:5px;width:252px;padding:4px;}#a-shipbuilder-saves td{text-align:center;width:10%;}.a-shipbuilder-actionsrow{font-size:xx-small;height:25px;}.a-property{background-color:#000;border:1px solid #FF0;filter:alpha(opacity=85);height:38px;opacity:.85;position:fixed;margin:2px;padding:2px;}.a-property-close{background-color:#FFF;float:right;font-size:9px;}.a-property-restore{background-color:#FFF;font-size:9px;}</style>'); gc.runMods(); })(window);