Mutik's DotD Script

Fork of ForTheGoodOfAll DotD script with new look and strongly optimized js code

目前为 2015-01-27 提交的版本。查看 最新版本

// ==UserScript==
// @name           Mutik's DotD Script
// @namespace      tag://kongregate
// @description    Fork of ForTheGoodOfAll DotD script with new look and strongly optimized js code
// @author         Mutik
// @version        1.1.25
// @grant          GM_xmlhttpRequest
// @grant          GM_setValue
// @grant          GM_getValue
// @grant          unsafeWindow
// @include        http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons*
// @include        *50.18.191.15/kong/?DO_NOT_SHARE_THIS_LINK*
// @hompage        http://www.dotdraids.pl
// ==/UserScript==



if (window.location.host == "www.kongregate.com") {
    function main() {

        if (typeof GM_setValue == 'undefined') {
            var GM_setValue = function (name, value) {
                localStorage.setItem(name, (typeof value).substring(0, 1) + value);
            };
        }
        if (typeof GM_getValue == 'undefined') {
            var GM_getValue = function (name, dvalue) {
                var value = localStorage.getItem(name);
                if (typeof value != 'string') return dvalue;
                else {
                    var type = value.substring(0, 1);
                    value = value.substring(1);
                    if (type == 'b') return (value == 'true');
                    else if (type == 'n') return Number(value);
                    else return value;
                }
            };
        }
        //if (typeof GM_deleteValue == 'undefined') var GM_deleteValue = function(name) { localStorage.removeItem(name) };

        window.FPX = {
            LandBasePrices: [4000, 15000, 25000, 50000, 75000, 110000, 300000, 600000, 1200000],
            LandBaseIncome: [100, 300, 400, 700, 900, 1200, 2700, 4500, 8000],
            LandCostRatio: function (owned) {
                var landCosts = [4000, 15000, 25000, 50000, 75000, 110000, 300000, 600000, 1200000];
                var icr = [1, 1, 1, 1, 1, 1, 1, 1, 1];
                /*Income/Cost ratio*/
                var i = 9;
                while (i--) {
                    landCosts[i] += FPX.LandBasePrices[i] * owned[i] / 10;
                    icr[i] = FPX.LandBaseIncome[i] / landCosts[i];
                }
                return icr;
            }
        };
        window.timeSince = function (date, after) {
            if (typeof date === 'number') date = new Date(date);
            var seconds = Math.abs(Math.floor((new Date().getTime() - date.getTime()) / 1000));
            var interval = Math.floor(seconds / 31536000);
            var pretext = 'about ', posttext = after ? ' left' : ' ago';
            if (interval >= 1) return pretext + interval + ' year' + (interval == 1 ? '' : 's') + posttext;
            interval = Math.floor(seconds / 2592000);
            if (interval >= 1) return pretext + interval + ' month' + (interval == 1 ? '' : 's') + posttext;
            interval = Math.floor(seconds / 86400);
            if (interval >= 1) return pretext + interval + ' day' + (interval == 1 ? '' : 's') + posttext;
            interval = Math.floor(seconds / 3600);
            if (interval >= 1) return pretext + interval + ' hour' + (interval == 1 ? '' : 's') + posttext;
            interval = Math.floor(seconds / 60);
            if (interval >= 1) return interval + ' minute' + (interval == 1 ? '' : 's') + posttext;
            return Math.floor(seconds) + ' second' + (seconds == 1 ? '' : 's') + posttext;
        };
        window.isNumber = function (n) {
            return !isNaN(parseFloat(n)) && isFinite(n);
        };
        window.SRDotDX = {
            version: { major: "1.1.25", minor: 'Mutik\'s mod' },
            util: {
                getChatNumber: function () {
                    var cont = document.getElementsByClassName('chat_room_template'), ele;
                    for (var i = 0; i < cont.length; i++) {
                        ele = cont[i].getAttribute('style');
                        if (ele == null || ele == '') return i;
                    }
                    return 1;
                },
                getQueryVariable: function (v, s) {
                    var query = String(s || window.location.search.substring(1));
                    if (query.indexOf('?') > -1) query = query.substring(query.indexOf('?') + 1);
                    var vars = query.split('&');
                    var i = vars.length;
                    while(i--) {
                        var pair = vars[i].split('=');
                        if (decodeURIComponent(pair[0]) == v) return decodeURIComponent(pair[1]);
                    }
                    return '';
                },
                getRaidFromUrl: function (url) {
                    var r = {id: 0, boss: '', hash: '', diff: 0, sid: 1}, cnt = 0, i;

                    var reg = /[?&]([^=]+)=([^?&]+)/ig, p = url.replace(/&amp;/gi, '&').replace(/kv_&/gi, '&kv_').replace(/http:?/gi, '');
                    while ((i = reg.exec(p)) != null) {
                        switch (i[1]) {
                            case 'kv_raid_id':
                            case 'raid_id': r.id = parseInt(i[2]); cnt++; break;
                            case 'kv_difficulty':
                            case 'difficulty': r.diff = parseInt(i[2]); cnt++; break;
                            case 'kv_raid_boss':
                            case 'raid_boss': r.boss = i[2]; cnt++; break;
                            case 'kv_hash':
                            case 'hash': r.hash = i[2]; cnt++; break;
                            case 'kv_serverid':
                            case 'serverid': r.sid = parseInt(i[2]); cnt++; break;
                        }
                    }
                    if (cnt < 4) return null;

                    return r;
                },
                getGameRoomNumber: function() {
                    if(typeof holodeck == 'object' && typeof holodeck.chatWindow == 'function') return parseInt(holodeck.chatWindow()._rooms_by_type.game._room.name.slice(-2));
                    //var rooms = document.getElementsByClassName('room_name'), i = rooms.length;
                    //while(i--) if(!rooms[i-1].innerHTML.indexOf('Dawn of the Dragons')) return parseInt(rooms[i-1].innerHTML.slice(-2));
                    return 0;
                },
                getShortNum: function (num) {
                    if (isNaN(num) || num < 0) return num;
                    if (num >= 1000000000000) return (num / 1000000000000).toPrecision(4) + 't';
                    if (num >= 1000000000) return (num / 1000000000).toPrecision(4) + 'b';
                    if (num >= 1000000) return (num / 1000000).toPrecision(4) + 'm';
                    if (num >= 1000) return (num / 1000).toPrecision(4) + 'k';
                    return num + ''
                },
                getShortNumMil: function (num) {
                    if (isNaN(num) || num < 0) return num;
                    if (num >= 1000000) return (num / 1000000).toPrecision(4) + 't';
                    if (num >= 1000) return (num / 1000).toPrecision(4) + 'b';
                    return num.toPrecision(4) + 'm'
                },
                objToUriString: function (obj) {
                    if (typeof obj == 'object') {
                        var str = '';
                        for (var i in obj) str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]) + '&';
                        str = str.substring(0, str.length - 1);
                        return str
                    }
                    return '';
                },
                extEcho: function (msg) {
                    var cn = SRDotDX.util.getChatNumber();
                    var cw = document.getElementsByClassName('chat_message_window')[cn];
                    var p = cw.getElementsByTagName('p');
                    var m;
                    if(p.length > 0 && p[p.length-1].className.indexOf('script') >= 0) {
                        m = p[p.length-1].getElementsByClassName('message')[0];
                        m.innerHTML = m.innerHTML + '<hr>' + msg;
                    }
                    else {
                        m = SRDotDX.gui.cHTML('div').ele();
                        var mi = SRDotDX.gui.cHTML('div').attach('to',m).ele();
                        var mi2 = SRDotDX.gui.cHTML('p').set({class: 'script'}).attach('to',mi).ele();
                        SRDotDX.gui.cHTML('span').set({class: 'username DotDeXtension'}).html("DotDeXtension",true).attach('to',mi2);
                        SRDotDX.gui.cHTML('span').set({class: 'separator'}).html(": ",true).attach('to',mi2);
                        SRDotDX.gui.cHTML('span').set({class: 'message', name: 'SRDotDX_DotDeXtension'}).html('<br>'+msg,true).attach('to',mi2);
                        SRDotDX.gui.cHTML('span').set({class: 'clear'}).attach('to',mi2);
                        var div = cw.lastChild;
                        if(div) div.appendChild(mi);
                        else cw.appendChild(m);
                    }
                    setTimeout(SRDotDX.gui.scrollChat, 100, cn);
                },
                serialize: function (obj) {
                    var str = [];
                    for (var p in obj) if (obj[p] != null)str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                    return str.join("&");
                },
                stringFormat: function () {
                    var s = arguments[0];
                    for (var i = 0; i < arguments.length - 1; i++) {
                        var reg = new RegExp("\\{" + i + "\\}", "gm");
                        s = s.replace(reg, arguments[i + 1]);
                    }
                    return s;
                }
            },
            config: (function () {
                var tmp, reqSave = false;
                try {
                    tmp = JSON.parse(GM_getValue('SRDotDX', '{}'));
                    //tmp
                }
                catch (e) {
                    tmp = {};
                    reqSave = true
                }
                //Raids tab vars

                tmp.filterSearchStringR = typeof tmp.filterSearchStringR == 'string' ? tmp.filterSearchStringR : '';
                tmp.fltIncVis = typeof tmp.fltIncVis == 'boolean' ? tmp.fltIncVis : false;
                tmp.fltShowNuked = typeof tmp.fltShowNuked == 'boolean' ? tmp.fltShowNuked : false;
                tmp.fltShowAll = typeof tmp.fltShowAll == 'boolean' ? tmp.fltShowAll : false;

                //Options tab vars
                tmp.importFiltered = typeof tmp.importFiltered == 'boolean' ? tmp.importFiltered : true;
                tmp.hideRaidLinks = typeof tmp.hideRaidLinks == 'boolean' ? tmp.hideRaidLinks : false;
                tmp.hideBotLinks = typeof tmp.hideBotLinks == 'boolean' ? tmp.hideBotLinks : false;
                tmp.hideVisitedRaids = typeof tmp.hideVisitedRaids == 'boolean' ? tmp.hideVisitedRaids : false;
                tmp.hideVisitedRaidsInRaidList = typeof tmp.hideVisitedRaidsInRaidList == 'boolean' ? tmp.hideVisitedRaidsInRaidList : false;
                tmp.markMyRaidsVisted = typeof tmp.markMyRaidsVisted == 'boolean' ? tmp.markMyRaidsVisted : false;
                tmp.markImportedVisited = typeof tmp.markImportedVisited == 'boolean' ? tmp.markImportedVisited : false;
                tmp.FPXLandOwnedCount = typeof tmp.FPXLandOwnedCount == 'object' ? tmp.FPXLandOwnedCount : [0, 0, 0, 0, 0, 0, 0, 0, 0];
                tmp.prettyPost = typeof tmp.prettyPost == 'boolean' ? tmp.prettyPost : false;
                tmp.useMaxRaidCount = typeof tmp.useMaxRaidCount == 'boolean' ? tmp.useMaxRaidCount : false;
                tmp.maxRaidCount = !(typeof tmp.maxRaidCount === 'undefined') ? tmp.maxRaidCount : 3000;
                tmp.autoImportPaste = typeof tmp.autoImportPaste == 'boolean' ? tmp.autoImportPaste : false;
                tmp.confirmForLargePaste = typeof tmp.confirmForLargePaste == 'boolean' && tmp.confirmPasteSize ? tmp.confirmForLargePaste : false;
                tmp.confirmPasteSize = typeof tmp.confirmPasteSize == 'number' ? tmp.confirmPasteSize : 1000;
                tmp.showStatusOverlay = typeof tmp.showStatusOverlay == 'boolean' ? tmp.showStatusOverlay : false;
                tmp.confirmDeletes = typeof tmp.confirmDeletes == 'boolean' ? tmp.confirmDeletes : true;
                tmp.autoPostPaste = typeof tmp.autoPostPaste == 'boolean' ? tmp.autoPostPaste : false;
                tmp.whisperTo = typeof tmp.whisperTo == 'string' ? tmp.whisperTo : '';
                tmp.formatLinkOutput = typeof tmp.formatLinkOutput == 'boolean' ? tmp.formatLinkOutput : false;
                tmp.linkShowFs = typeof tmp.linkShowFs == 'boolean' ? tmp.linkShowFs : false;
                tmp.linkShowAp = typeof tmp.linkShowAp == 'boolean' ? tmp.linkShowAp : false;
                tmp.unvisitedRaidPruningMode = typeof tmp.unvisitedRaidPruningMode == 'number' ? tmp.unvisitedRaidPruningMode : 1;
                tmp.selectedRaids = typeof tmp.selectedRaids == 'string' ? tmp.selectedRaids : '';
                tmp.pastebinUrl = typeof tmp.pastebinUrl == 'string' ? tmp.pastebinUrl : '';
                tmp.bckColor = typeof tmp.bckColor == 'string' ? tmp.bckColor : 'fff';
                tmp.lastImported = typeof tmp.lastImported == 'number' ? tmp.lastImported : (new Date().getTime() - 1728000000);
                tmp.hideKongForum = typeof tmp.hideKongForum == 'boolean' ? tmp.hideKongForum : false;
                tmp.hideGameDetails = typeof tmp.hideGameDetails == 'boolean' ? tmp.hideGameDetails : false;
                tmp.hideGameTitle = typeof tmp.hideGameTitle == 'boolean' ? tmp.hideGameTitle : true;
                tmp.chatFilterString = typeof tmp.chatFilterString == 'string' ? tmp.chatFilterString : '';
                tmp.filterSearchStringC = typeof tmp.filterSearchStringC == 'string' ? tmp.filterSearchStringC : '';
                tmp.chatSize = typeof tmp.chatSize == 'number' ? tmp.chatSize : 300;
                tmp.sbEnable = typeof tmp.sbEnable == 'boolean' ? tmp.sbEnable : true;
                tmp.sbSlim = typeof tmp.sbSlim == 'boolean' ? tmp.sbSlim : false;
                //tmp.cbDisable = typeof tmp.cbDisable == 'boolean' ? tmp.cbDisable : true;
                tmp.sbRightSide = typeof tmp.sbRightSide == 'boolean' ? tmp.sbRightSide : false;
                tmp.kongUser = typeof tmp.kongUser == 'string' ? tmp.kongUser : 'Guest';
                tmp.kongAuth = typeof tmp.kongAuth == 'string' ? tmp.kongAuth : '0';
                tmp.kongId = typeof tmp.kongId == 'string' ? tmp.kongId : '0';
                tmp.kongMsg = typeof tmp.kongMsg == 'boolean' ? tmp.kongMsg : false;
                tmp.hideGameTab = typeof tmp.hideGameTab == 'boolean' ? tmp.hideGameTab : false;
                tmp.hideAccTab = typeof tmp.hideAccTab == 'boolean' ? tmp.hideAccTab : false;
                tmp.dotdxTabName = typeof tmp.dotdxTabName == 'string' ? tmp.dotdxTabName : 'Raids';
                tmp.themeNum = typeof tmp.themeNum == 'number' ? tmp.themeNum : 1;
                tmp.fontNum = typeof tmp.fontNum == 'number' ? tmp.fontNum : 0;
                tmp.ignMode = typeof tmp.ignMode == 'number' ? tmp.ignMode : 1;
                tmp.hideScrollBar = typeof tmp.hideScrollBar == 'boolean' ? tmp.hideScrollBar : false;
                tmp.hideWChat = typeof tmp.hideWChat == 'boolean' ? tmp.hideWChat : false;
                tmp.leftWChat = typeof tmp.leftWChat == 'boolean' ? tmp.leftWChat : false;
                tmp.removeWChat = typeof tmp.removeWChat == 'boolean' ? tmp.removeWChat : false;
                tmp.filterChatLinks = typeof tmp.filterChatLinks == 'boolean' ? tmp.filterChatLinks : true;
                tmp.filterRaidList = typeof tmp.filterRaidList == 'boolean' ? tmp.filterRaidList : false;
                tmp.newRaidsAtTopOfList = typeof tmp.newRaidsAtTopOfList == 'boolean' ? tmp.newRaidsAtTopOfList : false;
                tmp.serverMode = typeof tmp.serverMode == 'number' ? tmp.serverMode : 1;
                tmp.sbConfig = typeof tmp.sbConfig == 'object' ? tmp.sbConfig : [
                    {"type": "label", "name": "Camps"},
                    {"type": "btn", "name": "GoC", "cmd": "/camp goc"},
                    {"type": "btn", "name": "MaM", "cmd": "/camp mam"},
                    {"type": "btn", "name": "GD", "cmd": "/camp gd"},
                    {"type": "label", "name": "Tiers"},
                    {"type": "btn", "name": "Bella", "cmd": "/raid bella"},
                    {"type": "btn", "name": "Xerk", "cmd": "/raid xerkara"},
                    {"type": "btn", "name": "Tisi", "cmd": "/raid tisi"},
                    {"type": "label", "name": "Join"},
                    {"type": "btn", "name": "Farms", "cmd": "SRDotDX.gui.quickImportAndJoin(\'farm:nnm\')"},
                    {"type": "label", "name": "Utils"},
                    {"type": "btn", "color": "g", "name": "(Re)Load", "sname": "Reld", "cmd": "SRDotDX.reload()"},
                    {"type": "btn", "color": "r", "name": "Unload", "sname": "Kill", "cmd": "/kill"},
                    {"type": "btn", "name": "Room 1", "sname": "CR1", "cmd": "SRDotDX.gui.gotoRoom(1)"},
                    {"type": "btn", "name": "Room 2", "sname": "CR2", "cmd": "SRDotDX.gui.gotoRoom(2)"},
                    {"type": "btn", "name": "Room 8", "sname": "CR8", "cmd": "SRDotDX.gui.gotoRoom(8)"},
                    {"type": "label", "name": "Sheets", "sname": "Help"},
                    {"type": "btn", "name": "Magic", "sname": "Mag", "cmd": "https://docs.google.com/spreadsheets/d/1O0eVSnzlACP9XJDq0VN4kN51ESUusec3-gD4dKPHRNU"},
                    {"type": "btn", "name": "Mount", "sname": "Mnt", "cmd": "https://docs.google.com/spreadsheet/ccc?key=0AiSpM5yAo8atdER2NEhHY3VjckRhdWctWV8yampQZUE"},
                    {"type": "btn", "name": "Gear", "cmd": "https://docs.google.com/spreadsheet/lv?key=0AvP2qXrWcHBxdHpXZkUzTHNGNkVWbjE5c2VEZUNNMUE"},
                    {"type": "label", "name": "Raids"},
                    {"type": "jtxt"},
                    {"type": "btn", "color": "g", "name": "Join", "cmd": "SRDotDX.gui.joinSelectedRaids(true)"},
                    {"type": "btn", "color": "b", "name": "Import", "sname": "Imp", "cmd": "SRDotDX.gui.importFromServer()"},
                    {"type": "btn", "color": "y", "name": "RaidBot", "sname": "Bot", "cmd": "SRDotDX.gui.switchBot()"}
                ];

                if (typeof tmp.mutedUsers != 'object') tmp.mutedUsers = {};
                if (typeof tmp.ignUsers != 'object') tmp.ignUsers = {};
                if (typeof tmp.friendUsers != 'object') tmp.friendUsers = {};
                if (typeof tmp.raidList != 'object') tmp.raidList = {};
                if (typeof tmp.filters !== 'object') tmp.filters = [
                    {},
                    {}
                ];
                if (typeof tmp.lastFilter != 'object') {
                    tmp.lastFilter = typeof tmp.lastFilter == 'string' ? [tmp.lastFilter, tmp.lastFilter] : ["", ""];
                }
                if (tmp.filters.length != 2) {
                    var tmpFlt = [tmp.filters, tmp.filters];
                    tmp.filters = tmpFlt;
                }
                if (tmp.lastImported > (new Date().getTime())) tmp.lastImported = (new Date().getTime() - 1728000000);

                if (reqSave) GM_setValue('SRDotDX', JSON.stringify(tmp));

                // Delete expired raids
                for (var id in tmp.raidList) {
                    if (tmp.raidList.hasOwnProperty(id)) {
                        tmp.raidList[id].timeLeft = function () {
                            return this.expTime - parseInt(new Date().getTime() / 1000)
                        };
                        if (tmp.raidList[id].timeLeft() < 0) delete tmp.raidList[id];
                        else {
                            if (typeof tmp.raidList[id].magic == "undefined") tmp.raidList[id].magic = [0, 0, 0, 0, 0, 0];
                            if (typeof tmp.raidList[id].hp == "undefined") tmp.raidList[id].hp = 1.0;
                            if (typeof tmp.raidList[id].sid == "undefined") tmp.raidList[id].sid = 1;
                        }
                    }
                }

                tmp.addRaid = function (hash, id, boss, diff, sid, visited, user, ts, room, magic, hp) {
                    if ((/ /).test(user)) {
                        var reg = new RegExp('[0-9]+|[0-9a-zA-Z_]+', 'g');
                        room = reg.exec(user);
                        user = reg.exec(user);
                    }
                    if (typeof SRDotDX.config.raidList[id] != 'object') {
                        var tStamp = typeof ts == 'undefined' || ts == null ? parseInt(new Date().getTime() / 1000) : parseInt(ts);
                        SRDotDX.config.raidList[id] = {
                            hash: hash, id: id, boss: boss, diff: diff, sid: sid, visited: visited, nuked: false, user: user, lastUser: user, timeStamp: tStamp,
                            expTime: (typeof SRDotDX.raids[boss] == 'object' ? SRDotDX.raids[boss].duration : 96) * 3600 + tStamp,
                            timeLeft: function () {
                                return this.expTime - parseInt(new Date().getTime() / 1000)
                            },
                            room: typeof room == 'undefined' || room == null ? SRDotDX.util.getGameRoomNumber() : parseInt(room),
                            magic: typeof magic == 'undefined' || magic == null ? [0, 0, 0, 0, 0, 0] : magic,
                            hp: typeof hp == 'undefined' || hp == null ? 1.0 : parseFloat(hp)};
                        SRDotDX.gui.addRaid(id);
                    }
                    SRDotDX.config.raidList[id].lastUser = user;
                    return SRDotDX.config.raidList[id]
                };
                tmp.getRaid = function (id) {
                    if (typeof SRDotDX.config.raidList[id] == 'object') {
                        if (SRDotDX.config.raidList[id].timeLeft() > 1) return SRDotDX.config.raidList[id];
                        delete SRDotDX.config.raidList[id];
                    }
                    return false
                };
                tmp.setFilter = function (raidid, diff, val) {
                    SRDotDX.config.filters[SRDotDX.config.serverMode - 1][raidid][diff] = val
                };
                tmp.save = function (b) {
                    b = typeof b == 'undefined' ? true : b;
                    GM_setValue('SRDotDX', JSON.stringify(SRDotDX.config));
                    if (b) setTimeout(SRDotDX.config.save, 60000, true);
                    else console.log('[DotDX] Manual config save invoked');
                };
                tmp.extSave = function(){SRDotDX.gframe('dotdx.save#'+JSON.stringify({'removeWChat':SRDotDX.config.removeWChat,'leftWChat':SRDotDX.config.leftWChat,'hideWChat':SRDotDX.config.hideWChat}));};
                return tmp;
            })(),
            request: {
                importLock: false,
                joinAfterImport: false,
                fromChat: false,
                quickBtnLock: true,
                filterSearchStringT: "",
                raids: function (isinit, hours) {
                    if (!SRDotDX.gui.joining) {
                        var secs = 15 - parseInt((new Date().getTime() - SRDotDX.config.lastImported) / 1000);
                        if (secs > 0) {
                            SRDotDX.util.extEcho("You can import again in " + secs + " seconds.");
                            return
                        }
                        console.log("[DotDX] Importing raids from raids server ...");
                        if (!isinit)    this.initialize("Requesting raids");
                        else SRDotDX.request.tries++;
                        var h = hours ? ('&h=' + hours) : '';
                        SRDotDX.request.req({
                            eventName: "dotd.getraids",
                            url: "http://mutik.erley.org/download.php?u=" + SRDotDX.config.kongUser + h,
                            method: "GET",
                            headers: {"Content-Type": "application/JSON"},
                            timeout: 30000
                        });
                    }
                },
                poster: function (isinit) {
                    var txt = document.getElementById('DotDX_checkRaidPoster').value, id;
                    if (txt.length < 1) return;
                    if (isNaN(txt)) {
                        var r = SRDotDX.util.getRaidFromUrl(txt);
                        if (r === null) return;
                        id = r.id;
                    }
                    else id = parseInt(txt);
                    console.log("[DotDX] Requesting raid poster info from server...");
                    if (!isinit)    this.initialize("Requesting raid poster data");
                    else SRDotDX.request.tries++;
                    SRDotDX.request.req({
                        eventName: "dotd.getposter",
                        url: "http://mutik.erley.org/getposter.php?i=" + id,
                        method: "GET",
                        headers: {"Content-Type": "application/JSON"},
                        timeout: 30000
                    });
                },
                initialize: function (str) {
                    SRDotDX.gui.doStatusOutput(str + "...", 3000, true);
                    SRDotDX.request.tries = 0;
                    SRDotDX.request.seconds = 0;
                    SRDotDX.request.complete = false;
                    SRDotDX.request.timer = setTimeout(SRDotDX.request.tick, 1000, str);
                },
                tick: function (str) {
                    if (!SRDotDX.request.complete) {
                        if (SRDotDX.request.seconds > 25) {
                            SRDotDX.gui.doStatusOutput("Request failed.", 3000, true);
                            return;
                        }
                        SRDotDX.request.seconds++;
                        SRDotDX.gui.doStatusOutput(str + " (" + SRDotDX.request.seconds + ")...", 1500, true);
                        SRDotDX.request.timer = setTimeout(SRDotDX.request.tick, 1000, str);
                    }
                },
                complete: false,
                seconds: 0,
                timer: null,
                tries: 0,
                req: function (param) {
                    var a = document.createEvent("MessageEvent");
                    if (a.initMessageEvent) a.initMessageEvent("dotd.req", false, false, JSON.stringify(param), document.location.protocol + "//" + document.location.hostname, 0, window, null);
                    else a = new MessageEvent("dotd.req", {"origin": document.location.protocol + "//" + document.location.hostname, "lastEventId": 0, "source": window, "data": JSON.stringify(param)});
                    document.dispatchEvent(a);
                },
                pasteImport: function (url, isinit) {
                    if (!isinit) this.initialize("Importing PasteBin");
                    var pb = url.split('com/')[1];
                    SRDotDX.request.req({
                        eventName: "dotd.importpb",
                        url: 'http://pastebin.com/raw.php?i=' + pb,
                        method: "GET",
                        timeout: 30000
                    });
                },
                init: function () {
                    document.addEventListener("dotd.joinraid", SRDotDX.request.joinRaidResponse, false);
                    document.addEventListener("dotd.importpb", SRDotDX.request.pbResponse, false);
                    document.addEventListener("dotd.getraids", SRDotDX.request.addRaids, false);
                    document.addEventListener("dotd.getposter", SRDotDX.request.getPoster, false);
                    delete this.init;
                },
                joinRaid: function (r) {
                    if (typeof r == 'object') {
                        if (!SRDotDX.gui.joining) SRDotDX.request.initialize("Joining " + (!SRDotDX.raids[r.boss] ? r.boss.capitalize().replace(/_/g, ' ') : SRDotDX.raids[r.boss].shortname));
                        var joinData = 'kongregate_username=' + SRDotDX.config.kongUser + '&kongregate_user_id=' + SRDotDX.config.kongId + '&kongregate_game_auth_token=' + SRDotDX.config.kongAuth;
                        SRDotDX.request.req({
                            eventName: "dotd.joinraid",
                            url: SRDotDX.util.stringFormat('http://50.18.191.15/kong/raidjoin.php?' + joinData + '&kv_action_type=raidhelp&kv_raid_id={0}&kv_hash={1}&serverid={2}', r.id, r.hash, r.sid),
                            method: "GET",
                            timeout: 30000
                        });
                    }
                },
                getPoster: function (e) {
                    var r, data = JSON.parse(e.data);
                    if (data.status != 200) {
                        if (SRDotDX.request.tries >= 3) {
                            SRDotDX.request.complete = true;
                            SRDotDX.gui.doStatusOutput("Raids server busy. Please try again in a moment.");
                            console.log('[DotDX] Raids request failed (url: ' + data.url + ')');
                            console.log(JSON.stringify(data));
                        } else {
                            console.log("[DotDX] Raids server unresponsive (status " + data.status + "). Trying again, " + SRDotDX.request.tries + " tries.");
                        }
                        return;
                    }
                    SRDotDX.request.complete = true;
                    try {
                        r = JSON.parse(data.responseText)
                    }
                    catch (ex) {
                        console.log("[DotDX] Checking raid poster request error");
                        console.log('[DotDX] responseText: ' + data.responseText);
                        return;
                    }
                    document.getElementById('DotDX_whoPosted_Raid').innerHTML = r.r;
                    document.getElementById('DotDX_whoPosted_Time').innerHTML = new Date(r.t * 1000).toLocaleString();
                    document.getElementById('DotDX_whoPosted_Poster').innerHTML = r.p;
                },
                addRaids: function (e) {
                    var r, data = JSON.parse(e.data);
                    if (data.status != 200) {
                        if (SRDotDX.request.tries >= 3) {
                            SRDotDX.request.complete = true;
                            SRDotDX.gui.doStatusOutput("Raids server busy. Please try again in a moment.");
                            console.log('[DotDX] Raids request failed (url: ' + data.url + ')');
                            console.log(JSON.stringify(data));
                        } else {
                            console.log("[DotDX] Raids server unresponsive (status " + data.status + "). Trying again, " + SRDotDX.request.tries + " tries.");
                        }
                        return;
                    }
                    SRDotDX.request.complete = true;
                    try {
                        r = JSON.parse(data.responseText)
                    }
                    catch (ex) {
                        console.log("[DotDX] Raids importing error or no raids imported");
                        console.log('[DotDX] responseText: ' + data.responseText);
                        return;
                    }
                    SRDotDX.gui.doStatusOutput("Importing " + r.raids.length + " raids...");
                    var raid, j = r.raids.length, n = 0, t = 0;
                    var swt = !SRDotDX.config.importFiltered, filter = SRDotDX.gui.cHTML('#DotDX_filters').ele().innerHTML;
                    while (j--) {
                        raid = r.raids[j];
                        if (swt || filter.indexOf('fltList_' + raid.b + '_' + (raid.d - 1)) < 0) {
                            t++;
                            if (!SRDotDX.config.getRaid(raid.i)) {
                                n++;
                                SRDotDX.config.addRaid(raid.h, parseInt(raid.i), raid.b, parseInt(raid.d), parseInt(raid.s), false, raid.p, raid.t, raid.r, raid.m.split("_").map(function (x) {
                                    return parseInt(x)
                                }), parseFloat(raid.hp));
                            }
                            else {
                                SRDotDX.config.raidList[raid.i].magic = raid.m.split("_").map(function (x) {
                                    return parseInt(x)
                                });
                                SRDotDX.config.raidList[raid.i].hp = parseFloat(raid.hp);
                            }
                        }
                    }
                    console.log('[DotDX] Import raids from server complete');
                    var id = r.prune.length > 3 ? r.prune.split("_") : [];
                    j = id.length;
                    var d = 0;
                    //clean chat
                    var chat = document.getElementsByClassName('chat_message_window'), p, i;
                    for (var c = 0; c < chat.length; c++) {
                        p = chat[c].getElementsByClassName('SRDotDX_raid'); i = p.length;
                        while(i--) if(r.prune.indexOf((/DotDX_raidId_(\d+)/).exec(p[i].className)[1]) > -1) p[i].parentNode.removeChild(p[i]);
                    }
                    //clean db
                    while (j--) {
                        if (SRDotDX.config.raidList[id[j]]) delete SRDotDX.config.raidList[id[j]];
                        d++;
                    }
                    console.log('[DotDX] Pruning dead raids from server complete');
                    SRDotDX.gui.selectRaidsToJoin('import response');
                    SRDotDX.config.lastImported = new Date().getTime();
                    SRDotDX.util.extEcho('Imported ' + t + ' raids, ' + n + ' new, ' + d + ' pruned.');
                    if (SRDotDX.request.joinAfterImport) {
                        SRDotDX.gui.selectRaidsToJoin();
                        SRDotDX.gui.joinSelectedRaids(false)
                    }
                    SRDotDX.gui.doStatusOutput('Imported ' + n + ' new raids, ' + d + ' pruned.', 5000, true);
                },
                pbResponse: function (e) {
                    var data = JSON.parse(e.data);
                    if (data && data.responseText && data.url) {
                        SRDotDX.request.complete = true;
                        if (/raw/.test(data.url)) {
                            SRDotDX.gui.importingPastebin = true;
                            var r = data.responseText.split('|'), pbid = data.url.split('=')[1], u, i = 0;
                            if (/\|/.test(data.responseText)) {
                                u = r[1];
                                r = r[3];
                            } else {
                                u = 'Unknown';
                                r = r[0];
                            }
                            SRDotDX.gui.Importing = true;
                            var total = Object.keys(SRDotDX.config.raidList).length;
                            r = r.split(',');
                            while (i < r.length) SRDotDX.getRaidDetails(r[i], u, SRDotDX.config.markImportedVisited), i++;
                            var diff = Object.keys(SRDotDX.config.raidList).length - total;
                            SRDotDX.gui.doStatusOutput('Import complete, ' + diff + ' of ' + i + ' new raids');
                            var pbtot = i;
                            SRDotDX.gui.Importing = false;
                            var els = document.getElementsByClassName("pb_" + pbid);
                            if (els.length > 0) {
                                if (pbtot == 0) {
                                    i = 0;
                                    while (i < els.length) els[i].innerHTML = '(<a href="" onClick="return false;" onMouseDown="SRDotDX.request.pasteImport(\'http://pastebin.com/' + pbid + '\',false)">Import</a>)', i++
                                }
                                else {
                                    i = 0;
                                    while (i < els.length) els[i].innerHTML = '(Imported, ' + diff + ' new)', i++
                                }
                            }
                            setTimeout(SRDotDX.config.save, 1000, false);
                            SRDotDX.gui.importingPastebin = false;
                            console.log('[DotDX] Pastebin import complete (url: ' + data.url + ')');
                        }
                    }
                },
                joinRaidResponse: function (e) {
                    var data = JSON.parse(e.data);
                    if (data && data.responseText && data.url) {
                        SRDotDX.request.complete = true;
                        var raidid = SRDotDX.util.getQueryVariable('kv_raid_id', data.url);
                        SRDotDX.gui.joinRaidComplete++;
                        var status = '', statustxt = '';
                        if (typeof SRDotDX.config.raidList[raidid] == 'object') {
                            SRDotDX.config.raidList[raidid].visited = true;
                            SRDotDX.gui.toggleRaid('visited', raidid, true);
                            SRDotDX.gui.raidListItemUpdate(raidid);
                            if (/successfully (re-)?joined/i.test(data.responseText)) {
                                SRDotDX.gui.joinRaidSuccessful++;
                                statustxt = (SRDotDX.raids[SRDotDX.config.raidList[raidid].boss] ? SRDotDX.raids[SRDotDX.config.raidList[raidid].boss].shortname : SRDotDX.config.raidList[raidid].boss) + " joined successfully.";
                            } else if (/already a member/i.test(data.responseText)) {
                                statustxt = "Join Failed. You are already a member.";
                            } else if (/already completed/i.test(data.responseText)) {
                                SRDotDX.gui.joinRaidDead++;
                                statustxt = "Join failed. Raid is dead.";
                                SRDotDX.nukeRaid(raidid);
                            } else if (/not a member of the guild/i.test(data.responseText)) {
                                SRDotDX.gui.joinRaidDead++;
                                statustxt = "Join failed. You are not member of that Guild.";
                                SRDotDX.nukeRaid(raidid);
                            } else if (/(invalid|find) raid (hash|ID)/i.test(data.responseText)) {
                                statustxt = "Join failed. Invalid hash or ID.";
                                SRDotDX.gui.joinRaidInvalid++;
                                SRDotDX.gui.deleteRaidFromDB(raidid);
                            }
                            else {
                                statustxt = 'Unknown join response.';
                            }
                        } else SRDotDX.gui.joinRaidInvalid++;

                        if (SRDotDX.gui.joining) {
                            if (SRDotDX.gui.joinRaidComplete >= SRDotDX.gui.joinRaidList.length) {
                                statustxt = "Finished joining. " + SRDotDX.gui.joinRaidSuccessful + " new, " + SRDotDX.gui.joinRaidDead + " dead.";
                                SRDotDX.gui.joinFinish(true);
                                if (SRDotDX.gui.joinRaidSuccessful > 2) SRDotDX.util.extEcho(statustxt);
                                setTimeout(SRDotDX.config.save, 3000, false)
                            } else {
                                statustxt = "Joined " + SRDotDX.gui.joinRaidComplete + " of " + SRDotDX.gui.joinRaidList.length + ". " + SRDotDX.gui.joinRaidSuccessful + " new, " + SRDotDX.gui.joinRaidDead + " dead.";
                                if (SRDotDX.gui.joinRaidIndex < SRDotDX.gui.joinRaidList.length) SRDotDX.request.joinRaid(SRDotDX.gui.joinRaidList[SRDotDX.gui.joinRaidIndex++]);
                            }
                        }
                        else {
                            setTimeout(SRDotDX.config.save, 3000, false);
                        }
                        if (statustxt != '') SRDotDX.gui.doStatusOutput(statustxt, 4000, true);
                    }
                }
            },
            getRaidDetailsBase: function (url) {
                var r = {diff: 0, hash: '', boss: '', id: 0, sid: 0}, i, cnt = 0;
                var reg = /[?&]([^=]+)=([^?&]+)/ig, p = url.replace(/&amp;/gi, '&').replace(/kv_&/gi, '&kv_');
                while ((i = reg.exec(p)) != null) {
                    switch (i[1]) {
                        case 'kv_raid_id':
                        case 'raid_id':
                            r.id = parseInt(i[2]);
                            cnt++;
                            break;
                        case 'kv_difficulty':
                        case 'difficulty':
                            r.diff = parseInt(i[2]);
                            cnt++;
                            break;
                        case 'kv_raid_boss':
                        case 'raid_boss':
                            r.boss = i[2];
                            cnt++;
                            break;
                        case 'kv_hash':
                        case 'hash':
                            r.hash = i[2];
                            cnt++;
                            break;
                        case 'kv_serverid':
                        case 'serverid':
                            r.sid = parseInt(i[2]);
                            cnt++;
                            break;
                    }
                }
                if (cnt < 4) return false;

                r.diffLongText = ['Normal', 'Hard', 'Legendary', 'Nightmare'][r.diff - 1];
                r.diffShortText = ['N', 'H', 'L', 'NM'][r.diff - 1];
                var stats = SRDotDX.raids[r.boss];
                if (typeof stats == 'object') {
                    r.name = stats.name;
                    r.shortname = stats.shortname;
                    r.size = stats.size;
                    r.type = stats.type;
                    r.dur = stats.duration;
                    r.durText = stats.dur + "hrs";
                    r.stat = stats.stat;
                    r.statText = SRDotDX.getStatText(stats.stat);
                }
                else {
                    r.name = r.boss[0].toUpperCase() + r.boss.substring(1).replace(/_/g, " ");
                    r.shortname = r.name;
                    r.dur = 48;
                }
                return r;
            },
            getPasteDetails: function (url, user) {
                user = user ? user : '';
                var pb = {url: url, id: url.substring(url.length - 8)};
                pb.id = url.substring(url.length - 8);
                console.log('[DotDX] Importing Pastebin (url: ' + url + ')');
                var info = SRDotDX.config.getPaste(pb.id);
                if (!info) {
                    info = SRDotDX.config.addPaste(pb.url, pb.id, user);
                    if (typeof info == 'object') pb.isNew = true
                }
                else pb.isNew = false;
                pb.user = info.user;
                pb.lastUser = info.lastUser;
                return pb;
            },
            getTierTxt: function (hp, ppl, ap) {
                var num = hp / ppl;
                num = ap ? num / 2 : num;
                if (num >= 1000000000000) return (num / 1000000000000).toPrecision(3) + 't';
                if (num >= 1000000000) return (num / 1000000000).toPrecision(3) + 'b';
                if (num >= 1000000) return (num / 1000000).toPrecision(3) + 'm';
                if (num >= 1000) return (num / 1000).toPrecision(3) + 'k';
                return num + ''
            },
            getRaidDetails: function (url, user, visited, ts, room) {
                user = user ? user : '';
                var rVis = visited ? visited : user == SRDotDX.config.kongUser && SRDotDX.config.markMyRaidsVisted;
                var r = SRDotDX.util.getRaidFromUrl(url);
                if (r == null) return null;
                //if (r && typeof r.diff == 'number' && typeof r.hash == 'string' && typeof r.boss == 'string' && typeof r.id == 'string') {
                var filter = SRDotDX.gui.cHTML('#DotDX_filters').ele().innerHTML;
                r.visited = rVis;
                if (!SRDotDX.config.importFiltered || filter.indexOf('fltList_' + r.boss + '_' + (r.diff - 1)) < 0) {
                    var info = SRDotDX.config.getRaid(r.id);
                    if (typeof info != 'object') {
                        info = SRDotDX.config.addRaid(r.hash, r.id, r.boss, r.diff, r.sid, r.visited, user, ts, room);
                        if (typeof info == 'object') r.isNew = true;
                        else return null;
                    }
                    else r.isNew = false;
                    r.timeStamp = info.timeStamp;
                    r.visited = info.visited;
                    r.nuked = info.nuked;
                }
                r.linkText = function () {
                    var raidInfo = SRDotDX.raids[r.boss];
                    var txt = '[&thinsp;' + ['', 'N', 'H', 'L', 'NM'][this.diff] + ' ';
                    txt += raidInfo ? raidInfo.shortname : r.boss.capitalize().replace(/_/g, ' ');
                    if (SRDotDX.config.linkShowFs) txt += raidInfo ? ', fs:' + SRDotDX.getTierTxt(raidInfo.health[this.diff - 1], raidInfo.size, false) : '';
                    if (SRDotDX.config.linkShowAp) txt += raidInfo ? ', ap:' + SRDotDX.getTierTxt(raidInfo.health[this.diff - 1], raidInfo.size, true) : '';
                    txt += (this.visited || r.visited) ? '|★' : '';
                    txt += '&thinsp;]';
                    return txt
                };
                return r;
                //}
                //return null
            },
            getRaidLink: function (msg, user) {
                msg = msg.replace(/[\r\n]/g, '');
                var m = /^((?:(?!<a[ >]).)*)<a.*? href="((?:(?:https?:\/\/)?(?:www\.)?kongregate\.com)?\/games\/5thPlanetGames\/dawn-of-the-dragons(\?[^"]+))".*?<\/a>((?:(?!<\/?a[ >]).)*(?:<a.*? class="reply_link"[> ].*)?)$/i.exec(msg);
                if (m) {
                    var raid = SRDotDX.getRaidDetails(m[3], user);
                    if (raid) {
                        raid.ptext = m[1] ? m[1] : "";
                        raid.url = m[2].replace(/kv_&amp;/ig, '&amp;kv_');
                        raid.ntext = m[4] ? m[4] : "";
                        return raid;
                    }
                }
                return null
            },
            getPastebinLink: function (msg, user) {
                msg = msg.replace(/[\r\n]/g, '');
                var m = /^((?:(?!<a[ >]).)*)?http:\/\/pastebin\.com\/\w{8}((?:(?!<\/?a[ >]).)*(?:<a.*? class="reply_link"[> ].*)?)$/i.exec(msg);
                if (m) {
                    var pb = SRDotDX.getPasteDetails(/http:\/\/pastebin\.com\/\w{8}/i.exec(m[0]) + '', user);
                    if (typeof pb != 'undefined') {
                        pb.ptext = m[1] || '';
                        pb.ntext = m[2] || '';
                    }
                    return pb;
                }
                else return null;
            },
            getStatText: function (stat) {
                stat = stat.toLowerCase();
                var r = '';
                if (stat == '?' || stat == 'Unknown') return 'Unknown';
                if (stat.indexOf('s') > -1) r = 'Stamina';
                if (stat.indexOf('h') > -1) r += (r != '' ? (stat.indexOf('e') > -1 ? ', ' : ' and ') : '') + 'Honor';
                if (stat.indexOf('e') > -1) r += (r != '' ? ' and ' : '') + 'Energy';
                return r;
            },
            getTimestamp: function () {
                return '(' + ('0' + (new Date().getHours())).slice(-2) + ':' + ('0' + (new Date().getMinutes())).slice(-2) + ')';
            },
            refreshRaidTab: function () {
                var el_out = document.getElementById('raid_list');
                var el_in1 = document.getElementById('mainRaidsFrame');
                var el_in2 = document.getElementById('topRaidPane');
                el_out.style.height = el_in1.offsetHeight - el_in2.offsetHeight - 8 + 'px';
            },
            isFirefox: navigator.userAgent.indexOf('Firefox') > 0,
            gui: {
                setMessagesCount: function () {
                    var num = active_user.unreadWhispersCount() + active_user.unreadShoutsCount();
                    var ele = document.getElementById('profile_control_unread_message_count');
                    ele.innerHTML = num;
                    ele.style.display = num == 0 ? 'none' : 'block';
                    setTimeout(SRDotDX.gui.setMessagesCount, 60000);
                },
                gotoRoom: function (num) {
                    var numInt = parseInt(num);
                    if (isNaN(numInt) || numInt < 1 || numInt > 13) holodeck.chatWindow().activateRoomChooser();
                    else {
                        var roomObj = JSON.parse('{"type": "game", "xmpp_name": "138636-dawn-of-the-dragons-' + num + '", "name": "Dawn of the Dragons - Room #' + ('0' + num).slice(-2) + '", "id": "138636-dawn-of-the-dragons-' + num + '"}');
                        holodeck.joinRoom(roomObj);
                    }
                },
                httpCommand: function (url) {
                    window.open(url);
                },
                applySidebarUI: function (mode) { //-1:remove, 0:redraw, 1:create, 2:recreate
                    if (mode == -1 || mode == 2) {
                        document.getElementById('dotdx_sidebar').remove();
                        if (mode == -1) SRDotDX.gui.chatResize(SRDotDX.config.chatSize), document.getElementsByClassName("links_connect")[0].setAttribute('colspan', '2');
                    }
                    if (mode > -1) {
                        var sbElemObj, sbElemTxt, i;
                        if (mode > 0) {
                            if (mode == 1) document.getElementsByClassName("links_connect")[0].setAttribute('colspan', '3');
                            if (!SRDotDX.config.sbRightSide) document.getElementById('chat_container').style.marginLeft = "0px";
                            SRDotDX.gui.cHTML('td').set({id: 'dotdx_sidebar', style: 'width: ' + (SRDotDX.config.sbSlim ? '40' : '70') + 'px'})
                                .html('<div id="dotdx_sidebar_container"' + (SRDotDX.config.sbSlim ? ' class="slim"' : '') + '></div>', true)
                                .attach('after', SRDotDX.config.sbRightSide ? 'chat_container_cell' : 'gameholder');
                            SRDotDX.gui.chatResize(SRDotDX.config.chatSize);
                        }
                        if (mode == 0) {
                            sbElemTxt = '[' + document.getElementById('options_sbConfig').value + ']';
                            sbElemObj = JSON.parse(sbElemTxt);
                            SRDotDX.config.sbConfig = sbElemObj;
                            SRDotDX.config.save(false);
                        }
                        else sbElemObj = SRDotDX.config.sbConfig;
                        var slim = SRDotDX.config.sbSlim ? " slim" : "";
                        var sLen = SRDotDX.config.sbSlim ? 0 : 1;
                        var stopper = parseInt((document.getElementById('gameholder').offsetHeight - 36) / 26);
                        var sName = [
                            ["Ely", "Elyssa"],
                            ["Kas", "Kasan"]
                        ];
                        var sidebarElemHtml = '<div id="serverButton" class="' + slim + '" onclick="SRDotDX.gui.switchServer()">' + sName[SRDotDX.config.serverMode - 1][sLen] + '</div>', sbCmd = "", sbCls = 'class="';
                        for (i = 0; i < sbElemObj.length; i++) {
                            if (i == stopper) break;
                            if (typeof sbElemObj[i] == 'undefined' || sbElemObj[i] == null) {
                                sidebarElemHtml += '<div></div>';
                                continue
                            }
                            if (sbElemObj[i].type == 'jtxt') {
                                sidebarElemHtml += '<input id="sbJoinStr" onkeyup="SRDotDX.gui.updateFilterTxt(this.value)" class="dotdx_chat_filter' + slim + '" type="text" value=""><div></div>';
                                continue
                            }
                            if (sbElemObj[i].type == 'label') {
                                sidebarElemHtml += '<div class="label' + slim + '">';
                                if (SRDotDX.config.sbSlim) {
                                    if (typeof sbElemObj[i].sname == 'undefined') sidebarElemHtml += sbElemObj[i].name.substring(0, 4);
                                    else sidebarElemHtml += sbElemObj[i].sname;
                                }
                                else sidebarElemHtml += sbElemObj[i].name;
                                sidebarElemHtml += '</div>';
                                continue;
                            }
                            if (typeof sbElemObj[i].cmd != 'undefined') {
                                if (sbElemObj[i].cmd.charAt(0) == '/') sbCmd = 'SRDotDX.gui.chatCommand(\'' + sbElemObj[i].cmd + '\')';
                                else if (sbElemObj[i].cmd.indexOf('://') > 2) sbCmd = 'SRDotDX.gui.httpCommand(\'' + sbElemObj[i].cmd + '\')';
                                else sbCmd = sbElemObj[i].cmd.replace("'", "\'");
                            }
                            if (typeof sbElemObj[i].color != 'undefined') {
                                if (sbElemObj[i].color.charAt(0).toLowerCase() == 'b' && sbElemObj[i].color.toLowerCase() != 'black') sbCls += 'b';
                                else if (sbElemObj[i].color.charAt(0).toLowerCase() == 'g') sbCls += 'g';
                                else if (sbElemObj[i].color.charAt(0).toLowerCase() == 'r') sbCls += 'r';
                                else if (sbElemObj[i].color.charAt(0).toLowerCase() == 'y') sbCls += 'y';
                            }
                            sidebarElemHtml += '<button ' + sbCls + slim + '" ' + 'onclick="' + sbCmd + '">';
                            if (typeof sbElemObj[i].name == 'undefined') {
                                if (SRDotDX.config.sbSlim) sidebarElemHtml += 'Btn' + (i + 1);
                                else sidebarElemHtml += 'Button ' + (i + 1);
                            }
                            else {
                                if (SRDotDX.config.sbSlim)
                                    if (typeof sbElemObj[i].sname == 'undefined') sidebarElemHtml += sbElemObj[i].name.substring(0, 4);
                                    else sidebarElemHtml += sbElemObj[i].sname;
                                else sidebarElemHtml += sbElemObj[i].name
                            }
                            sidebarElemHtml += '</button>';
                            sbCmd = "";
                            sbCls = 'class="';
                        }
                        SRDotDX.gui.cHTML('#dotdx_sidebar_container').html(sidebarElemHtml, true);
                    }
                },
                toggleSlimSB: function () {
                    if (SRDotDX.config.sbEnable) {
                        this.applySidebarUI(2);
                        this.chatResize();
                    }
                },
                restoreDefaultSB: function () {
                    document.getElementById('options_sbConfig').value = '{"type":"label","name":"Camps"},\n\
                    {"type":"btn","name":"GoC","cmd":"/camp goc"},\n\
                    {"type":"btn","name":"MaM","cmd":"/camp mam"},\n\
                    {"type":"btn","name":"GD","cmd":"/camp gd"},\n\
                    {"type":"label","name":"Tiers"},\n\
                    {"type":"btn","name":"Bella","cmd":"/raid bella"},\n\
                    {"type":"btn","name":"Xerk","cmd":"/raid xerkara"},\n\
                    {"type":"btn","name":"Tisi","cmd":"/raid tisi"},\n\
                    {"type":"label","name":"Join"},\n\
                    {"type":"btn","name":"Farms","cmd":"SRDotDX.gui.quickImportAndJoin(\'farm:nnm\')"},\n\
                    {"type":"label","name":"Utils"},\n\
                    {"type":"btn","color":"g","name":"(Re)Load","sname":"Reld","cmd":"SRDotDX.reload()"},\n\
                    {"type":"btn","color":"r","name":"Unload","sname":"Kill","cmd":"/kill"},\n\
                    {"type":"btn","name":"Room 1","sname":"CR1","cmd":"SRDotDX.gui.gotoRoom(1)"},\n\
                    {"type":"btn","name":"Room 2","sname":"CR2","cmd":"SRDotDX.gui.gotoRoom(2)"},\n\
                    {"type":"btn","name":"Room 8","sname":"CR8","cmd":"SRDotDX.gui.gotoRoom(8)"},\n\
                    {"type":"label","name":"Sheets","sname":"Help"},\n\
                    {"type":"btn","name":"Magic","sname":"Mag","cmd":"https://docs.google.com/spreadsheets/d/1O0eVSnzlACP9XJDq0VN4kN51ESUusec3-gD4dKPHRNU"},\n\
                    {"type":"btn","name":"Mount","sname":"Mnt","cmd":"https://docs.google.com/spreadsheet/ccc?key=0AiSpM5yAo8atdER2NEhHY3VjckRhdWctWV8yampQZUE"},\n\
                    {"type":"btn","name":"Gear","cmd":"https://docs.google.com/spreadsheet/lv?key=0AvP2qXrWcHBxdHpXZkUzTHNGNkVWbjE5c2VEZUNNMUE"},\n\
                    {"type":"label","name":"Raids"},\n\
                    {"type":"jtxt"},\n\
                    {"type":"btn","color":"g","name":"Join","cmd":"SRDotDX.gui.joinSelectedRaids(true)"},\n\
                    {"type":"btn","color":"b","name":"Import","sname":"Imp","cmd":"SRDotDX.gui.importFromServer()"},\n\
                    {"type":"btn","color":"y","name":"RaidBot","sname":"Bot","cmd":"SRDotDX.gui.switchBot()"}';
                    SRDotDX.gui.applySidebarUI(0);
                },
                hideWC: function (init) {
                    var offset;
                    if (init) offset = SRDotDX.config.hideWChat ? -265 : 0;
                    else {
                        offset = SRDotDX.config.hideWChat ? 265 : -265;
                        SRDotDX.config.hideWChat = !SRDotDX.config.hideWChat;
                        document.getElementById('hideWCtxt').innerHTML = SRDotDX.config.hideWChat ? 'Show World Chat' : 'Hide World Chat';
                        SRDotDX.config.extSave();
                    }
                    var gmWidth = document.getElementById('gameholder').offsetWidth + offset;
                    document.getElementById('gameholder').style.width = gmWidth + "px";
                    document.getElementById('game').style.width = gmWidth + "px";
                    this.chatResize();
                },
                removeWC: function(rly) {
                    if(rly) {
                        SRDotDX.config.removeWChat = true;
                        var li = SRDotDX.gui.cHTML('#wcbutton').ele();
                        li.parentNode.removeChild(li);
                        if(!SRDotDX.config.hideWChat) {
                            SRDotDX.config.hideWChat = true;
                            this.hideWC(true);
                        }
                        SRDotDX.config.extSave();
                    }
                    else {
                        SRDotDX.config.removeWChat = false;
                        SRDotDX.gui.cHTML('li').set({id: 'wcbutton', class: 'rate'}).html('<a id="hideWCtxt" class="spritegame" href="http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons" onclick="SRDotDX.gui.hideWC(false); return false;">' + (SRDotDX.config.hideWChat ? 'Show World Chat' : 'Hide World Chat') + '</a>', false).attach('after', 'quicklinks_play_later_block');
                        SRDotDX.config.extSave();
                        setTimeout(activateGame,1000);
                    }
                },
                chatResize: function (chatSize) {
                    var size = chatSize || SRDotDX.config.chatSize;
                    SRDotDX.config.chatSize = size;
                    var gmWidth = document.getElementById('gameholder').offsetWidth;
                    var gmHeight = document.getElementById('gameholder').offsetHeight;
                    var sbWidth = SRDotDX.config.sbEnable ? (SRDotDX.config.sbSlim ? 40 : 70) : 0;
                    var hScroll = SRDotDX.config.hideScrollBar ? SRDotDX.gui.getScrollbarWidth() : 0;
                    var chatWidthInc = size - 300;
                    var chatCorr = chatWidthInc / 75 * 2;
                    var overallWidth = (292 + gmWidth + sbWidth + chatWidthInc) + "px";
                    document.getElementById('maingame').style.width = overallWidth;
                    document.getElementById('maingamecontent').style.width = overallWidth;
                    document.getElementById('flashframecontent').style.width = overallWidth;
                    document.getElementById('chat_container').style.width = size + "px";
                    document.getElementById('raid_list').style.width = 282 + hScroll + "px";
                    document.getElementById('raid_list').style.overflowY = hScroll ? 'scroll' : 'auto';
                    document.getElementById('chat_tab_pane').style.width = (size - 16) + "px";
                    document.getElementById('DotDX_chatResizeElems').innerHTML = '#kong_game_ui textarea.chat_input { width: ' + (size - 30) + 'px !important; }\
                                                                                #kong_game_ui div#chat_raids_overlay { width: ' + (size - 8) + 'px }\
                                                                                #kong_game_ui div#chat_raids_overlay > span { width: ' + (size - 18 - chatCorr) + 'px }\
                                                                                #kong_game_ui div.chat_message_window { height: ' + (gmHeight - 254) + 'px !important; width: ' + (size - 18 + hScroll) + 'px; overflow-y: ' + (hScroll ? 'scroll' : 'auto') + '; }\
                                                                                #kong_game_ui div#chat_rooms_container div.chat_tabpane.users_in_room { width: ' + (size - 22 + hScroll) + 'px }\
                                                                                div#dotdx_sidebar_container { height: ' + (gmHeight - 5) + 'px; ' + (SRDotDX.config.sbRightSide ? "text-align: left; padding-left: 1px; padding-right: 6px;" : "text-align: left; margin-left: 2px; padding-left: 6px") + ' }';
                },
                helpBox: function (boxId, magId, raidId, mouseOut) {
                    var boxDiv = document.getElementById(boxId);
                    var magSpan = document.getElementById(magId);
                    if (mouseOut) {
                        SRDotDX.gui.CurrentRaidsOutputTimer = setTimeout(function () {
                            document.getElementById('chat_raids_overlay').className = "";
                        }, 1500); //setTimeout(elfade, 1500, boxId, 750, false);//fadeEffect.init(boxId, 0);//boxDiv.style.display = 'none';
                        magSpan.style.maxWidth = "0";
                        setTimeout(function () {
                            document.getElementById(magId).innerHTML = "";
                        }, 100);
                    }
                    else {
                        var info = SRDotDX.config.getRaid(raidId), msg = 'Unknown', mWidth = "0", raid;

                        if (info == null) {
                            msg = 'Raid removed from db';
                        }
                        else if (typeof SRDotDX.raids[info.boss] == 'undefined') {
                            msg = '<span style="font-size: 12px;">' + info.boss.capitalize().replace(/_/ig, ' ') + ' on ' + ['Normal', 'Hard', 'Legendary', 'Nightmare'][info.diff - 1] + '</span>';
                        }
                        else {
                            var magE = info.magic.reduce(function (a, b) {
                                return a + b;
                            });
                            raid = SRDotDX.raids[info.boss];
                            var diff = info.diff - 1;
                            if (magE) {
                                var magI = "";
                                //if(SRDotDX.isFirefox)
                                for (i = 0; i < raid.nd; i++) magI += '<span class="magic" style="background-position: -' + info.magic[i] * 16 + 'px 0">&nbsp;</span>';
                                //else for (i=0; i<raid.nd; i++) magI += '<span class="magic" style="background-position-x:-' + info.magic[i]*16 + 'px">&nbsp;</span>';
                                magSpan.innerHTML = magI;
                                mWidth = (raid.nd * 18 + 10) + "px";
                            }
                            msg = '<span style="font-size: 12px;">' + raid.name + ' on ' + ['Normal', 'Hard', 'Legendary', 'Nightmare'][diff] + '</span><br>';
                            msg += (raid.type == '' ? '' : raid.type + ' | ') + SRDotDX.raidSizes[raid.size].name + ' Raid' + (diff == 3 ? ' | AP' : '');
                            var size = raid.size < 15 ? 10 : raid.size;
                            var fs = raid.health[diff] / (raid.size == 101 ? 100 : raid.size);
                            if (typeof raid.lt != 'object') {
                                var epicRatio = SRDotDX.raidSizes[size].ratios;
                                if (size == 15) msg += '<br>fs:&thinsp;' + SRDotDX.util.getShortNum(fs) + ' | 65d:&thinsp;' + SRDotDX.util.getShortNum(fs * epicRatio[0]) + ' | 338d:&thinsp;' + SRDotDX.util.getShortNum(fs * epicRatio[9]) + ' | 375d:&thinsp;' + SRDotDX.util.getShortNum(fs * epicRatio[10]);
                                else msg += '<br>fs: ' + SRDotDX.util.getShortNum(fs) + ' | 1e: ' + SRDotDX.util.getShortNum(fs * epicRatio[0]) + ' | 2e: ' + SRDotDX.util.getShortNum(fs * epicRatio[2]) + ' | 2/3e: ' + SRDotDX.util.getShortNum(fs * epicRatio[3]);
                                //msg += '<br>2e: ' + epicRatio[2] + ' | 3e: ' + epicRatio[4] + ' | fs: ' + fs;
                            }
                            else if (typeof raid.lt == 'object') {
                                var ele = SRDotDX.lootTiers[raid.lt[diff]];
                                var step = SRDotDX.config.chatSize == 450 ? 6 : (SRDotDX.config.chatSize == 375 ? 5 : 4);
                                var steplow = step - 1;
                                var tiers = ele['tiers'];
                                var epics = ele['epics'];
                                var best = ele['best'];
                                var e = ele['e'] ? 'e' : '';
                                var text = '';
                                var i = tiers.length;
                                var tier;
                                while (i--) {
                                    tier = (i % step == steplow ? '<br>' : /*(i > 0 && tiers[i-1].charAt(5)=='b'? '&thinsp; | ' :*/ ' | '/*)*/ ) + (i == best ? '<u>' : '') + epics[i];
                                    if (epics[i] < 10) tier += e + ':&#8192; ';
                                    else if (epics[i] < 100) tier += e + ': ';
                                    else tier += e + ':&thinsp;';
                                    tier += tiers[i] + (i == best ? '</u>' : '');
                                    text = tier + text;
                                }
                                msg += ' | Tiered<br>fs: &nbsp;&nbsp;&thinsp;' + SRDotDX.util.getShortNum(fs) + '' + text;
                            }
                            else {
                            }
                        }
                        if (magE) magSpan.style.maxWidth = mWidth;
                        document.getElementById(boxId + '_text').innerHTML = msg;
                        if (!(boxDiv.className.indexOf('active') > 0)) boxDiv.className = "active";
                        clearTimeout(SRDotDX.gui.CurrentRaidsOutputTimer);
                    }
                },
                displayHint: function (hint) {
                    var helpEl = document.getElementById('helpBox');
                    if (hint) {
                        helpEl.children[0].innerHTML = hint;
                        //helpEl.style.display = 'block';
                        helpEl.style.maxHeight = '50px';
                        helpEl.style.borderTopWidth = '1px';
                    }
                    else helpEl.style.maxHeight = '0', helpEl.style.borderTopWidth = '0';
                },
                refreshRaidList: function () {
                    document.getElementById('raid_list').innerHTML = "";
                    for (var i = 0; i < SRDotDX.gui.joinRaidList.length; i++) SRDotDX.gui.addRaid(SRDotDX.gui.joinRaidList[i]);
                },
                diffTxt: [
                    ['DotDX_U', 'U'],
                    ['DotDX_N', 'N'],
                    ['DotDX_H', 'H'],
                    ['DotDX_L', 'L'],
                    ['DotDX_NM', 'NM']
                ],
                addRaid: function (id) {
                    var r = typeof id == 'string' || typeof id == 'number' ? SRDotDX.config.raidList[id] : id;
                    var a = document.getElementById('raid_list');
                    if (r.boss) {
                        if (typeof a != 'undefined' && a) {
                            var rd = typeof SRDotDX.raids[r.boss] != 'object' ? {shortname: r.boss.capitalize().replace(/_/ig, ' '), health: [1, 1, 1, 1], duration: 48, nd: 6} : SRDotDX.raids[r.boss];
                            var url = 'http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons?kv_action_type=raidhelp&kv_difficulty=' + r.diff + '&kv_hash=' + r.hash + '&kv_raid_boss=' + r.boss + '&kv_raid_id=' + r.id + '&kv_serverid=' + r.sid;
                            var hpr = (r.hp * 100).toPrecision(3), fCls = "";
                            var tlp = (r.timeLeft() / (36 * rd.duration)).toPrecision(3);
                            if (r.sid == "1") {
                                var delta = hpr - tlp;
                                if (delta > 0) {
                                    if (delta < 15) fCls = " failings";
                                    else if (delta < 30) fCls = " failingm";
                                    else fCls = " failingh";
                                }
                            }
                            var lii = SRDotDX.gui.cHTML('div').set({
                                class: 'raid_list_item ' + this.diffTxt[r.diff][0] + (r.visited ? ' DotDX_visitedRaidList' : '') + (r.nuked ? ' DotDX_nukedRaidList' : ''),
                                id: 'DotDX_' + r.id,
                                raidid: r.id
                            }).html(' \
						    <span class="DotDX_List_diff ' + this.diffTxt[r.diff][0] + '">' + this.diffTxt[r.diff][1] + '</span> \
							<a class="DotDX_RaidLink" href="' + url + '">' + rd.shortname + '</a> \
                            <span class="DotDX_RaidListVisited">' + (r.visited ? '&#9733;' : '') + '</span> \
                            <a class="dotdxRaidListDelete" href="#">DEL</a>\
                            <span class="DotDX_extInfo' + fCls + '">hp/time: ' + hpr + '% / ' + tlp + '%</span>\
						', true);
                            //<span class="DotDX_extMagics">'+magI+'</span><br>\
                            //<span class="DotDX_extState"></span><span class="DotDX_extInfo">hp: ' + SRDotDX.util.getShortNum(r.hp*rd.health[r.diff-1]) + ' ('+(r.hp*100).toPrecision(3)+'%), time: '+(tlh>0?(tlh+' h'):(tlm+' min'))+' ('+tlp+'%)</span><a class="dotdxRaidListDelete" style="float:right; display: inline" href="#">DEL</a>\
                            /*if (SRDotDX.config.newRaidsAtTopOfRaidList) {
                             var arr = a.getElementsByClassName('raid_list_item');
                             if (arr.length > 0) lii.attach('before', arr[0]); else lii.attach('to', a);
                             }
                             else*/
                            lii.attach('to', a);
                        }
                    }
                    else delete SRDotDX.config.raidList[id];
                },
                toggleRaidListDesc: function (el, mode) {
                    if (mode) {
                        clearTimeout(el.timerout);
                        el.timerin = setTimeout(function () {
                            el.lastElementChild.style.display = "block";
                        }, 500)
                    }
                    else {
                        clearTimeout(el.timerin);
                        el.timerout = setTimeout(function () {
                            el.lastElementChild.style.display = "none";
                        }, 50)
                    }
                    return false;
                },
                cHTML: function (ele) {
                    function Cele(ele) {
                        this._ele = ele;
                        this.ele = function () {
                            return this._ele
                        };
                        this.set = function (param) {
                            for (var attr in param) if (param.hasOwnProperty(attr)) this._ele.setAttribute(attr, param[attr]);
                            return this
                        };
                        this.text = function (text) {
                            this._ele.appendChild(document.createTextNode(text));
                            return this
                        };
                        this.html = function (text, overwrite) {
                            this._ele.innerHTML = overwrite ? text : this._ele.innerHTML + text;
                            return this
                        };
                        this.on = function (event, func, bubble) {
                            this._ele.addEventListener(event, func, bubble);
                            return this
                        };
                        this.attach = function (method, ele) {
                            if (typeof ele == 'string') ele = document.getElementById(String(ele));
                            if (!(ele instanceof Node)) throw 'Invalid attachment element specified';
                            else if (!/^(?:to|before|after)$/i.test(method)) throw 'Invalid append method specified';
                            else if (method == 'to') ele.appendChild(this._ele);
                            else if (method == 'before') ele.parentNode.insertBefore(this._ele, ele);
                            else if (typeof ele.nextSibling == 'undefined') ele.parentNode.appendChild(this._ele);
                            else ele.parentNode.insertBefore(this._ele, ele.nextSibling);
                            return this
                        };
                    }

                    if (typeof ele == 'string') ele = /^#/i.test(String(ele)) ? document.getElementById(ele.substring(1)) : document.createElement(String(ele));
                    if (ele instanceof Node) return new Cele(ele);
                    throw 'Invalid element type specified';
                },
                errorMessage: function (s, tag) {
                    tag = typeof tag == 'undefined' ? 'b' : tag;
                    SRDotDX.gui.doStatusOutput('<' + tag + '>' + s + '</' + tag + '>')
                },
                updateMessage: function () {
                    SRDotDX.gui.doStatusOutput(SRDotDX.gui.standardMessage(), false, true)
                },
                postingMessage: function (i, ct) {
                    SRDotDX.gui.doStatusOutput('Posting message ' + i + (typeof ct == 'undefined' ? '' : ' of ' + ct + '...'), false)
                },
                standardMessage: function () {
                    return  Object.keys(SRDotDX.config.raidList).length + ' raids in db, ' + SRDotDX.gui.joinRaidList.length + ' selected to join';
                },
                CurrentStatusOutputTimer: 0,
                doStatusOutput: function (str, msecs, showInChat) {
                    showInChat = typeof showInChat == 'undefined' ? true : showInChat;
                    msecs = typeof msecs == 'undefined' ? 4000 : msecs;
                    var el = document.getElementById('StatusOutput');
                    var el2 = document.getElementById('dotdx_chat_overlay');
                    el.innerHTML = str;
                    if (showInChat) {
                        el2.innerHTML = str;
                    }
                    if (msecs) {
                        if (SRDotDX.gui.CurrentStatusOutputTimer) clearTimeout(SRDotDX.gui.CurrentStatusOutputTimer);
                        SRDotDX.gui.CurrentStatusOutputTimer = setTimeout(function () {
                            el.innerHTML = SRDotDX.gui.standardMessage();
                            el2.innerHTML = SRDotDX.gui.standardMessage()
                        }, msecs);
                    }
                },
                toggleDisplay: function (elem, sender, el2) {
                    if (typeof elem == 'undefined') return;
                    var el = document.getElementById(elem);
                    var alls = document.getElementsByName(sender.getAttribute('name'));
                    if (alls.length > 0) {
                        for (var i = 0; i < alls.length; i++) {
                            if (alls[i].nodeName == 'P') alls[i].getElementsByTagName('span')[0].innerHTML = '+';
                            else alls[i].style.display = 'none';
                        }
                        el.style.display = 'block';
                        sender.getElementsByTagName('span')[0].innerHTML = '&minus;';
                    }
                    else {
                        if (el.style.display == 'none') {
                            el.style.display = 'block';
                            sender.getElementsByTagName('span')[0].innerHTML = '&minus;';
                        }
                        else {
                            el.style.display = 'none';
                            sender.getElementsByTagName('span')[0].innerHTML = '+';
                        }
                    }
                    if (typeof el2 == 'string') {
                        switch (el2) {
                            case 'raid_list':
                                SRDotDX.refreshRaidTab();
                                break;
                            case 'share_list':
                                document.getElementById('DotDX_raidsToSpam').style.height = ( 526 - document.getElementById('FPXShare').offsetHeight - document.getElementById('FPXImport').offsetHeight ) + "px";
                        }
                    }
                },
                Importing: false,
                deleteRaid: function (ele) {
                    var id = ele.getAttribute('raidid');
                    SRDotDX.gui.deleteRaidFromDB(id);
                    if(ele) ele.parentNode.removeChild(ele);
                },
                deleteRaidFromDB: function (id) {
                    var chat = document.getElementsByClassName('chat_message_window'), p, i;
                    for (var c = 0; c < chat.length; c++) {
                        p = chat[c].getElementsByClassName('SRDotDX_raid'); i = p.length;
                        while(i--) if(p[i].className.indexOf("DotDX_raidId_" + id) > -1) p[i].parentNode.removeChild(p[i]);
                    }
                    //SRDotDX.gui.toggleRaid('nuked', id, true);
                    if(SRDotDX.config.raidList[id]) delete SRDotDX.config.raidList[id];
                },
                FPXdeleteAllRaids: function () {
                    if (!SRDotDX.config.confirmDeletes || confirm('This will delete all ' + SRDotDX.config.raidList.length + ' raids stored. Continue? \n (This message can be disabled on the options tab.)')) {
                        for (var id in SRDotDX.config.raidList) if (SRDotDX.config.raidList[id]) delete SRDotDX.config.raidList[id];
                        var raidlistDIV = document.getElementById('raid_list');
                        while (raidlistDIV.hasChildNodes()) raidlistDIV.removeChild(raidlistDIV.lastChild);
                        localStorage.removeItem('raidList');
                        SRDotDX.gui.updateMessage();
                        console.log('[SRDotDX] Delete all raids finished.');
                    }
                },
                chatCommand: function (text) {
                    var elems = document.getElementsByClassName('chat_input');
                    var txt = [], i = elems.length;
                    while (i--) {
                        txt[i] = elems[i].value;
                        elems[i].value = text
                    }
                    holodeck.activeDialogue().sendInput();
                    i = txt.length;
                    while (i--) elems[i].value = txt[i];
                },
                FPXdoWork: function (param1, whisper) {
                    var elems = document.getElementsByClassName('chat_input');
                    if (whisper && whisper != '') param1 = '/w ' + whisper + ' ' + param1;
                    var txt = [], i = elems.length;
                    while (i--) {
                        txt[i] = elems[i].value;
                        elems[i].value = param1
                    }
                    holodeck.activeDialogue().sendInput();
                    i = txt.length;
                    while (i--) elems[i].value = txt[i];
                },
                FPXformatRaidOutput: function (url) {
                    var pre = ''; //user && room ? '['+room+'|'+user+'] ' : '';
                    if (!SRDotDX.config.formatLinkOutput) return pre + url;
                    var r = SRDotDX.getRaidDetailsBase(url);
                    return pre + r.shortname + ' ' + r.diffShortText + ' ' + url;
                },
                isPosting: false,
                FPXTimerArray: [],
                FPXStopPosting: function () {
                    SRDotDX.gui.endSpammingRaids();
                    console.log('[DotDX] Spamming raids to chat... [cancelled]');
                    SRDotDX.util.extEcho('Raid posting cancelled');
                },
                endSpammingRaids: function () {
                    var i = SRDotDX.gui.FPXTimerArray.length;
                    while (i--) clearTimeout(SRDotDX.gui.FPXTimerArray[i]);
                    SRDotDX.gui.isPosting = false;
                    document.getElementById('PostRaidsButton').value = 'Post';
                    document.getElementById('dotdx_share_post_button').value = 'Post Links to Chat';
                    document.getElementById('dotdx_share_post_button').value = 'Friend Share links';
                    SRDotDX.gui.doStatusOutput('Posting raids finished');
                    SRDotDX.gui.FPXTimerArray = [];
                    SRDotDX.config.save(false);
                },
                prepareSpammingRaids: function () {
                    SRDotDX.gui.isPosting = true;
                    document.getElementById('PostRaidsButton').value = 'Cancel';
                    document.getElementById('dotdx_share_post_button').value = 'Cancel';
                    document.getElementById('dotdx_friend_post_button').value = 'Cancel';
                    SRDotDX.gui.doStatusOutput('Posting raids started', false);
                },
                spamRaidsToFriends: function () {
                    SRDotDX.gui.prepareSpammingRaids();
                    var userList = [
                        [],
                        [],
                        [],
                        [],
                        []
                    ], i;
                    for (var user in SRDotDX.config.friendUsers) {
                        for (i = 0; i < 5; i++) if (SRDotDX.config.friendUsers[user][i]) userList[i].push(user);
                    }
                    console.log('[DotDX] Spamming raids to friends... [started]');
                    //try {
                    var linkList = document.getElementById('DotDX_raidsToSpam').value;
                    if (linkList.length > 10) {
                        console.log('[DotDX] [If length went trough]');
                        document.getElementById('DotDX_raidsToSpam').value = '';
                        var patt = new RegExp('http...www.kongregate.com.games.5thPlanetGames.dawn.of.the.dragons.[\\w\\s\\d_=&]+[^,]', 'ig');
                        var link, ct = 0, sel = 4, r, rs, u;
                        i = 0;
                        var timer = 500, ttw = 3050;
                        var total = linkList.split(patt).length - 1;
                        console.log('[DotDX] [Just before while]');
                        while ((link = patt.exec(linkList)) && SRDotDX.gui.isPosting) {
                            link = typeof link != "string" ? link[0] : link;
                            r = SRDotDX.util.getRaidFromUrl(link);
                            rs = SRDotDX.raids[r.boss].size;
                            if (r.boss == 'serpina') sel = 0;
                            else if (rs < 26) sel = 1;
                            else if (rs == 50) sel = 2;
                            else if (rs == 100) sel = 3;
                            if (userList[sel].length > 0) {
                                for (u = 0; u < userList[sel].length; u++) {
                                    console.log('[DotDX] [Inside user for]');
                                    (function (p1, p2) {
                                        return SRDotDX.gui.FPXTimerArray[i] = setTimeout(function () {
                                            if (!SRDotDX.gui.isPosting) return;
                                            SRDotDX.gui.FPXdoWork(SRDotDX.gui.FPXformatRaidOutput(p1), p2);
                                            ++ct;
                                            SRDotDX.gui.postingMessage(ct, i);
                                        }, timer);
                                    })(link, userList[sel][u]);
                                    timer += ttw;
                                    i++;
                                }
                            }
                        }
                    }
                    SRDotDX.gui.FPXTimerArray[SRDotDX.gui.FPXTimerArray.length] = setTimeout(function () {
                        SRDotDX.gui.endSpammingRaids();
                        console.log('[DotDX] Spamming raids to friends... [stopped]');
                    }, timer);
                    // }
                    //catch(ex) { console.log('[DotDX] Spamming raids to friends... [error]: ' + ex) }
                },
                FPXspamRaids: function () {
                    SRDotDX.gui.prepareSpammingRaids();
                    console.log('[DotDX] Spamming raids to chat... [started]');
                    try {
                        var linkList = document.getElementById('DotDX_raidsToSpam').value;
                        if (linkList.length > 10) {
                            document.getElementById('DotDX_raidsToSpam').value = '';
                            var patt = new RegExp('http...www.kongregate.com.games.5thPlanetGames.dawn.of.the.dragons.[\\w\\s\\d_=&]+[^,]', 'ig');
                            var link, ct = 0, i = 0;
                            var timer = 500, ttw = 3050;
                            var total = linkList.split(patt).length - 1;
                            while ((link = patt.exec(linkList)) && SRDotDX.gui.isPosting) {
                                (function (p1) {
                                    return SRDotDX.gui.FPXTimerArray[i] = setTimeout(function () {
                                        if (!SRDotDX.gui.isPosting) return;
                                        SRDotDX.gui.FPXdoWork(SRDotDX.gui.FPXformatRaidOutput(p1), SRDotDX.config.whisperTo);
                                        ++ct;
                                        SRDotDX.gui.postingMessage(ct, total);
                                    }, timer);
                                })(link);
                                timer += ttw;
                                i++;
                            }
                        }
                        SRDotDX.gui.FPXTimerArray[SRDotDX.gui.FPXTimerArray.length] = setTimeout(function () {
                            SRDotDX.gui.endSpammingRaids();
                            console.log('[DotDX] Spamming raids to chat... [stopped]');
                        }, timer);
                    }
                    catch (ex) {
                        console.log('[DotDX] Spamming raids to chat... [error]: ' + ex)
                    }
                },
                quickImportAndJoin: function (joinStr, imp) {
                    SRDotDX.gui.updateFilterTxt(joinStr, false, true);
                    SRDotDX.request.quickBtnLock = false;
                    if (imp) SRDotDX.request.joinAfterImport = true, SRDotDX.gui.importFromServer();
                    else SRDotDX.gui.joinSelectedRaids();
                },
                importFromServer: function () {
                    var h = Math.ceil(((new Date).getTime() - SRDotDX.config.lastImported) / 3600000);
                    SRDotDX.util.extEcho('Importing raids from server');
                    SRDotDX.request.raids(false, h);
                },
                importingPastebin: false,
                FPXSortRaids: function () {
                    var raidArray = [], i, sortFunc;
                    var selectedSort = document.getElementById('FPXRaidSortSelection').value;
                    var selectedDir = document.getElementById('FPXRaidSortDirection').value;
                    var raidlistDIV = document.getElementById('raid_list');
                    var raidList = raidlistDIV.childNodes;
                    console.log('[SRDotDX] Sorting started ' + selectedSort + ' : ' + selectedDir);
                    i = raidList.length;
                    while (i--) raidArray.push(SRDotDX.config.raidList[raidList[i].getAttribute('raidid')]);
                    switch (selectedSort) {
                        case 'Id':
                            if (selectedDir == 'asc') sortFunc = function (a, b) {
                                if (!(typeof a.id === 'undefined' || typeof b.id === 'undefined') && a.id > b.id) return -1;
                                return 1;
                            };
                            else sortFunc = function (a, b) {
                                if (!(typeof a.id === 'undefined' || typeof b.id === 'undefined') && a.id < b.id) return -1;
                                return 1;
                            };
                            break;
                        case 'Time':
                            if (selectedDir == 'asc') sortFunc = function (a, b) {
                                if (!(typeof a.timeStamp === 'undefined' || typeof b.timeStamp === 'undefined') && a.timeStamp > b.timeStamp) return -1;
                                return 1;
                            };
                            else sortFunc = function (a, b) {
                                if (!(typeof a.timeStamp === 'undefined' || typeof b.timeStamp === 'undefined') && a.timeStamp < b.timeStamp) return -1;
                                return 1;
                            };
                            break;
                        case 'Name':
                            if (selectedDir == 'asc') sortFunc = function (a, b) {
                                a = SRDotDX.raids[a.boss];
                                b = SRDotDX.raids[b.boss];
                                //console.log(a + ' : ' + b + ' : ' + (typeof a === 'undefined') + ' : ' + (typeof b === 'undefined'));
                                if (!(typeof a === 'undefined' || typeof b === 'undefined') && a.name > b.name) return -1;
                                return 1;
                            };
                            else sortFunc = function (a, b) {
                                a = SRDotDX.raids[a.boss];
                                b = SRDotDX.raids[b.boss];
                                if (!(typeof a === 'undefined' || typeof b === 'undefined') && a.name < b.name) return -1;
                                return 1;
                            };
                            break;
                        case 'Diff':
                            if (selectedDir == 'asc') sortFunc = function (a, b) {
                                if (a.diff > b.diff) return -1;
                                return 1
                            };
                            else sortFunc = function (a, b) {
                                if (a.diff < b.diff) return -1;
                                return 1
                            };
                            break;
                    }
                    try {
                        raidArray.sort(sortFunc)
                    }
                    catch (e) {
                        console.log('[SRDotDX] Sorting error: ' + e);
                        return
                    }
                    raidlistDIV = document.getElementById('raid_list');
                    while (raidlistDIV.hasChildNodes()) raidlistDIV.removeChild(raidlistDIV.lastChild);
                    i = raidArray.length;
                    while (i--) SRDotDX.gui.addRaid(raidArray[i]);
                    //SRDotDX.gui.FPXFilterRaidListByName();
                    console.log('[SRDotDX] Sorting finished');
                },
                GetRaid: function (id) {
                    if (isNumber(id)) {
                        var raidList = document.getElementById('raid_list').childNodes;
                        var i = raidList.length, item;
                        while (i--) {
                            item = raidList[i];
                            if (item.getAttribute('raidid') == id) {
                                var raid = JSON.parse(JSON.stringify(SRDotDX.config.raidList[id]));
                                raid.ele = item;
                                return raid
                            }
                        }
                    }
                    return null
                },
                joinRaidList: [],
                postRaidList: [],
                updateFilterTimeout: null,
                filterSearchStringC: "",
                filterSearchStringR: "",
                updateFilterContext: true,
                includeDiff: function (str, dv) {
                    var diff = isNaN(parseInt(dv)) ? ({'n': 1, 'h': 2, 'l': 3, 'nm': 4, 'nnm': 0})[dv] || 5 : parseInt(dv);
                    var out = "";
                    var string = str.toString();
                    switch (diff) {
                        case 0:
                            out = string.replace(/,|$/g, '_1,') + string.replace(/,|$/g, '_4,');
                            break;
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                            out = string.replace(/,|$/g, '_' + diff + ',');
                            break;
                        default:
                            for (var i = 1; i <= 4; i++) out += string.replace(/,|$/g, '_' + i + ',');
                            break;
                    }
                    return out.slice(0, -1);
                },
                updateFilterTxt: function (txt, fromRT, quick) {
                    clearTimeout(this.updateFilterTimeout);
                    var foundRaids = [], field, rf, i;
                    if (txt != "") {
                        var searchArray = txt.split(/\s?\|\s?|\sor\s|\s?,\s?/ig);
                        console.log('[DotDX] Pattern split: ' + searchArray);
                        for (i = 0; i < searchArray.length; i++) {
                            field = searchArray[i].toLowerCase().split(':');
                            if (field[0] != "") {
                                if (typeof SRDotDX.searchPatterns[field[0]] != 'undefined') foundRaids.push(this.includeDiff(SRDotDX.searchPatterns[field[0]], field[1]));
                                else if (typeof SRDotDX.raids[field[0]] != 'undefined') foundRaids.push(this.includeDiff(field[0], field[1]));
                                else {
                                    for (var key in SRDotDX.raids) {
                                        rf = (SRDotDX.raids[key].name + ':' + SRDotDX.raids[key].shortname + ':' + SRDotDX.raids[key].type).toLowerCase();
                                        if (rf.indexOf(field[0]) >= 0) foundRaids.push(this.includeDiff(key, field[1]));
                                    }
                                }
                            }
                        }
                    }
                    var finalSearchString = foundRaids.length == 0 ? "" : "," + foundRaids.toString() + ",";
                    //console.log('[DotDX] Raids to join from ' + (fromRT ? 'Raids' : 'Chat') + ' tab: ' + foundRaids);
                    if (fromRT) {
                        SRDotDX.config.lastFilter[SRDotDX.config.serverMode - 1] = txt;
                        SRDotDX.config.filterSearchStringR = finalSearchString;
                    }
                    else if (quick) {
                        SRDotDX.request.filterSearchStringT = finalSearchString;
                    }
                    else {
                        var filterInputs = document.getElementsByClassName('dotdx_chat_filter');
                        for (i = 0; i < filterInputs.length; i++) if (filterInputs[i].value != txt) filterInputs[i].value = txt;
                        SRDotDX.config.chatFilterString = txt;
                        SRDotDX.config.filterSearchStringC = finalSearchString;
                        //this.joinRaidFromChat = true;
                    }
                    if (quick) {
                        SRDotDX.gui.selectRaidsToJoin('quick');
                        SRDotDX.config.save(false)
                    }
                    else {
                        this.updateFilterTimeout = setTimeout(function () {
                            SRDotDX.gui.selectRaidsToJoin();
                            SRDotDX.config.save(false)
                        }, 300)
                    }
                },
                selectRaidsToJoin: function (from) {
                    if (SRDotDX.request.quickBtnLock) {
                        if (!SRDotDX.gui.joining) SRDotDX.gui.joinRaidList.length = 0;
                        SRDotDX.gui.updateFilterContext = document.getElementById('chat_tab').firstChild.className == 'active';
                        var searchString = from && from == 'quick' ? SRDotDX.request.filterSearchStringT : (SRDotDX.gui.updateFilterContext && SRDotDX.config.chatFilterString != "" ? SRDotDX.config.filterSearchStringC : SRDotDX.config.filterSearchStringR);
                        var r, c = 0, filter = SRDotDX.gui.cHTML('#DotDX_filters').ele().innerHTML, server = SRDotDX.config.serverMode;
                        for (var raid in SRDotDX.config.raidList) {
                            r = SRDotDX.config.raidList[raid];
                            if (SRDotDX.config.fltShowAll || ( r.sid == server &&
                                (SRDotDX.config.fltShowNuked ? r.nuked : !r.nuked && (SRDotDX.config.fltIncVis || !r.visited)) &&
                                filter.indexOf('fltList_' + r.boss + '_' + (r.diff - 1)) < 0 &&
                                (searchString == "" || searchString.indexOf("," + r.boss + "_" + r.diff + ",") >= 0) ))
                            //try { SRDotDX.gui.joinRaidList.push(JSON.parse(JSON.stringify(r))) } catch(ex){}
                                try {
                                    SRDotDX.gui.joinRaidList.push(r)
                                } catch (ex) {
                                }
                        }

                        if (!SRDotDX.gui.joining) SRDotDX.gui.updateMessage(), SRDotDX.gui.refreshRaidList();
                    }
                },
                pushRaidToJoinQueue: function (id) {
                    var searchString = SRDotDX.gui.updateFilterContext && SRDotDX.config.chatFilterString != "" ? SRDotDX.config.filterSearchStringC : SRDotDX.config.filterSearchStringR;
                    var r, filter = SRDotDX.gui.cHTML('#DotDX_filters').ele().innerHTML;
                    r = SRDotDX.config.raidList[id];
                    if (SRDotDX.config.fltShowAll || (
                        (SRDotDX.config.fltShowNuked ? r.nuked : !r.nuked && (SRDotDX.config.fltIncVis || !r.visited)) &&
                        filter.indexOf('fltList_' + r.boss + '_' + (r.diff - 1)) < 0 &&
                        (searchString == "" || searchString.indexOf("," + r.boss + "_" + r.diff + ",") >= 0) ))
                        try {
                            SRDotDX.gui.joinRaidList.push(JSON.parse(JSON.stringify(r)))
                        } catch (ex) {
                        }
                },
                joining: false,
                joinRaidIndex: 0,
                joinRaidComplete: 0,
                joinRaidSuccessful: 0,
                joinRaidDead: 0,
                joinRaidInvalid: 0,
                joinSelectedRaids: function (fromChat) {
                    if (!this.joining) {
                        this.joining = true;
                        this.joinRaidIndex = 0;
                        this.joinRaidComplete = 0;
                        this.joinRaidSuccessful = 0;
                        this.joinRaidDead = 0;
                        this.joinRaidInvalid = 0;
                        if (SRDotDX.gui.joinRaidList.length == 0) {
                            this.joinFinish(true);
                            return
                        }
                        SRDotDX.gui.cHTML("#AutoJoinVisibleButton").ele().value = 'Cancel';
                        SRDotDX.gui.cHTML("#AutoImpJoinVisibleButton").ele().value = 'Cancel';
                        console.log('[DotDX] Hyperfast joining ' + SRDotDX.gui.joinRaidList.length + ' raids');
                        while (SRDotDX.gui.joinRaidIndex < Math.min(30, SRDotDX.gui.joinRaidList.length)) SRDotDX.request.joinRaid(SRDotDX.gui.joinRaidList[SRDotDX.gui.joinRaidIndex++]);
                    }
                    else if (!fromChat) this.joinFinish();
                },
                joinFinish: function (recalc) {
                    this.joining = false;
                    SRDotDX.request.quickBtnLock = true;
                    SRDotDX.gui.cHTML("#AutoJoinVisibleButton").ele().value = 'Join';
                    SRDotDX.gui.cHTML("#AutoImpJoinVisibleButton").ele().value = 'Import & Join';
                    //this.joinRaidList = [];
                    if (recalc) this.selectRaidsToJoin('joining finish');
                },
                refreshFriends: function () {
                    var content = "", ff, i = 0, f = false, friend;
                    var parentDiv = SRDotDX.gui.cHTML('#FPXfsOptions');
                    parentDiv.html('<span class="generic">User</span><span class="share">Srp</span><span class="share">Sml</span><span class="share">Med</span><span class="share">Lrg</span><span class="share" style="margin-right: 27px">Oth</span><hr style="width: 270px; margin: 3px auto 4px; border: 0; height: 1px; background-color: #999;">', true);
                    for (friend in SRDotDX.config.friendUsers) {
                        ff = SRDotDX.config.friendUsers[friend];
                        content += (f ? '<br>' : '') + '<span class="generic">' + friend + '</span>' +
                            '<input type="checkbox" id="fs:' + friend + ':0' + '"/><label for="fs:' + friend + ':0' + '"></label>' +
                            '<input type="checkbox" id="fs:' + friend + ':1' + '"/><label for="fs:' + friend + ':1' + '"></label>' +
                            '<input type="checkbox" id="fs:' + friend + ':2' + '"/><label for="fs:' + friend + ':2' + '"></label>' +
                            '<input type="checkbox" id="fs:' + friend + ':3' + '"/><label for="fs:' + friend + ':3' + '"></label>' +
                            '<input type="checkbox" id="fs:' + friend + ':4' + '"/><label for="fs:' + friend + ':4' + '"></label>';
                        f = true;
                    }
                    parentDiv.html('<div style="overflow-y: scroll; width: 277px; height: 414px">' + content + '</div>', false);
                    for (friend in SRDotDX.config.friendUsers) {
                        ff = SRDotDX.config.friendUsers[friend];
                        for (i = 0; i < 5; i++) SRDotDX.gui.cHTML('#fs:' + friend + ':' + i).on('click', function (e) {
                            SRDotDX.gui.fsEleClick(e)
                        }).ele().checked = ff[i];
                    }
                },
                DeleteRaids: function () {
                    if (!this.joining) {
                        console.log('[DotDX] Erasing visible raids ...');
                        var rn = SRDotDX.gui.joinRaidList.length;
                        if (rn > 0 && (!SRDotDX.config.confirmDeletes || confirm('This will delete ' + rn + ' raids. Continue? \n (This message can be disabled on the options tab.)'))) {
                            var i, tot = 0;
                            for (i = 0; i < rn; i++) {
                                SRDotDX.gui.deleteRaidFromDB(SRDotDX.gui.joinRaidList[i].id);
                                tot++;
                            }
                            SRDotDX.gui.doStatusOutput(tot + ' raids deleted');
                            SRDotDX.gui.selectRaidsToJoin();
                            console.log('[DotDX] Erasing complete');
                        }
                    }
                },
                GetDumpText: function () {
                    var dumptext = "";
                    var pre = "http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons?kv_action_type=raidhelp";
                    var i, raid;
                    for (i = 0; i < SRDotDX.gui.joinRaidList.length; i++) {
                        raid = SRDotDX.gui.joinRaidList[i];
                        if (raid.nuked) continue;
                        dumptext += pre + '&kv_raid_id=' + raid.id + '&kv_difficulty=' + raid.diff + '&kv_raid_boss=' + raid.boss + '&kv_hash=' + raid.hash + '&kv_serverid=' + raid.sid + ', ';
                    }
                    return dumptext;
                },
                RaidAction: function (f) {
                    switch (f) {
                        case 'share':
                            SRDotDX.gui.DumpRaidsToShare(true);
                            break;
                        case 'post':
                            if (SRDotDX.gui.isPosting) SRDotDX.gui.FPXStopPosting();
                            else SRDotDX.gui.DumpRaidsToShare(), SRDotDX.gui.FPXspamRaids();
                            break;
                        case 'post_share':
                            if (SRDotDX.gui.isPosting) SRDotDX.gui.FPXStopPosting();
                            else SRDotDX.gui.FPXspamRaids();
                            break;
                        case 'post_friend':
                            if (SRDotDX.gui.isPosting) SRDotDX.gui.FPXStopPosting();
                            else SRDotDX.gui.spamRaidsToFriends();
                            break;
                        case 'delete':
                            SRDotDX.gui.DeleteRaids();
                            break;
                    }
                    //r = null;
                    return false;
                },
                DumpRaidsToShare: function (b) {
                    document.getElementById('DotDX_raidsToSpam').value = SRDotDX.gui.GetDumpText();
                    SRDotDX.gui.doStatusOutput('Copied ' + SRDotDX.gui.joinRaidList.length + ' raid links to share tab.');
                    console.log('[DotDX] Dumped ' + SRDotDX.gui.joinRaidList.length + ' to share');
                    if (b) {
                        var e = document.getElementById('lots_tab_pane').getElementsByTagName('li');
                        var i = e.length;
                        while (i--) if (e[i].getAttribute('class').indexOf('active') > -1) e[i].className = e[i].className.replace(/ active$/g, '');
                        (document.getElementById('FPXShareTab').parentNode).className += ' active';
                    }
                },
                BeginDeletingExpiredUnvisitedRaids: function () {
                    SRDotDX.gui.DeleteExpiredUnvisitedRaids();
                    setInterval('SRDotDX.gui.DeleteExpiredUnvisitedRaids();', 600000)
                },
                DeleteExpiredUnvisitedRaids: function () {
                    console.log('[DotDX] Deleting nuked and old unvisited raids');
                    var ct, item, i;
                    if (SRDotDX.config.unvisitedRaidPruningMode <= 2 && SRDotDX.config.unvisitedRaidPruningMode >= 0) {
                        //var raidList = document.getElementById('raid_list').childNodes;
                        var pruneTime = new Date().getTime() / 1000;
                        var raidid, raid, raidInfo, pruneTimer;
                        ct = 0;
                        for (raidid in SRDotDX.config.raidList) {
                            raid = SRDotDX.config.raidList[raidid];
                            if (SRDotDX.raids[raid.boss]) {
                                if (!raid.visited || raid.nuked) {
                                    raidInfo = SRDotDX.raids[raid.boss];
                                    pruneTimer = SRDotDX.raidSizes[raidInfo.size].pruneTimers[SRDotDX.config.unvisitedRaidPruningMode];
                                    if (raid.nuked) pruneTimer = pruneTimer / 2; //double time nuked pruning
                                    if ((pruneTime - raid.timeStamp) >= pruneTimer) {
                                        SRDotDX.gui.deleteRaidFromDB(raidid);
                                        ct++
                                    }
                                }
                            }
                            else {
                                SRDotDX.gui.deleteRaidFromDB(raidid);
                                ct++
                            }
                        }
                        if (ct > 0) SRDotDX.gui.doStatusOutput(ct + ' old unvisited raids pruned.');
                        console.log('[DotDX] Number of raids pruned: ' + ct);
                        SRDotDX.gui.selectRaidsToJoin('prune');
                    }
                },
                switchBot: function () {
                    //console.log('[SRDotDX] Bot button clicked');
                    var chkBot = document.getElementById('SRDotDX_options_hideBotLinks');
                    chkBot.checked = !SRDotDX.config.hideBotLinks;
                    SRDotDX.config.hideBotLinks = chkBot.checked;
                    SRDotDX.gui.cHTML('#SRDotDX_botClass').html('.bot {display: ' + (chkBot.checked ? 'none !important' : 'block') + '}', true);
                    SRDotDX.gui.scrollChat();
                },
                scrollChat: function (num) {
                    var els = document.getElementsByClassName('chat_message_window');
                    var i = num ? num : 0;
                    if (num) els[num].scrollTop = els[num].scrollHeight;
                    else {
                        i = els.length;
                        while (i--) els[i].scrollTop = els[i].scrollHeight;
                    }
                },
                getScrollbarWidth: function () {
                    var scrollDiv = SRDotDX.gui.cHTML('div').set({id: "DotDX_scrollMeasure", style: "width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px;"}).attach('to', document.body).ele();
                    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
                    document.body.removeChild(document.getElementById('DotDX_scrollMeasure'));
                    return scrollbarWidth;
                },
                applyFontSize: function (num) {
                    var n = typeof num == 'number' ? num : SRDotDX.config.fontNum, s1, s2, mod = '';
                    console.log("[DotDX] apply font size with id: " + n);
                    SRDotDX.config.fontNum = n;
                    switch (n) {
                        case 1:
                            s1 = 12;
                            s2 = 10;
                            mod = '; vertical-align: top;';
                            break;
                        case 2:
                            s1 = 10;
                            s2 = 8;
                            break;
                        default:
                            s1 = 11;
                            s2 = 9;
                            break;
                    }
                    SRDotDX.gui.cHTML('#DotDX_fontClass').html('\
                #kong_game_ui div.chat_message_window p span.message, #kong_game_ui div.chat_message_window p span.separator, #kong_game_ui div.chat_message_window p span.username {font-size: ' + s1 + 'px}\
                #kong_game_ui div.chat_message_window p span.room, #kong_game_ui div.chat_message_window p span.timestamp {font-size: ' + s2 + 'px' + mod + '}\
                ', true);
                },
                applyTabs: function () {
                    document.getElementById('lots_tab').firstChild.innerHTML = SRDotDX.config.dotdxTabName;
                    var elems = ["#DotDX_Dummy"];
                    if (SRDotDX.config.hideGameTab) elems.push("#kong_game_ui li#game_tab");
                    if (SRDotDX.config.hideAccTab) elems.push("#kong_game_ui li#accomplishments_tab");
                    SRDotDX.gui.cHTML('#DotDX_tabs').html(elems.join(", ") + ' { display: none !important }', true);
                },
                applyTheme: function (num) {
                    var n = typeof num == 'number' ? num : SRDotDX.config.themeNum;
                    console.log("[DotDX] apply theme with id: " + n);
                    var c, check, radio;
                    SRDotDX.config.themeNum = n;
                    switch (n) {
                        case 1:
                            check = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAcCAYAAABoMT8aAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAJxSURBVEhL7VRLaxNRGL1QEIVs9AckDamZZPLOvDMzicZEjBltY5qnisFFKbgRVLoQEf0JVkShTUVQCl2oG9GNS0FcuXDpD3DrxneP3x0mfdimTXHjwoHDMN/cc+a73z1nmCAImVgs9joej39NJBLYAau07kM0Gu0EAoH9bHBR8W02m4WqqtB1fSg0TYMkSUgmkx+JI3l0xujLvzg5l8vBsizYtr0FvG6apiuSSqV4J8c8OmO8Pf4Fviifz6NQKGwLLmQYBtLpNEig5NHXBfiC7YgDcPH/ArsI/NUpbPTBMAx8wAWIsy5AxW8DJ/IFw8DfcyfKsvyTOi56dMYcx1nhWyCL/un9LeAC5XL5Xa1WEz06Y61Wa5zwst1uf+l0OtgBq7TmfbPZrDYajTGPzvacRup0jpAURdHnChDxzahpNNMZXCsWMJ+NfDoz7r/l8/n2cYEfo6RRz0i4YlpYadTxYrKClYOHPueCwXMj+SCXlXBZ1vG828SSU8Mj8sNsaAKq3x/c5ES7cASWTaahOydywbwk46qi41Wvi351CovUxUw48l0WonOhUGhsTcCkF8clBTOVMkqyCps/0/0GiTw728YikR9YeVwSIjAPR6/Tb+2AO0QuwAdUVXXcrVaozRbun3ZwPiPjdqmE5cY0+tT2gmFiNhKBFouDTmCzlblAMZPFPA2zf3IST2p1PO02sDxdd8lLioZeWIBFpzA0TIaqoRwWcS+Zcvf68BQRnSk8VhX0JsKwaBa7plHXdBwVRNxJpdE/4WBBN3CR9mzxmdCQR0qjQaSKGMNNql+g/ZqK6iZxb2nkJAqOIStrtX81jYz9Bt6mjYTW51PyAAAAAElFTkSuQmCC';
                            radio = 'iVBORw0KGgoAAAANSUhEUgAAAA0AAAAaCAYAAABsONZfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAI+SURBVDhPxZJNiBJhGMeHTgXdOrR0CUFdCTR1VscZW3W+Vs0P/JhZv2fVERSLukRBCEUHCRb6gKgg6tQlunrpVHSOztG9aLtsHQxcyv8+E22HcldvO/DjfWGe//M87/P8GfqO6Lp+PJ/P++m82Wg03vV6vXG/3//ZarW2isXiiP5dyGazvkwmc1LTtGPMH0GKgt92u90dEuBfOp3Oj0Kh8DKVSp2n8zRDgrPlcvkNZf1lmib2w/pPlUZUUWHocq1er08Mw8A8KpXKWJKkoSV6TZWwKCR6z6TT6S1qEYuSSCTGTDwe/04PxKKoqrrDRCKRD4qiYFFCodAnRhCEZyScRqNRzMOK83g8I0YUxUowGNwmMebhdru/yrI8YOhhZ3ief+z3+yeBQAD74fV6J9TaUxpckcnlcidoGDGWZZ9Tpm8+n29KYA8Knjqdzi/UzRMSVCmeZajXozT/UzSZVcp0dXl5+ZXD4fhst9u3bTbbR5fL9YJ2c92qYAnIdkuHaNh2s4lmrYYWYW4YMNvtgw1bL5Vgrq3hYiSKy6KIS5IIs6TBaDRmG7ak69igjQ84DnfOreIeLXOT53FFFFBb12cbNpNMwqQF3o3F8FBV/zLkWBhaEYVZho1LMprBEO7T+Yha3GOTW0FrXQMln2HYmIhqgMNtas2qYAkeyDJucT5UCzkr+H/DEpAFHgbL4kZIwJDEgxU/upk4EpTgAMPyiNCZVFQUs1lo6QwUSUI4HJ5vWEoCjqbIBbnf98MyrL60C6YGOtWmdTvcAAAAAElFTkSuQmCC';
                            c = ['#333', '#ddd', '#404040', '#fff', '#792c2c', '#333', '#101010', '0 0 5px #202020', '#333', '0 0 10px #000',
                                '#ccc', '#eee', '0 0 4px #555', '#000', '#444', '0 0 5px #888', '#fff', '#792c2c', '0 0 12px #fff', '#fff',
                                '#000', 'top,#aa4141,#5c2828', '0 0 5px #aaa;', '#555', '#000', '0 -2px 6px -3px #000', '#fff', '0 0 4px #000;', '#ccc', '#ddd',
                                'none', '#000', '0 0 5px 1px #222', '#444', '#fff', '#000', '#333', '0 0 8px #000', '#ccc', '#222',
                                '#111', '#fff', '0 0 4px #111', '#333', '#ddd', '#111', '#444', '#3a3a3a', '#111', 'none',
                                '#111', 'none', '#111', 'none', '#111', 'none', '#404040', '#60cc60', '#60cc60', '0 0 5px #00aa1a',
                                '#d6c96a', '#d6c96a', '0 0 5px #7e7400', '#e47070', '#e47070', '0 0 5px #aa0000', '#c28ee6', '#c28ee6', '0 0 5px #9000ff', '#000',
                                'top,#404040,#404040', '#000', 'top,#2a2a2a,#492c2c', '#78bcfa', '0 0 4px #000', '#6dc97c', '#ec6666', '#f8b60d', '0 0 5px #000', '#ccc',
                                '#fff', '0 0 6px #999', '#aaa', '#bbb', '#dfa160', '#ffb261', '0 0 4px #9b5812', '#000', '#404040', '0 0 6px #111',
                                '#eee', '#000', '0 0 3px #101010', '0 0 5px #000', 'top,#303030,#444', '#1a1a1a', '#000', '0 0 8px #fff', '#ddd', '#101010',
                                '0 0 3px #000', '0 0 5px #202020', 'top,#3a3a3a,#555', '#eee', '#000', '0 0 5px #000', '0 0 10px #111', 'top,#303030,#404040', '', '',
                                '', 'top,#303030,#406785', '', '', '', 'top,#303030,#306638', '', '', '', 'top,#303030,#693434',
                                '', '', '', 'top,#303030,#887E35', '#eaeaea', '0 0 5px #000', '#e0e0e0', '#101010', '0 0 5px #000', '0 0 5px #202020',
                                'top,#303030,#444', '', '', 'top,#2a2a2a,#222', '#eee', '#111', '0 0 5px #000', '0 0 4px #303030', 'top,#333,#555', '0 0 6px #101010',
                                'top,#2a2a2a,#404040', '#eee', '#1a1a1a', '0 0 5px #000', '0 0 5px #222', 'top,#333,#4a4a4a', '0 0 6px #111', '', 'top, #2a2a2a, #333', '0 0 6px #111',
                                '', 'top,#2a2a2a,#426B44', '0 0 6px #111', '', 'top,#2a2a2a,#40668d', '0 0 6px #111', '', 'top,#2a2a2a,#612525', '#e0e0e0', '#101010',
                                '0 0 5px #000', '0 0 8px #101010', 'top,#303030,#723434', 'top,#202020,#4d2424', '#eee', '0 0 4px #000', '#e0e0e0', '#888', 'top,#444,#555', '#eee',
                                '#000', '0 0 5px #000', '0 0 6px #111', 'left,#303030,#303030', '', '#aaa', '#000', '0 0 5px #000', 'top,#444,#444', '#606060',
                                '#101010', '#e5e5e5', '#f5f5f5', '0 0 6px #c0c0c0', '#eee', '#d83737', '0 0 3px #000', 'top,#404040,#556d52', 'top,#404040,#746c56', 'top,#404040,#664040',
                                'top,#404040,#604c70', '#00bb00', '#dbb32e', '#d13c3c', '#d16ad1', '#eee', '0 0 6px #000', '#101010', '0 0 5px #000', 'top,#2a2a2a,#3a3a3a',
                                '#777', '#e0e0e0', '0 0 5px #000', '#f0f0f0', '0 0 8px #000', '#e0e0e0', '0 0 5px #000', '#000', '#3a3a3a', '#303030',
                                '#000', '#202020', '', '#552727', '#686868', '#303030', '#c0c0c0', '', '#111', '#222',
                                '#e0e0e0', '#fff', '0 0 6px #999', '#ffda8e', '#ff8080', '#ff4040', '#ccc', '#2a2a2a'];
                            break;
                        default:
                            check = 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAC4SURBVDhPnZNRCsQgDAW9pPfxuCKICCIiyC62RPIksnEDU2zMlH7kGefc5xYzax5uas5ba19xjKEGxN67GhBba2pArLWqAbGUogbEnLMaEFNKakCMMaoBMYSgBkTvvRoQb3nEv0v64i/Wr94UiFIKToAopYDDZ0CUUkDMez4DIt/8PQkE7y2Rbz6905nfU3+JfPN3eDJoZon79hO8z++XKCVg7xEgSik4AaKUghMg3vKI83GLMcZ8AZMOnRQ6c3RxAAAAAElFTkSuQmCC';
                            radio = 'iVBORw0KGgoAAAANSUhEUgAAAA0AAAAaCAYAAABsONZfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAFpSURBVDhP1VJNi4IAEPV3durU1V/QJTAIT3WQopvRD4ggCTKrQ8d+gwkRlB+RKBHhW96sxUrrurdlBx7DvHnjqPOUr3E+nzGbzdDr9dBsNiWzJp9LirFYLNDpdLDdbnE6ncBgZk2e/Vz6GavVCsPhEEmSIMuyN5BnnzoZCIIA7XYbURTh8XiUgn3qqFcsy8Jms8H9fq8EddQr3W4Xh8MBt9utEtRRr2iahjAM5b2rQB31smm/3yOO40pQJ5t4h+VyicvlUgnqqJeDcqXnebK+DOxT9zo0/3+/38fxeITv+28gz/7rTs+Yz+fQdV1ewXVdcQMza/Ls59Ji8ImTyURsQ+8xsyafS97jnxh2vV5jPB5LrjQs/dVqtVCr1VCv1yWzJl9qWMdx0Gg0oKrqC6xt2y43rGmahYEnRqNRuWG5/rsh8qWGZcMwjMLAYDAQ/kfD8oN3ux2m06lk1r8y7PV6RZqmkv/SsIryAXc40Mw81bSxAAAAAElFTkSuQmCC';
                            c = ['#404040', '#303030', '#e0e0e0', '#000', '#f0f0f0', '#ccc', '#6a6a6a', '0 0 4px #707070', '#ddd', '0 0 5px #333',
                                '#666', '#222', '0 0 3px #ccc', '#aaa', '#e6e6e6', '0 0 5px #888', '#000', '#f5f5f5', '0 0 5px #999', '#000',
                                '#888', 'top,#fff,#ddd', '0 0 5px #555;', '#f6f6f6', '#888', '0 -2px 6px -4px #444', '#222', '', '#777', '#888',
                                'underline', '#888', '0 0 6px #999', '#fff', '#000', '#777', '#fff', '0 0 8px #999', '#4b4b4b', '#f0f0f0',
                                '#bbb', '#333', '0 0 4px #ddd', '#fff', '#222', '#d0d0d0', '#fff', '#f7f7f7', '#8ab389', 'top,#cbe7c4,#f3faf2',
                                '#adad68', 'top,#f7f0c8,#fcfbf8', '#b18780', 'top,#f3d7d1,#FCF7F7', '#a99abb', 'top,#ddd4e2,#f4f0f7', '#fff', '', '', '0 0 5px #aaa',
                                '', '', '0 0 5px #aaa', '', '', '0 0 5px #aaa', '', '', '0 0 5px #aaa', '#c0c0c0',
                                'top,#f0f0f0,#fff', '#a1b4be', 'top,#dce8f1,#eff4f7', '#276594', 'none', '#267422', '#973131', '#085088', 'none', '#444',
                                '#000', '0 0 6px #888', '#666', '#666', '#946a3d', '#946a3d', '0 0 4px #f5Cc68Aa', '#777', '#eee', '0 0 7px #777',
                                '#000', '#606060', '0 0 3px #707070', '0 0 4px #ccc', 'top,#fff,#ddd', '#808080', '#707070', '0 0 4px #909090', '#111', '#707070',
                                '0 0 5px #aaa', '0 0 5px #808080', 'top,#f5f5f5,#dadada', '#fff', '#444', '0 0 10px #eee', '0 0 7px #222', 'top,#999,#555', '#000', '0 0 10px #fff',
                                '0 0 7px #1c3a61', 'top,#dcf0fd,#6794b2', '#000', '0 0 10px #fff', '0 0 7px #3d6425', 'top,#effde5,#618d4f', '#000', '0 0 10px #fff', '0 0 7px #412222', 'top,#ffefef,#aa5858',
                                '#000', '0 0 10px #fff', '0 0 7px #807823', 'top,#fffbe0,#c9b41d', '#101010', '0 0 8px #fff', '#333', '#707070', '0 0 6px #999', '0 0 5px #808080',
                                'top,#f5f5f5,#dadada', '', '', 'top,#f5f5f5,#fff', '#222', '#999', '0 0 4px #ccc', '0 0 4px #ccc', 'top,#ccc,#eee', '0 0 4px #bbb',
                                'top,#ccc,#ddd', '#444', '#aaa', '', '0 0 3px #ddd', 'top, #eee, #fff', '0 0 5px #bbb', '0 0 3px #bbb', 'top,#fff,#ccc', '0 0 5px #a7ca9c',
                                '0 0 3px #bbb', 'top, #fff, #b9daaf', '0 0 5px #a9d3ff', '0 0 3px #bbb', 'top, #fff, #a4c8ee', '0 0 5px #ffbaba', '0 0 3px #bbb', 'top,#fff,#f0a4a4', '#222', '#aaa',
                                '', '0 0 4px -1px #aaa', 'top,#fff,#d1dfee', 'top, #dfe8f1,#fff', '#333', '', '#bbb', '#ccc', 'top,#eee,#fff', '#444',
                                '#aaa', '1px 1px 2px #ddd', '0 0 4px #ccc', 'left,#fff,#eee', '0 0 3px #ddd', '#aaa', '#aaa', '0 0 3px #ccc', 'top,#f5f5f5,#f6f6f6', '#fff',
                                '#e0e0e0', '#111', '#111', '0 0 8px #777', '#000', '#bd0000', '0 0 2px #ff8e8e', 'top,#d8ecd3,#f5f5f5', 'top,#faf4d2,#f5f5f5', 'top,#fae4df,#f5f5f5',
                                'top,#e9dcf3,#f5f5f5', '#00bb00', '#dbb32e', '#d13c3c', '#d16ad1', '#000', '0 0 6px #808080', '#808080', '0 0 5px #aaa', 'top,#d0d0d0,#f0f0f0',
                                '#ccc', '#222', '', '', '0 0 4px #ccc', '', '', '#bbb', '#fff', '',
                                '#bbb', '#efefef', '#fafafa', '#eff4f9', '#5f9ea0', '#eff4f9', '#606060', 'none', '#202020', '#ddd',
                                '#e0e0e0', '#fff', '0 0 6px #999', '#b97c00', '#c82929', '#b10000', '', ''];
                            break;
                    }

                    SRDotDX.gui.cHTML('#DotDX_themeClass').html('\
                #maingame, #quicklinks li, div.game_page_wrap, div#kong_game_ui, #kong_game_ui .tabpane {background-color:' + c[0] + ' !important;}\
                #kong_game_ui ul.main_tabs li.tab a, div#serverButton {color:' + c[1] + '; background-color:' + c[2] + '; border-color:' + c[95] + ';}\
                #kong_game_ui ul.main_tabs li.tab a.active, div#serverButton:hover {color:' + c[3] + '; background-color:' + c[4] + '; border-color:' + c[96] + '; text-shadow:' + c[97] + ';}\
                #kong_game_ui div#chat_tab_pane, div#dotdx_sidebar_container, #kong_game_ui div#lots_tab_pane, #kong_game_ui ul.main_tabs {background-color:' + c[5] + ' !important;}\
                #kong_game_ui div#chat_window, #kong_game_ui div#lots_tab_pane div#dotdx_shadow_wrapper {border-color:' + c[6] + '; box-shadow:' + c[7] + ';}\
                #kong_game_ui div#chat_window_header, #kong_game_ui div#lots_tab_pane div#dotdx_shadow_wrapper {background-color:' + c[8] + ';}\
                #kong_game_ui div#chat_window_header {box-shadow:' + c[9] + ';}\
                #kong_game_ui div#chat_window_header div.dotdx_chat_overlay {border-color:' + c[175] + ';}\
                #kong_game_ui div#chat_window_header div.room_name_container, #kong_game_ui div#dotdx_status_div, #kong_game_ui .panel_handle a, #kong_game_ui #accomplishments_pane_title {color:' + c[10] + ';}\
                #kong_game_ui div#chat_window_header div.room_name_container .room_name, #kong_game_ui div#chat_window_header div.dotdx_chat_overlay > span, #kong_game_ui div#dotdx_status_div span, #kong_game_ui div#chat_room_tabs div a, #kong_game_ui div#lots_tab_pane ul li.tab div.tab_head {color:' + c[11] + '; text-shadow:' + c[12] + ';}\
                #kong_game_ui div#chat_window_header div.room_name_container, #kong_game_ui div#chat_room_tabs div a, #kong_game_ui div#dotdx_status_div, #kong_game_ui div#lots_tab_pane ul li.tab div.tab_head {border-color:' + c[13] + '; background-color:' + c[14] + ';}\
                #kong_game_ui div#chat_room_tabs div a:hover, #kong_game_ui div#lots_tab_pane ul li.tab div.tab_head:hover {text-shadow:' + c[15] + '}\
                #kong_game_ui div#chat_room_tabs div.active a, #kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_head {color:' + c[16] + '; background-color:' + c[17] + '; text-shadow:' + c[18] + ';}\
                #kong_game_ui div.chat_actions_container span.btn {color:' + c[19] + ' !important; border-color:' + c[20] + '; background:-webkit-linear-gradient(' + c[21] + '); background:-moz-linear-gradient(' + c[21] + ');}\
                #kong_game_ui div.chat_actions_container span.kong_ico.btn_target:active {text-shadow:' + c[22] + ';}\
                #kong_game_ui div#chat_rooms_container div.chat_tabpane.users_in_room, #kong_game_ui div#lots_tab_pane ul li.tab div.tab_pane { background-color:' + c[23] + '; border-color:' + c[24] + ';}\
                #kong_game_ui div#chat_rooms_container div.chat_tabpane.users_in_room { box-shadow: inset ' + c[25] + ';}\
                #kong_game_ui .user_row .username, #kong_game_ui div#lots_tab_pane ul { color:' + c[26] + '; text-shadow:' + c[27] + ';}\
                #kong_game_ui .user_row.away .username {color:' + c[28] + ';}\
                #kong_game_ui .user_row .guild-name {color:' + c[29] + ';}\
                #kong_game_ui .user_row .username {text-decoration:' + c[30] + ';}\
                #kong_game_ui div.chat_controls {border-color:' + c[31] + '; box-shadow:' + c[32] + ';}\
                #kong_game_ui div.chat_controls, #kong_game_ui textarea.chat_input {background-color:' + c[33] + ';}\
                #kong_game_ui textarea.chat_input {color:' + c[34] + ';}\
                #kong_game_ui div.chat_actions_container ul.chat_actions_list {border-color:' + c[35] + '; background-color:' + c[36] + '; box-shadow:' + c[37] + ';}\
                #kong_game_ui div.chat_actions_container ul.chat_actions_list li {border-color:' + c[36] + '; color:' + c[38] + ';}\
                #kong_game_ui div.chat_actions_container ul.chat_actions_list li:hover {background-color:' + c[39] + '; border-color:' + c[40] + '; color:' + c[41] + '; box-shadow:' + c[42] + ';}\
                #kong_game_ui div.chat_message_window {background-color:' + c[43] + '; color:' + c[44] + ';}\
                #kong_game_ui div.chat_message_window p {border-bottom-color:' + c[45] + '; border-top-color:' + c[46] + ';}\
                #kong_game_ui div.chat_message_window p.even {background-color:' + c[47] + ';}\
                #kong_game_ui div.chat_message_window p.SRDotDX_raid, #kong_game_ui div.chat_message_window p.whisper, #kong_game_ui div.chat_message_window p.script {border-top-color:' + c[56] + ';}\
				#kong_game_ui div.chat_message_window p.DotDX_diff_1 {border-bottom-color:' + c[48] + '; background: -webkit-linear-gradient(' + c[49] + '); background: -moz-linear-gradient(' + c[49] + ');} \
				#kong_game_ui div.chat_message_window p.DotDX_diff_2 {border-bottom-color:' + c[50] + '; background: -webkit-linear-gradient(' + c[51] + '); background: -moz-linear-gradient(' + c[51] + ');} \
				#kong_game_ui div.chat_message_window p.DotDX_diff_3 {border-bottom-color:' + c[52] + '; background: -webkit-linear-gradient(' + c[53] + '); background: -moz-linear-gradient(' + c[53] + ');} \
				#kong_game_ui div.chat_message_window p.DotDX_diff_4 {border-bottom-color:' + c[54] + '; background: -webkit-linear-gradient(' + c[55] + '); background: -moz-linear-gradient(' + c[55] + ');} \
                #kong_game_ui div.chat_message_window p span.message a {color:' + c[79] + '}\
                #kong_game_ui div.chat_message_window p span.message a:hover {color:' + c[80] + '; text-shadow:' + c[81] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_1 span.message a {color:' + c[57] + '; text-shadow:' + c[74] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_1 span.message a:hover {color:' + c[58] + '; text-shadow:' + c[59] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_2 span.message a {color:' + c[60] + '; text-shadow:' + c[74] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_2 span.message a:hover {color:' + c[61] + '; text-shadow:' + c[62] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_3 span.message a {color:' + c[63] + '; text-shadow:' + c[74] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_3 span.message a:hover {color:' + c[64] + '; text-shadow:' + c[65] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_4 span.message a {color:' + c[66] + '; text-shadow:' + c[74] + ';}\
                #kong_game_ui div.chat_message_window p.DotDX_diff_4 span.message a:hover {color:' + c[67] + '; text-shadow:' + c[68] + ';}\
                #kong_game_ui div.chat_message_window p.script {border-bottom-color:' + c[69] + '; background: -webkit-linear-gradient(' + c[70] + '); background: -moz-linear-gradient(' + c[70] + ');}\
                #kong_game_ui div.chat_message_window p.whisper {border-bottom-color:' + c[71] + '; background: -webkit-linear-gradient(' + c[72] + '); background: -moz-linear-gradient(' + c[72] + '); }\
                #kong_game_ui div.chat_message_window p span.username {color:' + c[73] + '; text-shadow:' + c[74] + ';}\
                #kong_game_ui div.chat_message_window p span.username.ign {color:' + c[75] + ';}\
                #kong_game_ui div.chat_message_window p.sent_whisper span.username, #kong_game_ui div.chat_message_window p span.username.is_self {color:' + c[76] + ';}\
                #kong_game_ui div.chat_message_window p.emote {color:' + c[77] + '; text-shadow:' + c[78] + ';}\
                #kong_game_ui div.chat_message_window p span.room {color:' + c[82] + ';}\
                #kong_game_ui div.chat_message_window p span.timestamp, #kong_game_ui div.chat_message_window p span.ingamename {color:' + c[83] + ';}\
                #kong_game_ui div.chat_message_window p span.message a.reply_link {color:' + c[79] + '}\
                #kong_game_ui div.chat_message_window p span.message a.reply_link:hover {color:' + c[80] + '; text-shadow:' + c[81] + ';}\
                #kong_game_ui div.chat_message_window p span.message a.chat_link {color:' + c[84] + ';}\
                #kong_game_ui div.chat_message_window p span.message a.chat_link:hover {color:' + c[85] + '; text-shadow:' + c[86] + ';}\
                #kong_game_ui div.chat_message_window p > span.slider {border-color:' + c[87] + '; background:' + c[88] + '; box-shadow:' + c[89] + ';}\
                #kong_game_ui div#chat_raids_overlay {color:' + c[90] + '; border-color:' + c[91] + '; box-shadow:' + c[92] + '; text-shadow:' + c[93] + '; background: -webkit-linear-gradient(' + c[94] + '); background: -moz-linear-gradient(' + c[94] + ');}\
                div#dotdx_sidebar_container > button {color:' + c[98] + '; border-color:' + c[99] + '; text-shadow:' + c[100] + '; box-shadow:' + c[101] + '; background: -webkit-linear-gradient(' + c[102] + '); background: -moz-linear-gradient(' + c[102] + ');}\
                div#dotdx_sidebar_container > button:hover {color:' + c[103] + '; border-color:' + c[104] + '; text-shadow:' + c[105] + '; box-shadow:' + c[106] + '; background: -webkit-linear-gradient(' + c[107] + '); background: -moz-linear-gradient(' + c[107] + ');}\
                div#dotdx_sidebar_container > button.b:hover {color:' + c[108] + '; text-shadow:' + c[109] + '; box-shadow:' + c[110] + '; background: -webkit-linear-gradient(' + c[111] + '); background: -moz-linear-gradient(' + c[111] + ');}\
                div#dotdx_sidebar_container > button.g:hover {color:' + c[112] + '; text-shadow:' + c[113] + '; box-shadow:' + c[114] + '; background: -webkit-linear-gradient(' + c[115] + '); background: -moz-linear-gradient(' + c[115] + ');}\
                div#dotdx_sidebar_container > button.r:hover {color:' + c[116] + '; text-shadow:' + c[117] + '; box-shadow:' + c[118] + '; background: -webkit-linear-gradient(' + c[119] + '); background: -moz-linear-gradient(' + c[119] + ');}\
                div#dotdx_sidebar_container > button.y:hover {color:' + c[120] + '; text-shadow:' + c[121] + '; box-shadow:' + c[122] + '; background: -webkit-linear-gradient(' + c[123] + '); background: -moz-linear-gradient(' + c[123] + ');}\
                div#dotdx_sidebar_container > div.label {color:' + c[124] + '; text-shadow:' + c[125] + ';}\
                div#dotdx_sidebar_container > input[type=\"text\"] {color:' + c[126] + '; border-color:' + c[127] + '; text-shadow:' + c[128] + '; box-shadow:' + c[129] + '; background: -webkit-linear-gradient(' + c[130] + '); background: -moz-linear-gradient(' + c[130] + ');}\
                div#dotdx_sidebar_container > input[type=\"text\"]:hover, div#dotdx_sidebar_container > input[type=\"text\"]:focus {color:' + c[131] + '; border-color:' + c[132] + '; background: -webkit-linear-gradient(' + c[133] + '); background: -moz-linear-gradient(' + c[133] + ');}\
                #kong_game_ui div.tab_pane p.collapsingCategory {color:' + c[134] + '; border-color:' + c[135] + '; text-shadow:' + c[136] + '; box-shadow:' + c[137] + '; background: -webkit-linear-gradient(' + c[138] + '); background: -moz-linear-gradient(' + c[138] + ');}\
                #kong_game_ui div.tab_pane p.collapsingCategory:hover {box-shadow:' + c[139] + '; background: -webkit-linear-gradient(' + c[140] + '); background: -moz-linear-gradient(' + c[140] + ');}\
                #kong_game_ui div.tab_pane input[type=\"button\"] {color:' + c[141] + '; border-color:' + c[142] + '; text-shadow:' + c[143] + '; box-shadow:' + c[144] + '; background: -webkit-linear-gradient(' + c[145] + '); background: -moz-linear-gradient(' + c[145] + ');} \
				#kong_game_ui div.tab_pane input[type=\"button\"].generic:hover {box-shadow:' + c[146] + '; text-shadow:' + c[147] + '; background: -webkit-linear-gradient(' + c[148] + '); background: -moz-linear-gradient(' + c[148] + ');}\
				#kong_game_ui div.tab_pane input[type=\"button\"].green:hover, #kong_game_ui div.tab_pane input.landpmbuttonhigh {box-shadow:' + c[149] + '; text-shadow:' + c[150] + '; background: -webkit-linear-gradient(' + c[151] + '); background: -moz-linear-gradient(' + c[151] + ');}\
				#kong_game_ui div.tab_pane input[type=\"button\"].blue:hover {box-shadow:' + c[152] + '; text-shadow:' + c[153] + '; background: -webkit-linear-gradient(' + c[154] + '); background: -moz-linear-gradient(' + c[154] + ');}\
				#kong_game_ui div.tab_pane input[type=\"button\"].red:hover, #kong_game_ui div.tab_pane input[type=\"button\"][value=\"Cancel\"]:hover {box-shadow:' + c[155] + '; text-shadow:' + c[156] + '; background: -webkit-linear-gradient(' + c[157] + '); background: -moz-linear-gradient(' + c[157] + ');}\
				#kong_game_ui input#raidsBossFilter {color:' + c[158] + '; border-color:' + c[159] + '; text-shadow:' + c[160] + '; box-shadow:' + c[161] + '; background: -webkit-linear-gradient(' + c[162] + '); background: -moz-linear-gradient(' + c[162] + ');}\
				#kong_game_ui input#raidsBossFilter:hover, input#raidsBossFilter:focus {background: -webkit-linear-gradient(' + c[163] + '); background: -moz-linear-gradient(' + c[163] + ');}\
				ul#SRDotDX_tabpane_tabs input[type="text"].generic {color:' + c[164] + '; text-shadow:' + c[165] + '; border-bottom-color:' + c[166] + ';}\
				ul#SRDotDX_tabpane_tabs input[type="text"].generic:focus {border-color:' + c[167] + '; background: -webkit-linear-gradient(' + c[168] + '); background: -moz-linear-gradient(' + c[168] + ');}\
				textarea#DotDX_raidsToSpam, textarea#options_sbConfig {color:' + c[169] + '; border-color:' + c[170] + '; text-shadow:' + c[171] + '; box-shadow:' + c[172] + '; background: -webkit-linear-gradient(' + c[173] + '); background: -moz-linear-gradient(' + c[173] + ');}\
                #kong_game_ui span.notice {text-shadow:' + c[174] + ';}\
                #kong_game_ui ul#SRDotDX_tabpane_tabs input[type="checkbox"] + label:before {background: url(data:image/png;base64,' + check + ') 0 0 no-repeat}\
                #kong_game_ui ul#SRDotDX_tabpane_tabs input[type="checkbox"]:checked + label:before {background: url(data:image/png;base64,' + check + ') 0 -14px no-repeat}\
                #kong_game_ui ul#SRDotDX_tabpane_tabs input[type="radio"] + label:before {background: url(data:image/png;base64,' + radio + ') 0 0 no-repeat}\
                #kong_game_ui ul#SRDotDX_tabpane_tabs input[type="radio"]:checked + label:before {background: url(data:image/png;base64,' + radio + ') 0 -13px no-repeat}\
                #kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list {border-top-color:' + c[176] + '; box-shadow:' + c[177] + '; background: -webkit-linear-gradient(' + c[178] + '); background: -moz-linear-gradient(' + c[178] + ');}\
                #kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list .raid_list_item {border-top-color:' + c[179] + '; border-bottom-color:' + c[180] + ';}\
                a.DotDX_RaidLink {color:' + c[181] + ';}\
                a.DotDX_RaidLink:hover {color:' + c[182] + '; text-shadow:' + c[183] + ';}\
                a.dotdxRaidListDelete {color:' + c[184] + ';}\
                a.dotdxRaidListDelete:hover {color:' + c[185] + '; text-shadow:' + c[186] + ';}\
                #raid_list .raid_list_item.DotDX_N:hover {background: -webkit-linear-gradient(' + c[187] + '); background: -moz-linear-gradient(' + c[187] + ');}\
                #raid_list .raid_list_item.DotDX_H:hover {background: -webkit-linear-gradient(' + c[188] + '); background: -moz-linear-gradient(' + c[188] + ');}\
                #raid_list .raid_list_item.DotDX_L:hover {background: -webkit-linear-gradient(' + c[189] + '); background: -moz-linear-gradient(' + c[189] + ');}\
                #raid_list .raid_list_item.DotDX_NM:hover {background: -webkit-linear-gradient(' + c[190] + '); background: -moz-linear-gradient(' + c[190] + ');}\
                span.DotDX_List_diff.DotDX_N {color:' + c[191] + ';}\
                span.DotDX_List_diff.DotDX_H {color:' + c[192] + ';}\
                span.DotDX_List_diff.DotDX_L {color:' + c[193] + ';}\
                span.DotDX_List_diff.DotDX_NM {color:' + c[194] + ';}\
                #kong_game_ui div#helpBox { color:' + c[195] + '; box-shadow:' + c[196] + '; border-top-color:' + c[197] + '; text-shadow:' + c[198] + '; background: -webkit-linear-gradient(' + c[199] + '); background: -moz-linear-gradient(' + c[199] + ');}\
                #kong_game_ui div.chat_message_window p.script hr {background:' + c[200] + ';}\
                #kong_game_ui div.chat_message_window p.script span .title {color:' + c[201] + '; text-shadow:' + c[202] + ';}\
                #kong_game_ui div.chat_message_window p.script span .title:hover {color:' + c[203] + '; text-shadow:' + c[204] + ';}\
                table.raids, table.camps {color:' + c[205] + '; text-shadow:' + c[206] + ';} \
                table.raids td, table.camps td {border-color:' + c[207] + '; background:' + c[208] + ';}\
                table.raids td.ep, table.camps td.ep {background:' + c[209] + ';} \
                table.raids th, table.camps th {border-color:' + c[210] + '; background-color:' + c[211] + ';} \
                table.raids tr.head, table.camps tr.head {background:' + c[212] + ';} \
                table.raids tr.best td {background:' + c[213] + ';} \
                table.raids colgroup col.selected {border-color:' + c[214] + ';}\
                table.camps td.mark {background:' + c[215] + ';} \
                div.raid_list_item > span.DotDX_extInfo {color:' + c[216] + '; text-shadow:' + c[217] + ';}\
                #maingame, div.game_page_wrap {border-color:' + c[218] + ';}\
                body {background-color:' + c[219] + ' !important}\
                #quicklinks li a, #quicklinks li.rate {color:' + c[220] + '}\
                #quicklinks li a:hover {color:' + c[221] + '; text-shadow:' + c[222] + ';}\
                div.raid_list_item > span.DotDX_extInfo.failings {color:' + c[223] + ';}\
                div.raid_list_item > span.DotDX_extInfo.failingm {color:' + c[224] + ';}\
                div.raid_list_item > span.DotDX_extInfo.failingh {color:' + c[225] + ';}\
                div.cntrNotify {color:' + c[226] + '; background-color:' + c[227] + '; border-bottom-color:' + c[45] + ';}\
                ', true);
                },
                createFilterTab: function () {
                    var sm = SRDotDX.config.serverMode - 1;
                    var i = 0, raid, parentTableId = '', parentTable = '', cb;
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatGuild').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatSpecial').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatSmall').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatMedium').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatLarge').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatEpic').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatColossal').html("", true);
                    SRDotDX.gui.cHTML('#FPXRaidFilterWhatGigantic').html("", true);
                    while (i < SRDotDX.raidArray.length) {
                        raid = SRDotDX.raids[SRDotDX.raidArray[i]];
                        parentTableId = 'FPX_options_cbs_' + raid.id;
                        parentTable = SRDotDX.gui.cHTML('tr').set({id: parentTableId}).html(' \
                        <td>' + raid.name + '</td> \
                        <td><input type="checkbox" id="cb_filter_' + raid.id + '_0' + '"/><label for="cb_filter_' + raid.id + '_0' + '"></label></td> \
                        <td><input type="checkbox" id="cb_filter_' + raid.id + '_1' + '"/><label for="cb_filter_' + raid.id + '_1' + '"></label></td> \
                        <td><input type="checkbox" id="cb_filter_' + raid.id + '_2' + '"/><label for="cb_filter_' + raid.id + '_2' + '"></label></td> \
                        <td><input type="checkbox" id="cb_filter_' + raid.id + '_3' + '"/><label for="cb_filter_' + raid.id + '_3' + '"></label></td> \
                        <td><input type="checkbox" id="cb_filter_' + raid.id + '_all' + '"/><label for="cb_filter_' + raid.id + '_all' + '"></label></td>', false);

                        if (raid.stat == 'H') parentTable.attach('to', 'FPXRaidFilterWhatGuild');
                        else if (raid.stat == 'ESH') parentTable.attach('to', 'FPXRaidFilterWhatSpecial');
                        else if (raid.size > 1 && raid.size < 50) parentTable.attach('to', 'FPXRaidFilterWhatSmall');
                        else if (raid.size == 50) parentTable.attach('to', 'FPXRaidFilterWhatMedium');
                        else if (raid.size == 100) parentTable.attach('to', 'FPXRaidFilterWhatLarge');
                        else if (raid.size == 250) parentTable.attach('to', 'FPXRaidFilterWhatEpic');
                        else if (raid.size == 500) parentTable.attach('to', 'FPXRaidFilterWhatColossal');
                        else if (raid.size == 800) parentTable.attach('to', 'FPXRaidFilterWhatGigantic');

                        for (var j = 0; j < 4; j++) {
                            cb = document.getElementById('cb_filter_' + raid.id + '_' + j);
                            cb.checked = !SRDotDX.config.filters[sm][raid.id][j];
                            cb.addEventListener("click", function(){
                                var s = SRDotDX.config.serverMode - 1;
                                var raidId = this.id.substr(10).slice(0,-2);
                                var diffIndex = parseInt(this.id.slice(-1));
                                SRDotDX.config.filters[s][raidId][diffIndex] = !this.checked;
                                var ele = document.getElementById('DotDX_filters');
                                var eletxt = ele.innerHTML;
                                var reg = new RegExp('.DotDX_fltChat_' + raidId + '_' + diffIndex + ', ', 'g');
                                if(SRDotDX.config.filterChatLinks) {
                                    if (!this.checked && !reg.test(eletxt)) eletxt = '.DotDX_fltChat_' + raidId + '_' + diffIndex + ', ' + eletxt;
                                    else if (this.checked) eletxt = eletxt.replace(reg, '');
                                }
                                reg = new RegExp('.DotDX_fltList_' + raidId + '_' + diffIndex + ', ', 'g');
                                if(SRDotDX.config.filterRaidList) {
                                    if (!this.checked && !reg.test(eletxt)) eletxt = '.DotDX_fltList_' + raidId + '_' + diffIndex + ', ' + eletxt;
                                    else if (this.checked) eletxt = eletxt.replace(reg, '');
                                }
                                ele.innerHTML = eletxt;

                                var f = SRDotDX.config.filters[s][raidId];
                                document.getElementById('cb_filter_' + raidId + '_all').checked = !f[0] && !f[1] && !f[2] && !f[3];
                                SRDotDX.config.save(false);
                            });
                        }
                        cb = document.getElementById('cb_filter_' + raid.id + '_all');
                        cb.checked = !(SRDotDX.config.filters[sm][raid.id][0] && SRDotDX.config.filters[sm][raid.id][1] && SRDotDX.config.filters[sm][raid.id][2] && SRDotDX.config.filters[sm][raid.id][3]);
                        cb.addEventListener('click', function(){
                            var s = SRDotDX.config.serverMode - 1;
                            var raidId = this.id.substr(10).slice(0,-4), reg;
                            var elem = document.getElementById('DotDX_filters');
                            var ele = elem.innerHTML;
                            var chk = this.checked;
                            for(j=0; j<4; j++) {
                                document.getElementById('cb_filter_' + raidId + '_' + j).checked = chk;
                                SRDotDX.config.filters[s][raidId][j] = !chk;
                                reg = new RegExp('.DotDX_fltChat_' + raidId + '_' + j + ', ', 'g');
                                if (SRDotDX.config.filterChatLinks) {
                                    if (!chk && !reg.test(ele)) ele = '.DotDX_fltChat_' + raidId + '_' + j + ', ' + ele;
                                    else if (chk) ele = ele.replace(reg, '');
                                }
                                reg = new RegExp('.DotDX_fltList_' + raidId + '_' + j + ', ', 'g');
                                if (SRDotDX.config.filterRaidList) {
                                    if (!chk && !reg.test(ele)) ele = '.DotDX_fltList_' + raidId + '_' + j + ', ' + ele;
                                    else if (chk) ele = ele.replace(reg, '');
                                }
                            }
                            elem.innerHTML = ele;
                            SRDotDX.config.save(false);
                        });
                        i++
                    }
                },
                toggleFiltering: function () {
                    var query = '.DotDX_filter_dummy_0 ', i = 0, frcId = '.DotDX_fltChat_', raidId;
                    var sm = SRDotDX.config.serverMode - 1;
                    var fltLen = Object.keys(SRDotDX.config.filters[sm]).length;
                    if ((fltLen != SRDotDX.raidArray.length) || typeof SRDotDX.config.filters[sm]['serpina.jpg'] == 'object'
                        || typeof SRDotDX.config.filters[sm]['adastros'] == 'object'
                        || typeof SRDotDX.config.filters[sm]['gataalli'] == 'object') {
                        while (i < SRDotDX.raidArray.length) {
                            raidId = SRDotDX.raidArray[i];
                            if (typeof SRDotDX.config.filters[sm][raidId] == 'undefined') SRDotDX.config.filters[sm][raidId] = [false, false, false, false];
                            i++
                        }
                        for (i in SRDotDX.config.filters[sm]) if (SRDotDX.raidArray.indexOf(i) < 0) delete SRDotDX.config.filters[sm][i];
                        console.log('[DotDX] Filters array has been altered!');
                    }
                    if (SRDotDX.config.filterChatLinks) {
                        i = 0;
                        while (i < SRDotDX.raidArray.length) {
                            raidId = SRDotDX.raidArray[i];
                            if (SRDotDX.config.filters[sm][raidId][0]) query = frcId + raidId + '_0, ' + query;
                            if (SRDotDX.config.filters[sm][raidId][1]) query = frcId + raidId + '_1, ' + query;
                            if (SRDotDX.config.filters[sm][raidId][2]) query = frcId + raidId + '_2, ' + query;
                            if (SRDotDX.config.filters[sm][raidId][3]) query = frcId + raidId + '_3, ' + query;
                            i++
                        }
                    }
                    if (SRDotDX.config.filterRaidList) {
                        i = 0;
                        frcId = '.DotDX_fltList_';
                        while (i < SRDotDX.raidArray.length) {
                            raidId = SRDotDX.raidArray[i];
                            if (SRDotDX.config.filters[sm][raidId][0]) query = frcId + raidId + '_0, ' + query;
                            if (SRDotDX.config.filters[sm][raidId][1]) query = frcId + raidId + '_1, ' + query;
                            if (SRDotDX.config.filters[sm][raidId][2]) query = frcId + raidId + '_2, ' + query;
                            if (SRDotDX.config.filters[sm][raidId][3]) query = frcId + raidId + '_3, ' + query;
                            i++
                        }
                    }
                    //if (SRDotDX.config.hideVisitedRaidsInRaidList) query = '.DotDX_visitedRaidList, ' + query;
                    SRDotDX.gui.cHTML('#DotDX_filters').html(query + '{display: none !important}', true);
                },
                switchServer: function () {
                    var sm = SRDotDX.config.serverMode;
                    SRDotDX.config.serverMode = sm == 1 ? 2 : 1;
                    this.toggleFiltering();
                    this.createFilterTab();
                    this.applySidebarUI(0);
                    this.cHTML('#raidsBossFilter').ele().value = SRDotDX.config.lastFilter[SRDotDX.config.serverMode - 1];
                    this.updateFilterTxt(SRDotDX.config.lastFilter[SRDotDX.config.serverMode - 1], true);
                    //var grObj = {room: holodeck._chat_window._rooms_by_type["guild"]._room};
                    //holodeck._chat_window.leftRoom(grObj);
                    //holodeck._chat_window.bootstrapChat();
                    this.cHTML('#DotDX_serverModeRaids').html('#kong_game_ui p.DotDX_sid_' + (SRDotDX.config.serverMode == 2 ? '1' : '2') + ' {display: none !important}', true);
                    this.scrollChat();
                    SRDotDX.config.save(false);
                },

                load: function () {
                    if (typeof holodeck._tabs.addTab == 'function' && document.getElementById('chat_rooms_container') != null) {
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'SRDotDX_botClass'}).text('.bot{display:' + (SRDotDX.config.hideBotLinks ? 'none !important' : 'block') + '}').attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'SRDotDX_raidClass'}).text('.SRDotDX_raid{display:' + (SRDotDX.config.hideRaidLinks ? 'none !important' : 'block') + '}').attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'SRDotDX_visitedRaidClass'}).text('.DotDX_visitedRaid{display: ' + (SRDotDX.config.hideVisitedRaids ? 'none !important' : 'block') + '}').attach('to', document.head);
                        //SRDotDX.gui.cHTML('style').set({type: "text/css",id: 'SRDotDX_visitedRaidListClass'}).text('.DotDX_visitedRaidList {display: '+(SRDotDX.config.hideVisitedRaidsInRaidList == true?'none !important':'block')+'}').attach('to',document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_forum'}).text('div.game_page_wrap {padding-top: 16px; margin-top: 14px !important; background: #333 !important; display: ' + (SRDotDX.config.hideKongForum ? 'none' : 'block') + '}').attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_details'}).text('div.game_details_outer {margin-top: 14px !important; width: 900px !important; border: solid 20px #333 !important; display: ' + (SRDotDX.config.hideGameDetails ? 'none' : 'block') + '}').attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_filters'}).text('.DotDX_filter_dummy_0 {display: none !important}').attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_serverModeRaids'}).text('#kong_game_ui p.DotDX_sid_' + (SRDotDX.config.serverMode == 2 ? '1' : '2') + ' {display: none !important}').attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_chatResizeElems'}).text('#kong_game_ui textarea.chat_input { width: 270px !important; }\
                    #kong_game_ui div#chat_raids_overlay { width: 292px }\
                    #kong_game_ui div#chat_raids_overlay > span { width: 282px }\
                    div#dotdx_sidebar_container { ' + (SRDotDX.config.sbRightSide ? "text-align: left; padding-left: 1px" : "text-align: left; margin-left: 2px; padding-left: 6px") + ' }').attach('to', document.head);

                        SRDotDX.gui.toggleFiltering();

                        var elemPositionFix = "";
                        if (SRDotDX.isFirefox) {
                            elemPositionFix = " \
                        #kong_game_ui div#chat_room_tabs div a {padding: 3px 9px 4px 7px}\
                        #kong_game_ui div#lots_tab_pane ul li.tab div.tab_head {padding: 2px 7px 3px}\
                        #kong_game_ui span.generic {margin: 2px 6px 0}\
                        #kong_game_ui div#dotdx_status_div {padding: 5px 6px}\
                        #kong_game_ui div#chat_window_header div.dotdx_chat_overlay {margin-top: 4px; padding-top: 3px;}\
                        #kong_game_ui div#chat_raids_overlay {padding: 4px 0}\
                        #kong_game_ui div.chat_message_window p span.timestamp, #kong_game_ui div.chat_message_window p span.room {vertical-align: baseline}\
                        #kong_game_ui div.chat_message_window p {padding: 2px 5px 3px}\
                        #kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list .raid_list_item {padding: 2px;}\
                        .raid_list_item a.dotdxRaidListDelete {margin-top: 1px;}\
                        #kong_game_ui div.chat_message_window p span.ingamename {vertical-align: baseline;} \
                        ";
                        }
                        else {
                            elemPositionFix = " \
                        #kong_game_ui div#chat_room_tabs div a {padding: 4px 9px 3px 7px}\
                        #kong_game_ui div#lots_tab_pane ul li.tab div.tab_head {padding: 3px 7px 2px}\
                        #kong_game_ui span.generic {margin: 3px 6px 0}\
                        #kong_game_ui div#dotdx_status_div {padding: 6px 6px 4px}\
                        #kong_game_ui div#chat_window_header div.dotdx_chat_overlay {margin-top: 3px; padding-top: 4px;}\
                        #kong_game_ui div#chat_raids_overlay {padding: 5px 0 3px}\
                        #kong_game_ui div.chat_message_window p span.timestamp, #kong_game_ui div.chat_message_window p span.room {vertical-align: text-top}\
                        #kong_game_ui div.chat_message_window p {padding: 3px 5px}\
                        #kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list .raid_list_item {padding: 3px 2px 1px;}\
                        #kong_game_ui div.chat_message_window p span.ingamename {vertical-align: top;} \
                        ";
                        }
                        SRDotDX.gui.cHTML('style').set({type: "text/css"}).text(" \
					    " + (SRDotDX.config.hideGameTitle ? "ul#gamepage_categories_list, .horizontal_ad, span#kong_game_bf_300x250_2_holder, div#gamespotlight, div#dealspot_banner_holder, div#kong_bumper_preroll_600x400-ad-slot, div#gamepage_header {display:none;} \
					    div.gamepage_header_outer, div.gamepage_header_inner, div.gamepage_header_outer h1 {height: 0 !important; padding: 0 !important; margin: 0 !important} \
						#primarylayout .maincontent {padding: 6px 0 !important} \
						" : "") + "div.raid_list_item.hidden, .DotDX_nukedRaid, div.game_page_admindev_controls, div#subwrap, li#quicklinks_facebook {display:none;} \
						#primarywrap {background-image: none !important; background-color: transparent !important;} \
						/* body {background-color: #" + SRDotDX.config.bckColor + " !important} */ \
						#maingame { border: 1px solid transparent }\
						div#game { overflow:hidden }\
						div.upper_gamepage { background: transparent !important }\
						.user_connection #chat_connected_indicator {margin-right: 10px}\
						#FPXtt { position:absolute; display:block; } \
						#FPXtttop { display:block; height:5px; margin-left:5px; } \
						#FPXttcont { display:block; padding:2px 12px 3px 7px; margin-left:5px; background:#666; color:#fff; } \
						#FPXttbot {display:block;height:5px;margin-left:5px;} \
						#kong_game_ui ul.main_tabs {height:30px; padding-left:7px}\
						#kong_game_ui ul.main_tabs li.tab:first-child { margin-left: 1px; }\
						#kong_game_ui ul.main_tabs li.tab a { padding: 6px 6px 4px; margin-top: 6px; border: 1px solid #000; margin-right: 3px;  transition: all .3s;}\
						#kong_game_ui ul.main_tabs li.tab a.active {margin-top: 5px; padding: 7px 6px 5px; border-radius: 5px 0 5px 0;}\
						/*#kong_game_ui div#chat_tab_pane {height: 645px !important}*/ \
						#kong_game_ui div#lots_tab_pane {padding: 8px; text-align: left; background-color: #777; height: 644px}\
						#kong_game_ui div#lots_tab_pane div#dotdx_shadow_wrapper { width: 282px; border: 1px solid #222; box-shadow: 0 0 12px #111; height: 643px; overflow: hidden; background-color: #ddd;}\
						#kong_game_ui div#chat_window { background-color: #fff; border: 1px solid #333; overflow: hidden; box-shadow: 0 0 8px 1px #333; }\
						#kong_game_ui div#chat_window_header { height: 69px; box-shadow: 0 0 5px #333; position: relative; background-color: #ddd; }\
						#kong_game_ui div#chat_window_header div.room_name_container { border-bottom: 1px solid #aaa; padding: 5px 7px 3px; margin: 0 !important; background-color: #e6e6e6; font-family: \"Trebuchet MS\", Helvetica, sans-serif }\
						#kong_game_ui div#chat_window_header div.room_name_container .room_name { font-family: \"Trebuchet MS\", Helvetica, sans-serif; color: #333; text-shadow: 0 0 3px #ccc; }\
						#kong_game_ui div.chat_actions_container span.kong_ico { font-size: 12px !important; }\
						#kong_game_ui div.chat_actions_container ul.chat_actions_list { right: -1px; padding: 4px 0; border-radius: 5px 0 0 5px; top: 22px; border-color: #777; box-shadow: 0 0 8px #999; min-width: 122px; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; }\
						#kong_game_ui div.chat_actions_container ul.chat_actions_list li { line-height: 20px; padding: 0 10px; border-width: 1px 0; border-color: #fff; border-style: solid; transition: box-shadow .5s;}\
						#kong_game_ui .chat_actions_container .chat_actions_list li:hover { background-color: #f0f0f0; border-color: #bbb; color: #333; box-shadow: 0 0 4px #ddd; position: relative; }\
						#kong_game_ui div.chat_actions_container span.btn_tools { height: 16px; line-height: initial !important; width: 20px; margin: 2px 3px; } \
						#kong_game_ui div#chat_window_header div.dotdx_chat_overlay { border-top: 1px solid #bbb; overflow: hidden; white-space: nowrap; } \
						#kong_game_ui div.chat_actions_container select { width: 92px; margin-top: 2px; font-family: \"Trebuchet MS\",Helvetica,sans-serif; font-style: italic; outline: none; background-color: #ddd; margin-right: 2px; } \
						#kong_game_ui div#chat_room_tabs div a { margin: 0; background: none; text-decoration: none; font-family: \"Trebuchet MS\",Helvetica,sans-serif; font-size: 11px; font-style: italic; transition: text-shadow .2s; border-right: 1px dotted #aaa; } \
						#kong_game_ui div#chat_rooms_container div.chat_tabpane.users_in_room { height: 89px; border: 1px solid #999; border-width: 1px 0; border-bottom-color: #888; box-shadow: inset 0 -2px 6px -4px #444; } \
						#kong_game_ui div#chat_raids_overlay { display:none; position: absolute; overflow: hidden; bottom: 488px; left: 3px; background-color: #e0e0e0; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; border-width: 1px; border-style: solid; border-radius: 2px;}\
						#kong_game_ui div#chat_raids_overlay.active { display: block } \
						#kong_game_ui div#chat_raids_overlay > span { display: block; margin: 0 auto }\
						#kong_game_ui div.chat_controls {border-top: 1px solid #000; position: relative; }\
						#kong_game_ui div#lots_tab_pane ul { margin: 0px; padding: 0px; list-style-type: none; position: relative;} \
						#kong_game_ui div#lots_tab_pane ul li.tab { float: left; height: 100%; } \
						#kong_game_ui div#lots_tab_pane ul li.tab div.tab_head  { font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; font-style: italic; cursor: pointer; border-right: 1px dotted #aaa; transition: text-shadow .2s} \
						#kong_game_ui div#lots_tab_pane ul li.tab div.tab_pane  { display: none; border-top: 1px solid #888; width: 282px; height: 600px; padding-top: 2px;} \
						#kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_head { cursor: default; }\
						#kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane { position: absolute; display: block; left: 0px; }\
						#kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list, \
						#kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #paste_list {overflow-y: auto; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; height: 449px; border-top: 1px solid #aaa; box-shadow: 0 0 3px #ccc; background: -webkit-linear-gradient(left, #fff, #eee); background: -moz-linear-gradient(left, #fff, #eee);} \
						#kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list .raid_list_item {cursor: pointer; position: relative; border-width: 1px 0; border-style: solid; border-top-color: transparent; border-bottom-color: #ddd;} \
						#kong_game_ui div#lots_tab_pane ul li.tab.active div.tab_pane #raid_list .raid_list_item.hidden {display:none;} \
						a.FPXImportLink, a.FPXDeleteLink { font: normal 10px Arial; border: 1px solid #c0c0c0; color:black; text-decoration:none; cursor:pointer; font-variant: small-caps; display: block; width: 40px; text-align: center; margin-right: 2px; background-color: #fff} \
						a.dotdxRaidListDelete { font: 10px \"Trebuchet MS\"; text-decoration: none; cursor: pointer; margin-right: 2px; float:right; display: inline} \
						a.DotDX_RaidLink {text-decoration:none;} \
						div.DotDX_ListPanel {border-top: 1px dashed #999; margin-top: 2px; padding-top: 2px; }\
						div.DotDX_ListPanel > span.raidListContent {font-style: italic} \
						#kong_game_ui p.user_count.full { color: crimson; } \
						#kong_game_ui div#lots_tab_pane a.pastebinlink {font: normal 11px Verdana; color:#333; text-decoration:none; cursor:pointer;} \
						#kong_game_ui div#lots_tab_pane a.pastebinlink:hover { text-decoration: underline; color: black } \
						#kong_game_ui div#lots_tab_pane span.pasteright, #kong_game_ui div#lots_tab_pane span.pasteleft {font: normal 11px Verdana; color: #333} \
						#kong_game_ui div#lots_tab_pane span.pasteright {float:right; padding-right: 6px} \
						#kong_game_ui div#lots_tab_pane span.pasteleft {float:left} \
						#kong_game_ui div.chat_message_window { position: relative; margin: 0; } \
						#kong_game_ui div.chat_message_window p {border-width: 1px 0; border-style: solid; margin: 0;} \
						#kong_game_ui div.chat_message_window p.SRDotDX_raid, #kong_game_ui div.chat_message_window p.whisper, #kong_game_ui div.chat_message_window p.script { border-top-color: #e5e5e5; }\
						#raid_list .raid_list_item.DotDX_N:hover {border-bottom-color: rgb(138, 179, 137); background: -webkit-linear-gradient(top,#CBE7C4,#F3FAF2); background: -moz-linear-gradient(top,#CBE7C4,#F3FAF2);} \
						#raid_list .raid_list_item.DotDX_H:hover {border-bottom-color: rgb(173, 173, 104); background: -webkit-linear-gradient(top,#F7F0C8,#FCFBF8); background: -moz-linear-gradient(top,#F7F0C8,#FCFBF8);} \
						#raid_list .raid_list_item.DotDX_L:hover {border-bottom-color: rgb(177, 135, 128); background: -webkit-linear-gradient(top,#F3D7D1,#FCF7F7); background: -moz-linear-gradient(top,#F3D7D1,#FCF7F7);} \
						#raid_list .raid_list_item.DotDX_NM:hover {border-bottom-color: rgb(169, 154, 187); background: -webkit-linear-gradient(top,#DDD4E2,#F4F0F7); background: -moz-linear-gradient(top,#DDD4E2,#F4F0F7);} \
						#kong_game_ui div.chat_message_window div.cntrNotify {border-width: 0px 0px 1px; border-style: solid;}\
						#kong_game_ui div.chat_message_window p.whisper {margin:0; border-bottom-color: #A1B4BE; background: -webkit-linear-gradient(top,#DCE8F1,#EFF4F7); background: -moz-linear-gradient(top,#DCE8F1,#EFF4F7); } \
						#kong_game_ui div.chat_message_window p.script {border-bottom-color: rgb(165, 165, 165); background: -webkit-linear-gradient(left,#f3f3f3,#fff); background: -moz-linear-gradient(left,#f3f3f3,#fff);} \
						#kong_game_ui div.chat_message_window p.script hr { height: 1px; border: 0; background: #ccc; margin: 4px 0 3px; }\
						#kong_game_ui div.chat_message_window p.script span { font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px} \
						#kong_game_ui div.chat_message_window p.script span .title { text-decoration: none; font-size: 12px; font-weight: bold; color: #222 } \
						#kong_game_ui div.chat_message_window p span.separator { margin-right: 0px; display:inline; float: none} \
						#kong_game_ui div.chat_message_window p span.username { color: rgb(39, 101, 148); text-decoration: none; cursor: pointer; display:inline; float: none } \
						#kong_game_ui div.chat_message_window p span.username.ign { color: rgb(38, 116, 34); }\
						#kong_game_ui div.chat_message_window p span.username.is_self { color: rgb(151, 49, 49); }\
						#kong_game_ui div.chat_message_window p span.username:hover { text-decoration: underline } \
						#kong_game_ui div.chat_message_window p span.timestamp {font-style: italic; font-size: 9px; color: #666;} \
						#kong_game_ui div.chat_message_window p span.ingamename {font-style: italic; font-size: 11px; color: #666;} \
						#kong_game_ui div.chat_message_window p span.message {line-height: 16px; word-wrap: break-word; display:inline; float: none} \
						#kong_game_ui div.chat_message_window p span.message a { text-decoration: none; color: #444; font-style: normal } \
						#kong_game_ui div.chat_message_window p span.message a:hover { color: #000; text-shadow: 0 0 6px #888; } \
						#kong_game_ui div.chat_message_window p span.message a.chat_link:hover { text-shadow: 0 0 4px #F5C68A; text-decoration: none; } \
                        #kong_game_ui div.chat_message_window p span.message a.chat_link { color: #946A3D; } \
                        #kong_game_ui div.chat_message_window p span.message a.reply_link {font-style: italic} \
                        #kong_game_ui div.chat_message_window p > span.slider {position: absolute; display: inline-block; border: 1px solid #777; border-left: 0; height: 24px; left: -2px; margin-top: -5px; border-radius: 0 5px 5px 0; background: #eee; box-shadow: 0 0 7px #777; transition: max-width .3s; overflow: hidden; white-space: nowrap;}\
                        #kong_game_ui div.chat_message_window p > span.slider > span.magic, div.raid_list_item span.DotDX_extMagics > span {background-image: url(data:image/png;base64,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); background-position-y: 0; width: 16px; display: inline-block; height: 16px; margin-right: 2px; margin-top: 4px }\
						div.raid_list_item span.DotDX_extMagics > span {margin-top: 0; vertical-align: text-top; margin-right: 1px; } \
						div.raid_list_item span.DotDX_extMagics {float:right}\
						#kong_game_ui div.chat_message_window p > span.slider > span.magic:first-child { margin-left: 5px; } \
						#kong_game_ui div.chat_message_window p > span.slider > span.magic:last-child { margin-right: 5px; } \
						#kong_game_ui div.chat_message_window p > span.slider > span.user { display: inline-block; height: 16px; margin-left: 5px; margin-top: 4px; vertical-align: text-top; font-style: italic; cursor: pointer}\
						#kong_game_ui div.chat_message_window p > span.slider > span.user:first-child { text-overflow: ellipsis; max-width: 80px; white-space: nowrap; overflow: hidden; padding: 0 3px; font-style: normal; }\
						#kong_game_ui div.chat_message_window p > span.slider > span.user:last-child { margin-right: 10px; } \
						#kong_game_ui div.chat_message_window p > span.slider > span.user:hover { text-shadow: 0 0 6px #888; } \
						#kong_game_ui div.chat_message_window p.emote {font-style: italic; color: #085088; text-align: center;} \
						#kong_game_ui div.chat_message_window p.emote span.username, #kong_game_ui div.chat_message_window p.emote span.separator { display: none; } \
						#kong_game_ui div.chat_message_window p span.room { color: #666; font-size: 9px;} \
						#kong_game_ui div.chat_message_window div.error_msg { background-color: #FFF8E0; margin: 0; padding: 3px 5px; border-bottom: 1px solid #ddd; font-size: 9px; color: #555; } \
						#kong_game_ui .chatOverlayMain {border-style: solid; border-color: #C2A71C; border-width: 1px 0; font-family: \"Trebuchet MS\", Helvetica, sans-serif; color: #fff; font-size: 11px; font-weight: normal; text-align: right} \
						#kong_game_ui .chatOverlayMain > span {padding: 3px 10px; cursor: pointer;} \
						#kong_game_ui .chatOverlayMain > span:hover {background-color: #C2A71C; font-style: italic; color: #555}\
						#kong_game_ui textarea.chat_input { height: 30px !important; margin: 0 !important; outline: none; padding: 4px 6px 4px } \
						#kong_game_ui div.dotdx_chat_buttons { position: relative; width: 100%; padding: " + (SRDotDX.isFirefox ? "0 0 1px" : "1px 0 0") + "; background-color: #eaeaea; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; font-style: italic; color: #444; box-shadow: 0 0 6px -2px #333; border-width: 1px 0; border-style: solid; border-color: #888; background: -webkit-linear-gradient(top,#ddd,#f0f0f0); background: -moz-linear-gradient(top,#ddd,#f0f0f0);}\
						#kong_game_ui div.dotdx_chat_buttons > span { display: inline-block; padding: 3px 7px; cursor: pointer; transition: text-shadow .2s; }\
						#kong_game_ui input.dotdx_chat_filter { border: 1px solid #ccc; padding: 0 4px; display: inline-block; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; font-style: italic; color: #333; width: 110px; background-color: #f7f7f7; outline: none; }\
						#kong_game_ui input.dotdx_chat_filter:focus { background-color: #fff }\
						div.dotdx_chat_buttons > span.active { text-shadow: 0 0 4px #aaa }\
						div.dotdx_chat_buttons > span:hover { text-shadow: 0 0 4px #888 }\
						div.tab_pane p.collapsingCategory { border: 1px solid #999; border-width: 1px 0; margin: 5px 0 0; cursor: pointer; background-color: #ddd; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; padding: 2px 6px 1px; padding-right: 10px; box-shadow: 0 0 4px #ccc; background: -webkit-linear-gradient(top, #ccc, #eee); background: -moz-linear-gradient(top, #ccc, #eee); transition: all .3s; } \
						div.tab_pane p.collapsingCategory:hover { background: -webkit-linear-gradient(top, #ccc, #ddd); background: -moz-linear-gradient(top, #ccc, #ddd); box-shadow: 0 0 4px #bbb;}\
						div.tab_pane div.collapsingField { padding-top: 3px; }\
						xxx {display:block !important}\
						span.DotDX_RaidListVisited {padding: 0 3px; vertical-align: text-bottom} \
						span.DotDX_List_diff {display: inline-block; width: 20px; font-weight: bold; padding-left: 2px; vertical-align: text-bottom} \
						span.DotDX_List_diff.DotDX_N {color: #00BB00;} \
						span.DotDX_List_diff.DotDX_H {color: #DDAA00;} \
						span.DotDX_List_diff.DotDX_L {color: #FF0000;} \
						span.DotDX_List_diff.DotDX_NM {color: #BB00BB;} \
						div.tab_pane input, div.tab_pane select {border: 1px solid #ccc; padding: 1px} \
						div.tab_pane input {height: 14px;} \
						div.tab_pane select {height: 18px} \
						div.tab_pane input[type=\"button\"] {height: 26px; padding: 0 3px; color: #444; border: 1px solid #bbb; background-color: #f7f7f7; outline: none; box-shadow: 0 0 3px #ddd; background: -webkit-linear-gradient(top, #eee, #fff); background: -moz-linear-gradient(top, #eee, #fff); font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; border-radius: 2px; transition: all .3s} \
						div.tab_pane input[type=\"button\"].generic:hover {background: -webkit-linear-gradient(top, #fff, #ccc); background: -moz-linear-gradient(top, #fff, #ccc); box-shadow: 0 0 5px #bbb; text-shadow: 0 0 3px #bbb;}\
						div.tab_pane input[type=\"button\"].green:hover {background: -webkit-linear-gradient(top, #fff, #b9daaf); background: -moz-linear-gradient(top, #fff, #b9daaf); box-shadow: 0 0 5px #a7ca9c; text-shadow: 0 0 3px #bbb;}\
						div.tab_pane input[type=\"button\"].blue:hover {background: -webkit-linear-gradient(top, #fff, #a4c8ee); background: -moz-linear-gradient(top, #fff, #a4c8ee); box-shadow: 0 0 5px #a9d3ff; text-shadow: 0 0 3px #bbb;}\
						div.tab_pane input[type=\"button\"].red:hover,\
						div.tab_pane input[type=\"button\"][value=\"Cancel\"]:hover {background: -webkit-linear-gradient(top, #fff, #f0a4a4); background: -moz-linear-gradient(top, #fff, #f0a4a4); box-shadow: 0 0 5px #ffbaba; text-shadow: 0 0 3px #bbb;}\
						div.tab_pane input.landpmbutton { height: 20px; width: 22px; } \
						div.tab_pane input.landpmbuttonhigh { height: 20px; width: 22px; background-color: #82BA00; background: -webkit-linear-gradient(top,#8DC98D,#fff); background: -moz-linear-gradient(top,#8DC98D,#fff); } \
						div.tab_pane input.landtxtfield { padding: 2px 0; width: 50px; text-align: center} \
						div.tab_pane input.landtxtfieldc { padding: 2px 0; width: 100%; text-align: center } \
						div.tab_pane td.landname { padding-top: 3px} \
						div.tab_pane input.landsavebutton { height: 20px; width:100% } \
						table.raids, table.camps { font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 10px; text-align: center; border-collapse: collapse;  margin: 5px auto } \
                        table.raids td { border: 1px solid #bbb; width: 55px; background-color: #fff; }\
                        table.camps td { border: 1px solid #bbb; width: 20px; background-color: #fff; }\
                        table.raids td.ep, table.camps td.ep { text-align: right; width: auto; padding: 0 6px; } \
                        table.raids th, table.camps th { border: 1px solid #bbb; background-color: #efefef; } \
                        table.raids tr.head, table.camps tr.head { background-color: #fafafa; } \
                        table.raids tr.split td, table.camps th { border-bottom-width: 2px; } \
                        table.raids tr.best td, table.camps td.mark { background-color: #eff4f9; } \
                        table.camps .tb {border-right-width: 2px} \
                        table.raids colgroup col.selected { border: 2px solid #5f9ea0; }\
                        ul#SRDotDX_tabpane_tabs input[type=\"checkbox\"] {display: none}\
                        ul#SRDotDX_tabpane_tabs input[type=\"checkbox\"] + label {font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; cursor: pointer;}\
					    ul#SRDotDX_tabpane_tabs input[type=\"checkbox\"] + label:before { content:\"\"; display:inline-block; width:18px; height:14px; position: relative; top: 3px; }\
                        ul#SRDotDX_tabpane_tabs input[type=\"checkbox\"].generic + label:before { margin-left: 6px }\
                        ul#SRDotDX_tabpane_tabs input[type=\"radio\"] {display: none}\
                        ul#SRDotDX_tabpane_tabs input[type=\"radio\"] + label {font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; cursor: pointer;}\
					    ul#SRDotDX_tabpane_tabs input[type=\"radio\"] + label:before { content:\"\"; display:inline-block; width:16px; height:13px; position: relative; top: 2px; }\
                        ul#SRDotDX_tabpane_tabs input[type=\"radio\"].generic + label:before { margin-left: 5px }\
                        ul#SRDotDX_tabpane_tabs input[type=\"text\"].generic { border: 1px dashed transparent; border-bottom-color: #bbb; padding: 0 1px; background-color: transparent; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; color: #333; outline: none; height: 15px; text-align: center; }\
                        ul#SRDotDX_tabpane_tabs input[type=\"text\"].generic:hover { border-style: solid; }\
                        ul#SRDotDX_tabpane_tabs input[type=\"text\"].generic:focus {border-style: solid; border-color: #ccc; background: -webkit-linear-gradient(top,#eee,#fff); background: -moz-linear-gradient(top,#eee,#fff);}\
                        ul#SRDotDX_tabpane_tabs input[type=\"text\"][disabled].generic { color: #aaa; }\
                        ul#SRDotDX_tabpane_tabs input[type=\"text\"].color {float: right; margin-right: 6px; width: 40px;}\
                        input#raidsBossFilter {width: 260px; box-shadow: 0 0 4px -1px #aaa; outline: none; font-family: \"Trebuchet MS\", Helvetica, sans-serif;  font-size: 12px; padding: 3px 5px; background: -webkit-linear-gradient(top, #fff, #d1dfee); background: -moz-linear-gradient(top, #fff, #d1dfee); border-color: #aaa; margin: 4px auto; display: block; border-radius: 2px;}\
                        input#raidsBossFilter:hover, input#raidsBossFilter:focus {background: -webkit-linear-gradient(top, #DFE8F1, #fff); background: -moz-linear-gradient(top, #DFE8F1, #fff);}\
                        textarea#DotDX_raidsToSpam, textarea#options_sbConfig { border: 1px solid #aaa; width: 254px; margin-left: 6px; margin-top: 5px; margin-bottom: 4px; padding: 3px 7px; resize: none; outline: none; font-size: 10px; font-style: italic; }\
                        #kong_game_ui div#dotdx_status_div {font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-style: italic; font-size: 11px; margin: 0; border-bottom: 1px solid #aaa; }\
                        #kong_game_ui div#helpBox { padding: 0; position: absolute; bottom: 8px; overflow: hidden; width: 282px; transition: max-height .5s; border-top-width: 0; border-top-style: solid; font-family: \"Trebuchet MS\",Helvetica,sans-serif; font-size: 12px; font-style: italic;}\
                        #kong_game_ui div#helpBox > span {display: inline-block; padding: 11px 8px 9px;}\
                        #kong_game_ui span.generic { display: inline-block; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; }\
                        #kong_game_ui span.notice { display: inline-block; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 10px; font-style: italic; margin: 3px 6px; }\
                        #kong_game_ui div#dotdx_usercontext { display: none; position: absolute; background-color: #eee; border: 1px solid #888; display: none; box-shadow: 0 0 8px #888; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; background: -webkit-linear-gradient(top,#e7e7e7,#fff); background: -moz-linear-gradient(top,#e7e7e7,#fff); cursor: pointer;}\
                        #kong_game_ui div#dotdx_usercontext span { display: inline-block; padding: 3px 6px 2px }\
                        #kong_game_ui div#dotdx_usercontext span:hover { text-shadow: 0 0 3px #aaa; }\
                        #kong_game_ui td {vertical-align: middle}\
                        div#FPXfsOptions span.generic {float:left; clear:both}\
                        div#FPXfsOptions span.share { font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 10px; margin-right: 10px; margin-right: 5px; display: inline-block; padding-top: 3px; }\
                        div#FPXfsOptions label { margin-right: 3px; }\
                        div#dotdx_sidebar_container { margin-top: 0; padding-top: 5px; overflow: hidden; }\
                        div#dotdx_sidebar_container > button {width: 60px; border: 1px solid #555; margin-bottom: 5px; font-size: 11px; font-family: \"Trebuchet MS\", Helvetica, sans-serif; height: 21px; transition-property: box-shadow, text-shadow, border-color, background; transition-duration: .5s; outline: none; position: relative; z-index: 9;}\
                        div#dotdx_sidebar_container > button:hover { position: relative; z-index: 40;}\
                        div#dotdx_sidebar_container > div.label { text-align: center; color: #fff; padding-top: 7px; height: 19px; text-shadow: 0 0 6px #fff; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 12px; }\
                        div#dotdx_sidebar_container > div { width: 60px; height: 26px }\
                        div#dotdx_sidebar_container > input[type=\"text\"] { border: 1px solid #555; margin-bottom: 5px; display: inline-block; font-family: \"Trebuchet MS\", Helvetica, sans-serif; font-size: 11px; font-style: italic; width: 46px; outline: none; height: 13px; text-align: center; position:absolute; z-index:3; padding: 3px 6px; transition: width .5s; }\
                        div#dotdx_sidebar_container > input[type=\"text\"].slim {width: 16px}\
                        div#dotdx_sidebar_container > input[type=\"text\"]:hover, div#dotdx_sidebar_container > input[type=\"text\"]:focus { width:250px; text-align: left; }\
                        div#dotdx_sidebar_container > div#serverButton {cursor: pointer; border: 1px solid #111; text-align: center; height: auto; width: 58px; padding: 4px 0px; box-shadow: 0px 0px 4px #222; margin-bottom: 7px; transition: all .5s ease 0s;}\
						div#dotdx_sidebar_container > div#serverButton:hover {border-radius: 5px;} \
						div#dotdx_sidebar_container > button.slim, div#dotdx_sidebar_container > div.slim {width: 30px}\
						div#dotdx_sidebar_container.slim {width: 32px}\
						div#dotdx_sidebar_container > div#serverButton.slim {width: 28px}\
						#kong_game_ui div#chat_room_tabs div a, #kong_game_ui div#lots_tab_pane ul li.tab div.tab_head {transition: all .3s;}\
                        div.raid_list_item > span.DotDX_extState { display: inline-block; width:27px; padding-top: 2px }\
                        div.raid_list_item > span.DotDX_extInfo { float: right; display:inline; margin-right: 8px; color:#c0c0c0; font-size: 11px }\
                        div.raid_list_item > br {clear:both}\
                        div.raid_list_item > span.DotDX_extInfo.failings {color: #ffda8e}\
                        div.raid_list_item > span.DotDX_extInfo.failingm {color: #ff8080}\
                        div.raid_list_item > span.DotDX_extInfo.failingh {color: #ff4040}\
                        #FPXRaidFilterWhatDiv table {max-height: 327px; overflow-y: auto;}\
                        #FPXRaidFilterWhatDiv table tr td:first-child {text-overflow: ellipsis; white-space: pre; overflow-x: hidden; width: 150px; display: inline-block;}\
                    " + elemPositionFix).attach("to", document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_themeClass'}).attach('to', document.head);
                        SRDotDX.gui.applyTheme();
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_tabs'}).attach('to', document.head);
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_fontClass'}).attach('to', document.head);
                        SRDotDX.gui.applyFontSize();
                        var link = SRDotDX.gui.cHTML('a').set({href: '#lots_tab_pane', class: ''}).html(SRDotDX.config.dotdxTabName, false).attach('to', SRDotDX.gui.cHTML('li').set({ class: 'tab', id: 'lots_tab' }).attach('after', 'chat_tab').ele()).ele();
                        var sbTmp = JSON.stringify(SRDotDX.config.sbConfig);
                        sbTmp = sbTmp.slice(1, sbTmp.length - 1).replace(/},/g, "},&#10;").replace(/l,/g, "l,&#10;");
                        var pane = SRDotDX.gui.cHTML('div').set({id: 'lots_tab_pane'}).html(' \
						<div id="dotdx_shadow_wrapper">\
						<div id="dotdx_status_div">DotDX: <span id="StatusOutput"></span></div> \
						<div style="height: 617px; overflow: hidden;">\
						<ul id="SRDotDX_tabpane_tabs"> \
							<li class="tab active"> \
								<div class="tab_head" id="raids_tab">Raids</div> \
								<div class="tab_pane" id="mainRaidsFrame"> \
									<div id="topRaidPane"> \
									<div id="FPXRaidFilterDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" id="collapsingCat10" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidFiltering\', this, \'raid_list\')">Filtering<span style="float:right">&minus;</span></p> \
										<div id="FPXRaidFiltering" style="display:block" class="collapsingField"> \
											<input type="text" id="raidsBossFilter" name="FPXRaidBossNameFilter"> \
                                            <input type="checkbox" id="dotdx_flt_vis"><label for="dotdx_flt_vis" style="margin-right: 9px; margin-left:5px; display: inline-block">Include visited</label>\
                                            <input type="checkbox" id="dotdx_flt_nuke"><label for="dotdx_flt_nuke" style="margin-right: 9px;">Only nuked</label>\
                                            <input type="checkbox" id="dotdx_flt_all"><label for="dotdx_flt_all">Show all</label>\
										</div> \
									</div> \
									<!-- <div id="FPXRaidSortingDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" id="collapsingCat11" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidSort\', this, \'raid_list\')">Sorting<span style="float:right">+</span></p> \
										<div id="FPXRaidSort" style="display:none"> \
											<table> \
											<tr><td rowspan="2"><input type="button" class="regBtn" style="display:inline; height: 40px" id="SortRaidsButton" onClick="SRDotDX.gui.FPXSortRaids();return false;" value="Sort" onmouseout="SRDotDX.gui.turnNormal(this.id);" onmouseover="SRDotDX.gui.highlightButton(this.id,\'Sort raids based on selected criteria.\');"></td> \
											<td>&nbsp;Sort by: \
											<select style="width: 90px" id="FPXRaidSortSelection" tabIndex="-1"> \
												<option value="Time" selected>TimeStamp</option> \
												<option value="Name">Raid Name</option> \
												<option value="Diff">Difficulty</option> \
												<option value="Id">Raid Id</option> \
											</select> \
											<select style="width: 56px" id="FPXRaidSortDirection" tabIndex="-1"> \
												<option value="asc" selected>Asc</option> \
												<option value="desc">Desc</option> \
											</select></td></tr> \
											<tr><td style="padding: 2px"><input type="checkbox" id="SRDotDX_options_newRaidsAtTopOfRaidList"><div><label>New raids at top of raid list</label></div></td></tr> \
											</table> \
										</div> \
									</div> --> \
										<input style="width: 94px; margin-top: 6px; margin-left: 5px" name="ImportRaids" class="blue" id="ImportRaidsButton" onclick="SRDotDX.request.raids(); return false;" tabIndex="-1" type="button" value="Import" onmouseout="SRDotDX.gui.displayHint();" onmouseover="SRDotDX.gui.displayHint(\'Import all alive raids from raids server.\');">\
										<input style="width: 55px;" name="DumpRaids" class="generic" id="DumpRaidsButton" onclick="SRDotDX.gui.RaidAction(\'share\');return false;" tabIndex="-1" type="button" value="Share" onmouseout="SRDotDX.gui.displayHint();" onmouseover="SRDotDX.gui.displayHint(\'Copy all selected (not dead) raids to the share tab.\');"> \
										<input style="width: 55px;" name="PostRaids" class="generic" id="PostRaidsButton" onclick="SRDotDX.gui.RaidAction(\'post\');return false;" tabIndex="-1" type="button" value="Post" onmouseout="SRDotDX.gui.displayHint();" onmouseover="SRDotDX.gui.displayHint(\'Post all selected (not dead) raids to chat.\');"> \
										<input style="width: 55px;" name="DeleteRaids" class="red" id="DeleteRaidsButton" onclick="SRDotDX.gui.RaidAction(\'delete\'); return false;" tabIndex="-1" type="button" value="Delete" onmouseout="SRDotDX.gui.displayHint();" onmouseover="SRDotDX.gui.displayHint(\'Delete selected raids.\');"><br> \
										<input style="width: 94px; margin-bottom: 7px; margin-left: 5px; margin-top: 4px"name="JoinRaids" class="green" id="AutoJoinVisibleButton" onclick="SRDotDX.gui.joinSelectedRaids(false) ;return false;" tabIndex="-1" type="button" value="Join" onmouseout="SRDotDX.gui.displayHint();" onmouseover="SRDotDX.gui.displayHint(\'Join all selected (not dead) raids.\'); "> \
										<input style="width: 173px; margin-bottom: 5px; margin-top: 4px" name="ImpJoinRaids" class="green" id="AutoImpJoinVisibleButton" onclick="SRDotDX.request.joinAfterImport = true;SRDotDX.request.raids();return false;" tabIndex="-1" type="button" value="Import & Join" onmouseout="SRDotDX.gui.displayHint();" onmouseover="SRDotDX.gui.displayHint(\'Import from server and join all selected (not dead) raids.\'); "> \
									</div> \
									<div style="" id="raid_list" tabIndex="-1"></div> \
								</div> \
							</li> \
							<li class="tab"> \
							<div class="tab_head">Opts</div> \
								<div class="tab_pane"> \
									<div id="FPXRaidOptionsDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" name="dotdxOptsTabs" id="collapsingCat20" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidOptions\', this)">Raid Options<span style="float:right">+</span></p> \
										<div id="FPXRaidOptions" name="dotdxOptsTabs" style="display:none" class="collapsingField"> \
												<input type="checkbox" id="SRDotDX_options_markMyRaidsVisited" class="generic"><label for="SRDotDX_options_markMyRaidsVisited">Mark raids posted by me as visited</label><br> \
												<input type="checkbox" id="SRDotDX_options_confirmWhenDeleting" class="generic"><label for="SRDotDX_options_confirmWhenDeleting">Confirm when manually deleting raids</label><br> \
												<input type="checkbox" id="SRDotDX_options_importFiltered" class="generic"><label for="SRDotDX_options_importFiltered">Add to database filtered raids only</label><br> \
												<span class="generic">Unvisited raid pruning:</span><br> \
												<input type="radio" id="FPX_options_unvisitedPruningAggressive" class="generic" name="unvisitedPruning" value="Aggressive"/><label for="FPX_options_unvisitedPruningAggressive">Aggressive</label> \
												<input type="radio" id="FPX_options_unvisitedPruningModerate" class="generic" name="unvisitedPruning" value="Moderate"/><label for="FPX_options_unvisitedPruningModerate">Moderate</label> \
												<input type="radio" id="FPX_options_unvisitedPruningSlow" class="generic" name="unvisitedPruning" value="Slow"/><label for="FPX_options_unvisitedPruningSlow">Slow</label> \
												<input type="radio" id="FPX_options_unvisitedPruningNone" class="generic" name="unvisitedPruning" value="None"/><label for="FPX_options_unvisitedPruningNone">None</label><br> \
										</div> \
									</div> \
									<div id="FPXChatOptionsDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" name="dotdxOptsTabs" id="collapsingCat21" onclick="SRDotDX.gui.toggleDisplay(\'FPXChatOptions\', this)">Chat Options<span style="float:right">+</span></p> \
										<div id="FPXChatOptions" name="dotdxOptsTabs" style="display:none" class="collapsingField"> \
											<input type="checkbox" id="SRDotDX_options_hideRaidLinks" class="generic"><label for="SRDotDX_options_hideRaidLinks">Hide all raid links in chat</label><br> \
											<input type="checkbox" id="SRDotDX_options_hideBotLinks" class="generic"><label for="SRDotDX_options_hideBotLinks">Hide bot raid links in chat</label><br> \
											<input type="checkbox" id="SRDotDX_options_hideVisitedRaids" class="generic"><label for="SRDotDX_options_hideVisitedRaids">Hide visited raids in chat</label><br> \
											<span class="generic">Chat size:</span>\
											<input type="radio" id="SRDotDX_options_chatSizeNormal" name="chatSize" value="300"/><label for="SRDotDX_options_chatSizeNormal">Normal</label> \
											<input type="radio" id="SRDotDX_options_chatSizePlus25" name="chatSize" value="375" class="generic"/><label for="SRDotDX_options_chatSizePlus25">+25%</label> \
											<input type="radio" id="SRDotDX_options_chatSizePlus50" name="chatSize" value="400" class="generic"/><label for="SRDotDX_options_chatSizePlus50">+50%</label><br> \
											<span class="generic">Font size:</span>\
											<input type="radio" id="SRDotDX_options_fontSizeNormal" name="fontSize" value="0"/><label for="SRDotDX_options_fontSizeNormal">Normal</label> \
											<input type="radio" id="SRDotDX_options_fontSizeSmaller" name="fontSize" value="2" class="generic"/><label for="SRDotDX_options_fontSizeSmaller">Smaller</label> \
											<input type="radio" id="SRDotDX_options_chatSizeBigger" name="fontSize" value="1" class="generic"/><label for="SRDotDX_options_chatSizeBigger">Bigger</label><br> \
											<span class="generic">IGN mode:</span>\
											<input type="radio" id="SRDotDX_options_ignHide" name="ignMode" value="0"/><label for="SRDotDX_options_ignHide">Hide</label> \
											<input type="radio" id="SRDotDX_options_ignReplace" name="ignMode" value="1" class="generic"/><label for="SRDotDX_options_ignReplace">Replace</label> \
											<input type="radio" id="SRDotDX_options_ignAttach" name="ignMode" value="2" class="generic"/><label for="SRDotDX_options_ignAttach">Attach</label><br> \
											<input type="checkbox" id="SRDotDX_options_hideScrollbar" class="generic"><label for="SRDotDX_options_hideScrollbar">Hide scrollbar for chat and user window</label><br> \
											<span class="generic">More info in raid links:</span> \
											<input type="checkbox" id="SRDotDX_options_showFS"><label for="SRDotDX_options_showFS">Show FS</label> \
											<input type="checkbox" id="SRDotDX_options_showAP" class="generic"><label for="SRDotDX_options_showAP">Show AP</label> \
										</div> \
									</div> \
									<div id="FPXPasteOptionsDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" name="dotdxOptsTabs" id="collapsingCat22" onclick="SRDotDX.gui.toggleDisplay(\'FPXPasteOptions\', this)">Pastebin Options<span style="float:right">+</span></p> \
										<div id="FPXPasteOptions" name="dotdxOptsTabs" style="display:none" class="collapsingField"> \
											<input type="checkbox" id="SRDotDX_options_autoImportPaste" class="generic"><label for="SRDotDX_options_autoImportPaste">Auto import pastebins</label><br> \
											<input type="checkbox" id="SRDotDX_options_confirmForLargePaste" class="generic"><label for="SRDotDX_options_confirmForLargePaste">Confirm if pastie exceeds</label> <input type="text" class="generic" style="width: 26px;" id="SRDotDX_options_confirmPasteSize"> \
										</div> \
									</div> \
									<div id="FPXIntOptionsDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" name="dotdxOptsTabs" id="collapsingCat23" onclick="SRDotDX.gui.toggleDisplay(\'FPXIntOptions\', this)">Interface Options<span style="float:right">+</span></p> \
										<div id="FPXIntOptions" name="dotdxOptsTabs" style="display:none" class="collapsingField"> \
										    <input type="checkbox" id="options_hideGameTitle" class="generic"><label for="options_hideGameTitle">Hide titlebar above game window</label><br>\
										    <input type="checkbox" id="options_hideGameDetails" class="generic"><label for="options_hideGameDetails">Hide details under game window</label><br>\
										    <input type="checkbox" id="options_hideKongForum" class="generic"><label for="options_hideKongForum">Hide forum under game window</label><br>\
										    <input type="checkbox" id="options_trueMsgCount" class="generic"><label for="options_trueMsgCount">Display true kong messages count</label><br>\
										    <input type="checkbox" id="options_hideGameTab" class="generic"><label for="options_hideGameTab">Hide Game tab</label><br>\
										    <input type="checkbox" id="options_hideAccTab" class="generic"><label for="options_hideAccTab">Hide Achievements tab</label><br>\
										    <span class="generic">Script tab name</span><input type="text" class="generic color" id="options_dotdxTabName"><br> \
										    <span class="generic">Background color</span><input type="text" class="generic color" id="SRDotDX_colors_background"><br> \
										    <span class="generic">Theme:</span>\
                                            <input type="radio" id="theme_lightGrey" name="chatTheme" value="0"><label for="theme_lightGrey">Light Grey</label>\
										    <input type="radio" id="theme_crimsonBlack" name="chatTheme" value="1" class="generic"><label for="theme_crimsonBlack">Crimson Black</label>\
										    <span class="generic">World Chat:</span>\
										    <input type="checkbox" id="options_wcLeft" class="generic"><label for="options_wcLeft">Show on the left   </label><input type="checkbox" id="options_wcRemove" class="generic"><label for="options_wcRemove">Remove</label>\
										</div>\
									</div> \
									<div id="FPXsbOptionsDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" name="dotdxOptsTabs" id="collapsingCat24" onclick="SRDotDX.gui.toggleDisplay(\'FPXsbOptions\', this)">Sidebar Options<span style="float:right">+</span></p> \
										<div id="FPXsbOptions" name="dotdxOptsTabs" style="display:none" class="collapsingField"> \
										    <input type="checkbox" id="options_sbEnable" class="generic"><label for="options_sbEnable">Enable DotDX Sidebar</label><br>\
										    <input type="checkbox" id="options_sbSlim" class="generic"><label for="options_sbSlim">Use slim Sidebar</label><br>\
										    <input type="checkbox" id="options_sbRightSide" class="generic"><label for="options_sbRightSide">Show sidebar on the right side of chat</label><br> \
                                            <textarea wrap="off" id="options_sbConfig" rows="25" style="overflow-y: hidden; overflow-x: scroll; white-space: nowrap">' + sbTmp + '</textarea> \
										    <input id="dotdx_sbConfigSave" style="margin: 0 0 2px 6px; width: 156px;" class="blue" type="button" value="Apply new sidebar layout" onclick="SRDotDX.gui.applySidebarUI(0); return false;">\
										    <input id="dotdx_sbConfigDefault" style="width: 110px;" class="red" type="button" value="Restore default" onclick="SRDotDX.gui.restoreDefaultSB(); return false;">\
										</div> \
									</div> \
									<div id="FPXfsOptionsDiv" class="collapsible_panel"> \
										<p class="collapsingCategory" name="dotdxOptsTabs" id="collapsingCat25" onclick="SRDotDX.gui.toggleDisplay(\'FPXfsOptions\', this)">Friend Share Options<span style="float:right">+</span></p> \
										<div id="FPXfsOptions" name="dotdxOptsTabs" style="display:none; text-align:right" class="collapsingField"> \
										</div> \
									</div> \
								</div> \
							</li> \
							<li class="tab"> \
								<div class="tab_head" id="FPXShareTab">Share</div> \
								<div class="tab_pane"> \
								    <div id="FPXRaidSpamDiv"> \
											<div id="FPXShareDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" id="collapsingCat30" onclick="SRDotDX.gui.toggleDisplay(\'FPXShare\', this, \'share_list\')">Share<span style="float:right">+</span></p> \
										        <div id="FPXShare" style="display:block" class="collapsingField"> \
													<input type="checkbox" id="SRDotDX_options_formatLinkOutput" class="generic"><label for="SRDotDX_options_formatLinkOutput">Enable formatting of posted raid links</label><br> \
													<span class="generic">Whisper to </span><input type="text" class="generic" id="SRDotDX_options_whisperTo"><br>\
													<span class="notice">(if "whisper to" field is blank, raids will be posted public)</span> \
													<input id="dotdx_share_post_button" style="margin: 3px 0 0 6px; width: 133px" name="Submit" class="generic" type="button" tabIndex="-1" value="Post Links to Chat" onclick="SRDotDX.gui.RaidAction(\'post_share\');return false;"/> \
													<input id="dotdx_friend_post_button" style="width: 133px" name="Submit1" class="green" type="button" tabIndex="-1" value="Friend Share links" onclick="SRDotDX.gui.RaidAction(\'post_friend\');return false;"/><br> \
												</div> \
											</div> \
											<div id="FPXImportDiv" class="collapsible_panel" class="collapsingField"> \
												<p class="collapsingCategory" id="collapsingCat31" onclick="SRDotDX.gui.toggleDisplay(\'FPXImport\', this, \'share_list\')">Import<span style="float:right">+</span></p> \
										        <div id="FPXImport" style="display:none" class="collapsingField"> \
													<input type="checkbox" id="SRDotDX_options_markImportedRaidsVisited" class="generic"><label for="SRDotDX_options_markImportedRaidsVisited">Mark imported raids visited</label><br> \
                                                    <input style="margin-left: 6px; margin-top: 6px; width: 133px" name="Submit2" class="blue" type="button" tabIndex="-1" value="Import to Raid Tab" onClick="SRDotDX.gui.FPXimportRaids();return false;"/> \
													<input style="width: 133px" name="Submit3" class="blue" type="button" tabIndex="-1" value="Delete and Import" onClick="SRDotDX.gui.FPXdeleteAllRaids();SRDotDX.gui.FPXimportRaids();return false;"/> \
											    </div> \
											</div> \
									</div> \
									<textarea id="DotDX_raidsToSpam" name="FPXRaidSpamInput" style="height:437px;"></textarea> \
								</div> \
							</li> \
							<li class="tab"> \
								<div class="tab_head">Filter</div> \
								<div class="tab_pane"> \
									<div id="FPXRaidFilterDiv"> \
										<div id="FPXRaidFilterWhereDiv"> \
										<p class="collapsingCategory" id="collapsingCat40" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidFilterWhere\', this)">Filtering options<span style="float:right">+</span></p> \
										<div id="FPXRaidFilterWhere" style="display:block" class="collapsingField"> \
											<input type="checkbox" id="SRDotDX_options_perRaidFilterLinks" class="generic"><label for="SRDotDX_options_perRaidFilterLinks">Activate filtering on raid links</label><br> \
											<input type="checkbox" id="SRDotDX_options_perRaidFilterRaidList" class="generic"><label for="SRDotDX_options_perRaidFilterRaidList">Activate filtering on raid list tab</label><br> \
										</div>\
										</div> \
										<div id="FPXRaidFilterWhatDiv"> \
											<div id="FPXRaidTableSmallDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat41" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableSmall\', this)">Small Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableSmall" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatSmall"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableMediumDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat42" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableMedium\', this)">Medium Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableMedium" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatMedium"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableLargeDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat43" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableLarge\', this)">Large Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableLarge" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatLarge"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableEpicDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat44" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableEpic\', this)">Epic Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableEpic" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatEpic"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableColossalDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat45" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableColossal\', this)">Colossal Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableColossal" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatColossal"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableGiganticDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat46" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableGigantic\', this)">Gigantic Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableGigantic" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatGigantic"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableGuildDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat47" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableGuild\', this)">Guild Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableGuild" name="dotdxFilterTab" style="display:none; height: 330px; overflow-y: auto;" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatGuild"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
											<div id="FPXRaidTableSpecialDiv" class="collapsible_panel"> \
												<p class="collapsingCategory" name="dotdxFilterTab" id="collapsingCat48" onclick="SRDotDX.gui.toggleDisplay(\'FPXRaidTableSpecial\', this)">World Raids<span style="float:right">+</span></p> \
												<table id="FPXRaidTableSpecial" name="dotdxFilterTab" style="display:none" class="collapsingField"> \
													<col width="180"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><col width="20"/><thead><tr><th>Raid</th><th>N</th><th>H</th><th>L</th><th>NM</th><th>All</th></tr></thead> \
													<tbody id="FPXRaidFilterWhatSpecial"> \
														<!-- Dynamic content --> \
													</tbody> \
												</table> \
											</div> \
										</div> \
									</div> \
								</div> \
							</li> \
							<li class="tab"> \
								<div class="tab_head">Util</div> \
								<div class="tab_pane"> \
                                    <div id="FPXLandCalcDiv" class="collapsible_panel"> \
                                        <p class="collapsingCategory" id="collapsingCat50" onclick="SRDotDX.gui.toggleDisplay(\'FPXLandCalc\', this)">Land Calculator<span style="float:right">+</span></p> \
                                        <div id="FPXLandCalc" style="display:block" class="collapsingField"> \
                                            <form id="FPXLand" name="FPXLandForm" onSubmit="return false;" style="padding-bottom:6px"> \
                                            <table style="margin: 0 auto; padding-right: 10px;"> \
                                                <tr><td class="landname" colspan="3">Cornfield</td><td style="width: 10px">&nbsp;</td><td class="landname" colspan="3">Stable</td></tr> \
                                                <tr> \
                                                    <td> <input class="landpmbutton red" id="a_1" name="FPXminusTen_1" type="button" value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="10"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_1" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="1" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_1" name="FPXplusTen_1" type="button" value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="11"/></td> \
                                                    <td></td> \
                                                    <td> <input class="landpmbutton red" id="a_2" name="FPXminusTen_2" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="12"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_2" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="2" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_2" name="FPXplusTen_2" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="13"/></td> \
                                                </tr> \
                                                <tr><td class="landname" colspan="3">Barn</td><td></td><td class="landname" colspan="3">Store</td></tr> \
                                                <tr> \
                                                    <td> <input class="landpmbutton red" id="a_3" name="FPXminusTen_3" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="14"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_3" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="3" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_3" name="FPXplusTen_3" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="15"/></td> \
                                                    <td></td> \
                                                    <td> <input class="landpmbutton red" id="a_4" name="FPXminusTen_4" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="16"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_4" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="4" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_4" name="FPXplusTen_4" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="17"/></td> \
                                                </tr> \
                                                <tr><td class="landname" colspan="3">Pub</td><td></td><td class="landname" colspan="3">Inn</td></tr> \
                                                <tr> \
                                                    <td> <input class="landpmbutton red" id="a_5" name="FPXminusTen_5" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="18"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_5" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="5" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_5" name="FPXplusTen_5" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="19"/></td> \
                                                    <td></td> \
                                                    <td> <input class="landpmbutton red" id="a_6" name="FPXminusTen_6" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="20"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_6" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="6" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_6" name="FPXplusTen_6" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="21"/></td> \
                                                </tr> \
                                                <tr><td class="landname" colspan="3">Sentry</td><td></td><td class="landname" colspan="3">Fort</td></tr> \
                                                <tr> \
                                                    <td> <input class="landpmbutton red" id="a_7" name="FPXminusTen_7" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="22"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_7" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="7" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_7" name="FPXplusTen_7" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="23"/></td> \
                                                    <td></td> \
                                                    <td> <input class="landpmbutton red" id="a_8" name="FPXminusTen_8" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="24"/></td> \
                                                    <td> <input class="generic" maxlength="10" name="tf_8" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="8" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_8" name="FPXplusTen_8" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="25"/></td> \
                                                </tr> \
                                                <tr><td class="landname" colspan="3">Castle</td></tr> \
                                                <tr> \
                                                    <td> <input class="landpmbutton red" id="a_9" name="FPXminusTen_9" type="button"   value=" - " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="26"/></td> \
                                                    <td> <input  class="generic" maxlength="10" name="tf_9" onblur="SRDotDX.gui.FPXLandUpdater();" size="8" type="text" tabindex="9" /></td> \
                                                    <td> <input class="landpmbutton blue" id="b_9" name="FPXplusTen_9" type="button"   value=" + " onClick="SRDotDX.gui.FPXLandButtonHandler(this, this.name);return false;" tabindex="27"/></td> \
                                                    <td></td> \
                                                    <td colspan="3"> <input class="landsavebutton green" id="lsbutton" type="button" value="Save" onClick="SRDotDX.gui.FPXLandButtonSave();return false;" tabindex="28"/></td> \
                                                </tr> \
                                            </table> \
                                            </form> \
                                        </div> \
                                    </div>\
                                    <div id="WhoPostedMyRaidDiv" class="collapsible_panel"> \
								        <p class="collapsingCategory" id="collapsingCat51" onclick="SRDotDX.gui.toggleDisplay(\'WhoPostedMyRaid\', this)">Who posted my raid?<span style="float:right">+</span></p> \
								        <div id="WhoPostedMyRaid" style="display:block" class="collapsingField"> \
								            <span class="generic" style="margin-top:6px; margin-right: 2px">Raid link or id: </span>\
								            <input type="text" class="generic" id="DotDX_checkRaidPoster" style="width:120px">\
								            <input class="green" type="button" value="Check" onClick="SRDotDX.request.poster(); return false;" style="height:20px; width:46px"><br>\
											<span class="generic">Raid: </span><span class="generic" id="DotDX_whoPosted_Raid"></span><br> \
											<span class="generic">Time: </span><span class="generic" id="DotDX_whoPosted_Time"></span><br> \
											<span class="generic">Poster: </span><span class="generic" id="DotDX_whoPosted_Poster"></span><br> \
								        </div> \
								    </div>\
								</div> \
							</li>  \
						</ul> \
						</div>\
						<div id="helpBox" style="max-height:0"><span>Help message</span></div> \
						</div>\
					', false).attach('to', 'kong_game_ui').ele();
                        SRDotDX.gui.cHTML('style').set({type: "text/css", id: 'DotDX_colors'}).text(' \
                        .DotDX_filter_dummy_0 {display: none !important} \
                        ').attach('to', document.head);

                        //pane.style.height = document.getElementById('chat_tab_pane').style.height;
                        var e = pane.getElementsByClassName('tab_head');
                        i = e.length;
                        while (i--) {
                            e[i].addEventListener('click', function () {
                                if (!/\bactive\b/i.test(this.className)) {
                                    var e = document.getElementById("lots_tab_pane").getElementsByTagName("li");
                                    var i = e.length;
                                    while (i--) if (e[i].getAttribute("class").indexOf("active") > -1) e[i].className = e[i].className.replace(/ active$/g, "");
                                    (this.parentNode).className += ' active';
                                }
                            });
                        }
                        holodeck._tabs.addTab(link);
                        SRDotDX.gui.applyTabs();
                        //Set up custom chat size
                        SRDotDX.gui.hideWC(true);

                        //Chat raids overlay div
                        SRDotDX.gui.cHTML('div').set({id: 'chat_raids_overlay'})
                            .html('<span id="chat_raids_overlay_text"></span>', true)
                            .attach("to", 'chat_tab_pane');

                        //Sidebar elements generator
                        if (SRDotDX.config.sbEnable) SRDotDX.gui.applySidebarUI(1);

                        //spam tab
                        var FPXimpSpam = SRDotDX.gui.cHTML('#DotDX_raidsToSpam');
                        var FPXSpamText = 'Paste raid and/or pastebin links here to share or import\n\nLinks must be comma (,) separated.';
                        FPXimpSpam.ele().value = FPXSpamText;
                        FPXimpSpam.ele().addEventListener('blur', function () {
                            if (this.value == '') this.value = FPXSpamText
                        });
                        FPXimpSpam.ele().addEventListener('focus', function () {
                            if (this.value == FPXSpamText) this.value = ''
                        });

                        //chat global listener
                        var chat_window = document.getElementById('chat_rooms_container');
                        chat_window.addEventListener('click', function (e) {
                            SRDotDX.gui.chatWindowMouseDown(e)
                        }, false);
                        chat_window.addEventListener('contextmenu', function (e) {
                            SRDotDX.gui.chatWindowContextMenu(e)
                        }, false);
                        //land tab
                        els = document.FPXLandForm;
                        i = 9;
                        while (i--) els.elements['tf_' + (i + 1)].value = SRDotDX.config.FPXLandOwnedCount[i];
                        SRDotDX.gui.FPXLandUpdater();

                        //raid tab
                        var raids_tab = document.getElementById('raids_tab');
                        raids_tab.addEventListener('click', function () {
                            SRDotDX.gui.refreshRaidList();
                        }, false);

                        var raidBossFilter = SRDotDX.gui.cHTML('#raidsBossFilter');
                        raidBossFilter.ele().value = SRDotDX.config.lastFilter[SRDotDX.config.serverMode - 1];
                        raidBossFilter.ele().addEventListener("keyup", function () {
                            SRDotDX.gui.updateFilterTxt(this.value, true);
                        });

                        var filterIncVis = SRDotDX.gui.cHTML('#dotdx_flt_vis');
                        filterIncVis.ele().checked = SRDotDX.config.fltIncVis;
                        filterIncVis.on('click', function () {
                            SRDotDX.config.fltIncVis = this.checked;
                            if (this.checked) {
                                document.getElementById('dotdx_flt_nuke').checked = false;
                                SRDotDX.config.fltShowNuked = false;
                                document.getElementById('dotdx_flt_all').checked = false;
                                SRDotDX.config.fltShowAll = false;
                            }
                            SRDotDX.gui.selectRaidsToJoin('checkbox')
                        });

                        var filterShowNuked = SRDotDX.gui.cHTML('#dotdx_flt_nuke');
                        filterShowNuked.ele().checked = SRDotDX.config.fltShowNuked;
                        filterShowNuked.on('click', function () {
                            SRDotDX.config.fltShowNuked = this.checked;
                            if (this.checked) {
                                document.getElementById('dotdx_flt_vis').checked = false;
                                SRDotDX.config.fltIncVis = false;
                                document.getElementById('dotdx_flt_all').checked = false;
                                SRDotDX.config.fltShowAll = false;
                            }
                            SRDotDX.gui.selectRaidsToJoin('checkbox')
                        });

                        var filterShowAll = SRDotDX.gui.cHTML('#dotdx_flt_all');
                        filterShowAll.ele().checked = SRDotDX.config.fltShowAll;
                        filterShowAll.on('click', function () {
                            SRDotDX.config.fltShowAll = this.checked;
                            if (this.checked) {
                                document.getElementById('dotdx_flt_vis').checked = false;
                                SRDotDX.config.fltIncVis = false;
                                document.getElementById('dotdx_flt_nuke').checked = false;
                                SRDotDX.config.fltShowNuked = false
                            }
                            SRDotDX.gui.selectRaidsToJoin('checkbox')
                        });

                        //raidlist global click listener
                        var raid_list = document.getElementById('raid_list');
                        raid_list.addEventListener('click', function (e) {
                            e.preventDefault();
                            e.stopPropagation();
                            return false
                        }, false);
                        raid_list.addEventListener('mousedown', function (e) {
                            SRDotDX.gui.FPXraidListMouseDown(e)
                        }, false);

                        //options tab
                        var optsImportFiltered = SRDotDX.gui.cHTML('#SRDotDX_options_importFiltered');
                        optsImportFiltered.ele().checked = SRDotDX.config.importFiltered;
                        optsImportFiltered.on('click', function () {
                            SRDotDX.config.importFiltered = this.checked;
                            SRDotDX.config.save(false)
                        });

                        var optsShowFs = SRDotDX.gui.cHTML('#SRDotDX_options_showFS');
                        optsShowFs.ele().checked = SRDotDX.config.linkShowFs;
                        optsShowFs.on('click', function () {
                            SRDotDX.config.linkShowFs = this.checked;
                            SRDotDX.config.save(false)
                        });

                        var optsShowAp = SRDotDX.gui.cHTML('#SRDotDX_options_showAP');
                        optsShowAp.ele().checked = SRDotDX.config.linkShowAp;
                        optsShowAp.on('click', function () {
                            SRDotDX.config.linkShowAp = this.checked;
                            SRDotDX.config.save(false)
                        });

                        var optsHideARaids = SRDotDX.gui.cHTML('#SRDotDX_options_hideRaidLinks');
                        var optsHideBRaids = SRDotDX.gui.cHTML('#SRDotDX_options_hideBotLinks');
                        var optsHideVRaids = SRDotDX.gui.cHTML('#SRDotDX_options_hideVisitedRaids');
                        var optsConfirmDeletes = SRDotDX.gui.cHTML('#SRDotDX_options_confirmWhenDeleting');
                        var optsMarkImportedVisited = SRDotDX.gui.cHTML('#SRDotDX_options_markImportedRaidsVisited');
                        var optsWhisperTo = SRDotDX.gui.cHTML('#SRDotDX_options_whisperTo');
                        var optsMarkMyRaidsVisited = SRDotDX.gui.cHTML('#SRDotDX_options_markMyRaidsVisited');
                        var optsFormatLinkOutput = SRDotDX.gui.cHTML('#SRDotDX_options_formatLinkOutput');
                        var optsAutoImportPaste = SRDotDX.gui.cHTML('#SRDotDX_options_autoImportPaste');
                        var optsConfirmForLargePaste = SRDotDX.gui.cHTML('#SRDotDX_options_confirmForLargePaste');
                        var optsConfirmPasteSize = SRDotDX.gui.cHTML('#SRDotDX_options_confirmPasteSize');
                        var rbUnvisitedPruningAggressive = SRDotDX.gui.cHTML('#FPX_options_unvisitedPruningAggressive');
                        var rbUnvisitedPruningModerate = SRDotDX.gui.cHTML('#FPX_options_unvisitedPruningModerate');
                        var rbUnvisitedPruningSlow = SRDotDX.gui.cHTML('#FPX_options_unvisitedPruningSlow');
                        var rbUnvisitedPruningNone = SRDotDX.gui.cHTML('#FPX_options_unvisitedPruningNone');

                        var optsChatSizeNormal = SRDotDX.gui.cHTML('#SRDotDX_options_chatSizeNormal');
                        optsChatSizeNormal.on('click', function () {
                            SRDotDX.gui.chatResize(300)
                        });
                        var optsChatSizePlus25 = SRDotDX.gui.cHTML('#SRDotDX_options_chatSizePlus25');
                        optsChatSizePlus25.on('click', function () {
                            SRDotDX.gui.chatResize(375)
                        });
                        var optsChatSizePlus50 = SRDotDX.gui.cHTML('#SRDotDX_options_chatSizePlus50');
                        optsChatSizePlus50.on('click', function () {
                            SRDotDX.gui.chatResize(450)
                        });
                        switch (SRDotDX.config.chatSize) {
                            case 300:
                                optsChatSizeNormal.ele().checked = true;
                                break;
                            case 375:
                                optsChatSizePlus25.ele().checked = true;
                                break;
                            case 450:
                                optsChatSizePlus50.ele().checked = true;
                                break;
                            default:
                                optsChatSizeNormal.ele().checked = true;
                                break;
                        }

                        var optsChatFontNormal = SRDotDX.gui.cHTML('#SRDotDX_options_fontSizeNormal');
                        optsChatFontNormal.on('click', function () {
                            SRDotDX.gui.applyFontSize(0)
                        });
                        var optsChatFontSmaller = SRDotDX.gui.cHTML('#SRDotDX_options_fontSizeSmaller');
                        optsChatFontSmaller.on('click', function () {
                            SRDotDX.gui.applyFontSize(2)
                        });
                        var optsChatFontBigger = SRDotDX.gui.cHTML('#SRDotDX_options_chatSizeBigger');
                        optsChatFontBigger.on('click', function () {
                            SRDotDX.gui.applyFontSize(1)
                        });
                        switch (SRDotDX.config.fontNum) {
                            case 2:
                                optsChatFontSmaller.ele().checked = true;
                                break;
                            case 1:
                                optsChatFontBigger.ele().checked = true;
                                break;
                            default:
                                optsChatFontNormal.ele().checked = true;
                                break;
                        }

                        var optsChatHideScrollbar = SRDotDX.gui.cHTML('#SRDotDX_options_hideScrollbar');
                        optsChatHideScrollbar.ele().checked = SRDotDX.config.hideScrollBar;
                        optsChatHideScrollbar.on('click', function () {
                            SRDotDX.config.hideScrollBar = this.checked;
                            SRDotDX.config.save(false);
                            SRDotDX.gui.chatResize();
                        });

                        var optsHideKongForum = SRDotDX.gui.cHTML('#options_hideKongForum');
                        optsHideKongForum.ele().checked = SRDotDX.config.hideKongForum;
                        optsHideKongForum.on('click', function () {
                            SRDotDX.config.hideKongForum = this.checked;
                            SRDotDX.gui.cHTML('#DotDX_forum').html('div.game_page_wrap {padding-top: 16px; margin-top: 14px !important; background: #333 !important; display: ' + (SRDotDX.config.hideKongForum ? 'none' : 'block') + '}', true)
                        });

                        var optsHideGameDetails = SRDotDX.gui.cHTML('#options_hideGameDetails');
                        optsHideGameDetails.ele().checked = SRDotDX.config.hideGameDetails;
                        optsHideGameDetails.on('click', function () {
                            SRDotDX.config.hideGameDetails = this.checked;
                            SRDotDX.gui.cHTML('#DotDX_details').html('div.game_details_outer {margin-top: 14px !important; width: 900px !important; border: solid 20px #333 !important; display: ' + (SRDotDX.config.hideGameDetails ? 'none' : 'block') + '}', true)
                        });

                        var optsHideGameTitle = SRDotDX.gui.cHTML('#options_hideGameTitle');
                        optsHideGameTitle.ele().checked = SRDotDX.config.hideGameTitle;
                        optsHideGameTitle.on('click', function () {
                            SRDotDX.config.hideGameTitle = this.checked
                        });

                        var optsTrueMsgCount = SRDotDX.gui.cHTML('#options_trueMsgCount');
                        optsTrueMsgCount.ele().checked = SRDotDX.config.kongMsg;
                        optsTrueMsgCount.on('click', function () {
                            SRDotDX.config.kongMsg = this.checked
                        });
                        if (SRDotDX.config.kongMsg) SRDotDX.gui.setMessagesCount();

                        var optsHideGameTab = SRDotDX.gui.cHTML('#options_hideGameTab');
                        optsHideGameTab.ele().checked = SRDotDX.config.hideGameTab;
                        optsHideGameTab.on('click', function () {
                            SRDotDX.config.hideGameTab = this.checked;
                            SRDotDX.gui.applyTabs()
                        });

                        var optsHideAccTab = SRDotDX.gui.cHTML('#options_hideAccTab');
                        optsHideAccTab.ele().checked = SRDotDX.config.hideAccTab;
                        optsHideAccTab.on('click', function () {
                            SRDotDX.config.hideAccTab = this.checked;
                            SRDotDX.gui.applyTabs()
                        });

                        var optsDotdxTabName = SRDotDX.gui.cHTML('#options_dotdxTabName');
                        optsDotdxTabName.ele().value = SRDotDX.config.dotdxTabName;
                        optsDotdxTabName.on('keyup', function () {
                            SRDotDX.config.dotdxTabName = this.value;
                            SRDotDX.gui.applyTabs()
                        });

                        var optsChatIgnHide = SRDotDX.gui.cHTML('#SRDotDX_options_ignHide');
                        optsChatIgnHide.on('click', function(){SRDotDX.config.ignMode = 0});
                        var optsChatIgnReplace = SRDotDX.gui.cHTML('#SRDotDX_options_ignReplace');
                        optsChatIgnReplace.on('click', function(){SRDotDX.config.ignMode = 1});
                        var optsChatIgnAttach = SRDotDX.gui.cHTML('#SRDotDX_options_ignAttach');
                        optsChatIgnAttach.on('click', function(){SRDotDX.config.ignMode = 2});
                        switch(SRDotDX.config.ignMode) {
                            case 0: optsChatIgnHide.ele().checked = true; break;
                            case 1: optsChatIgnReplace.ele().checked = true; break;
                            case 2: optsChatIgnAttach.ele().checked = true; break;
                        }

                        var optsChatThemeLightGrey = SRDotDX.gui.cHTML('#theme_lightGrey');
                        optsChatThemeLightGrey.on('click', function(){SRDotDX.gui.applyTheme(0)});
                        var optsChatThemeCrimsonBlack = SRDotDX.gui.cHTML('#theme_crimsonBlack');
                        optsChatThemeCrimsonBlack.on('click', function(){SRDotDX.gui.applyTheme(1)});
                        switch(SRDotDX.config.themeNum) {
                            case 1: optsChatThemeCrimsonBlack.ele().checked = true; break;
                            case 0: optsChatThemeLightGrey.ele().checked = true; break;
                        }

                        var optsWcLeft = SRDotDX.gui.cHTML('#options_wcLeft');
                        optsWcLeft.ele().checked = SRDotDX.config.leftWChat;
                        optsWcLeft.on('click', function(){
                            SRDotDX.config.leftWChat = this.checked;
                            SRDotDX.config.extSave();
                        });

                        var optsWcRemove = SRDotDX.gui.cHTML('#options_wcRemove');
                        optsWcRemove.ele().checked = SRDotDX.config.removeWChat;
                        optsWcRemove.on('click', function(){SRDotDX.gui.removeWC(this.checked)});

                        //Opts -> Sidebar Options
                        var optsSbEnable = SRDotDX.gui.cHTML('#options_sbEnable');
                        optsSbEnable.ele().checked = SRDotDX.config.sbEnable;
                        optsSbEnable.on('click', function () {
                            SRDotDX.config.sbEnable = this.checked;
                            SRDotDX.gui.applySidebarUI(this.checked ? 1 : -1);
                            SRDotDX.config.save(false)
                        });

                        var optsSbRightSide = SRDotDX.gui.cHTML('#options_sbRightSide');
                        optsSbRightSide.ele().checked = SRDotDX.config.sbRightSide;
                        optsSbRightSide.on('click', function () {
                            SRDotDX.config.sbRightSide = this.checked;
                            SRDotDX.gui.applySidebarUI(2);
                            SRDotDX.config.save(false)
                        });

                        //var optsCbDisable = SRDotDX.gui.cHTML('#options_cbDisable');
                        //optsCbDisable.ele().checked = SRDotDX.config.cbDisable;
                        //optsCbDisable.on('click', function(){ SRDotDX.config.cbDisable = this.checked; SRDotDX.config.save(false) });

                        var optsSlimSB = SRDotDX.gui.cHTML('#options_sbSlim');
                        optsSlimSB.ele().checked = SRDotDX.config.sbSlim;
                        optsSlimSB.on('click', function () {
                            SRDotDX.config.sbSlim = this.checked;
                            SRDotDX.config.save(false);
                            SRDotDX.gui.toggleSlimSB();
                        });

                        if (SRDotDX.config.markMyRaidsVisted) {
                            optsMarkMyRaidsVisited.ele().checked = true
                        }
                        if (SRDotDX.config.formatLinkOutput) {
                            optsFormatLinkOutput.ele().checked = 'checked';
                        }
                        if (SRDotDX.config.markImportedVisited) {
                            optsMarkImportedVisited.ele().checked = 'checked';
                        }
                        if (SRDotDX.config.whisperTo != '') {
                            optsWhisperTo.ele().value = SRDotDX.config.whisperTo;
                        }
                        if (SRDotDX.config.autoImportPaste) {
                            optsAutoImportPaste.ele().checked = 'checked';
                        } else {
                            optsConfirmForLargePaste.ele().disabled = true;
                            optsConfirmPasteSize.ele().disabled = true
                        }
                        if (SRDotDX.config.confirmForLargePaste) {
                            optsConfirmForLargePaste.ele().checked = 'checked';
                        } else {
                            optsConfirmPasteSize.ele().disabled = true
                        }
                        if (SRDotDX.config.confirmPasteSize > 0) {
                            optsConfirmPasteSize.ele().value = SRDotDX.config.confirmPasteSize
                        }
                        if (SRDotDX.config.confirmDeletes) {
                            optsConfirmDeletes.ele().checked = 'checked'
                        }
                        if (SRDotDX.config.bckColor) {
                            SRDotDX.gui.cHTML('#SRDotDX_colors_background').ele().value = SRDotDX.config.bckColor
                        }


                        switch (SRDotDX.config.unvisitedRaidPruningMode) {
                            case 0:
                                rbUnvisitedPruningAggressive.ele().checked = true;
                                break;
                            case 1:
                                rbUnvisitedPruningModerate.ele().checked = true;
                                break;
                            case 2:
                                rbUnvisitedPruningSlow.ele().checked = true;
                                break;
                            case 3:
                                rbUnvisitedPruningNone.ele().checked = true;
                                break;
                            default:
                                rbUnvisitedPruningAggressive.ele().checked = true;
                                break;
                        }

                        if (SRDotDX.config.hideVisitedRaids) {
                            optsHideVRaids.ele().checked = 'checked'
                        }
                        if (SRDotDX.config.hideBotLinks) {
                            optsHideBRaids.ele().checked = 'checked'
                        }
                        if (SRDotDX.config.hideRaidLinks) {
                            optsHideARaids.ele().checked = true;
                            optsHideVRaids.ele().disabled = true;
                            optsHideBRaids.ele().disabled = true;
                        }

                        optsConfirmDeletes.ele().addEventListener('click', function () {
                            SRDotDX.config.confirmDeletes = this.checked
                        });
                        optsAutoImportPaste.ele().addEventListener('click', function () {
                            SRDotDX.config.autoImportPaste = this.checked;
                            if (!this.checked) {
                                optsConfirmForLargePaste.ele().checked = false;
                                SRDotDX.config.confirmForLargePaste = false
                            }
                            optsConfirmForLargePaste.ele().disabled = !this.checked;
                            optsConfirmPasteSize.ele().disabled = !this.checked;
                        });
                        optsConfirmForLargePaste.ele().addEventListener('click', function () {
                            optsConfirmPasteSize.ele().disabled = !this.checked;
                            SRDotDX.config.confirmForLargePaste = this.checked
                        });
                        optsConfirmPasteSize.ele().addEventListener('change', function () {
                            if (isNumber(this.value)) SRDotDX.config.confirmPasteSize = parseInt(this.value); else SRDotDX.gui.errorMessage('Paste size must be a number')
                        });

                        optsMarkImportedVisited.ele().addEventListener("click", function () {
                            SRDotDX.config.markImportedVisited = this.checked;
                        });


                        optsWhisperTo.ele().addEventListener("change", function () {
                            console.log("[SRDotDX] Whisper person changed to " + this.value);
                            SRDotDX.config.whisperTo = this.value;
                        });
                        SRDotDX.gui.cHTML('#SRDotDX_colors_background').ele().addEventListener("change", function () {
                            SRDotDX.config.bckColor = this.value;
                        });

                        optsFormatLinkOutput.ele().addEventListener("click", function () {
                            SRDotDX.config.formatLinkOutput = this.checked;
                        });

                        optsMarkMyRaidsVisited.ele().addEventListener("click", function () {
                            SRDotDX.config.markMyRaidsVisted = this.checked;
                        });
                        optsHideARaids.ele().addEventListener("click", function () {
                            document.getElementById('SRDotDX_options_hideVisitedRaids').disabled = this.checked;
                            document.getElementById('SRDotDX_options_hideSeenRaids').disabled = this.checked;
                            SRDotDX.config.hideRaidLinks = this.checked;
                            SRDotDX.gui.cHTML('#SRDotDX_raidClass').html('.SRDotDX_raid {display: ' + (this.checked ? 'none !important' : 'block') + '}', true);
                        }, true);
                        optsHideBRaids.ele().addEventListener("click", function () {
                            SRDotDX.gui.switchBot()
                        }, true);
                        optsHideVRaids.ele().addEventListener("click", function () {
                            SRDotDX.config.hideVisitedRaids = this.checked;
                            SRDotDX.gui.cHTML('#SRDotDX_visitedRaidClass').html('.SRDotDX_visitedRaid {display: ' + (this.checked ? 'none !important' : 'block') + '}', true);
                        }, true);

                        rbUnvisitedPruningAggressive.ele().addEventListener("click", function () {
                            SRDotDX.config.unvisitedRaidPruningMode = 0
                        }, true);
                        rbUnvisitedPruningModerate.ele().addEventListener("click", function () {
                            SRDotDX.config.unvisitedRaidPruningMode = 1
                        }, true);
                        rbUnvisitedPruningSlow.ele().addEventListener("click", function () {
                            SRDotDX.config.unvisitedRaidPruningMode = 2
                        }, true);
                        rbUnvisitedPruningNone.ele().addEventListener("click", function () {
                            SRDotDX.config.unvisitedRaidPruningMode = 3
                        }, true);

                        //CHAT TAB CLICK SCROLL (id=chat_tab, class=chat_message_window)
                        SRDotDX.gui.cHTML('#chat_tab').ele().addEventListener("click", function () {
                            setTimeout(function () {
                                var el = document.getElementsByClassName('chat_message_window')[SRDotDX.util.getChatNumber()];
                                console.log("[DotDX] Scrolling chat window " + el.scrollTop + " : " + el.scrollHeight);
                                el.scrollTop = el.scrollHeight;
                                SRDotDX.gui.selectRaidsToJoin();
                            }, 50);
                        }, true);

                        //RAIDS TAB CLICK EVENT LISTENER
                        SRDotDX.gui.cHTML('#lots_tab').ele().addEventListener("click", function () {
                            setTimeout(SRDotDX.gui.selectRaidsToJoin, 50)
                        }, true);

                        //FriendShare
                        SRDotDX.gui.refreshFriends();

                        // Filtering tab
                        SRDotDX.gui.createFilterTab();

                        var filterChatCb = SRDotDX.gui.cHTML('#SRDotDX_options_perRaidFilterLinks');
                        filterChatCb.on("click", function () {
                            SRDotDX.config.filterChatLinks = this.checked;
                            SRDotDX.gui.toggleFiltering();
                        }, true).ele().checked = SRDotDX.config.filterChatLinks;

                        var filterListCb = SRDotDX.gui.cHTML('#SRDotDX_options_perRaidFilterRaidList');
                        filterListCb.on("click", function () {
                            SRDotDX.config.filterRaidList = this.checked;
                            SRDotDX.gui.toggleFiltering();
                        }, true).ele().checked = SRDotDX.config.filterRaidList;

                        SRDotDX.gui.cHTML('li').set({class: 'rate'}).html('<a class="spritegame" href="http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons" onclick="SRDotDX.reload(); return false;">Reload Game</a>', false).attach('after', 'quicklinks_favorite_block');
                        if(!SRDotDX.config.removeWChat) SRDotDX.gui.cHTML('li').set({id: 'wcbutton', class: 'rate'}).html('<a id="hideWCtxt" class="spritegame" href="http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons" onclick="SRDotDX.gui.hideWC(false); return false;">' + (SRDotDX.config.hideWChat ? 'Show World Chat' : 'Hide World Chat') + '</a>', false).attach('after', 'quicklinks_play_later_block');

                        //Chat buttons overlay div
                        var hd = document.getElementById('chat_window_header').getElementsByClassName('room_name_container')[0].innerHTML;
                        document.getElementById('chat_window_header').getElementsByClassName('room_name_container')[0].innerHTML = hd + '<div class="dotdx_chat_overlay">DotDX: <span id="dotdx_chat_overlay"></span></div>';
                        setTimeout(SRDotDX.gui.BeginDeletingExpiredUnvisitedRaids, 10000);
                        //SRDotDX.util.updateUser(true);
                        SRDotDX.userInt = setInterval(function(){
                            if(typeof active_user == 'object' && active_user.username().toLowerCase() != 'guest') {
                                SRDotDX.config.kongUser = active_user.username();
                                SRDotDX.config.kongId = active_user.id();
                                SRDotDX.config.kongAuth = active_user.gameAuthToken();
                                console.log("[DotDX] Initialized user: " + SRDotDX.config.kongUser + " | " + SRDotDX.config.kongId);
                                clearInterval(SRDotDX.userInt);
                            }
                        },1000);
                        SRDotDX.guildInt = setInterval(function(){
                            if( typeof holodeck == 'object' &&
                                typeof holodeck._guildRosters == 'object' &&
                                Object.keys(holodeck._guildRosters).length > 0 &&
                                typeof holodeck.getGuildRoomForCurrentGameCookie == 'function' &&
                                typeof holodeck.getGuildRoomForCurrentGameCookie().guild_id == 'string') {
                                var guildUsers = holodeck._guildRosters[holodeck.getGuildRoomForCurrentGameCookie().guild_id];
                                var i = guildUsers.length;
                                console.log("[DotDX] Received guild roster list, number of entries: " + guildUsers.length);
                                clearInterval(SRDotDX.guildInt);
                                while(i--) if(typeof SRDotDX.config.ignUsers[guildUsers[i].username] == 'undefined') SRDotDX.config.ignUsers[guildUsers[i].username] = guildUsers[i].game_character_name;
                                }
                        },1000);
                        console.log('[DotDX] DotDeXtension loading complete');
                        SRDotDX.gui.doStatusOutput('Loaded successfully', 2000, false);
                        setTimeout(SRDotDX.config.save, 2000);
                    }
                    else {
                        setTimeout(SRDotDX.gui.load, 500)
                    }
                },
                fsEleClick: function (e) {
                    e = e || window.event;
                    var el = e.target.id.split(':');
                    if (el[0] == 'fs') {
                        SRDotDX.config.friendUsers[el[1]][el[2]] = e.target.checked;
                    }
                },
                FPXraidLinkClick: function (id) {
                    if (!SRDotDX.gui.joining) SRDotDX.request.joinRaid(SRDotDX.config.raidList[id]);
                    else SRDotDX.gui.joinRaidList.push(SRDotDX.gui.GetRaid(id));
                },
                FPXLandButtonHandler: function (ele, name) {
                    var x = name.charAt(name.length - 1), sign = 1;
                    if (name.charAt(3) != 'p')sign = -1;
                    document.FPXLandForm.elements["tf_" + x].value = parseInt(document.FPXLandForm.elements["tf_" + x].value, 10) + (10 * sign);
                    SRDotDX.gui.FPXLandUpdater();
                },
                FPXLandUpdater: function () {
                    var owned = [0, 0, 0, 0, 0, 0, 0, 0, 0], els = document.FPXLandForm, i = 9;
                    while (i--) owned[i] = parseInt(els.elements['tf_' + (i + 1)].value, 10);
                    var ratio = FPX.LandCostRatio(owned), best = 0, cn;
                    i = 9;
                    while (i--) {
                        cn = document.getElementById('b_' + (i + 1)).className;
                        if (cn.indexOf('landpmbutton ') == -1) document.getElementById('b_' + (i + 1)).className = cn.replace('landpmbuttonhigh', 'landpmbutton');
                        //document.getElementById('b_'+(i+1)).prevClassName = 'landpmbutton';
                        if (ratio[i] > ratio[best]) best = i;
                    }
                    cn = document.getElementById('b_' + (best + 1)).className;
                    document.getElementById('b_' + (best + 1)).className = cn.replace('landpmbutton', 'landpmbuttonhigh');
                },
                FPXLandButtonSave: function () {
                    var els = document.FPXLandForm, i = 9;
                    while (i--) SRDotDX.config.FPXLandOwnedCount[i] = els.elements['tf_' + (i + 1)].value;
                    SRDotDX.config.save(false);
                    SRDotDX.gui.doStatusOutput('Land count saved!');
                },
                FPXraidListMouseDown: function (e) {
                    e.preventDefault();
                    e.stopPropagation();
                    var classtype = e.target.className;
                    e = e || window.event;
                    console.log("[SRDotDX] Clicked on el with class:" + classtype + ", mouse button:" + e.which);
                    if (e.which == 1) {
                        switch (classtype) {
                            case 'dotdxRaidListDelete':
                                SRDotDX.gui.deleteRaid(e.target.parentNode);
                                break;
                            case 'DotDX_RaidLink':
                                SRDotDX.gui.FPXraidLinkClick(e.target.parentNode.getAttribute("raidid"));
                                break;
                        }
                    }
                },
                chatWindowContextMenu: function (e) {
                    e = e || window.event;
                    var clickedClass = e.target.className.split(" "), nick = "";
                    console.log('[DotDX] Chat window menu [' + e.target.className + ']');
                    if (clickedClass[0] == 'username' && clickedClass[1] != 'spritesite') {
                        e.preventDefault();
                        e.stopPropagation();
                        nick = clickedClass[1];
                        var frTxt = SRDotDX.config.friendUsers[nick]?'unFriend':'Friend';
                        var uMenu = document.getElementById(clickedClass[clickedClass.length - 1]);
                        uMenu.innerHTML = '<span class="user dotdx_name_' + nick + '">' + nick + '</span><span class="user dotdx_friend_' + nick + '">' + frTxt + '</span><span class="user dotdx_slap_' + nick + '">Slap</span><span class="user dotdx_mute_' + nick + '">Mute</span>';
                        uMenu.style.maxWidth = "220px";

                    }
                    return false;
                },
                chatWindowMouseDown: function (e) {
                    e = e || window.event;
                    var clickedClass = e.target.className.split(" "), nick = "";
                    console.log('[DotDX] Chat window (' + e.which + ') [' + e.target.className + ']');

                    switch (clickedClass[0]) {
                        case 'username':
                            if (clickedClass[1] != 'spritesite') {
                                e.preventDefault();
                                e.stopPropagation();
                                nick = clickedClass[1];
                                if (e.which == 1) {
                                    console.log("[DotDX] Whisp to user with nick [" + nick + "]");
                                    holodeck.chatWindow().insertPrivateMessagePrefixFor(nick);
                                }
                            }
                            break;
                        case 'chatRaidLink':
                            if (e.which == 1) {
                                e.preventDefault();
                                e.stopPropagation();
                                var raid = clickedClass[1].split("|");
                                var rObj = {id: raid[0], hash: raid[1], boss: raid[2], diff: raid[3], sid: raid[4]};
                                if (!SRDotDX.gui.joining) {
                                    //SRDotDX.request.kongData = 'kongregate_username='+holodeck._active_user.username()+'&kongregate_user_id='+holodeck._active_user.id()+'&kongregate_game_auth_token='+holodeck._active_user.gameAuthToken();
                                    SRDotDX.request.joinRaid(rObj);
                                }
                                else SRDotDX.gui.joinRaidList.push(rObj);
                            }
                            break;
                        case 'dotdx_chat_button':
                            if (e.which == 1) {
                                switch (e.target.id) {
                                    case 'dotdx_chat_join':
                                        SRDotDX.gui.joinSelectedRaids(true);
                                        break;
                                    case 'dotdx_chat_import':
                                        SRDotDX.gui.importFromServer();
                                        break;
                                    case 'dotdx_chat_bot':
                                        SRDotDX.gui.switchBot();
                                        break;
                                    case 'dotdx_chat_reload':
                                        SRDotDX.reload();
                                        break;
                                }
                            }
                            break;
                        case 'user':
                            if (e.which == 1) {
                                var classTokens = clickedClass[1].split("_");
                                switch (classTokens[1]) {
                                    case 'slap':
                                        var num = Math.round((Math.random() * (SRDotDX.slapSentences.length - 1)));
                                        SRDotDX.gui.FPXdoWork('*' + SRDotDX.slapSentences[num].replace(/<nick>/g, classTokens[2]) + '*');
                                        break;
                                    case 'mute':
                                        SRDotDX.config.mutedUsers[classTokens[2]] = true;
                                        SRDotDX.config.save(false);
                                        break;
                                    case 'friend':
                                        if (typeof SRDotDX.config.friendUsers[classTokens[2]] == 'object') delete SRDotDX.config.friendUsers[classTokens[2]];
                                        else SRDotDX.config.friendUsers[classTokens[2]] = [false, false, false, false, true];
                                        SRDotDX.config.save(false);
                                        SRDotDX.gui.refreshFriends();
                                        break;
                                    case 'name':
                                        holodeck.showMiniProfile(classTokens[2]);
                                        break;
                                }
                                e.target.parentNode.style.maxWidth = "0";
                            }
                    }
                },
                FPXraidLinkMouseDown: function (e, param1, param2, isChat) {
                    e = e || window.event;
                    if (isChat && e.which == 1) SRDotDX.gui.FPXraidLinkClick(param1);
                },
                raidListItemUpdateTimeSince: function (id) {
                    var raid = SRDotDX.config.raidList[id];
                    if (typeof raid == 'object') document.getElementById('timeSince_' + id).innerHTML = timeSince(new Date(raid.timeStamp))
                },
                raidListItemUpdate: function (id) {
                    var raid = SRDotDX.config.raidList[id];
                    if (typeof raid == 'object') {
                        var ele = document.getElementById("raid_list").firstChild;
                        while (ele) {
                            if (ele.getAttribute("raidid") == id) {
                                ele.getElementsByClassName("DotDX_RaidListVisited")[0].innerHTML = (raid.visited ? '&#9733;' : '');
                                break;
                            }
                            ele = ele.nextSibling;
                        }
                    }
                    else SRDotDX.gui.raidListItemRemoveById(id);
                },
                raidListItemRemoveById: function (id) {
                    var ele = document.getElementById('DotDX_' + id);
                    if (ele) ele.parentNode.removeChild(ele);
                },
                toggleCSS: function (p) {
                    if (p) {
                        document.head.removeChild(document.getElementById(p.id));
                        SRDotDX.gui.cHTML("style").set({type: "text/css", id: p.id}).text(p.cls).attach("to", document.head);
                    }
                },
                toggleRaid: function (type, id, tog) {
                    var d = document.getElementsByClassName("DotDX_raidId_" + id);
                    if (typeof SRDotDX.config.raidList[id] == 'object') {
                        var raid = SRDotDX.config.raidList[id];
                        raid = SRDotDX.getRaidDetails("&kv_difficulty=" + raid.diff + "&kv_hash=" + raid.hash + "&kv_raid_boss=" + raid.boss + "&kv_raid_id=" + raid.id);
                    }
                    var i = d.length;
                    while (i--) {
                        if (tog && d[i].className.indexOf('DotDX_' + type + 'Raid') < 0) d[i].className += ' DotDX_' + type + 'Raid';
                        else if (!tog && d[i].className.indexOf('DotDX_' + type + 'Raid') >= 0) d[i].className = d[i].className.replace(new RegExp('DotDX_' + type + 'Raid( |$)', 'i'), '');
                        if (typeof raid == 'object') d[i].getElementsByTagName('a')[0].innerHTML = raid.linkText();
                    }
                }
            },
            nukeRaid: function (id) {
                if (SRDotDX.config.raidList[id]) {
                    SRDotDX.config.raidList[id].nuked = true;
                    SRDotDX.gui.toggleRaid('nuked', id, true)
                }
            },
            searchPatterns: {
                z1: ['kobold', 'scorp', 'ogre'],
                z2: ['rhino', 'alice', 'lurker'],
                z3: ['4ogre', 'squid', 'batman', 'drag', 'tainted'],
                z4: ['bmane', '3dawg', 'hydra', 'sircai', 'tyranthius'],
                z5: ['ironclad', 'zombiehorde', 'stein', 'bogstench', 'nalagarst'],
                z6: ['gunnar', 'nidhogg', 'kang', 'ulfrik', 'kalaxia'],
                z7: ['maraak', 'erakka_sak', 'wexxa', 'guilbert', 'bellarius'],
                z8: ['hargamesh', 'grimsly', 'rift', 'sisters', 'mardachus'],
                z9: ['mesyra', 'nimrod', 'phaedra', 'tenebra', 'valanazes'],
                "z1-9": ['kobold', 'scorp', 'ogre', 'rhino', 'alice', 'lurker', '4ogre', 'squid', 'batman', 'drag', 'tainted', 'bmane', '3dawg', 'hydra', 'sircai', 'tyranthius', 'ironclad', 'zombiehorde', 'stein', 'bogstench', 'nalagarst', 'gunnar', 'nidhogg', 'kang', 'ulfrik', 'kalaxia', 'maraak', 'erakka_sak', 'wexxa', 'guilbert', 'bellarius', 'hargamesh', 'grimsly', 'rift', 'sisters', 'mardachus', 'mesyra', 'nimrod', 'phaedra', 'tenebra', 'valanazes'],
                "z9.5": ['pumpkin', 'jacksrevenge1'],
                "z9.7": ['hellemental', 'shadow'],
                z10: ['krugnug', 'tomb_gargoyle', 'leonine_watcher', 'centurion_marius', 'caracalla'],
                z14: ['zugen', 'gulkinari', 'verkiteia', 'cannibal_barbarians'],
                z15: ['korxun', 'xerkara', 'shaar', 'nereidon', 'drulcharus'],
                farm: ['maraak', 'erakka_sak', 'wexxa', 'guilbert', 'bellarius', 'drag', 'tainted', 'ogre', 'scorp', 'baroness'],
                flute: ['kobold', 'scorp', 'ogre', 'rhino', 'alice', 'lurker', '4ogre', 'squid', 'batman', 'drag', 'tainted', 'harpy', 'spider', 'djinn', 'evilgnome', 'basilisk', 'roc', 'gladiators', 'chimera', 'crabshark', 'gorgon', 'warewolfpack', 'blobmonster', 'giantgolem'],
                tower: ['thaltherda', 'hurkus', 'malleus'],
                small: ['kobold', 'rhino', 'bmane', '4ogre', 'serpina', 'dragons_lair', 'gunnar', 'hargamesh', 'ironclad', 'krugnug', 'maraak', 'thaltherda', 'zugen', 'nereidon', 'mestr_rekkr_rematch', 'ghostly_alchemist', 'master_ninja_bakku'],
                medium: ['alice', 'erakka_sak', 'grimsly', '3dawg', 'scorp', 'nidhogg', 'tomb_gargoyle', 'squid', 'tisiphone', 'zombiehorde', 'baroness', 'hurkus', 'gulkinari', 'korxun', 'drunken_ragunt', 'shadow', 'rudaru_the_axe_master'],
                large: ['ogre', 'batman', 'hydra', 'kang', 'leonine_watcher', 'lurker', 'rift', 'stein', 'wexxa', 'teremarthu', 'zralkthalat', 'malleus', 'verkiteia', 'drulcharus', 'gigantomachy', 'green_killers', 'yule_present_bearer'],
                epic: ['bogstench', 'centurion_marius', 'drag', 'tainted', 'guilbert', 'pumpkin', 'jacksrevenge1', 'mesyra', 'nimrod', 'phaedra', 'sircai', 'sisters', 'ulfrik', 'frogmen_assassins', 'burbata', 'yydians_sanctuary', 'grundus', 'shaar', 'tuxargus', 'nylatrix', 'rannveig', 'valley_of_death', 'murgrux_the_mangler'],
                colossal: ['bellarius', 'caracalla', 'kalaxia', 'tyranthius', 'mardachus', 'nalagarst', 'tenebra', 'valanazes', 'siculus', 'ruzzik', 'cannibal_barbarians', 'vortex_abomination', 'xerkara', 'keron', 'clockwork_dragon', 'krxunara', 'hellemental', 'kanehuar_yachu','karkata'],
                gigantic: ['imryx', 'trekex', 'gataalli_huxac', 'kessov_fort'],
                glyph: ['maraak', 'erakka_sak', 'wexxa', 'guilbert', 'bellarius'],
                goblin: ['master_ninja_bakku', 'green_killers'],
                citadel: ['thaltherda', 'hurkus', 'malleus', 'yydians_sanctuary', 'clockwork_dragon', 'krxunara','karkata'],
                festival: ['vortex_abomination', 'drunken_ragunt', 'mestr_rekkr_rematch', 'valley_of_death', 'green_killers', 'murgrux_the_mangler'],
                aquatic: ['dirthax', 'frogmen_assassins', 'lurker', 'nidhogg', 'crabshark', 'squid', 'thaltherda', 'nereidon', 'krxunara', 'trekex', 'paracoprion', 'bog_bodies','karkata'],
                beastman: ['bmane', 'burbata', 'frogmen_assassins', 'batman', 'war_boar', 'hargamesh', 'hurkus', 'krugnug', 'malleus', 'scorp', 'ruzzik', 'squid', 'korxun', 'shaar', 'nereidon', 'drulcharus', 'trekex'],
                bludheim: ['gunnar', 'nidhogg', 'kang', 'ulfrik', 'kalaxia'],
                colosseum: ['gladiators', 'serpina', 'crabshark', 'tisiphone', 'chimera', 'green_killers'],
                construct: ['cedric', 'erakka_sak', 'giantgolem', 'leonine_watcher', 'tomb_gargoyle', 'stein', 'yydians_sanctuary', 'clockwork_dragon'],
                demon: ['apoc_demon', '3dawg', 'tyranthius', 'lunacy', 'salome', 'sircai', 'blobmonster', 'malchar', 'zralkthalat', 'krxunara', 'adrastos', 'hellemental'],
                dragon: ['bellarius', 'corrupterebus', 'dragons_lair', 'echidna', 'drag', 'kalaxia', 'krykagrius', 'mardachus', 'mesyra', 'nalagarst', 'nimrod', 'phaedra', 'rhalmarius_the_despoiler', 'tainted', 'tenebra', 'thaltherda', 'tisiphone', 'grundus', 'valanazes', 'verkiteia', 'winter_kessov', 'xerkara', 'nereidon', 'drulcharus', 'keron', 'tuxargus', 'nylatrix', 'clockwork_dragon', 'imryx'],
                giant: ['gigantomachy', 'gataalli_huxac', 'kanehuar_yachu'],
                human: ['agony', 'rhino', 'gladiators', 'baroness', 'warewolfpack', 'alice', 'cannibal_barbarians', 'guilbert', 'gunnar', 'pumpkin', 'jacksrevenge1', 'lunacy', 'slaughterers', 'ulfrik', 'mestr_rekkr_rematch', 'rannveig', 'adrastos', 'legion_of_darkness', 'yule_present_bearer'],
                magical: ['djinn', 'grimsly', 'hargamesh', 'fairy_prince', 'rift', 'sisters', 'vortex_abomination', 'grundus', 'shadow', 'bog_bodies'],
                ogre: ['ogre', '4ogre', 'felendis', 'zugen', 'korxun', 'drunken_ragunt', 'valley_of_death', 'murgrux_the_mangler'],
                orc: ['darhednal', 'rudaru_the_axe_master', 'green_killers'],
                qwiladrian: ['gulkinari', 'teremarthu', 'vortex_abomination'],
                ryndor: ['bmane', '3dawg', 'hydra', 'sircai', 'tyranthius'],
                siege: ['echidna', 'ulfrik', 'yydians_sanctuary', 'drunken_ragunt', 'kessov_fort'],
                undead: ['agony', 'bogstench', 'serpina', 'ironclad', 'malleus', 'nalagarst', 'stein', 'siculus', 'zombiehorde', 'caracalla', 'centurion_marius', 'ghostly_alchemist'],
                underground: ['maraak', 'erakka_sak', 'wexxa', 'guilbert', 'bellarius', 'spider', 'tomb_gargoyle', 'leonine_watcher', 'centurion_marius', 'caracalla', 'dragons_lair', 'kang', '3dawg', 'lurker', 'salome', 'stein', 'imryx']
            },
            shortcuts: {
                bb: { n: 'bb', bn: 'BB', desc: 'Briseis\' Blessing [magic]' },
                bok: { n: 'bok', bn: 'BoK', desc: 'Book of Knowledge [consumable]' },
                bsi: { n: 'bsi', bn: 'BSI', desc: 'Battle Strength Index<br>(Base Attack + Base Defense) / Level' },
                ck: { n: 'ck', bn: 'CK', desc: 'Chryseis\' Kiss [magic]' },
                dah: { n: 'dah', bn: 'Dah', desc: 'Dahrizon [general]' },
                dl: { n: 'dl', bn: 'DL', desc: 'Dragons Lair [raid]' },
                gg: { n: 'gg', bn: 'GG', desc: 'Golden Garden [equip]'},
                gid: { n: 'gid', bn: 'GID', desc: 'Greater Impending Doom [magic]' },
                gl: { n: 'gl', bn: 'GL', desc: 'Greenleaf [equip]'},
                il: { n: 'il', bn: 'IL', desc: 'Insanity Laughs [magic]' },
                lsi: { n: 'lsi', bn: 'LSI', desc: 'Leveling Speed Index<br>(Base Stamina * 2 + Base Energy) / Level' },
                mach: { n: 'mach', bn: 'Mach', desc: 'Machaon the Healer [general]' },
                nm: { n: 'nm', bn: 'NM', desc: 'Nightmare [difficulty]' },
                pc: { n: 'pc', bn: 'PC', desc: 'Planet Coins [currency]' },
                perc: { n: 'perc', bn: 'perc', desc: 'Perception [stat]' },
                qm: { n: 'qm', bn: 'QM', desc: 'Quicken Mind [magic]' },
                sock: { n: 'sock', bn: 'SoCK', desc: 'Sword of Conquered Kingdoms [equip]' },
                sor: { n: 'sor', bn: 'SoR', desc: 'Shield of Ryndor [equip]' },
                sp: { n: 'sp', bn: 'SP', desc: 'Stat Points [stat]' },
                wr: { n: 'wr', bn: 'WR', desc: 'World Raid [raid]' }
            },
            raids: {
                adrastos: {name: 'Adrastos of the Kavala ', shortname: 'Adrastos', id: 'adrastos', type: 'Human, Demon', stat: 'H', size: 101, nd: 5, duration: 192, health: [5000000000, 6250000000, 8750000000, 10000000000, 0, 0], lt: ['keron', 'keron', 'keron', 'keron']},
                agony: {name: 'Agony', shortname: 'Agony', id: 'agony', type: 'Undead, Human', stat: 'H', size: 101, nd: 5, duration: 168, health: [700000000, 875000000, 1120000000, 1400000000, 0, 0]},
                apoc_demon: {name: 'Apocolocyntosised Demon', shortname: 'Apoc', id: 'apoc_demon', type: 'Demon', stat: 'H', size: 50, nd: 3, duration: 144, health: [500000000, 750000000, 1000000000, 2000000000, 0, 0], lt: ['apoc', 'apoc', 'apoc', 'apoc']},
                djinn: {name: 'Al-Azab', shortname: 'Azab', id: 'djinn', type: 'Magical Creature', stat: 'H', size: 100, nd: 4, duration: 168, health: [55000000, 68750000, 88000000, 110000000, 0, 0]},
                spider: {name: 'Arachna', shortname: 'Arachna', id: 'spider', type: 'Underground', stat: 'H', size: 50, nd: 3, duration: 144, health: [22000000, 27500000, 35200000, 44000000, 0, 0]},
                rhino: {name: 'Ataxes', shortname: 'Ataxes', id: 'rhino', type: 'Human', stat: 'S', size: 10, nd: 2, duration: 120, health: [2000000, 2500000, 3200000, 4000000, 0, 0]},
                gladiators: {name: 'Batiatus Gladiators ', shortname: 'Gladiators', id: 'gladiators', type: 'Colosseum, Human', stat: 'H', size: 10, nd: 2, duration: 120, health: [12000000, 15000000, 19200000, 24000000, 0, 0]},
                bellarius: {name: 'Bellarius the Guardian', shortname: 'Bellarius', id: 'bellarius', type: 'Dragon, Underground', stat: 'S', size: 500, nd: 6, duration: 96, health: [900000000, 1125000000, 1440000000, 1800000000, 0, 0]},
                baroness: {name: 'The Baroness', shortname: 'Baroness', id: 'baroness', type: 'Human', stat: 'S', size: 50, nd: 3, duration: 60, health: [68000000, 85000000, 108800000, 136000000, 0, 0]},
                werewolfpack: {name: 'The Black Moon Pack', shortname: 'Black Moon', id: 'werewolfpack', type: 'Human', stat: 'H', size: 50, nd: 3, duration: 144, health: [135000000, 168750000, 216000000, 270000000, 0, 0]},
                alice: {name: 'Bloody Alice', shortname: 'Alice', id: 'alice', type: 'Human', stat: 'S', size: 50, nd: 3, duration: 120, health: [15000000, 18750000, 24000000, 30000000, 0, 0]},
                bog_bodies: {name: 'The Bog Bodies', shortname: 'Bodies', id: 'bog_bodies', type: 'Magical Creature, Aquatic', stat: 'H', size:101, nd:5, duration:192, health: [3750000000,7500000000,11250000000,15000000000,0,0], lt: ['keron', 'keron', 'keron', 'keron']},
                bogstench: {name: 'Bogstench', shortname: 'Bogstench', id: 'bogstench', type: 'Undead', stat: 'S', size: 250, nd: 5, duration: 96, health: [450000000, 562500000, 720000000, 900000000, 0, 0]},
                '4ogre': {name: 'Briareus the Butcher', shortname: 'Briareus', id: '4ogre', type: 'Ogre', stat: 'S', size: 10, nd: 2, duration: 72, health: [4500000, 5625000, 7200000, 9000000, 0, 0]},
                bmane: {name: 'Bloodmane', shortname: 'Bloodmane', id: 'bmane', type: 'Beastman, Ryndor', stat: 'S', size: 10, nd: 2, duration: 72, health: [7000000, 8750000, 11200000, 14000000, 0, 0]},
                burbata: {name: 'Burbata the Spine-Crusher', shortname: 'Burbata', id: 'burbata', type: 'Beastman', stat: 'S', size: 250, nd: 5, duration: 96, health: [1000000000, 2000000000, 3500000000, 5000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']},
                cannibal_barbarians: {name: 'Cannibal Barbarians', shortname: 'Cannibals', id: 'cannibal_barbarians', type: 'Human', stat: 'S', size: 500, nd: 6, duration: 128, health: [60000000000, 90000000000, 180000000000, 240000000000, 0, 0], lt: ['canib', 'canib', 'canib', 'canib']},
                cedric: {name: 'Cedric the Smashable', shortname: 'Cedric', id: 'cedric', type: 'Construct', stat: 'ESH', size: 90000, nd: 0, duration: 24, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                caracalla: {name: 'Caracalla', shortname: 'Caracalla', id: 'caracalla', type: 'Undead, Underground', stat: 'S', size: 500, nd: 6, duration: 128, health: [50000000000, 75000000000, 150000000000, 200000000000, 0, 0], lt: ['cara', 'cara', 'cara', 'cara']},
                harpy: {name: 'Celeano', shortname: 'Celeano', id: 'harpy', type: '', stat: 'H', size: 10, nd: 2, duration: 120, health: [3000000, 3750000, 4800000, 6000000, 0, 0]},
                centurion_marius: {name: 'Centurion Marius', shortname: 'Marius', id: 'centurion_marius', type: 'Undead, Underground', stat: 'S', size: 250, nd: 5, duration: 96, health: [10000000000, 12000000000, 16000000000, 40000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']},
                kobold: {name: 'Chieftain Horgrak', shortname: 'Horgrak', id: 'kobold', type: '', stat: 'S', size: 10, nd: 2, duration: 168, health: [150000, 187500, 240000, 300000, 0, 0]},
                clockwork_dragon: {name: 'Clockwork Dragon', shortname: 'Clock Dragon', id: 'clockwork_dragon', type: 'Construct, Dragon', stat: 'S', size: 500, nd: 6, duration: 128, health: [70000000000, 140000000000, 210000000000, 280000000000], lt: ['clock', 'clock', 'clock', 'clock']},
                corrupterebus: {name: 'Corrupted Erebus', shortname: 'Cbus', id: 'corrupterebus', type: 'Dragon', stat: 'ESH', size: 90000, nd: 0, duration: 96, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                serpina: {name: 'Countess Serpina', shortname: 'Serp', id: 'serpina', type: 'Colosseum, Undead', stat: 'E', size: 15, nd: 2, duration: 5, health: [75000000, 112500000, 150000000, 187500000, 0, 0]},
                darhednal: {name: 'Dar\'Hed\'Nal', shortname: 'Dar\'Hed\'Nal', id: 'darhednal', type: 'Orc', stat: 'H', size: 50, nd: 3, duration: 144, health: [500000000, 1000000000, 1500000000, 2000000000, 0, 0], lt: ['keron', 'keron', 'keron', 'keron']},
                basilisk: {name: 'Deathglare', shortname: 'Deathglare', id: 'basilisk', type: '', stat: 'H', size: 50, nd: 3, duration: 144, health: [45000000, 56250000, 72000000, 90000000, 0, 0]},
                dirthax: {name: 'Dirthax', shortname: 'Dirthax', id: 'dirthax', type: 'Aquatic', stat: 'H', size: 100, nd: 4, duration: 168, health: [550000000, 687500000, 880000000, 1100000000, 0, 0]},
                doomglare: {name: 'Doomglare', shortname: 'Doomglare', id: 'doomglare', type: '', stat: 'H', size: 100, nd: 4, duration: 12, health: [500000000, 1250000000, 2000000000, 3000000000, 0, 0], lt: ['keron', 'keron', 'keron', 'keron']},
                dragons_lair: {name: 'Dragons Lair', shortname: 'Lair', id: 'dragons_lair', type: 'Dragon, Underground', stat: 'S', size: 13, nd: 2, duration: 5, health: [100000000, 500000000, 1000000000, 1500000000, 0, 0], lt: ['nDl', 'hDl', 'lDl', 'nmDl']},
                drulcharus: {name: 'Drulcharus', shortname: 'Drulcharus', id: 'drulcharus', type: 'Dragon, Beastman', stat: 'S', size: 100, nd: 5, duration: 72, health: [10000000000, 15000000000, 20000000000, 25000000000, 0, 0], lt: ['z15hi', 'z15hi', 'z15hi', 'z15hi']},
                drunken_ragunt: {name: 'Drunken Ragunt', shortname: 'Ragunt', id: 'drunken_ragunt', type: 'Siege, Ogre', stat: 'S', size: 50, nd: 5, duration: 60, health: [8500000000, 14450000000, 18700000000, 25500000000, 0, 0], lt: ['rag', 'rag', 'rag', 'rag']},
                echidna: {name: 'Echidna', shortname: 'Echidna', id: 'echidna', type: 'Dragon, Siege', stat: 'ESH', size: 90000, nd: 0, duration: 96, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                kessov_fort: {name: 'Engines of War', shortname: 'Engines', id: 'kessov_fort', type: 'Siege', stat: 'S', size: 800, nd: 6, duration: 128, health: [300000000000, 600000000000, 900000000000, 1200000000000, 0, 0], lt: ['eow', 'eow', 'eow', 'eow']},
                erakka_sak: {name: 'Erakka-Sak', shortname: 'Erakka', id: 'erakka_sak', type: 'Underground, Construct', stat: 'S', size: 50, nd: 3, duration: 60, health: [62000000, 77500000, 99200000, 124000000, 0, 0]},
                giantgolem: {name: 'Euphronios', shortname: 'Euphronios', id: 'giantgolem', type: 'Construct', stat: 'H', size: 101, nd: 5, duration: 168, health: [450000000, 562500000, 720000000, 900000000, 0, 0]},
                echthros: {name: 'Echthros', shortname: 'Echty', id: 'echthros', type: '', stat: 'ESH', size: 90000, nd: 2, duration: 96, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                drag: {name: 'Erebus the Black', shortname: 'Erebus', id: 'drag', type: 'Dragon', stat: 'S', size: 250, nd: 5, duration: 168, health: [150000000, 187500000, 240000000, 300000000, 0, 0]},
                frogmen_assassins: {name: 'Frog-Men Assassins', shortname: 'Frog-Men', id: 'frogmen_assassins', type: 'Beastman, Aquatic', stat: 'S', size: 250, nd: 5, duration: 96, health: [16000000000, 24000000000, 32000000000, 64000000000, 0, 0], lt: ['cara', 'cara', 'cara', 'cara']},
                felendis: {name: 'Felendis & Shaoquin', shortname: 'Banhammer', id: 'felendis', type: 'Ogre', stat: 'H', size: 100, nd: 4, duration: 168, health: [441823718, 549238221, 707842125, 888007007, 0, 0]},
                gataalli_huxac: {name: 'Gataalli Huxac', shortname: 'Gataalli', id: 'gataalli_huxac', type: 'Giant', stat: 'S', size: 800, nd: 6, duration: 128, health: [375000000000, 750000000000, 1125000000000, 1500000000000], lt: ['gat', 'gat', 'gat', 'gat']},
                ogre: {name: 'General Grune', shortname: 'Grune', id: 'ogre', type: 'Ogre', stat: 'S', size: 100, nd: 4, duration: 172, health: [20000000, 25000000, 32000000, 40000000, 0, 0]},
                korxun: {name: 'General Korxun', shortname: 'Korxun', id: 'korxun', type: 'Beastman, Ogre', stat: 'S', size: 50, nd: 4, duration: 60, health: [8000000000, 12000000000, 16000000000, 20000000000, 0, 0], lt: ['z15lo', 'z15lo', 'z15lo', 'z15lo']},
                ghostly_alchemist: {name: 'Ghostly Alchemist', shortname: 'Alchemist', id: 'ghostly_alchemist', type: 'Undead', stat: 'S', size: 25, nd: 4, duration: 48, health: [5000000000, 10000000000, 15000000000, 20000000000], lt: ['alch', 'alch', 'alch', 'alch']},
                dreadbloom: {name: 'Giant Dreadbloom', shortname: 'Dreadbloom', id: 'dreadbloom', type: '', stat: 'H', size: 101, nd: 5, duration: 192, health: [900000000, 1125000000, 1440000000, 1800000000, 0, 0]},
                gigantomachy: {name: 'Gigantomachy', shortname: 'Gigantomachy', id: 'gigantomachy', type: 'Giant', stat: 'S', size: 100, nd: 5, duration: 72, health: [25000000000, 50000000000, 75000000000, 100000000000], lt: ['gig', 'gig', 'gig', 'gig']},
                batman: {name: 'Gravlok the Night-Hunter', shortname: 'Gravlok', id: 'batman', type: 'Beastman', stat: 'S', size: 100, nd: 4, duration: 72, health: [50000000, 62500000, 80000000, 100000000, 0, 0]},
                green_killers: {name: 'Green Killers', shortname: 'Killers', id: 'green_killers', type: 'Orc, Goblin, Festival, Colosseum', stat: 'S', size: 100, nd: 4, duration: 48, health: [12500000000, 25000000000, 37500000000, 50000000000, 0, 0], lt: ['gk', 'gk', 'gk', 'gk']},
                evilgnome: {name: 'Groblar Deathcap', shortname: 'Groblar', id: 'evilgnome', type: '', stat: 'H', size: 10, nd: 2, duration: 120, health: [6000000, 7500000, 9600000, 12000000, 0, 0]},
                grundus: {name: 'Grundus', shortname: 'Grundus', id: 'grundus', type: 'Dragon, Magical Creature', stat: 'H', size: 101, nd: 5, duration: 72, health: [800000000, 1600000000, 4000000000, 12000000000]},
                guilbert: {name: 'Guilbert the Mad', shortname: 'Guilbert', id: 'guilbert', type: 'Underground, Human', stat: 'S', size: 250, nd: 5, duration: 96, health: [550000000, 687500000, 880000000, 1100000000, 0, 0]},
                gulkinari: {name: 'Gulkinari', shortname: 'Gulkinari', id: 'gulkinari', type: 'Qwiladrian', stat: 'S', size: 50, nd: 4, duration: 60, health: [7500000000, 9375000000, 12000000000, 15000000000, 0, 0], lt: ['gulk', 'gulk', 'gulk', 'gulk']},
                gunnar: {name: 'Gunnar the Berserk', shortname: 'Gunnar', id: 'gunnar', type: 'Bludheim, Human', stat: 'S', size: 10, nd: 2, duration: 48, health: [12000000, 15000000, 19200000, 24000000, 0, 0]},
                war_boar: {name: 'Hammer', shortname: 'Hammer', id: 'war_boar', type: 'Beastman', stat: 'H', size: 50, nd: 3, duration: 144, health: [220000000, 275000000, 352000000, 440000000, 0, 0]},
                hargamesh: {name: 'Hargamesh', shortname: 'Hargamesh', id: 'hargamesh', type: 'Beastman, Magical Creature', stat: 'S', size: 10, nd: 2, duration: 48, health: [18000000, 22500000, 28800000, 36000000, 0, 0]},
                grimsly: {name: 'Headmaster Grimsly', shortname: 'Grimsly', id: 'grimsly', type: 'Magical Creature', stat: 'S', size: 50, nd: 3, duration: 60, health: [72000000, 90000000, 115200000, 144000000, 0, 0]},
                hellemental: {name: 'Hellemental', shortname: 'Hellemental', id: 'hellemental', type: 'Demon', stat: 'S', size: 500, nd: 6, duration: 128, health: [75000000000, 150000000000, 225000000000, 300000000000, 0, 0], lt: ['hell', 'hell', 'hell', 'hell']},
                hurkus: {name: 'Hurkus the Eviscerator', shortname: 'Hurkus', id: 'hurkus', type: 'Beastman', stat: 'S', size: 50, nd: 4, duration: 60, health: [2812500000, 4218750000, 5625000000, 11250000000, 0, 0], lt: ['hurk', 'hurk', 'hurk', 'hurk']},
                hydra: {name: 'Hydra', shortname: 'Hydra', id: 'hydra', type: 'Ryndor', stat: 'S', size: 100, nd: 4, duration: 72, health: [65000000, 81250000, 104000000, 130000000, 0, 0]},
                imryx: {name: 'Imryx the Incinerator', shortname: 'Imryx', id: 'imryx', type: 'Underground, Dragon', stat: 'S', size: 800, nd: 6, duration: 128, health: [180000000000, 360000000000, 540000000000, 720000000000, 0, 0], lt: ['imx', 'imx', 'imx', 'imx']},
                ironclad: {name: 'Ironclad', shortname: 'Ironclad', id: 'ironclad', type: 'Undead', stat: 'S', size: 10, nd: 2, duration: 48, health: [10000000, 12500000, 16000000, 20000000, 0, 0]}, //0.5/0.625/0.8/1
                pumpkin: {name: 'Jack', shortname: 'Jack', id: 'pumpkin', type: 'Human', stat: 'S', size: 250, nd: 6, duration: 48, health: [1000000000, 1500000000, 2000000000, 3000000000], lt: ['njack', 'hjack', 'ljack', 'nmjack']},
                jacksrevenge1: {name: 'Jack\'s Revenge', shortname: 'Revenge', id: 'jacksrevenge1', type: 'Human', stat: 'S', size: 250, nd: 6, duration: 48, health: [5000000000, 7500000000, 10000000000, 15000000000], lt: ['njr', 'hjr', 'ljr', 'nmjr']},
                kang: {name: 'Kang-Gsod', shortname: 'Kang', id: 'kang', type: 'Bludheim, Underground', stat: 'S', size: 100, nd: 4, duration: 72, health: [95000000, 118750000, 152000000, 190000000, 0, 0]},
                '3dawg': {name: 'Kerberos', shortname: 'Kerberos', id: '3dawg', type: 'Demon, Underground, Ryndor', stat: 'S', size: 50, nd: 3, duration: 72, health: [35000000, 43750000, 56000000, 70000000, 0, 0]},
                keron: {name: 'Keron the Sky-Shaker', shortname: 'Keron', id: 'keron', type: 'Dragon', stat: 'H', size: 101, nd: 6, duration: 192, health: [15000000000, 18750000000, 24000000000, 30000000000, 0, 0], lt: ['keron', 'keron', 'keron', 'keron']},
                kessovtowers: {name: 'Kessov Towers', shortname: 'Towers', id: 'kessovtowers', type: 'Siege', stat: 'ESH', size: 90000, nd: 0, duration: 120, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                kessovtower: {name: 'Treachery and the Tower', shortname: 'Treachery', id: 'kessovtower', type: 'Siege', stat: 'ESH', size: 90000, nd: 0, duration: 24, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                kessovforts: {name: 'Kessov Forts', shortname: 'Forts', id: 'kessovforts', type: 'Siege', stat: 'ESH', size: 90000, nd: 0, duration: 120, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                kessovcastle: {name: 'Kessov Castle', shortname: 'Castle', id: 'kessovcastle', type: 'Siege', stat: 'ESH', size: 90000, nd: 0, duration: 144, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                kalaxia: {name: 'Kalaxia the Far-Seer', shortname: 'Kalaxia', id: 'kalaxia', type: 'Dragon, Bludheim', stat: 'S', size: 500, nd: 6, duration: 96, health: [800000000, 1000000000, 1280000000, 1600000000, 0, 0]},
                kanehuar_yachu: {name: 'Kanehuar Yachu', shortname: 'Kane', id: 'kanehuar_yachu', type: 'Giant', stat: 'S', size: 500, nd: 6, duration: 128, health: [100000000000, 200000000000, 300000000000, 400000000000, 0, 0], lt: ['kane', 'kane', 'kane', 'kane']},
                karkata: {name: 'Karkata', shortname: 'Karkata',id: 'karkata', type: 'Aquatic', stat: 'S', size:500, nd:6, duration:128, health: [95000000000,190000000000,285000000000,380000000000,0,0], lt: ['u','u','u','u']},
                krugnug: {name: 'Krugnug', shortname: 'Krugnug', id: 'krugnug', type: 'Beastman', stat: 'S', size: 25, nd: 4, duration: 48, health: [1000000000, 1500000000, 2000000000, 4000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']},
                krxunara: {name: 'Kr\'xunara of the Bloody Waves', shortname: 'Kr\'xunara', id: 'krxunara', type: 'Aquatic, Demon', stat: 'S', size: 500, nd: 6, duration: 128, health: [62500000000, 125000000000, 187500000000, 250000000000], lt: ['krx', 'krx', 'krx', 'krx']},
                krykagrius: {name: 'Krykagrius', shortname: 'Kryk', id: 'krykagrius', type: 'Dragon', stat: 'ESH', size: 90000, nd: 0, duration: 72, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                legion_of_darkness: {name: 'Legions of Darkness', shortname: 'Darkness', id: 'legion_of_darkness', type: 'Human', stat: 'S', size: 250, nd: 5, duration: 96, health: [20000000000, 40000000000, 60000000000, 80000000000], lt: ['dark', 'dark', 'dark', 'dark']},
                leonine_watcher: {name: 'Leonine', shortname: 'Leonine', id: 'leonine_watcher', type: 'Underground, Construct', stat: 'S', size: 100, nd: 5, duration: 48, health: [4000000000, 6000000000, 8000000000, 16000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']},
                tyranthius: {name: 'Lord Tyranthius', shortname: 'Tyr', id: 'tyranthius', type: 'Demon, Ryndor', stat: 'S', size: 500, nd: 6, duration: 168, health: [600000000, 750000000, 960000000, 1200000000, 0, 0]},
                lunacy: {name: 'Lunatics', shortname: 'Lunatics', id: 'lunacy', type: 'Demon, Human', stat: 'H', size: 50, nd: 3, duration: 144, health: [180000000, 225000000, 288000000, 360000000, 0, 0]},
                lurker: {name: 'Lurking Horror', shortname: 'Lurking', id: 'lurker', type: 'Underground, Aquatic', stat: 'S', size: 100, nd: 4, duration: 120, health: [35000000, 43750000, 56000000, 70000000, 0, 0]},
                malleus: {name: 'Malleus Vivorum', shortname: 'Malleus', id: 'malleus', type: 'Beastman, Undead', stat: 'S', size: 100, nd: 5, duration: 72, health: [8000000000, 12000000000, 16000000000, 20000000000, 0, 0], lt: ['mall', 'mall', 'mall', 'mall']},
                maraak: {name: 'Maraak the Impaler', shortname: 'Maraak', id: 'maraak', type: 'Underground', stat: 'S', size: 10, nd: 2, duration: 48, health: [15000000, 18750000, 24000000, 30000000, 0, 0]},
                mardachus: {name: 'Mardachus the Destroyer', shortname: 'Mardachus', id: 'mardachus', type: 'Dragon', stat: 'S', size: 500, nd: 6, duration: 96, health: [1100000000, 1375000000, 1760000000, 2200000000, 0, 0]},
                master_ninja_bakku: {name: 'Master Ninja Bakku', shortname: 'Bakku', id: 'master_ninja_bakku', type: 'Goblin', stat: 'S', size: 25, nd: 4, duration: 48, health: [5500000000, 11000000000, 16500000000, 22000000000, 0, 0], lt: ['bak', 'bak', 'bak', 'bak']},
                scorp: {name: 'Mazalu', shortname: 'Mazalu', id: 'scorp', type: 'Beastman', stat: 'S', size: 50, nd: 3, duration: 168, health: [5000000, 6250000, 8000000, 10000000, 0, 0]},
                mestr_rekkr_rematch: {name: 'Mestr Rekkr Rematch', shortname: 'Rekkr II', id: 'mestr_rekkr_rematch', type: 'Human', stat: 'S', size: 25, nd: 4, duration: 48, health: [6000000000, 9000000000, 13200000000, 18000000000, 0, 0], lt: ['rekkr', 'rekkr', 'rekkr', 'rekkr']},
                mesyra: {name: 'Mesyra the Watcher', shortname: 'Mesyra', id: 'mesyra', type: 'Dragon', stat: 'S', size: 250, nd: 5, duration: 96, health: [1000000000, 1250000000, 1600000000, 2000000000, 0, 0]},
                murgrux_the_mangler: {name: 'Murgrux the Mangler', shortname: 'Murgrux', id: 'murgrux_the_mangler', type: 'Ogre, Festival', stat: 'S', size: 250, nd: 5, duration: 48, health: [25000000000, 50000000000, 75000000000, 100000000000, 0, 0], lt: ['murg', 'murg', 'murg', 'murg']},
                nalagarst: {name: 'Nalagarst', shortname: 'Nalagarst', id: 'nalagarst', type: 'Dragon, Undead', stat: 'S', size: 500, nd: 6, duration: 98, health: [700000000, 875000000, 1120000000, 1400000000, 0, 0]},
                nereidon: {name: 'Nereidon the Sea Slayer', shortname: 'Nereidon', id: 'nereidon', type: 'Dragon, Beastman, Aquatic', stat: 'S', size: 30, nd: 3, duration: 48, health: [6000000000, 9000000000, 12000000000, 15000000000, 0, 0], lt: ['z15lo', 'z15lo', 'z15lo', 'z15lo']},
                nidhogg: {name: 'Nidhogg', shortname: 'Nidhogg', id: 'nidhogg', type: 'Bludheim, Aquatic', stat: 'S', size: 50, nd: 3, duration: 60, health: [52000000, 65000000, 83200000, 104000000, 0, 0]},
                nimrod: {name: 'Nimrod the Hunter', shortname: 'Nimrod', id: 'nimrod', type: 'Dragon', stat: 'S', size: 250, nd: 5, duration: 96, health: [1200000000, 1500000000, 1920000000, 2400000000, 0, 0]},
                nylatrix: {name: 'Nylatrix', shortname: 'Nylatrix', id: 'nylatrix', type: 'Dragon', stat: 'H', size: 101, nd: 5, duration: 192, health: [2000000000, 2500000000, 3400000000, 4000000000, 0, 0], lt: ['nker', 'hker', 'lker', 'nmker']},
                paracoprion: {name: 'Paracoprion', shortname: 'Paracoprion', id: 'paracoprion', type: 'Aquatic', stat: 'H', size:101, nd:5, duration:192, health: [2000000000,4000000000,6000000000,8000000000,0,0], lt: ['keron', 'keron', 'keron', 'keron']},
                phaedra: {name: 'Phaedra the Deceiver', shortname: 'Phaedra', id: 'phaedra', type: 'Dragon', stat: 'S', size: 250, nd: 5, duration: 96, health: [1400000000, 1750000000, 2240000000, 2800000000, 0, 0]},
                fairy_prince: {name: 'Prince Obyron', shortname: 'Obyron', id: 'fairy_prince', type: 'Magical Creature', stat: 'H', size: 10, nd: 2, duration: 120, health: [30000000, 37500000, 48000000, 60000000, 0, 0]},
                roc: {name: 'Ragetalon', shortname: 'Ragetalon', id: 'roc', type: '', stat: 'H', size: 100, nd: 4, duration: 168, health: [110000000, 137500000, 176000000, 220000000, 0, 0]},
                rannveig: {name: 'Rannveig', shortname: 'Rannveig', id: 'rannveig', type: 'Human', stat: 'E', size: 250, nd: 6, duration: 128, health: [15000000000, 30000000000, 45000000000, 60000000000, 0, 0], lt: ['rann', 'rann', 'rann', 'rann']},
                rhalmarius_the_despoiler: {name: 'Rhalmarius the Despoiler', shortname: 'Rhalmarius', id: 'rhalmarius_the_despoiler', type: 'Dragon', stat: 'H', size: 100, nd: 6, duration: 84, health: [500000000, 1250000000, 3125000000, 7812500000, 0, 0]},
                tomb_gargoyle: {name: 'Riddler Gargoyle', shortname: 'Riddler', id: 'tomb_gargoyle', type: 'Underground, Construct', stat: 'S', size: 50, nd: 4, duration: 48, health: [2000000000, 3000000000, 4000000000, 8000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']},
                rift: {name: 'Rift the Mauler', shortname: 'Rift', id: 'rift', type: 'Magical Creature', stat: 'S', size: 100, nd: 4, duration: 72, health: [125000000, 156250000, 200000000, 250000000, 0, 0]},
                rudaru_the_axe_master: {name: 'Rudaru the Axe Master', shortname: 'Rudaru', id: 'rudaru_the_axe_master', type: 'Orc', stat: 'S', size: 50, nd: 4, duration: 48, health: [10500000000, 21000000000, 31500000000, 36750000000, 0, 0], lt: ['rud', 'rud', 'rud', 'rud']},
                ruzzik: {name: 'Ruzzik the Slayer', shortname: 'Ruzzik', id: 'ruzzik', type: 'Beastman', stat: 'S', size: 500, nd: 6, duration: 128, health: [55000000000, 82500000000, 165000000000, 220000000000, 0, 0], lt: ['ruzz', 'ruzz', 'ruzz', 'ruzz']},
                salome: {name: 'Salome the Seductress', shortname: 'Salome', id: 'salome', type: 'Demon, Underground', stat: 'H', size: 100, nd: 4, duration: 48, health: [666000000, 832500000, 1065600000, 1332000000, 0, 0], lt: ['nSlut', 'hSlut', 'lSlut', 'nmSlut']},
                crabshark: {name: 'Scuttlegore', shortname: 'Scuttlegore', id: 'crabshark', type: 'Colosseum, Aquatic', stat: 'H', size: 100, nd: 4, duration: 168, health: [220000000, 275000000, 352000000, 440000000, 0, 0]},
                squid: {name: 'Scylla', shortname: 'Scylla', id: 'squid', type: 'Beastman, Aquatic', stat: 'S', size: 50, nd: 3, duration: 72, health: [25000000, 31250000, 40000000, 50000000, 0, 0]},
                shaar: {name: 'Shaar the Reaver', shortname: 'Shaar', id: 'shaar', type: 'Beastman', stat: 'S', size: 250, nd: 6, duration: 96, health: [12000000000, 24000000000, 36000000000, 60000000000, 0, 0], lt: ['z15hi', 'z15hi', 'z15hi', 'z15hi']},
                shadow: {name: 'Shadow', shortname: 'Shadow', id: 'shadow', type: 'Magical Creature', stat: 'S', size: 50, nd: 5, duration: 60, health: [10000000000, 17000000000, 25000000000, 35000000000, 0, 0], lt: ['shd', 'shd', 'shd', 'shd']},
                sircai: {name: 'Sir Cai', shortname: 'Cai', id: 'sircai', type: 'Demon, Ryndor', stat: 'S', size: 250, nd: 5, duration: 168, health: [350000000, 437500000, 560000000, 700000000, 0, 0]},
                sisters: {name: 'Sisters of the Song', shortname: 'Sisters', id: 'sisters', type: 'Magical Creature', stat: 'S', size: 250, nd: 5, duration: 96, health: [600000000, 750000000, 960000000, 1200000000, 0, 0]},
                slaughterers: {name: 'Slaughterers Six', shortname: 'Slaughterers', id: 'slaughterers', type: 'Human', stat: 'H', size: 10, nd: 2, duration: 120, health: [24000000, 30000000, 38400000, 48000000, 0, 0]},
                stein: {name: 'Stein', shortname: 'Stein', id: 'stein', type: 'Undead, Underground, Construct', stat: 'S', size: 100, nd: 4, duration: 72, health: [80000000, 100000000, 128000000, 160000000, 0, 0]},
                siculus: {name: 'Count Siculus\' Phantom', shortname: 'Siculus', id: 'siculus', type: 'Undead', stat: 'S', size: 500, nd: 6, duration: 128, health: [850000000, 1700000000, 2975000000, 4250000000, 0, 0], lt: ['sic', 'sic', 'sic', 'sic']},
                tainted: {name: 'Tainted Erebus', shortname: 'Tainted', id: 'tainted', type: 'Dragon', stat: 'S', size: 250, nd: 5, duration: 168, health: [250000000, 312500000, 400000000, 500000000, 0, 0]},
                tenebra: {name: 'Tenebra Shadow Mistress', shortname: 'Tenebra', id: 'tenebra', type: 'Dragon', stat: 'S', size: 500, nd: 6, duration: 128, health: [2000000000, 2500000000, 3200000000, 4000000000, 0, 0]},
                thaltherda: {name: 'Thaltherda the Sea-Slitherer', shortname: 'Nessie', id: 'thaltherda', type: 'Aquatic, Dragon', stat: 'S', size: 25, nd: 4, duration: 48, health: [3000000000, 4500000000, 6000000000, 7500000000, 0, 0], lt: ['nessy', 'nessy', 'nessy', 'nessy']},
                tisiphone: {name: 'Tisiphone the Vengeful', shortname: 'Tisi', id: 'tisiphone', type: 'Dragon, Colosseum', stat: 'E', size: 50, nd: 3, duration: 12, health: [500000000, 2500000000, 5000000000, 7500000000, 0, 0], lt: ['nTisi', 'hTisi', 'lTisi', 'nmTisi']},
                teremarthu: {name: 'Teremarthu', shortname: 'Cthullu', id: 'teremarthu', type: 'Qwiladrian', stat: 'S', size: 100, nd: 5, duration: 48, health: [6000000000, 9000000000, 12000000000, 24000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']},
                chimera: {name: 'Tetrarchos', shortname: 'Tetrarchos', id: 'chimera', type: 'Colosseum', stat: 'H', size: 50, nd: 3, duration: 144, health: [90000000, 112500000, 144000000, 180000000, 0, 0]},
                gorgon: {name: 'Tithrasia', shortname: 'Tithrasia', id: 'gorgon', type: '', stat: 'H', size: 10, nd: 2, duration: 120, health: [18000000, 22500000, 28800000, 36000000, 0, 0]},
                trekex: {name: 'Trekex\'s Amphibious Assault', shortname: 'Trekex', id: 'trekex', type: 'Aquatic, Beastman', stat: 'S', size: 800, nd: 6, duration: 128, health: [250000000000, 500000000000, 750000000000, 1000000000000], lt: ['trex', 'trex', 'trex', 'trex']},
                tuxargus: {name: 'Tuxargus', shortname: 'Tuxargus', id: 'tuxargus', type: 'Dragon', stat: 'H', size: 101, nd: 5, duration: 192, health: [2000000000, 2500000000, 3400000000, 4000000000, 0, 0], lt: ['nker', 'hker', 'lker', 'nmker']},
                ulfrik: {name: 'Ulfrik', shortname: 'Ulfrik', id: 'ulfrik', type: 'Bludheim, Siege, Human', stat: 'S', size: 250, nd: 5, duration: 96, health: [500000000, 625000000, 800000000, 1000000000, 0, 0]},
                valanazes: {name: 'Valanazes the Gold', shortname: 'Valanazes', id: 'valanazes', type: 'Dragon', stat: 'S', size: 500, nd: 6, duration: 128, health: [2400000000, 3000000000, 3840000000, 4800000000, 0, 0]},
                valley_of_death: {name: 'Valley of Death', shortname: 'Death Valley', id: 'valley_of_death', type: 'Ogre, Festival', stat: 'S', size: 250, nd: 5, duration: 48, health: [22000000000, 44000000000, 66000000000, 88000000000, 0, 0], lt: ['valley', 'valley', 'valley', 'valley']},
                blobmonster: {name: 'Varlachleth', shortname: 'Varlachleth', id: 'blobmonster', type: 'Demon', stat: 'H', size: 100, nd: 4, duration: 168, health: [330000000, 412500000, 528000000, 660000000, 0, 0]},
                verkiteia: {name: 'Verkiteia', shortname: 'Verkiteia', id: 'verkiteia', type: 'Dragon', stat: 'S', size: 100, nd: 5, duration: 72, health: [11250000000, 14062500000, 18000000000, 22500000000, 0, 0], lt: ['verk', 'verk', 'verk', 'verk']},
                vortex_abomination: {name: 'Vortex Abomination', shortname: 'Vortex', id: 'vortex_abomination', type: 'Qwiladrian, Magical Creature', stat: 'S', size: 500, nd: 6, duration: 128, health: [50000000000, 75000000000, 110000000000, 205000000000, 0, 0], lt: ['vort', 'vort', 'vort', 'vort']},
                zugen: {name: 'Warlord Zugen', shortname: 'Zugen', id: 'zugen', type: 'Ogre', stat: 'S', size: 25, nd: 4, duration: 48, health: [4000000000, 6000000000, 8000000000, 10000000000, 0, 0], lt: ['zugen', 'zugen', 'zugen', 'zugen']},
                wexxa: {name: 'Wexxa the Worm-Tamer', shortname: 'Wexxa', id: 'wexxa', type: 'Underground', stat: 'S', size: 100, nd: 4, duration: 72, health: [110000000, 137500000, 176000000, 220000000, 0, 0]},
                winter_kessov: {name: 'Blood Will Run Cold', shortname: 'Cold Blood', id: 'winter_kessov', type: 'Dragon, Siege', stat: 'ESH', size: 90000, nd: 0, duration: 290, health: ['Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited', 'Unlimited']},
                xessus: {name: 'Xessus of the Grim Wood', shortname: 'Xessus', id: 'xessus', type: '', stat: 'H', size: 100, nd: 4, duration: 48, health: [500000000, 625000000, 800000000, 1000000000, 0, 0], lt: ['nIns', 'hIns', 'lIns', 'nmIns']},
                malchar: {name: 'Malchar the Tri-Eyed', shortname: 'Malchar', id: 'malchar', type: 'Demon', stat: 'H', size: 100, nd: 4, duration: 48, health: [500000000, 625000000, 800000000, 1000000000, 0, 0], lt: ['nIns', 'hIns', 'lIns', 'nmIns']},
                krasgore: {name: 'Krasgore', shortname: 'Krasgore', id: 'krasgore', type: '', stat: 'H', size: 100, nd: 4, duration: 48, health: [500000000, 625000000, 800000000, 1000000000, 0, 0], lt: ['nIns', 'hIns', 'lIns', 'nmIns']},
                nrlux: {name: 'N\'rlux the Devourer', shortname: 'N\'rlux', id: 'nrlux', type: 'Giant Insect', stat: 'H', size: 100, nd: 6, duration: 48, health: [10000000000, 12500000000, 16000000000, 20000000000, 0, 0], lt: ['lux', 'lux', 'lux', 'lux']},
                xerkara: {name: 'Xerkara', shortname: 'Xerkara', id: 'xerkara', type: 'Dragon', stat: 'S', size: 500, nd: 6, duration: 128, health: [65000000000, 113750000000, 143000000000, 260000000000, 0, 0], lt: ['z15hi', 'z15hi', 'z15hi', 'z15hi']},
                yule_present_bearer: {name: 'Yule Present Bearer', shortname: 'Present Bearer', id: 'yule_present_bearer', type: 'Human', stat: 'S', size: 100, nd: 5, duration: 48, health: [30000000000, 60000000000, 90000000000, 120000000000, 0, 0], lt: ['yule', 'yule', 'yule', 'yule']},
                yydians_sanctuary: {name: 'Yydian\'s Sanctuary', shortname: 'Yydians', id: 'yydians_sanctuary', type: 'Siege, Construct', stat: 'S', size: 250, nd: 5, duration: 96, health: [10000000000, 20000000000, 30000000000, 50000000000, 0, 0], lt: ['yyd', 'yyd', 'yyd', 'yyd']},
                zombiehorde: {name: 'Zombie Horde', shortname: 'Zombies', id: 'zombiehorde', type: 'Undead', stat: 'S', size: 50, nd: 3, duration: 60, health: [45000000, 56250000, 72000000, 90000000, 0, 0]},
                zralkthalat: {name: 'Z\'ralk\'thalat', shortname: 'Zralk', id: 'zralkthalat', type: 'Demon', stat: 'S', size: 100, nd: 4, duration: 72, health: [8750000000, 13125000000, 17500000000, 35000000000, 0, 0], lt: ['z10', 'z10', 'z10', 'z10']}
            },

            raidSizes: {
                10: { name: 'Small', visible: 'Yes', ratios: [0.6, 0.9, 1.2, 1.6, 2.5, 3.5], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [900, 3600, 7200]}, // 1h, 2h, 3h
                13: { name: 'Small', visible: 'Yes', pruneTimers: [1800, 3600, 7200]},  // 1h, 2h, 2h
                15: { name: 'Small', visible: 'Yes', ratios: [0.45, 0.6, 0.755, 0.9, 1.05, 1.2, 1.35, 1.5, 1.65, 1.8, 1.95], enames: ['65D', '92D', '119D', '146D', '173D', '200D', '227D', '264D', '301D', '338D', '375D'], pruneTimers: [1800, 3600, 3600]}, // Serpina only, so 5h/5h/5h
                25: { name: 'Small', visible: 'Yes', ratios: [0.6, 0.9, 1.2, 1.6, 2.5, 3.5], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [18000, 18000, 18000]},
                30: { name: 'Small', visible: 'Yes', ratios: [0.6, 0.9, 1.2, 1.6, 2.5, 3.5], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [18000, 18000, 18000]},
                50: { name: 'Medium', visible: 'Yes', ratios: [0.7, 0.95, 2.05, 3.125, 6.75, 8.5], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [3600, 7200, 10800]}, // 1h, 2h, 3h
                100: { name: 'Large', visible: 'Yes', ratios: [0.9, 1.5, 2.2, 3.2, 6.5, 9.0], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [7200, 43200, 86400]}, // 4h, 12h, 36h
                101: { name: 'Epic', visible: 'Yes', ratios: [0.225, 0.325, 0.625, 1.775, 4.525, 10.25], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [21600, 86400, 259200]}, // 24h, 48h, 72h
                250: { name: 'Epic', visible: 'Yes', ratios: [0.225, 0.325, 0.625, 1.775, 4.525, 10.25], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [21600, 86400, 259200]}, // 24h, 48h, 72h
                500: { name: 'Colossal', visible: 'Yes', ratios: [0.45, 0, 0.65, 1.25, 2.5, 9.0], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [43200, 172800, 259200]}, // 24h, 48h, 72h
                800: { name: 'Gigantic', visible: 'Yes', ratios: [0.45, 0, 0.65, 1.25, 2.5, 9.0], enames: ['1E6T', '1E8T', '2E', '2/3E', '3E', '3/4E'], pruneTimers: [43200, 172800, 259200]}, // 24h, 48h, 72h
                90000: { name: 'World', visible: 'Yes', ratios: [0, 0, 0, 0, 0, 0], pruneTimers: [86400, 86400, 86400]} // 24h, 48h, 72h
            },

            lootTiers: {
                u: { tiers: ['Not yet known'], epics: [0], best: 0},
                yule: { tiers: ['100.0m', '200.0m', '300.0m', '400.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '3.500b', '4.000b', '4.500b', '5.000b', '10.00b'], epics: [0, 4, 8, 10, 15, 20, 30, 35, 40, 50, 70, 75, 80, 90, 95, 125], best: 5, e: true },
                eow: { tiers: ['100.0m', '200.0m', '300.0m', '500.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b', '6.000b', '7.000b', '8.000b', '9.000b', '10.00b', '12.50b', '15.00b', '17.50b', '20.00b', '25.00b', '30.00b', '35.00b', '40.00b'], epics: [1,2,3,5,10,15,22,28,37,42,47,52,57,63,68,73,78,83,88,95,101,108,115,121], best: 8, e: false },
                gk: { tiers: ['150.0m', '250.0m', '300.0m', '400.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.500b', '5.000b'], epics: [5, 6, 9, 10, 12, 14, 17, 23, 30, 35, 49, 67], best: 2, e: false },
                murg: { tiers: ['150.0m', '250.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '3.500b', '4.000b', '4.500b', '5.000b'], epics: [0, 1, 2, 5, 10, 15, 31, 41, 57, 67, 72, 78, 87], best: 9, e: false},
                valley: { tiers: ['150.0m', '250.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '3.500b', '4.000b', '4.500b', '5.000b', '6.500b', '8.000b'], epics: [0, 1, 2, 5, 10, 15, 21, 35, 60, 63, 67, 72, 76, 84, 92], best: 8, e: false},
                bak: { tiers: ['100.0m', '200.0m', '250.0m', '300.0m', '400.0m', '500.0m', '650.0m', '800.0m', '1.000b', '1.250b', '1.500b', '2.000b'], epics: [3, 8, 10, 11, 12, 15, 18, 20, 26, 30, 38, 47], best: 5, e: false},
                rud: { tiers: ['300.0m', '500.0m', '750.0m', '1.000b', '1.500b'], epics: [13, 15, 17, 25, 32], best: 1, e: false},
                imx: { tiers: ['100.0m', '150.0m', '200.0m', '250.0m', '300.0m', '400.0m', '500.0m', '750.0m', '1.000b', '1.250b', '1.500b', '1.750b', '2.000b', '2.500b', '3.000b', '3.500b', '4.000b', '4.500b', '5.000b', '6.000b', '7.000b', '8.000b', '9.000b', '10.00b', '12.50b', '15.00b', '17.50b', '20.00b', '25.00b'], epics: [16, 21, 26, 32, 38, 44, 51, 69, 86, 118, 142, 166, 191, 239, 286, 330, 355, 381, 408, 435, 462, 489, 516, 544, 592, 640, 688, 736, 815], best: 13, e: false},
                shd: { tiers: ['50.00m', '75.00m', '100.0m', '150.0m', '200.0m', '250.0m', '300.0m', '500.0m', '750.0m', '1.000b'], epics: [1, 2, 5, 8, 10, 12, 14, 16, 19, 25], best: 6, e: false},
                hell: { tiers: ['200.0m', '250.0m', '300.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b', '6.000b', '8.000b', '10.00b'], epics: [8, 12, 16, 25, 28, 34, 41, 50, 58, 64, 71, 77, 85, 102, 120], best: 2, e: false},
                kane: { tiers: ['200.0m', '250.0m', '300.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b', '6.000b', '8.000b', '10.00b', '12.50b', '15.00b'], epics: [6, 10, 14, 21, 27, 30, 37, 45, 54, 62, 68, 75, 81, 93, 110, 127, 141], best: 3, e: false},
                dark: { tiers: ['200.0m', '300.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b'], epics: [2, 4, 8, 14, 18, 30, 40, 50, 60, 75, 85], best: 7, e: false},
                gat: { tiers: ['1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b', '6.000b', '7.000b', '8.000b', '9.000b', '10.00b', '12.50b', '15.00b', '17.50b', '20.00b', '25.00b', '30.00b', '40.00b'], epics: [27, 48, 66, 81, 94, 103, 122, 132, 144, 158, 176, 194, 204, 209, 219, 225, 242, 284, 301], best: 2, e: false},
                trex: { tiers: ['100.0m', '150.0m', '200.0m', '250.0m', '300.0m', '400.0m', '500.0m', '750.0m', '1.000b', '1.250b', '1.500b', '1.750b', '2.000b', '2.500b', '3.000b', '3.500b', '4.000b', '4.500b', '5.000b', '6.000b', '7.000b', '8.000b', '9.000b', '10.00b', '12.50b', '15.00b', '17.50b', '20.00b'], epics: [21, 28, 38, 44, 47, 59, 68, 94, 119, 147, 179, 215, 250, 308, 381, 431, 498, 546, 557, 593, 627, 661, 691, 725, 790, 861, 926, 980], best: 14, e: false},
                alch: { tiers: ['100.0m', '150.0m', '200.0m', '250.0m', '300.0m', '400.0m', '500.0m', '650.0m', '800.0m', '1.000b', '1.250b', '1.500b'], epics: [4, 6, 8, 9, 11, 13, 15, 17, 19, 20, 25, 32], best: 5, e: false},
                rann: { tiers: ['100.0m', '200.0m', '300.0m', '400.0m', '500.0m', '600.0m', '700.0m', '800.0m', '900.0m', '1.000b', '2.000b', '3.000b'], epics: [12, 24, 36, 48, 61, 73, 85, 97, 109, 122, 245, 369], best: 9, e: false },
                clock: { tiers: ['300.0m', '400.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b', '6.000b', '8.000b', '10.00b'], epics: [56, 66, 94, 118, 192, 226, 254, 270, 290, 360, 368, 400, 460], best: 0, e: false},
                krx: { tiers: ['300.0m', '400.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '4.000b', '5.000b', '6.000b', '8.000b'], epics: [56, 66, 94, 118, 192, 226, 254, 270, 290, 360, 368, 400], best: 0, e: false},
                gig: { tiers: ['200.0m', '300.0m', '400.0m', '500.0m', '750.0m', '1.000b', '1.500b', '2.000b', '2.500b', '5.000b', '8.000b'], epics: [36, 48, 63, 76, 94, 111, 146, 199, 256, 400, 490], best: 3, e: false},
                rekkr: { tiers: ['250.0m', '300.0m', '400.0m', '500.0m', '720.0m', '1.000b', '1.500b', '2.500b', '3.500b'], epics: [10, 11, 15, 18, 23, 26, 34, 37, 51], best: 2, e: true},
                rag: { tiers: ['225.0m', '310.0m', '400.0m', '510.0m', '750.0m', '1.000b', '1.500b', '2.500b', '5.000b'], epics: [11, 13, 17, 19, 23, 27, 37, 39, 61], best: 2, e: true},
                z15lo: { tiers: ['225.0m', '240.0m', '300.0m', '400.0m', '750.0m', '1.000b', '1.500b', '2.500b', '5.000b'], epics: [8, 9, 14, 16, 19, 23, 33, 36, 48], best: 2, e: true},
                z15hi: { tiers: ['225.0m', '240.0m', '300.0m', '400.0m', '750.0m', '1.000b', '1.500b', '2.500b', '5.000b', '8.000b'], epics: [8, 9, 14, 16, 19, 23, 33, 60, 90, 100], best: 2, e: true},
                apoc: { tiers: ['12.00m', '24.00m', '36.00m', '40.00m', '60.00m', '80.00m', '100.0m', '120.0m', '140.0m', '160.0m', '180.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true },
                cara: { tiers: ['400.0m', '500.0m', '600.0m', '700.0m', '800.0m', '900.0m', '1.000b', '1.250b', '1.500b', '1.750b', '2.000b', '2.250b', '2.500b', '2.750b', '3.000b'], epics: [10, 11, 12, 13, 14, 15, 16, 20, 24, 28, 32, 36, 40, 44, 48], best: 0, e: true },
                zugen: { tiers: ['120.0m', '180.0m', '225.0m', '240.0m', '300.0m', '400.0m', '750.0m', '1.000b', '1.500b'], epics: [8, 9, 10, 11, 14, 16, 19, 23, 33], best: 4, e: true},
                gulk: { tiers: ['90.00m', '135.0m', '150.0m', '180.0m', '225.0m', '300.0m', '550.0m', '900.0m', '1.500b'], epics: [2, 5, 7, 9, 11, 15, 18, 22, 34], best: 5, e: true },
                verk: { tiers: ['100.0m', '175.0m', '250.0m', '300.0m', '375.0m', '450.0m', '525.0m', '600.0m', '900.0m', '1.500b'], epics: [3, 8, 12, 13, 15, 16, 18, 21, 23, 36], best: 2, e: true},
                canib: { tiers: ['250.0m', '300.0m', '380.0m', '480.0m', '580.0m', '660.0m', '900.0m', '1.500b', '2.000b', '2.800b', '3.500b'], epics: [12, 13, 14, 17, 18, 21, 23, 34, 46, 68, 88], best: 0, e: true},
                ruzz: { tiers: ['300.0m', '400.0m', '500.0m', '600.0m', '700.0m', '800.0m', '900.0m', '1.000b', '1.250b', '1.500b', '1.750b', '2.000b', '2.250b', '2.500b', '2.750b', '3.000b'], epics: [2, 5, 11, 12, 13, 14, 15, 16, 20, 24, 28, 32, 36, 40, 44, 48], best: 2, e: true },
                z10: { tiers: ['100.0m', '200.0m', '300.0m', '400.0m', '500.0m', '600.0m', '700.0m', '800.0m', '900.0m', '1.000b'], epics: [7, 8, 9, 10, 11, 12, 13, 14, 15, 16], best: 0, e: true },
                nmDl: { tiers: ['105.0m', '135.0m', '150.0m', '225.0m', '300.0m', '375.0m', '450.0m', '525.0m', '600.0m', '675.0m'], epics: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20], best: 2, e: true },
                lDl: { tiers: ['70.00m', '90.00m', '100.0m', '150.0m', '200.0m', '250.0m', '300.0m', '350.0m', '400.0m', '450.0m'], epics: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20], best: 2, e: true },
                hDl: { tiers: ['35.00m', '45.00m', '50.00m', '75.00m', '100.0m', '125.0m', '150.0m', '175.0m', '200.0m', '225.0m'], epics: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20], best: 2, e: true },
                nDl: { tiers: ['7.000m', '9.000m', '10.00m', '15.00m', '20.00m', '25.00m', '30.00m', '35.00m', '40.00m', '45.00m'], epics: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20], best: 2, e: true },
                nmTisi: { tiers: ['75.00m', '105.0m', '135.0m', '150.0m', '225.0m', '300.0m', '375.0m', '450.0m', '525.0m', '600.0m', '675.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true },
                lTisi: { tiers: ['50.00m', '70.00m', '90.00m', '100.0m', '150.0m', '200.0m', '250.0m', '300.0m', '350.0m', '400.0m', '450.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true },
                hTisi: { tiers: ['25.00m', '35.00m', '45.00m', '50.00m', '75.00m', '100.0m', '125.0m', '150.0m', '175.0m', '200.0m', '225.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true },
                nTisi: { tiers: ['5.000m', '7.000m', '9.000m', '10.00m', '15.00m', '20.00m', '25.00m', '30.00m', '35.00m', '40.00m', '45.00m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true },
                njack: { tiers: ['4.000m', '20.00m', '24.00m', '48.00m', '72.00m', '96.00m', '120.0m', '144.0m', '168.0m', '192.0m'], epics: [2, 3, 4, 6, 7, 8, 9, 10, 11, 12], best: 0, e: true},
                hjack: { tiers: ['6.000m', '30.00m', '36.00m', '72.00m', '108.0m', '144.0m', '180.0m', '216.0m', '252.0m', '288.0m'], epics: [2, 3, 4, 6, 7, 8, 9, 10, 11, 12], best: 0, e: true},
                ljack: { tiers: ['8.000m', '40.00m', '48.00m', '96.00m', '144.0m', '192.0m', '240.0m', '288.0m', '336.0m', '384.0m'], epics: [2, 3, 4, 6, 7, 8, 9, 10, 11, 12], best: 0, e: true},
                nmjack: { tiers: ['12.00m', '60.00m', '72.00m', '144.0m', '216.0m', '288.0m', '360.0m', '432.0m', '504.0m', '576.0m'], epics: [2, 3, 4, 6, 7, 8, 9, 10, 11, 12], best: 0, e: true},
                hjr: { tiers: ['30.00m', '150.0m', '180.0m', '360.0m', '750.0m', '1.500b'], epics: [8, 12, 16, 27, 36, 72], best: 0, e: true},
                njr: { tiers: ['20.00m', '100.0m', '120.0m', '240.0m', '500.0m', '1.000b'], epics: [8, 12, 16, 27, 36, 72], best: 0, e: true},
                ljr: { tiers: ['40.00m', '200.0m', '240.0m', '480.0m', '1.000b', '2.000b'], epics: [8, 12, 16, 27, 36, 72], best: 0, e: true},
                nmjr: { tiers: ['60.00m', '300.0m', '360.0m', '720.0m', '1.500b', '3.000b'], epics: [8, 12, 16, 27, 36, 72], best: 0, e: true},
                yyd: { tiers: ['125.0m', '175.0m', '250.0m', '300.0m', '375.0m', '450.0m', '525.0m', '625.0m', '900.0m', '1.500b'], epics: [3, 8, 12, 13, 15, 16, 18, 21, 23, 36], best: 2, e: true},
                nessy: { tiers: ['120.0m', '180.0m', '225.0m', '240.0m', '300.0m', '500.0m', '750.0m', '1.000b'], epics: [9, 10, 11, 12, 13, 14, 17, 20], best: 1, e: true},
                hurk: { tiers: ['90.00m', '135.0m', '150.0m', '180.0m', '225.0m', '300.0m', '550.0m', '900.0m'], epics: [3, 7, 10, 12, 15, 19, 26, 30], best: 2, e: true},
                mall: { tiers: ['100.0m', '150.0m', '225.0m', '300.0m', '375.0m', '450.0m', '525.0m', '600.0m', '900.0m'], epics: [3, 8, 11, 12, 14, 16, 18, 20, 24], best: 1, e: true},
                nIns: { tiers: ['5.000m', '7.000m', '9.000m', '10.00m', '15.00m', '20.00m', '25.00m', '30.00m', '35.00m', '40.00m', '45.00m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                hIns: { tiers: ['6.250m', '8.750m', '11.25m', '12.50m', '18.75m', '25.00m', '31.25m', '37.50m', '43.75m', '50.00m', '56.25m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                lIns: { tiers: ['8.000m', '11.20m', '14.40m', '16.00m', '24.00m', '32.00m', '40.00m', '48.00m', '56.00m', '64.00m', '72.00m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                nmIns: { tiers: ['10.00m', '14.00m', '18.00m', '20.00m', '30.00m', '40.00m', '50.00m', '60.00m', '70.00m', '80.00m', '90.00m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                nker: { tiers: ['20.00m', '28.00m', '36.00m', '40.00m', '60.00m', '80.00m', '100.0m', '120.0m', '140.0m', '160.0m', '180.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                hker: { tiers: ['25.00m', '35.00m', '45.00m', '50.00m', '75.00m', '100.0m', '125.0m', '150.0m', '175.0m', '200.0m', '225.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                lker: { tiers: ['32.00m', '44.80m', '57.60m', '64.00m', '96.00m', '128.0m', '160.0m', '192.0m', '224.0m', '256.0m', '288.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                nmker: { tiers: ['40.00m', '56.00m', '72.00m', '80.00m', '120.0m', '160.0m', '200.0m', '240.0m', '280.0m', '320.0m', '360.0m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                nSlut: { tiers: ['6.660m', '9.324m', '11.99m', '13.32m', '19.98m', '26.64m', '33.30m', '39.96m', '46.62m', '53.28m', '59.94m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                hSlut: { tiers: ['8.325m', '11.66m', '14.99m', '16.65m', '24.98m', '33.30m', '41.63m', '49.95m', '58.28m', '66.60m', '74.93m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                lSlut: { tiers: ['10.66m', '14.92m', '19.18m', '21.31m', '31.97m', '42.62m', '53.28m', '63.94m', '74.59m', '85.25m', '95.90m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                nmSlut: { tiers: ['13.32m', '18.65m', '23.98m', '26.64m', '39.96m', '53.28m', '66.60m', '79.92m', '93.24m', '106.6m', '119.9m'], epics: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], best: 3, e: true},
                sic: { tiers: ['400.0m', '500.0m', '600.0m', '700.0m', '800.0m', '900.0m', '1.000b', '2.000b'], epics: [10, 11, 12, 13, 14, 15, 16, 32], best: 0, e: true},
                vort: { tiers: ['200.0m', '300.0m', '400.0m', '500.0m', '600.0m', '700.0m', '800.0m', '900.0m', '1.000b', '1.500b', '2.000b', '2.500b', '3.000b', '3.500b'], epics: [3, 10, 14, 15, 17, 18, 21, 23, 32, 37, 44, 52, 58, 90], best: 1, e: true},
                lux: { tiers: ['8.000m', '17.00m', '26.00m', '35.00m', '45.00m', '56.00m', '67.00m', '78.00m', '90.00m', '103.0m', '116.0m', '129.0m', '143.0m', '157.0m', '173.0m', '188.0m', '202.0m', '220.0m', '238.0m', '255.0m', '270.0m', '293.0m', '311.0m', '330.0m', '350.0m'], epics: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], best: 9, e: true },
                keron: { tiers: ['8.000m', '17.00m', '26.00m', '35.00m', '45.00m', '56.00m', '67.00m', '78.00m', '90.00m', '103.0m', '116.0m', '129.0m', '143.0m', '157.0m', '173.0m', '188.0m', '202.0m', '220.0m', '238.0m', '255.0m', '270.0m', '293.0m', '311.0m', '330.0m', '350.0m', '1.000b'], epics: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 30], best: 9, e: true }
            },
            linkNames: { 'prntscr.com': 'LightShot', 'www.youtube.com': 'YouTube', 'i.imgur.com': 'imgur', 'imgur.com': 'imgur', 'docs.google.com': 'Google Docs', 'userscripts.org': 'Script', 'www.dawnofthedragons.com': 'DotD Forum', 'dotd.wikia.com': 'DotD Wiki', 'www.fooby.de': 'DotD Log Analyzer'},
            raidArray: [],
            camps: {
                bob: {name: 'Bastion of Blood', time: [120, 96], prefixes: 'Regenerating, Morphling, Vengeful, Chilling', numNodes: 6, nodes: ['bmp', 'gor', 'chi', 'zh', 'sic', 'bob'],
                    mods: ['Speed Run: halved camp timer, +20% guild rep from EoC', 'Hailstorm: +1 prefix, +20% guild exp from EoC', 'Nerfed: -30% player damage, special loot from EoC'],
                    tiers: [[5, 31, 0],[25, 32, 0],[75, 33, 0],[100, 34, 0],[200, 35, 7],[250, 36, 8],[320, 37, 9],[375, 38, 10],[480, 39, 11],[550, 43, 14],[640, 46, 17],[960, 48, 22],[1500, 50, 24],[2400, 53, 26],[2750, 55, 29],[5000, 62, 38],[7000, 64, 42],[10000, 69, 47],[15000, 74, 52]],
                    bmp: {name: 'Black Moon Pack', sname: 'Bmp', type: 'Human, Campaign', size: 25, hp: [6000, 18000], gold: false,                         tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]},
                    gor: {name: 'Gorgon', sname: 'Gor', type: 'Campaign', size: 50, hp: [12000, 36000], gold: false,                                        tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]},
                    chi: {name: 'Chimera', sname: 'Chi', type: 'Campaign', size: 75, hp: [28000, 84000], gold: false,                                       tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]},
                    zh: {name: 'Zombie Horde', sname: 'ZH', type: 'Campaign, Undead', size: 100, hp: [50000, 150000], gold: false,                          tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]},
                    sic: {name: 'Byron Siculus', sname: 'Sic', type: 'Campaign', size: 100, hp: [50000, 150000], gold: true,                                tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]},
                    bob: {name: 'Bastion of Blood', sname: 'BoB', type: 'Campaign, Undead, Siege', size: 100, hp: [50000, 150000], gold: false,             tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}},
                mam: {name: 'Monsters and Magma', time: [120, 96], prefixes: 'Regenerating, Vengeful, Chilling, Curse', numNodes: 7, nodes: ['wlp', 'tos', 'gol', 'ele', 'gmh', 'wrm', 'imx'],
                    mods: ['Speed Run: halved camp timer, +20% guild rep from EoC', 'Hailstorm: +1 prefix, +20% guild exp from EoC', 'Fatigued: -45% player damage, special loot and +3 slots from EoC', 'Endurance Run: Node timer set to 4h, Molten Troves in EoC'],
                    tiers: [[5, 31, 0],[25, 32, 0],[75, 33, 0],[100, 34, 0],[200, 35, 7],[250, 36, 8],[320, 37, 9],[375, 38, 10],[480, 39, 11],[550, 40, 12],[640, 41, 13],[960, 42, 14],[1500, 43, 15],[2400, 44, 16],[2750, 45, 17],[4500, 58, 24],[5000, 62, 38],[5500, 64, 26],[7000, 64, 42],[7500, 74, 28],[10000, 69, 47],[15000, 74, 52]],
                    wlp: {name: 'Imryx\'s Whelps', sname: 'Wlp', type: 'Dragon, Underground, Campaign', size: 25, hp: [7000, 21000], gold: false,           tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0]},
                    tos: {name: 'Magma Tossers', sname: 'Tos', type: 'Underground, Construct, Campaign', size: 50, hp: [13000, 39000], gold: false,         tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0]},
                    gol: {name: 'Magma Golem', sname: 'Gol', type: 'Underground, Construct, Campaign', size: 50, hp: [16000, 48000], gold: true,            tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0]},
                    ele: {name: 'Magma Elemental', sname: 'Ele', type: 'Underground, Magical Creature, Campaign', size: 75, hp: [30000, 90000], gold: false,tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0]},
                    gmh: {name: 'Grt. Magma Horror', sname: 'Gmh', type: 'Campaign, Undead', size: 100, hp: [55000, 165000], gold: false,                   tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1]},
                    wrm: {name: 'Magma Worm', sname: 'Wrm', type: 'Underground, Campaign', size: 100, hp: [60000, 180000], gold: true,                      tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1]},
                    imx: {name: 'Imryx the Incinerator', sname: 'Imx', type: 'Dragon, Underground, Campaign', size: 100, hp: [65000, 195000], gold: false,  tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0]}},
                gd: {name: 'The Grey Death', time: [120, 96], prefixes: 'Regenerating, Vengeful, Chilling, Curse', numNodes: 6, nodes: ['crk', 'zrn', 'nun', 'tms', 'crn', 'hrt'],
                    mods: ['Speed Run: halved camp timer, +20% guild rep from EoC', 'Hailstorm: +1 prefix, +20% guild exp from EoC', 'Fatigued: -45% player damage, special loot and +3 slots from EoC'],
                    tiers: [[25, 31, 0],[100, 34, 0],[200, 36, 6],[300, 38, 9],[500, 40, 14],[750, 42, 16],[1000, 45, 18],[2500, 48, 21],[4100, 50, 25],[6500, 58, 29],[6500, 54, 27],[8500, 62, 31],[8500, 63, 32],[10000, 64, 33],[15000, 66, 35],[20000, 68, 37],[30000, 70, 39],[40000, 73, 41]],
                    crk: {name: 'Carshk the Marauder', sname: 'Crk', type: 'Campaign', size: 25, hp: [8000, 25600], gold: false,                            tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0]},
                    zrn: {name: 'Zranras', sname: 'Zrn', type: 'Campaign, Beastman', size: 50, hp: [15000, 48000], gold: false,                             tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0]},
                    nun: {name: 'General Nund', sname: 'Nun', type: 'Campaign, Ogre', size: 50, hp: [20000, 50000], gold: false,                            tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0]},
                    tms: {name: 'Thurmavus the Ripper', sname: 'Tms', type: 'Campaign, Dragon', size: 100, hp: [75000, 202500], gold: false,                tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1]},
                    crn: {name: 'Craenaestra the Stalker', sname: 'Crn', type: 'Campaign, Dragon', size: 100, hp: [80000, 224000], gold: true,              tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1]},
                    hrt: {name: 'Horthania the Grey', sname: 'Hrt', type: 'Campaign, Dragon', size: 100, hp: [90000, 270000], gold: false,                  tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1]}},
                goc: {name: 'Giants of Chalua', time: [120, 96], prefixes: 'Regenerating, Vengeful, Chilling, Curse', numNodes: 6, nodes: ['mwm', 'bl', 'gh', 'fgs', 'gc', 'ha'],
                    mods: ['Speed Run: halved camp timer, +20% guild rep from EoC', 'Hailstorm: +1 prefix, +20% guild exp from EoC', 'Fatigued: -45% player damage, Boss loot from EoC', 'Endurance Run: Node timer set to 4h, 10 guild tokens in EoC'],
                    tiers: [[25, 32, 0, 0],[150, 34, 0, 0],[250, 35, 7, 0],[480, 39, 11, 0],[640, 41, 16, 0],[960, 42, 18, 1],[1500, 43, 19, 1],[2500, 45, 21, 3],[4750, 48, 25, 4],[5500, 52, 27, 5],[6400, 54, 29, 5],[8750, 56, 31, 6],[10000, 58, 34, 6],[15000, 60, 38, 8],[25000, 64, 44, 9],[30000, 66, 46, 9],[35000, 68, 48, 9],[40000, 70, 50, 9],[50000, 74, 56, 10]],
                    mwm: {name: 'Monkey Warrior Minions', sname: 'MWM', type: 'Human, Campaign', size: 25, hp: [15000, 45000], gold: false,                 tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]},
                    bl: {name: 'Basileus Lizard', sname: 'BL', type: 'Campaign', size: 50, hp: [25000, 75000], gold: false,                                 tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]},
                    gh: {name: 'Giant Hunter', sname: 'GH', type: 'Giant, Campaign', size: 75, hp: [55000, 165000], gold: false,                            tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0]},
                    fgs: {name: 'Fire Giant Shaman', sname: 'FGS', type: 'Giant, Campaign', size: 100, hp: [100000, 250000], gold: false,                   tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0]},
                    gc: {name: 'Giant Cook', sname: 'GC', type: 'Giant, Campaign', size: 100, hp: [125000, 312500], gold: true,                             tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0]},
                    ha: {name: 'Hitullpa Aatqui', sname: 'HA', type: 'Giant, Campaign', size: 100, hp: [150000, 375000], gold: false,                       tiers: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1]}}
            },
            slapSentences: [
                'slaps <nick> in the face with a rotten old fish',
                'slaps <nick> around with a glove',
                'slaps <nick> around with an armoured glove',
                'hacks into <nick>\'s computer and slaps <nick> up side the head with a rubber chicken',
                'slaps <nick> around a bit with a wet noddle',
                'slaps <nick> about the head and shoulders with a rubber chicken',
                'slaps <nick>\'s face so hard, <nick> has to walk backwards from now on',
                'slaps some sense into <nick> with a red brick',
                'slaps <nick> with a herring',
                'slaps <nick> with a fire hose',
                'slaps <nick> with a huge law suit',
                'slaps <nick> with a great big, wet, 100% rubber duck',
                'slaps <nick> with a large dildo'
            ],
            reload: function () {
                SRDotDX.util.extEcho('Reloading, please wait...');
                activateGame();
                //SRDotDX.gui.cHTML('#gameiframe').ele().src = 'http://web1.dawnofthedragons.com/kong?' + SRDotDX.request.kongData;
            },
            gframe: function(msg) {
                if(typeof document.getElementById('gameiframe') =='object' && typeof document.getElementById('gameiframe').contentWindow == 'object') document.getElementById('gameiframe').contentWindow.postMessage(msg, '*');
            },
            fails: 0,
            load: function () {
                if (typeof holodeck == 'object' && typeof ChatDialogue == 'function' && typeof holodeck._tabs == 'object' && typeof holodeck.activeDialogue == 'function' && typeof activateGame == 'function' && typeof document.getElementById('kong_game_ui') != 'null' && typeof SRDotDX.raids == 'object') {
                    ChatDialogue.prototype.sendInput = function () {
                        var b = this._input_node.value.replace(/kv_&/ig, "&kv_");
                        var a = b.match(/[\s\S]{1,240}(\s|$)/g);
                        var al = a.length - 1, i;
                        if (al < 1 || this._input_node.value.charAt(0) == '/') this._holodeck.processChatCommand(a[0]) && this._holodeck.filterOutgoingMessage(a[0], this._onInputFunction);
                        else for (i = 0; i <= al; i++) this._holodeck.filterOutgoingMessage((i == 0 ? '' : '... ') + a[i] + (i == al ? '' : '...'), this._onInputFunction);
                        this._input_node.value = "";
                    };
                    ChatDialogue.prototype.SRDotDX_emote = function (msg) {
                        var user = holodeck._active_user.chatUsername();
                        this.displayUnsanitizedMessage(user, '**' + user + ' ' + msg + '**', {class: 'emote'}, {});
                    };
                    ChatDialogue.MESSAGE_TEMPLATE = new Template('<p class="#{classNames}"><span id="dotdm_#{magId}" class="slider" style="max-width:0" onmouseleave="this.style.maxWidth=\'0\'"></span><span class="timestamp">#{timestamp}</span><span class="room">#{room}</span></span><span class="username #{userClassNames} dotdm_#{magId}" oncontextmenu="return false;">#{prefix}#{username}</span><span class="ign ingamename">#{ign}</span><span class="separator">: </span><span name="SRDotDX_#{username}" class="message">#{message}</span><span class="clear"></span></p>');

                    Holodeck.prototype.addDotdChatCommand = function (a, b) {
                        a = a.split(',');
                        for (var i = 0; i < a.length; i++) {
                            this._chat_commands[a[i]] || (this._chat_commands[a[i]] = []);
                            this._chat_commands[a[i]].push(b)
                        }
                    };
                    ChatDialogue.prototype.displayUnsanitizedMessage = function (usr, msg, cls, pfx) {
                        cls || (cls = {});
                        pfx || (pfx = {});
                        var active_room, allow_mutes = (active_room = this._holodeck.chatWindow().activeRoom()) && !active_room.canUserModerate(active_room.self()) || pfx.whisper;
                        if (!allow_mutes || !this._user_manager.isMuted(usr)) {
                            //var e = !pfx.non_user ? "chat_message_window_username" : "chat_message_window_undecorated_username",
                            var f = usr == this._user_manager.username(), h = [], rm = '';
                            var curTs = new Date().getTime().toString();
                            if (msg.charAt(0) == '[' && (msg.charAt(2) == '|' || msg.charAt(3) == '|')) {
                                var sp = msg.split(']');
                                rm = sp[0].split('|')[0] + ']&ensp;';
                                usr = sp[0].split('|')[1];
                                msg = sp[1];
                                h.push('bot')
                            }
                            var e = [usr];
                            pfx = pfx['private'] ? 'To ' : '';
                            if (cls['class'] != 'script') this._messages_count % 2 && h.push("even"), this._messages_count++;
                            cls['class'] && h.push(cls['class']);
                            if ((!cls['class'] || cls['class'].indexOf('emote') == -1) && msg.charAt(0) == '*' && msg.charAt(2) != '*') {
                                var msgLen = msg.length;
                                if (msgLen > 5) {
                                    msg = '**' + usr + ' ' + (msg.charAt(msgLen - 1) == '*' ? msg.slice(1, msgLen - 1) : msg.slice(1, msgLen)) + '**';
                                    h.push('emote');
                                }
                            }
                            var rUsr = h.join(' ').indexOf('sent_whisper') > -1 ? this._user_manager.username() : usr;
                            var raid = SRDotDX.getRaidLink(msg, rUsr);
                            if (raid) {
                                h.push('SRDotDX_raid');
                                h.push('DotDX_sid_' + raid.sid);
                                h.push('DotDX_diff_' + raid.diff);
                                h.push('DotDX_raidId_' + raid.id);
                                if (raid.visited) h.push('DotDX_visitedRaid');
                                if (raid.nuked) h.push('DotDX_nukedRaid');
                                h.push('DotDX_fltChat_' + raid.boss + '_' + (raid.diff - 1));
                                msg = raid.ptext + '<a href="' + raid.url + '" class="chatRaidLink ' + raid.id + '|' + raid.hash + '|' + raid.boss + '|' + raid.diff + '|' + raid.sid + '" style="float:right;" onmouseout="SRDotDX.gui.helpBox(\'chat_raids_overlay\',\'dotdm_' + curTs + '\',\'\',true);" onmouseover="SRDotDX.gui.helpBox(\'chat_raids_overlay\',\'dotdm_' + curTs + '\',' + raid.id + ',false);">' + raid.linkText() + '</a>' + raid.ntext;
                                SRDotDX.gui.toggleRaid('visited', raid.id, raid.visited);
                                SRDotDX.gui.joining ? SRDotDX.gui.pushRaidToJoinQueue(raid.id) : SRDotDX.gui.selectRaidsToJoin('chat');
                            }
                            else {
                                var linkReg = /([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4})\b\/([-a-zA-Z0-9@:%_\+.~#?;&//=]*)?\??\S*/ig;
                                var links, link, dom, ln;
                                while((links = linkReg.exec(msg))) {
                                    console.log('[DotDX] Link found: ' + msg);
                                    if(!/kongregate.com/i.test(links[0]) && !/\.\./.test(links[0])){
                                        dom = links[1].indexOf("http") != 0 ? "http://" + links[1] : links[1];
                                        ln = links[1].indexOf("http") != 0 ? links[1] : links[1].split('//')[1];
                                        link = '<a href="' + dom + '/' + links[2].replace(/&amp;/ig,'&') + '" target="_blank" class="chat_link">[' + (SRDotDX.linkNames[ln] ? (SRDotDX.linkNames[ln] + ' link') : ln) + ']</a>';
                                        linkReg.lastIndex += link.length - links[0].length;
                                        msg = msg.substring(0, links.index) + link + msg.substring(links.index + links[0].length, msg.length);
                                    }
                                }
                            }
                            var ign = '';
                            if (SRDotDX.config.mutedUsers[usr]) h.push('DotDX_nukedRaid');

                            var fCls = h.join(' ');
                            if (SRDotDX.config.ignUsers[usr] && fCls.indexOf('emote') < 0) {
                                switch(SRDotDX.config.ignMode) {
                                    case 2: ign = ' ('+SRDotDX.config.ignUsers[usr]+')'; break;
                                    case 1: usr = SRDotDX.config.ignUsers[usr]; e.push('ign'); break;
                                }
                            }
                            var ts = fCls.indexOf('emote') > -1 || fCls.indexOf('script') > -1 ? '' : ('(' + ('0' + (new Date().getHours())).slice(-2) + ':' + ('0' + (new Date().getMinutes())).slice(-2) + ')&ensp;');
                            f && e.push('is_self');

                            usr = ChatDialogue.MESSAGE_TEMPLATE.evaluate({prefix: pfx, username: usr, ign: ign, message: msg, classNames: fCls, userClassNames: e.join(' '), timestamp: ts, room: rm, magId: curTs });
                            this.insert(usr);
                        }
                    };
                    ChatRoomGroup.prototype.buildRegularRoomNode = function (a) {
                        var b = new Element("li", {"class": 0 === i % 2 ? "even room" : "odd room"});
                        b.room = a;
                        var c = (new Element("p", {"class": "name"})).update(a.name);
                        a.premium_only && (active_user.isPremium() || c.addClassName("upsell"), c.addClassName("premium_room_icon spritesite"));
                        b.insert(c);
                        b.insert((new Element("p", {"class": "user_count" + (a.joinable ? "" : " full")})).update(a.total_user_count));
                        b.insert(new Element("div", {style: "clear:both;"}));
                        return b
                    };
                    for (var i in SRDotDX.raids) SRDotDX.raidArray.push(i);
                    holodeck.addDotdChatCommand("stop", function (deck, text) {
                        if (SRDotDX.gui.isPosting) {
                            SRDotDX.gui.FPXStopPosting();
                        } else {
                            SRDotDX.util.extEcho('<b>/stop</b>: Links are not being posted. Stop command invalid.');
                        }
                        return false;
                    });
                    holodeck.addDotdChatCommand("e", function (deck, text) {
                        var s = text.slice(2);
                        if (s != "") holodeck.activeDialogue().SRDotDX_emote(s);
                        else SRDotDX.util.extEcho('<b>/e</b>: Empty message specified');
                        return false;
                    }); //
                    holodeck.addDotdChatCommand("kill", function (deck, text) {
                        document.getElementById("gameiframe").src = "";
                        SRDotDX.util.extEcho('Game window killed, have a nice chatting.');
                        return false;
                    });
                    holodeck.addDotdChatCommand("update", function (deck, text) {
                        var d = "<font color='#990000'><b>" + SRDotDX.version.minor + "</b></font><br>";
                        d += '<b>Installed Version</b>: <font color="#990000">' + SRDotDX.version.major + '</font><br>';
                        d += 'You can check ';
                        d += '<a href="https://greasyfork.org/scripts/406-mutik-s-dotd-script" target="_blank">here (greasyfork)</a>';
                        d += ' to see if your version is most current and update if needed.';
                        SRDotDX.util.extEcho(d);
                        return false;
                    });
                    holodeck.addDotdChatCommand("help", function (deck, text) {
                        var d = "<b>Available chat commands:</b><br>";
                        d += "/stop /e /kill /update /reload /relaod /rl /reloaf /mute /unmute /mutelist /ign /unign /ignlist /friend /unfriend /script /clear /wikil /import /imp /fs /room /ijoin /join /wiki /guide /manual /slap /sh /camp /perc /citadel /raid /help";
                        d += '<br><br><a href="https://docs.google.com/document/d/14X0WhnJrISQbxdfQv_scJbG1sUyXdE2g4iMfHmLM0E0/edit" target="_blank">You can click here to navigate to script guide for detailed instructions or use /guide and /manual commands.</a>';
                        SRDotDX.util.extEcho(d);
                        return false;
                    });
                    holodeck.addDotdChatCommand("reload,relaod,rl,reloaf", function (deck, text) {
                        SRDotDX.reload();
                        return false;
                    });
                    holodeck.addDotdChatCommand("mute", function (deck, text) {
                        var s = String(text).split(" ");
                        if (s.length == 2 && s[1] != "") {
                            SRDotDX.config.mutedUsers[s[1]] = true;
                            SRDotDX.util.extEcho('User "' + s[1] + '" muted.  Use the /unmute command to undo, and the /mutelist to see all muted users.');
                            SRDotDX.config.save(false);
                        } else {
                            SRDotDX.util.extEcho('<b>/mute</b>: Invalid parameters specified. The proper syntax is "/mute [username]". <!--(<a href="#" onclick="SRDotDX.gui.help(\'mute\'); return false">help</a>)-->');
                        }
                        return false;
                    });
                    holodeck.addDotdChatCommand("ign", function (deck, text) {
                        var s = text.split(" ");
                        if (s.length == 3 && s[1] != "" && s[2] != "") {
                            SRDotDX.config.ignUsers[s[1]] = s[2];
                            SRDotDX.util.extEcho(s[1] + '\'s ign "' + s[2] + '" added.  Use the /unign command to undo, and the /ignlist to see all users with known ign.');
                            SRDotDX.config.save(false);
                        }
                        else SRDotDX.util.extEcho('<b>/ign</b>: Invalid parameters specified. The proper syntax is "/ign [kong username] [in game name]".');
                        return false;
                    });
                    holodeck.addDotdChatCommand('unmute', function (deck, text) {
                        var s = String(text).split(' ');
                        if (s.length == 2 && s[1] != '') {
                            if (s[1] == 'all') {
                                for (var u in SRDotDX.config.mutedUsers) delete SRDotDX.config.mutedUsers[u];
                                SRDotDX.config.save(false);
                                SRDotDX.util.extEcho('All users unmuted.');
                            }
                            else if (SRDotDX.config.mutedUsers[s[1]]) {
                                delete SRDotDX.config.mutedUsers[s[1]];
                                SRDotDX.util.extEcho('User "' + s[1] + '" unmuted.');
                                SRDotDX.config.save(false);
                            }
                            else SRDotDX.util.extEcho('No muted user "' + s[1] + '" found.');
                        }
                        else SRDotDX.util.extEcho('<b>/unmute</b>: Invalid parameters specified. The proper syntax is "/unmute [username]". "/unmute all" can be used to unmute all muted users.');
                        return false;
                    });
                    holodeck.addDotdChatCommand('unign', function (deck, text) {
                        var s = String(text).split(' ');
                        if (s.length == 2 && s[1] != '') {
                            if (s[1] == 'all') {
                                for (var u in SRDotDX.config.ignUsers) delete SRDotDX.config.ignUsers[u];
                                SRDotDX.config.save(false);
                                SRDotDX.util.extEcho('All users removed from IGN list.');
                            }
                            else if (SRDotDX.config.ignUsers[s[1]]) {
                                delete SRDotDX.config.ignUsers[s[1]];
                                SRDotDX.util.extEcho('Removed ' + s[1] + '\'s IGN.');
                                SRDotDX.config.save(false);
                            }
                            else SRDotDX.util.extEcho('No IGN of user "' + s[1] + '" found.');
                        }
                        else SRDotDX.util.extEcho('<b>/unign</b>: Invalid parameters specified. The proper syntax is "/unign [username]". "/unign all" can be used to clear IGN list.');
                        return false;
                    });
                    holodeck.addDotdChatCommand('mutelist', function (deck, text) {
                        var s = '<b>List of users currently muted:</b><br/>';
                        var i = 0;
                        for (var u in SRDotDX.config.mutedUsers) {
                            s += u + '<br/>';
                            i++
                        }
                        if (i == 0) s = 'No users currently muted.<br/>';
                        s += '<br/>Use the /mute and /unmute commands to add or remove users on this list.';
                        SRDotDX.util.extEcho(s);
                        return false;
                    });
                    holodeck.addDotdChatCommand('ignlist', function (deck, text) {
                        var s = '<b>List of known users IGN:</b><br/>';
                        if (SRDotDX.config.ignUsers.length == 0) s = 'No users added to IGN list.<br/>';
                        else for (var u in SRDotDX.config.ignUsers) s += u + ':' + SRDotDX.config.ignUsers[u] + '<br/>';
                        s += '<br/>Use the /ign and /unign commands to add or remove users on this list.';
                        SRDotDX.util.extEcho(s);
                        return false;
                    });
                    holodeck.addDotdChatCommand('script', function (deck, text) {
                        SRDotDX.gui.FPXdoWork('Script link: https://greasyfork.org/scripts/406-mutik-s-dotd-script');
                        return false;
                    });
                    holodeck.addDotdChatCommand('clear', function (deck, text) {
                        holodeck.activeDialogue().clear();
                        return false
                    });
                    holodeck.addDotdChatCommand('wikil', function (deck, text) {
                        SRDotDX.gui.FPXdoWork('http://dotd.wikia.com/wiki/Dawn_of_the_Dragons_Wiki');
                        return false;
                    });
                    holodeck.addDotdChatCommand('import,imp', function (deck, text) {
                        if (/^(\/imp+)/i.test(text)) {
                            SRDotDX.util.extEcho('Importing all raids from server');
                            SRDotDX.request.raids();
                        }
                        else SRDotDX.util.extEcho('FAIL! ;)');
                        return false;
                    });
                    holodeck.addDotdChatCommand('friend', function (deck, text) {
                        var s = String(text).split(" ");
                        if (s.length == 2 && s[1] != "") {
                            if (typeof SRDotDX.config.friendUsers[s[1]] != 'object') {
                                SRDotDX.config.friendUsers[s[1]] = [false, false, false, false, true];
                                SRDotDX.config.save(false);
                                SRDotDX.gui.refreshFriends();
                                SRDotDX.util.extEcho('Added ' + s[1] + ' to friends');
                            }
                        }
                        return false;
                    });
                    holodeck.addDotdChatCommand('unfriend', function (deck, text) {
                        var s = String(text).split(" ");
                        if (s[1] == 'all') {
                            for (var u in SRDotDX.config.friendUsers) delete SRDotDX.config.friendUsers[u];
                            SRDotDX.config.save(false);
                            SRDotDX.gui.refreshFriends();
                            SRDotDX.util.extEcho('All users removed from friend list.');
                        }
                        else if (SRDotDX.config.friendUsers[s[1]]) {
                            delete SRDotDX.config.friendUsers[s[1]];
                            SRDotDX.config.save(false);
                            SRDotDX.gui.refreshFriends();
                            SRDotDX.util.extEcho('Removed ' + s[1] + ' from friends');
                        }
                        else SRDotDX.util.extEcho('User "' + s[1] + '" not found on friend list.');
                        return false;
                    });
                    holodeck.addDotdChatCommand('fs', function (deck, text) {
                        var cmd = text.split(' ');
                        if (cmd[0] == '/fs' && cmd[1]) {
                            SRDotDX.util.extEcho('Posting raid to friends');
                            document.getElementById('DotDX_raidsToSpam').value = cmd[1];
                            SRDotDX.gui.spamRaidsToFriends();
                        }
                        else SRDotDX.util.extEcho('Wrong syntax. Usage: /fs <raid link>');
                        return false;
                    });
                    holodeck.addDotdChatCommand('room', function (deck, text) {
                        var cmd = text.split(' ');
                        if (cmd[0] == '/room' && cmd[1]) {
                            SRDotDX.gui.gotoRoom(cmd[1]);
                        }
                        else SRDotDX.gui.gotoRoom(0);
                        return false;
                    });
                    holodeck.addDotdChatCommand('ijoin,join', function (deck, text) {
                        var mode = text.charAt(1) == 'j', joinStr = '';
                        if (mode) joinStr = text.slice(6), SRDotDX.gui.quickImportAndJoin(joinStr);
                        else joinStr = text.slice(7), SRDotDX.gui.quickImportAndJoin(joinStr, true);
                        return false;
                    });
                    holodeck.addDotdChatCommand('wiki', function (deck, text) {
                        var p = /^\/wiki (.*?)$/i.exec(text);
                        if (p) {
                            window.open('http://dotd.wikia.com/wiki/Special:Search?search=' + p[1]);
                            SRDotDX.util.extEcho('Wiki search opened.');
                        }
                        else SRDotDX.util.extEcho('<b>/wiki</b>: Invalid parameters specified');
                        return false;
                    });
                    holodeck.addDotdChatCommand('guide,manual', function (deck, text) {
                        window.open('https://docs.google.com/document/d/14X0WhnJrISQbxdfQv_scJbG1sUyXdE2g4iMfHmLM0E0/edit');
                        SRDotDX.util.extEcho('Script guide opened in new tab/window.');
                        return false;
                    });
                    holodeck.addDotdChatCommand('slap', function (deck, text) {
                        var p = /^\/slap (.*?)$/i.exec(text);
                        if (p) {
                            var num = Math.round((Math.random() * (SRDotDX.slapSentences.length - 1)));
                            SRDotDX.gui.FPXdoWork('*' + SRDotDX.slapSentences[num].replace(/<nick>/g, p[1]) + '*');
                        }
                        else SRDotDX.util.extEcho('<b>/slap</b>: Invalid parameters specified');
                        return false;
                    });
                    holodeck.addDotdChatCommand('sh', function (deck, text) {
                        var p = /^\/sh (.*?)$/i.exec(text);
                        if (p) {
                            var fnd1 = p[1].toLowerCase(), fnd2 = p[1].length, found = false, sho;
                            for (i in SRDotDX.shortcuts) {
                                if (SRDotDX.shortcuts.hasOwnProperty(i)) {
                                    sho = SRDotDX.shortcuts[i];
                                    if (sho.n.toLowerCase().indexOf(fnd1) > -1 && sho.n.length == fnd2) {
                                        SRDotDX.util.extEcho('<b>' + sho.bn + '</b>: ' + sho.desc);
                                        found = true;
                                    }
                                }
                            }
                            if (!found) SRDotDX.util.extEcho('<b>/sh</b>: Shortcut not found in db');
                        }
                        else SRDotDX.util.extEcho('<b>/sh</b>: No parameters specified');
                        return false;
                    });
                    holodeck.addDotdChatCommand('perc', function (deck, text) {
                        var bok = text.indexOf('bok', 4);
                        var cwp = text.indexOf('cwp', 4);
                        var empty = text.length < 6;
                        var output = "";
                        if (bok >= 0 || empty) output = "<b>Book of Knowledge Perc. Tiers:</b><br>\
					1 – 3999: Brown/Grey<br>\
					4000 – 5999: Brown/Grey/Green<br>\
					6000 – 9999: Grey/Green<br>\
					10000 – 13999: Grey/Green/Blue<br>\
					14000 – 15999: Green/Blue<br>\
					16000 – 17999: Green/Blue/Purple<br>\
					18000 – 21999: Blue/Purple<br>\
					22000 – 23999: Blue/Purple/Orange<br>\
					24000 – 29999: Purple/Orange<br>\
					30000 - 32999: Orange<br>\
					33000 - 35999: Orange/Red (more orange)<br>\
					36000 - 49999: Orange/Red (more red)<br>\
					50000 - 69999: Orange/Red (even more red)<br>\
					70000+ : Red";
                        if (empty) output += "<br>\
					-------------------------------------------------<br>";
                        if (cwp >= 0 || empty) output += "<b>Clockwork Parts Perc. Tiers:</b><br>\
					1-1999: 10x Perf. Clockwork Part<br>\
                    2000-3999: 25x Perf. Clockwork Part<br>\
                    4000-5999: 40x Perf. Clockwork Part<br>\
                    6000-7999: 55x Perf. Clockwork Part<br>\
                    8000-9999: 70x Perf. Clockwork Part<br>\
                    10000-11999: 85x Perf. Clockwork Part<br>\
                    12000-13999: 100x Perf. Clockwork Part<br>\
                    14000-15999: 115x Perf. Clockwork Part<br>\
                    16000-17999: 130x Perf. Clockwork Part<br>\
                    18000-19999: 145x Perf. Clockwork Part<br>\
                    20000-21999: 160x Perf. Clockwork Part<br>\
                    22000-23999: 175x Perf. Clockwork Part<br>\
                    24000-25999: 190x Perf. Clockwork Part<br>\
                    26000-27999: 205x Perf. Clockwork Part<br>\
                    28000-29999: 220x Perf. Clockwork Part<br>\
                    30000-31999: 235x Perf. Clockwork Part<br>\
                    32000-33999: ???x Perf. Clockwork Part<br>\
                    34000-35999: ???x Perf. Clockwork Part<br>\
                    36000+ : 260x Perf. Clockwork Part";
                        SRDotDX.util.extEcho(output);
                        return false;
                    });
                    holodeck.addDotdChatCommand('citadel', function (deck, text) {
                        SRDotDX.util.extEcho("Barrack Book = Grune N Quest<br>\
                Barrack Scroll 1 = Hydra NM Raid<br>\
                Barrack Scroll 2 = Research Library book<br>\
                Barrack Scroll 3 = Rhalmarius the Despoiler NM Raid/Crafting<br>\
                Barrack Scroll 4 = The New Claw (World Raid) craft<br>\
                Barrack Scroll 5 = Burbata the Spine-Crusher NM Raid<br>\
                Barrack Scroll 6 = Temp loot from Hargamesh/Grimsly NM Raids<br>\
                Barrack Scroll 7 = The Baroness NM Quest<br>\
                Barrack Scroll 8 = Crafting from Imryx the Incinerator NM Raid<br>\
                Armorsmith Book = Lurking Horror N Quest<br>\
                Armorsmith Scroll 1 = Nalagarst NM Raid<br>\
                Armorsmith Scroll 2 = Research Library 1<br>\
                Armorsmith Scroll 3 = Dragon's Lair NM Raid<br>\
                Armorsmith Scroll 4 = Temp loot from Rift/Sisters NM Raid<br>\
                Armorsmith Scroll 5 = Baroness NM Raid<br>\
                Weaponsmith Book = Erebus N Quest<br>\
                Weaponsmith Scroll 1 = Baroness NM Raid<br>\
                Weaponsmith Scroll 2 = Research Library 1<br>\
                Weaponsmith Scroll 3 = Dragon's Lair NM Raid<br>\
                Weaponsmith Scroll 4 = Temp loot from Mardachus NM Raid<br>\
                Weaponsmith Scroll 5 = Warlord Zugen NM Raid<br>\
                Alchemist Book = Nalagarst N Quest<br>\
                Alchemist Scroll 1 = Kalaxia N Quest<br>\
                Alchemist Scroll 2 = Research Library 5<br>\
                Alchemist Scroll 3 = The New Claw (World Raid)<br>\
                Alchemist Scroll 4 = Teremarthu NM Raid<br>\
                Research Book = Bellarius N Quest<br>\
                Research Library Scroll 1 = Mardachus NM Raid<br>\
                Research Library Scroll 2 = Valanazes NM Raid<br>\
                Research Library Scroll 3 = Teremarthu NM Raid<br>\
                Research Library Scroll 4 = Z'ralk'thalat NM Raid<br>\
                Research Library Scroll 5 = Simulacrum of Dahrizon NM Quest<br>\
                Research Library Scroll 6 = Count Siculus' Phantom N Quest<br>\
                Pet Emporium Book = Count Siculus' Phantom N Quest<br>\
                Pet Emporium Scroll 1 = Research Library 4<br>\
                Pet Emporium Scroll 2 = Cannibal Barbarians NM Raid<br>\
                Stables Book = Valanazes N Quest<br>\
                Stables Scroll 1 = Frog-men Assassins NM Raid<br>\
                Stables Scroll 2 = Research Library 2<br>\
                Stables Scroll 3 = Mount Chest<br>\
                Training Ground Book = Teremarthu N Quest<br>\
                Training Ground Scroll 1 = Research Library 3<br>\
                Training Ground Scroll 2 = Temporary loot from Z7 NM Raids<br>\
                Training Ground Scroll 3 = Invasion Rank: Wyrm-Commander<br>\
                Training Ground Scroll 4 = Invasion Rank: Chief Battlefield Overseer<br>\
                Training Ground Scroll 5 = Count Siculus' Phantom L&NM Raid<br>\
                Training Ground Scroll 6 = Thaltherda the Sea-Slitherer NM Raid<br>\
                Wizard's Tower Book = Ruzzik the Slayer N Quest<br>\
                Wizard's Tower Scroll 1 = Salome the Seductress NM Raid<br>\
                Wizard's Tower Scroll 2 = Kalaxia the Far-Seer NM Raid<br>\
                Wizard's Tower Scroll 3 = Yydian's Sanctuary NM Raid<br>\
                Wizard's Tower Scroll 4 = Drulcharus NM Raid<br>\
                Jeweler Book = Krugnug N Quest<br>\
                Jeweler Scroll 1 = Thaltherda the Sea-Slitherer NM Raid<br>\
                Jeweler Scroll 2 = Crafting (General/Events)<br>\
                Jeweler Scroll 3 = Spectral Erebus Raid/Crafting");
                        return false;
                    });
                    holodeck.addDotdChatCommand('camp', function (deck, text) {
                        var p = text.split(' '), msg = '';
                        if (p[1] && SRDotDX.camps.hasOwnProperty(p[1].toLowerCase())) {
                            var camp = SRDotDX.camps[p[1].toLowerCase()];
                            var num = camp.tiers[0].length;
                            msg += '<a class="title" target="_blank" href="http://dotd.wikia.com/wiki/' + camp.name.replace(/ /g, '_').replace(/'/g, "%27") + '_(Campaign)">' + camp.name + '</a>';
                            msg += '<br>Camp time: N ' + camp.time[0] + 'h, H ' + camp.time[1] + 'h<br>Prefixes: ' + camp.prefixes;
                            msg += '<br><table class="camps"><thead><tr><th>Dmg</th><th>CU</th>' + (num > 3 ? '<th>R</th><th class="tb">E</th>' : '<th class="tb">RE</th>');
                            for (var i = 0; i < camp.numNodes; i++) {
                                msg += '<th>' + camp[camp.nodes[i]].sname + '</th>';
                            }
                            msg += '</tr></thead><tbody>';
                            if (num > 3) {
                                for (i = 0; i < camp.tiers.length; i++) {
                                    msg += '<tr class="head"><td class="ep">' + SRDotDX.util.getShortNumMil(camp.tiers[i][0]) + '</td><td>' + camp.tiers[i][1] + '</td><td>' + camp.tiers[i][2] + '</td><td class="tb">' + camp.tiers[i][3] + '</td>';
                                    for (var j = 0; j < camp.numNodes; j++) msg += camp[camp.nodes[j]].tiers[i] ? '<td class="mark">&#x2713;</td>' : '<td></td>';
                                }
                            }
                            else {
                                for (i = 0; i < camp.tiers.length; i++) {
                                    msg += '<tr class="head"><td class="ep">' + SRDotDX.util.getShortNumMil(camp.tiers[i][0]) + '</td><td>' + camp.tiers[i][1] + '</td><td class="tb">' + camp.tiers[i][2] + '</td>';
                                    for (var j = 0; j < camp.numNodes; j++) msg += camp[camp.nodes[j]].tiers[i] ? '<td class="mark">&#x2713;</td>' : '<td></td>';
                                }
                            }
                            msg += '</tbody></table>';
                            var node;
                            for (i = 0; i < camp.numNodes; i++) {
                                node = camp[camp.nodes[i]];
                                msg += (i ? '<br>' : '') + node.sname + ' &mdash; ' + node.name + ', FS: N ' + SRDotDX.util.getShortNumMil(node.hp[0] / node.size) + ' / H ' + SRDotDX.util.getShortNumMil(node.hp[1] / node.size);
                            }
                            SRDotDX.util.extEcho(msg);
                        }
                        else SRDotDX.util.extEcho('No campaigns found matching "' + (p[1] ? p[1] : '') + '". Valid values are: ' + Object.keys(SRDotDX.camps).join(', '));
                        return false;
                    });
                    holodeck.addDotdChatCommand('raid,rd', function (deck, text) {
                        //var p = /^\/raid (.*?)(?: ([1-6]))?$/i.exec(text);
                        var p = text.split(' ');
                        if (p[1]) {
                            var msg = '', i;
                            var diff = !isNaN(p[2]) ? p[2] - 1 : -1;
                            var fnd = p[1].toLowerCase();
                            for (i in SRDotDX.raids) {
                                if (SRDotDX.raids.hasOwnProperty(i)) {
                                    var raid = SRDotDX.raids[i];
                                    if (raid.name.toLowerCase().indexOf(fnd) > -1) {
                                        msg += '<a class="title" target="_blank" href="http://dotd.wikia.com/wiki/' + raid.name.replace(/ /g, '_').replace(/'/g, "%27") + '_(Raid)">' + raid.name + '</a>';
                                        msg += '<br>' + (raid.type == '' ? '' : raid.type + '<br>') + SRDotDX.raidSizes[raid.size].name + ' Raid (' + (raid.size == 101 ? 100 : raid.size) + ' slots) | ' + raid.duration + 'h';
                                        msg += '<br><table class="raids">';
                                        switch (diff) {
                                            case 0:
                                                msg += '<colgroup><col><col class="selected"><col><col><col></colgroup>';
                                                break;
                                            case 1:
                                                msg += '<colgroup><col><col><col class="selected"><col><col></colgroup>';
                                                break;
                                            case 2:
                                                msg += '<colgroup><col><col><col><col class="selected"><col></colgroup>';
                                                break;
                                            case 3:
                                                msg += '<colgroup><col><col><col><col><col class="selected"></colgroup>';
                                                break;
                                            default:
                                                msg += '<colgroup><col><col><col><col><col></colgroup>';
                                                break;
                                        }
                                        var size = raid.size < 15 ? 10 : raid.size, fs = [], j = 4;
                                        while (j--) fs[j] = raid.health[j] / (raid.size == 101 ? 100 : raid.size);
                                        msg += '<thead> \
                                            <tr><th style="border:0; background-color: transparent;"></th><th>Normal</th><th>Hard</th><th>Legend</th><th>NMare</th></tr> \
                                        </thead> \
                                        <tbody> \
                                            <tr class="head"><td class="ep">HP</td><td>' + SRDotDX.util.getShortNum(raid.health[0]) + '</td><td>' + SRDotDX.util.getShortNum(raid.health[1]) + '</td><td>' + SRDotDX.util.getShortNum(raid.health[2]) + '</td><td>' + SRDotDX.util.getShortNum(raid.health[3]) + '</td></tr> \
                                            <tr class="head"><td class="ep">FS</td><td>' + SRDotDX.util.getShortNum(fs[0]) + '</td><td>' + SRDotDX.util.getShortNum(fs[1]) + '</td><td>' + SRDotDX.util.getShortNum(fs[2]) + '</td><td>' + SRDotDX.util.getShortNum(fs[3]) + '</td></tr> \
                                            <tr class="head split"><td class="ep">AP</td><td>&mdash;</td><td>&mdash;</td><td>&mdash;</td><td>' + SRDotDX.util.getShortNum(fs[3] / 2.0) + '</td></tr>';
                                        if (typeof raid.lt != 'object' && raid.id != 'rhalmarius_the_despoiler' && raid.id != 'grundus') {
                                            var ratio = SRDotDX.raidSizes[size].ratios;
                                            var ename = SRDotDX.raidSizes[size].enames;
                                            for (j = 0; j < ratio.length; j++) {
                                                if (ratio[j] > 0) msg += '<tr><td class="ep">' + ename[j] + '</td><td>' + SRDotDX.util.getShortNum(fs[0] * ratio[j]) + '</td><td>' + SRDotDX.util.getShortNum(fs[1] * ratio[j]) + '</td><td>' + SRDotDX.util.getShortNum(fs[2] * ratio[j]) + '</td><td>' + SRDotDX.util.getShortNum(fs[3] * ratio[j]) + '</td></tr>';
                                            }
                                        }
                                        else if (typeof raid.lt == 'object') {
                                            var elen = SRDotDX.lootTiers[raid.lt[0]].tiers;
                                            var eleh = SRDotDX.lootTiers[raid.lt[1]].tiers;
                                            var elel = SRDotDX.lootTiers[raid.lt[2]].tiers;
                                            var elenm = SRDotDX.lootTiers[raid.lt[3]].tiers;
                                            var epics = SRDotDX.lootTiers[raid.lt[0]].epics;
                                            var best = SRDotDX.lootTiers[raid.lt[0]].best;
                                            var e = SRDotDX.lootTiers[raid.lt[0]].e ? 'E' : '';
                                            for (j = 0; j < epics.length; j++) {
                                                msg += '<tr' + (j == best ? ' class="best"' : '') + '><td class="ep">' + epics[j] + e + '</td><td>' + elen[j] + '</td><td>' + eleh[j] + '</td><td>' + elel[j] + '</td><td>' + elenm[j] + '</td></tr>';
                                            }
                                        }
                                        msg += '</tbody></table>';
                                    }
                                }
                            }
                            if (msg != '') SRDotDX.util.extEcho(msg);
                            else SRDotDX.util.extEcho('No raids found matching: ' + p[1]);
                        }
                        else SRDotDX.util.extEcho('<b>/raid</b>: Invalid parameters specified (<a href="#" onclick="SRDotDX.gui.help(\'raid\')">help</a>)');
                        return false;
                    });
                    window.onbeforeunload = function () {
                        SRDotDX.config.save(false)
                    };
                    SRDotDX.fails = 0;
                    console.log('[DotDX] Core loaded. Loading user interface...');
                    SRDotDX.gui.load();
                    SRDotDX.request.init();
                    setTimeout(function () {
                        delete SRDotDX.load
                    }, 100);
                }
                else if (++SRDotDX.fails < 20) {
                    console.log('[DotDX] Missing needed Kong resources (try:' + SRDotDX.fails + '), retrying in 0.75 second...');
                    setTimeout(SRDotDX.load, 750);
                }
                else {
                    console.log('[DotDX] Unable to locate required Kong resources. Loading aborted');
                    setTimeout(function () {
                        delete SRDotDX
                    }, 1);
                }
            }
        };
        console.log('[DotDX] Initialized. Checking for needed Kong resources ...');
        SRDotDX.load();
    }

    console.log('[DotDX] Initializing ...');
    if (window.top == window.self) {
    document.addEventListener("dotd.req", function (param) {
        var p = JSON.parse(param.data);
        if (p.wrappedJSObject) p = p.wrappedJSObject;
        p.callback = function (e, r) {
            this.onload = null;
            this.onerror = null;
            this.ontimeout = null;
            this.event = e;
            this.status = r.status;
            this.responseText = r.responseText;
            var c = document.createEvent("MessageEvent");
            if (c.initMessageEvent) c.initMessageEvent(this.eventName, false, false, JSON.stringify(this), document.location.protocol + "//" + document.location.hostname, 1, unsafeWindow, null);
            else c = new MessageEvent(this.eventName, {"origin": document.location.protocol + "//" + document.location.hostname, "lastEventId": 1, "source": unsafeWindow, "data": JSON.stringify(this)});
            document.dispatchEvent(c);
        };
        p.onload = p.callback.bind(p, "load");
        p.onerror = p.callback.bind(p, "error");
        p.ontimeout = p.callback.bind(p, "timeout");
        setTimeout(function () {
            GM_xmlhttpRequest(p)
        }, 1);
    });
    var scr = document.createElement('script');
    scr.appendChild(document.createTextNode('(' + main + ')()'));
    document.head.appendChild(scr);
    }
}
else if(window.location.host == '50.18.191.15') {
    window.onmessage = function(e){
        var c = e.data.split('#');
        if(c[0] == 'dotdx.save') GM_setValue('DotDXext', c[1]);
        console.log("[DotDX] Saved data: "+c[1]);
        var conf = JSON.parse(c[1]);
        if(conf.removeWChat) {
            document.getElementById('swfdiv').parentNode.style.left = '0px';
            var remdiv = document.getElementById('chatdiv').parentNode;
            remdiv.parentNode.removeChild(remdiv);
        }
        else if(conf.leftWChat && !conf.hideWChat) {
            if(document.getElementById('chatdiv') !== null) document.getElementById('chatdiv').parentNode.style.left = '0px';
            document.getElementById('swfdiv').parentNode.style.left = '265px';
        }
        else {
            if(document.getElementById('chatdiv') !== null) document.getElementById('chatdiv').parentNode.style.left = '760px';
            document.getElementById('swfdiv').parentNode.style.left = '0px';
        }
    };
    if (typeof GM_getValue("DotDXext") != 'string') GM_setValue("DotDXext",JSON.stringify({'removeWChat':false,'leftWChat':false,'hideWChat':false}));
    window.postMessage('dotdx.init#'+GM_getValue('DotDXext'),'*');
    console.log("[DotDX] Injected code into gameIFrame");
}