MoxxiMod

one click at a time

当前为 2022-07-12 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         MoxxiMod
// @namespace    https://studiomoxxi.com/
// @description  one click at a time
// @author       Ben
// @match        *.outwar.com/*
// @version      4.9
// @grant        GM_xmlhttpRequest
// @license      MIT
// @grant        GM_getResourceText
// @grant        GM_addStyle
// @require      http://code.jquery.com/jquery-3.6.0.min.js
// ==/UserScript==

// MOXXI VISION

if (document.URL.indexOf("earnfreepoints") != -1 ) {
if (location.protocol !== 'https:') {
    location.replace(`https:${location.href.substring(location.protocol.length)}`);}

GM_addStyle ( `
#content-header-row > div.outer{display:none !important;}
`)};

if (document.URL.indexOf("earnfreepoints") != -1 ) {

if (location.protocol !== 'https:') {
    location.replace(`https:${location.href.substring(location.protocol.length)}`);}

var selectedID = document.querySelector("body").outerHTML.match(/value="(.*)" selected/)

fetch("/myaccount")
.then(res => res.text())
.then((responseText) => {
const doc = new DOMParser().parseFromString(responseText, 'text/html');
const chars = doc.querySelector("#cal");
var content = "<div class=POOP>"+chars.innerHTML+"</div>"

GM_addStyle ( `
#zero-config > tbody > tr > td:nth-child(1){display: none !important;}
#zero-config > tbody > tr > td:nth-child(3){display: none !important;}
#zero-config > tbody > tr > td:nth-child(4){display: none !important;}
#zero-config > tbody > tr > td:nth-child(5){display: none !important;}
#zero-config > tbody > tr > td:nth-child(6){display: none !important;}
#zero-config > tbody > tr > td:nth-child(7){display: none !important;}
#zero-config > tbody > tr > td:nth-child(8){display: none !important;}
#zero-config > tbody > tr > td:nth-child(9){display: none !important;}
#zero-config > tbody > tr > td:nth-child(10){display: none !important;}
#zero-config > tbody > tr > td:nth-child(11){display: none !important;}
#zero-config > thead > tr > th:nth-child(11){display: none !important;}
#zero-config > thead{background: #0F0F0F}
#zero-config > tbody > tr{border-bottom:1px SOLID !important;}
#zero-config img[src*="Message.png"] {display: none !important;}
#zero-config img[src*="Attacked.png"] {display: none !important;}
#zero-config img[src*="Trade.png"] {display: none !important;}
#zero-config > tbody{width:100% !important;}
#zero-config > thead{width:100% !important;}
.outer {width:100%;height:700px;overflow-x:scroll;overflow-y:scroll;background:#0F0F0F;}
.rgahealth > tbody > tr > td {padding-top: 2px !important;padding-bottom: 1px !important;padding-right: 15px !important;padding-left: 5px !important;white-space: pre !important;}
#zero-config > tbody > tr {border: 1px SOLID #202020 !important;}
#zero-config > thead > tr > th:nth-child(1),#zero-config > tbody > tr > td:nth-child(2) {position: sticky;display: block;background:#0F0F0F;left: 0;z-index: 2;border:3px #0F0F0F SOLID !important; margin-left: -1px !important;left: -1px !important;}
#zero-config > thead > tr > td > a > font,#zero-config > thead > tr > td > font{font-weight: bold;font-size:13px}
#zero-config > thead > tr > td{font-weight: bold;font-size:13px}
#zero-config > thead > tr > th,#zero-config > thead > tr > td{padding-right:15px !important; white-space: pre !important;}
`);

setTimeout(function() {
$('#zero-config > thead > tr > th:nth-child(1)').html('CHARACTER');
$('#zero-config > thead > tr > th:nth-child(2)').html(`<a onmouseover="statspopup(event,'char level')" onmouseout="kill\(\)"><font color=#D4D4D4>LVL</a>`);
$('#zero-config > thead > tr > th:nth-child(3)').html(`<a onmouseover="statspopup(event,'number of turns until rage caps<br>mouseover to see circ status')" onmouseout="kill\(\)"><font color=#D4D4D4>RAGE FILLED</a>`);
$('#zero-config > thead > tr > th:nth-child(4)').html(`<a onmouseover="statspopup(event,'maximum rage')" onmouseout="kill\(\)"><font color=#D4D4D4>MAX RAGE</a>`);
$('#zero-config > thead > tr > th:nth-child(5)').html(`<a onmouseover="statspopup(event,'growth today')" onmouseout="kill\(\)"><font color=#D4D4D4>TODAY</a>`);
$('#zero-config > thead > tr > th:nth-child(6)').html(`<a onmouseover="statspopup(event,'growth yesterday')" onmouseout="kill\(\)"><font color=#D4D4D4>YESTERDAY</a>`);
$('#zero-config > thead > tr > th:nth-child(7)').html(`<a onmouseover="statspopup(event,'experience to level')" onmouseout="kill\(\)"><font color=#D4D4D4>EXP TO LEVEL</a>`);
$('#zero-config > thead > tr > th:nth-child(8)').html(`<a onmouseover="statspopup(event,'strength')" onmouseout="kill\(\)"><font color=#D4D4D4>STR</a>`);
$('#zero-config > thead > tr > th:nth-child(9)').html(`<a onmouseover="statspopup(event,'number of items equipped<br>will turn red if fewer than 10')" onmouseout="kill\(\)"><font color=#D4D4D4>ITEMS</a>`);
$('#zero-config > thead > tr > th:nth-child(10)').html(`<a onmouseover="statspopup(event,'equipped chaos gem')" onmouseout="kill\(\)"><font color=#D4D4D4>GEM</a>`);

function insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

let header = document.querySelector("#zero-config > thead > tr");

let hdTD12 = document.createElement('td');
hdTD12.innerHTML = `<a onmouseover="statspopup(event,'equipped rune')" onmouseout="kill\(\)"><font color=#D4D4D4>RUNE</a>`;
insertAfter(hdTD12, header.lastElementChild);
let hdTD4 = document.createElement('td');
hdTD4.innerHTML = `<a onmouseover="statspopup(event,'equipped badge')" onmouseout="kill\(\)"><font color=#D4D4D4>BADGE</a>`;
insertAfter(hdTD4, header.lastElementChild);
let hdTD1 = document.createElement('td');
hdTD1.innerHTML = `<a onmouseover="statspopup(event,'hover booster to see time remaining')" onmouseout="kill\(\)"><font color=#D4D4D4>BOOSTER</a>`;
insertAfter(hdTD1, header.lastElementChild);
let hdTD3 = document.createElement('td');
hdTD3.innerHTML = `<a onmouseover="statspopup(event,'char power')" onmouseout="kill\(\)"><font color=#D4D4D4>POWER</a>`;
insertAfter(hdTD3, header.lastElementChild);
let hdTD2 = document.createElement('td');
hdTD2.innerHTML = `<a onmouseover="statspopup(event,'elemental damage')" onmouseout="kill\(\)"><font color=#D4D4D4>ELE</a>`;
insertAfter(hdTD2, header.lastElementChild);
let hdTD6 = document.createElement('td');
hdTD6.innerHTML = `<a onmouseover="statspopup(event,'chaos damage')" onmouseout="kill\(\)"><font color=#D4D4D4>CHAOS</a>`;
insertAfter(hdTD6, header.lastElementChild);
let hdTD7 = document.createElement('td');
hdTD7.innerHTML = `<a onmouseover="statspopup(event,'fire resist')" onmouseout="kill\(\)"><font color=#FF0000>RESIST</font>`;
insertAfter(hdTD7, header.lastElementChild);
let hdTD8 = document.createElement('td');
hdTD8.innerHTML = `<a onmouseover="statspopup(event,'arcane resist')" onmouseout="kill\(\)"><font color=FFFF00>RESIST</font>`;
insertAfter(hdTD8, header.lastElementChild);
let hdTD9 = document.createElement('td');
hdTD9.innerHTML = `<a onmouseover="statspopup(event,'shadow resist')" onmouseout="kill\(\)"><font color=7e01bc>RESIST</font>`;
insertAfter(hdTD9, header.lastElementChild);
let hdTD10 = document.createElement('td');
hdTD10.innerHTML = `<a onmouseover="statspopup(event,'holy resist')" onmouseout="kill\(\)"><font color=00FFFF>RESIST</font>`;
insertAfter(hdTD10, header.lastElementChild);
let hdTD11 = document.createElement('td');
hdTD11.innerHTML = `<a onmouseover="statspopup(event,'kinetic resist')" onmouseout="kill\(\)"><font color=00FF00>RESIST</font>`;
insertAfter(hdTD11, header.lastElementChild);
let hdTD5 = document.createElement('td');
hdTD5.innerHTML = `<a onmouseover="statspopup(event,'wilderness level')" onmouseout="kill\(\)"><font color=#D4D4D4>WLDR</a>`;
insertAfter(hdTD5, header.lastElementChild);
let hdTD13 = document.createElement('td');
hdTD13.innerHTML = `<a onmouseover="statspopup(event,'amulet of achievement')" onmouseout="kill\(\)"><font color=#D4D4D4>AMLT</a>`;
insertAfter(hdTD13, header.lastElementChild);
let hdTD14 = document.createElement('td');
hdTD14.innerHTML = `<a onmouseover="statspopup(event,'elemental fuser')" onmouseout="kill\(\)"><font color=#D4D4D4>FUSR</a>`;
insertAfter(hdTD14, header.lastElementChild);
let hdTD15 = document.createElement('td');
hdTD15.innerHTML = `<a onmouseover="statspopup(event,'badge reputation')" onmouseout="kill\(\)"><font color=#D4D4D4>REPS</a>`;
insertAfter(hdTD15, header.lastElementChild);
let hdTD16 = document.createElement('td');
hdTD16.innerHTML = `<a onmouseover="statspopup(event,'chaos ore')" onmouseout="kill\(\)"><font color=#D4D4D4>ORES</a>`;
insertAfter(hdTD16, header.lastElementChild);
let hdTD17 = document.createElement('td');
hdTD17.innerHTML = `<a onmouseover="statspopup(event,'quest shard')" onmouseout="kill\(\)"><font color=#D4D4D4>SHRD</a>`;
insertAfter(hdTD17, header.lastElementChild);
let hdTD0 = document.createElement('td');
hdTD0.innerHTML = `<a onmouseover="statspopup(event,'active skills')" onmouseout="kill\(\)"><font color=#D4D4D4>SKILLS</a>`;
insertAfter(hdTD0, header.lastElementChild);
let hdTD18 = document.createElement('td');
hdTD18.innerHTML = `BACKPACK`;
insertAfter(hdTD18, header.lastElementChild);

let hdTD19 = document.createElement('td');
hdTD19.innerHTML = `<a onmouseover="statspopup(event,'will display skill resets, totems, add aug and remove aug if in backpack')" onmouseout="kill\(\)"><font color=#D4D4D4>UTILITY</a>`;
insertAfter(hdTD19, header.lastElementChild);

var charsTable = document.querySelector("#zero-config");
var charsTableRows = charsTable.rows.length;

for (let rownum = 1; rownum < charsTableRows; rownum++) {

var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&amp;serverid=.*<\/a>/g,"")

fetch("skills_info.php?suid="+charid+"&id=3008")
   .then(response => response.text())
   .then((response) => {

var circReady = response.match(/<input type="submit" name="cast" class="btn btn-primary" value="Cast Skill">/i)
var circCharging = response.match(/<b>This skill is recharging\. (.*) minutes remaining\.<\/b>/i)
var circUntrained = response.match(/<b>You have not learned this skill yet<\/b>/i)

var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&amp;serverid=.*<\/a>/g,"")

fetch("ajax/backpackcontents.php?suid="+charid+"&tab=regular")
   .then(response => response.text())
   .then((response) => {

var backpack = response.match(/<span id="backpackmaxval" data-maxval="(.*)" data-isover=".*" data-curitemct="(.*)"><\/span>/i)
var bpItems = parseInt(backpack[2])
var bpCap = parseInt(backpack[1])

var bpMax = '';
if (bpItems > bpCap)
bpMax = "<font color=#FF0000>"
if (bpCap > bpItems)
bpMax = "<font color=#FFFFFF>"
if (bpCap == bpItems)
bpMax = "<font color=#FF0000>"

var addaug = response.match(/addaugs\.jpg/i)
var totem = response.match(/rechargetotem\.jpg/i)
var skillitem = response.match(/skillitem\.jpg/i)
var removeaug = response.match(/AugmentRemover\.gif/i)

var utility = '';
if (addaug != null)
utility += "<img src=images/addaugs.jpg height=25px width=25px> ";
if (totem != null)
utility += "<img src=images/rechargetotem.jpg height=25px width=25px> ";
if (skillitem != null)
utility += "<img src=images/skillitem.jpg height=25px width=25px> ";
if (removeaug != null)
utility += "<img src=images/items/AugmentRemover.gif height=25px width=25px> ";
if (utility == "")
utility = "none"

var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&amp;serverid=.*<\/a>/g,"")

fetch("ajax/backpackcontents.php?suid="+charid+"&tab=quest")
   .then(response => response.text())
   .then((response) => {

var amuletCnt = response.match(/data-name="Amulet of Achievement" data-itemqty="(.*)" data-itemid/i) || 0
var repCnt = response.match(/data-name="Badge Reputation" data-itemqty="(.*)" data-itemid/i) || 0
var oreCnt = response.match(/data-name="Chaos Ore" data-itemqty="(.*)" data-itemid/i) || 0
var shardCnt = response.match(/data-name="Quest Shard" data-itemqty="(.*)" data-itemid/i) || 0
var fuserCnt = response.match(/data-name="Elemental Fuser" data-itemqty="(.*)" data-itemid/i) || 0

var repCnt2 = '';
if (repCnt[1] >= 14)
repCnt2 = "<font color=00CC00>"+parseInt(repCnt[1])+"</font>"
if (repCnt[1] <= 15)
repCnt2 = parseInt(repCnt[1])
if (repCnt[1] == undefined)
repCnt2 = 0

var oreCnt2 = '';
if (oreCnt[1] >= 0)
oreCnt2 = "<font color=f441be>"+parseInt(oreCnt[1])+"</font>"
if (oreCnt[1] == 0)
oreCnt2 = parseInt(oreCnt[1])
if (oreCnt[1] == undefined)
oreCnt2 = 0

var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&amp;serverid=.*<\/a>/g,"")

fetch("home?suid="+charid)
   .then(response => response.text())
   .then((response) => {

var fireRes = response.match(/onmouseout="kill\(\)">Fire Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i);
var arcaneRes = response.match(/onmouseout="kill\(\)">Arcane Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i);
var shadowRes = response.match(/onmouseout="kill\(\)">Shadow Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i);
var holyRes = response.match(/onmouseout="kill\(\)">Holy Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i);
var kineticRes = response.match(/onmouseout="kill\(\)">Kinetic Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i);

var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&amp;serverid=.*<\/a>/g,"")

fetch("profile?suid="+charid)
   .then(response => response.text())
   .then((response) => {

var charlvl = response.match(/<font size="2">Level ([0-9]+) (.*)<\/font>/i)

var charpower = response.match(/TOTAL POWER.*[\n\r].*<font size="2">(.*)<\/font>/i)
var charpower2 = parseInt(charpower[1].replaceAll(",",""))

var charele = response.match(/ELEMENTAL ATTACK.*[\n\r].*<font size="2">(.*)<\/font>/i)
var charchaos = response.match(/CHAOS DAMAGE.*[\n\r].*<font size="2">(.*)<\/font>/i)
var wilderness = response.match(/WILDERNESS LEVEL.*[\n\r].*<font size="2">(.*)<\/font>/i)

var growthyesterday = response.match(/GROWTH YESTERDAY.*[\n\r].*<font size="2">(.*)<\/font>/i)
var growthyesterday2 = parseInt(growthyesterday[1].replaceAll(",",""))
var growthyesterday3 = '';
if (growthyesterday2 < 0)
growthyesterday3 = "<font color=#FF0000>"+growthyesterday2.toLocaleString("en-US")+"</font>"
if (growthyesterday2 > -1)
growthyesterday3 = growthyesterday2.toLocaleString("en-US")

var growthtoday = response.match(/<tr><td><b>Growth Today:<\/b><\/td><td>(.*)<\/td><\/tr>/i)
var growthtoday2 = parseInt(growthtoday[1].replaceAll(",",""))
var growthtoday3 = '';
if (growthtoday2 < 0)
growthtoday3 = "<font color=#FF0000>"+growthtoday2.toLocaleString("en-US")+"</font>"
if (growthtoday2 > -1)
growthtoday3 = growthtoday2.toLocaleString("en-US")

var tolevel = response.match(/to Level:<\/b><\/td><td>(.*)<\/td>/i)
var tolevel2 = parseInt(tolevel[1].replaceAll(",",""))

var strength = response.match(/statspopup\(event,'Strength: (.*)'\)" onmouseout/i)
var strength2 = parseInt(strength[1])

var strength3 = '';
if (strength2 <= 100)
strength3 = "<font color=#FF0000>"+strength2+"</font>"
if (strength2 == 100)
strength3 = strength2

var gem = response.match(/<img style="border:0px;" src="(.*)" onclick.* Chaos.*"/i)
var gem2 = '';
if (gem == null)
gem2 = "none"
if (gem != null)
gem2 = "<img src="+gem[1]+" height=25px width=25px>"
var gem3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Chaos.*">/i)
var gem4 = '';
if (gem3 == null)
gem4 = "><font color=#D4D4D4>"
if (gem3 != null)
gem4 = gem3

var rune = response.match(/<img style="border:0px;" src="(.*)" onclick.* Rune.*"/i)
var rune2 = '';
if (rune == null)
rune2 = "none"
if (rune != null)
rune2 = "<img src="+rune[1]+" height=25px width=25px>"
var rune3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Rune.*">/i)
var rune4 = '';
if (rune3 == null)
rune4 = "><font color=#D4D4D4>"
if (rune3 != null)
rune4 = rune3

var booster = response.match(/<img style="border:0px;" src="(.*)" onclick.* Booster.*"/i)
var booster2 = '';
if (booster == null)
booster2 = "none"
if (booster != null)
booster2 = "<img src="+booster[1]+" height=25px width=25px>"
var booster3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Booster.*">/i)
var booster4 = '';
if (booster3 == null)
booster4 = "><font color=#D4D4D4>"
if (booster3 != null)
booster4 = booster3

var items = response.match(/<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im)
var items2 = (items.toString().match(/img/g) || []).length
var items3 = '';
if (items2 < 10)
items3 = "<font color=#FF0000>"+items2
if (items2 == 10)
items3 = "<font color=#D4D4D4>"+items2

var badge = response.match(/src="(.*)" onclick="window\.location='.*'\)" onmouseout="kill\(\)" alt=".*Badge.*">/i)
var badge2 = '';
if (badge == null)
badge2 = "none"
if (badge != null)
badge2 = "<img src="+badge[1]+" height=25px width=25px>"
var badge3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Badge.*">/i)
var badge4 = '';
if (badge3 == null)
badge4 = "><font color=#D4D4D4>"
if (badge3 != null)
badge4 = badge3

var circCast = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png".*/i);

        const skill0 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/skill_2952\.gif".*/i);
        const skill1 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png".*/i);
        const skill2 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/markdown\.png".*/i);
        const skill3 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/hitman\.png".*/i);
        const skill4 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/haste\.png".*/i);
        const skill5 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/streetsmarts\.png".*/i);
        const skill6 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/onguard\.png".*/i);
        const skill7 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz80\.gif".*/i);
        const skill8 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/killingspree\.png".*/i);
        const skill9 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/masterferoskill\.png".*/i);
        const skill10 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/masterpresskill\.png".*/i);
        const skill11 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/masteraffskill\.png".*/i);
        const skill12 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz82\.jpg".*/i);
        const skill13 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz91\.jpg".*/i);
        const skill14 = response.match(/<img align="absmiddle" border="0" src="\/images\/items\/itemz28\.jpg".*/i);
        const skill15 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/blessingfromabove\.png".*/i);

var circ = '';
if (circCast != null)
circ += "circumspect is cast";
if (circReady != null)
circ += "circumspect is ready!";
if (circCharging != null && circCast == null)
circ += "circumspect is charged in <font color=F8DA00><b>"+(parseInt(circCharging[1])/60).toFixed(2)+"</font></b> hours";
if (circUntrained != null)
circ += "circumspect is not trained";

var rage = response.match(/<span class="toolbar_rage">(.*)<\/span>/i)
var rage2 = parseInt(rage[1].replaceAll(",",""))
var mrage = response.match(/<b>Maximum:<\/b><\/td><td>(.*)<\/td>/i)
var mrage2 = parseInt(mrage[1].replaceAll(",",""))
var rpt = response.match(/<p class="top-rage" onmouseover="statspopup\(event,'<tr><td><b>Per Turn:<\/b><\/td><td>(.*)<\/td>/i)
var rpt2 = parseInt(rpt[1].replaceAll(",",""))
var tomax = Math.ceil((mrage2-rage2)/rpt2)

var tomax2 = '';
if (tomax > 0)
tomax2 = "in "+tomax+" turns"
if (tomax == 0 && circReady != null)
tomax2 = "<font color=F8DA00>in "+tomax+" turns</font>"
if (tomax == 0 && circReady == null)
tomax2 = "<font color=00CC00>in "+tomax+" turns</font>"

        var skills = '';
        if (skill0 != null)
        skills += skill0+' ';
        if (skill1 != null)
        skills += skill1+' ';
        if (skill2 != null)
        skills += skill2+' ';
        if (skill3 != null)
        skills += skill3+' ';
        if (skill4 != null)
        skills += skill4+' ';
        if (skill5 != null)
        skills += skill5+' ';
        if (skill6 != null)
        skills += skill6+' ';
        if (skill7 != null)
        skills += skill7+' ';
        if (skill8 != null)
        skills += skill8+' ';
        if (skill9 != null)
        skills += skill9+' ';
        if (skill10 != null)
        skills += skill10+' ';
        if (skill11 != null)
        skills += skill11+' ';
        if (skill12 != null)
        skills += skill12+' ';
        if (skill13 != null)
        skills += skill13+' ';
        if (skill14 != null)
        skills += skill14+' ';
        if (skill15 != null)
        skills += skill15+' ';
        if (skills == "")
        skills += "none"

let menu = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+")");

let lvlTD = document.createElement('td');
lvlTD.innerHTML = charlvl[1];
insertAfter(lvlTD, menu.lastElementChild);

let rageTD = document.createElement('td');
rageTD.innerHTML = `<a onmouseover="statspopup(event,'`+circ+`')" onmouseout="kill\(\)"><font color=#D4D4D4>`+tomax2
insertAfter(rageTD, menu.lastElementChild);

let mrTD = document.createElement('td');
mrTD.innerHTML = `<a onmouseover="statspopup(event,'max rage')" onmouseout="kill\(\)"><font color=#D4D4D4>`+mrage2.toLocaleString("en-US")
insertAfter(mrTD, menu.lastElementChild);

let todayTD = document.createElement('td');
todayTD.innerHTML = `<a onmouseover="statspopup(event,'growth today')" onmouseout="kill\(\)"><font color=#D4D4D4>`+growthtoday3;
insertAfter(todayTD, menu.lastElementChild);

let yesterdayTD = document.createElement('td');
yesterdayTD.innerHTML = `<a onmouseover="statspopup(event,'growth yesterday')" onmouseout="kill\(\)"><font color=#D4D4D4>`+growthyesterday3;
insertAfter(yesterdayTD, menu.lastElementChild);

let tolvlTD = document.createElement('td');
tolvlTD.innerHTML = `<a onmouseover="statspopup(event,'exp needed to level')" onmouseout="kill\(\)"><font color=#D4D4D4>`+tolevel2.toLocaleString("en-US")
insertAfter(tolvlTD, menu.lastElementChild);

let strengthTD = document.createElement('td');
strengthTD.innerHTML = `<a onmouseover="statspopup(event,'strength')" onmouseout="kill\(\)"><font color=#D4D4D4>`+strength3;
insertAfter(strengthTD, menu.lastElementChild);

let boosterTD = document.createElement('td');
boosterTD.innerHTML = items3+"/10</font>";
insertAfter(boosterTD, menu.lastElementChild);

let suppliesTD = document.createElement('td');
suppliesTD.innerHTML = "<a "+gem4+gem2+"</a>";
insertAfter(suppliesTD, menu.lastElementChild);

let runeTD = document.createElement('td');
runeTD.innerHTML = "<a "+rune4+rune2+"</a>";
insertAfter(runeTD, menu.lastElementChild);

let itemsTD = document.createElement('td');
itemsTD.innerHTML = "<a "+badge4+badge2+"</a>";
insertAfter(itemsTD, menu.lastElementChild);

let gemTD = document.createElement('td');
gemTD.innerHTML = "<a "+booster4+booster2+"</a>";
insertAfter(gemTD, menu.lastElementChild);

let powerTD = document.createElement('td');
powerTD.innerHTML = `<a onmouseover="statspopup(event,'total power')" onmouseout="kill\(\)"><font color=#D4D4D4>`+charpower2.toLocaleString("en-US");
insertAfter(powerTD, menu.lastElementChild);

let eleTD = document.createElement('td');
eleTD.innerHTML = `<a onmouseover="statspopup(event,'total elemental attack')" onmouseout="kill\(\)"><font color=#D4D4D4>`+charele[1];
insertAfter(eleTD, menu.lastElementChild);

let chaosTD = document.createElement('td');
chaosTD.innerHTML = `<a onmouseover="statspopup(event,'chaos attack')" onmouseout="kill\(\)"><font color=#D4D4D4>`+charchaos[1];
insertAfter(chaosTD, menu.lastElementChild);

let fireResTD = document.createElement('td');
fireResTD.innerHTML = `<a onmouseover="statspopup(event,'fire resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(fireRes[1]);
insertAfter(fireResTD, menu.lastElementChild);

let arcaneResTD = document.createElement('td');
arcaneResTD.innerHTML = `<a onmouseover="statspopup(event,'arcane resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(arcaneRes[1]);
insertAfter(arcaneResTD, menu.lastElementChild);

let shadowResTD = document.createElement('td');
shadowResTD.innerHTML = `<a onmouseover="statspopup(event,'shadow resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(shadowRes[1]);
insertAfter(shadowResTD, menu.lastElementChild);

let holyResTD = document.createElement('td');
holyResTD.innerHTML = `<a onmouseover="statspopup(event,'holy resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(holyRes[1]);
insertAfter(holyResTD, menu.lastElementChild);

let kineticResTD = document.createElement('td');
kineticResTD.innerHTML = `<a onmouseover="statspopup(event,'kinetic resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(kineticRes[1]);
insertAfter(kineticResTD, menu.lastElementChild);

let wildTD = document.createElement('td');
wildTD.innerHTML = `<a onmouseover="statspopup(event,'wilderness level')" onmouseout="kill\(\)"><font color=#D4D4D4>`+wilderness[1];
insertAfter(wildTD, menu.lastElementChild);

let ammyTD = document.createElement('td');
ammyTD.innerHTML = amuletCnt[1] ?? "0"
insertAfter(ammyTD, menu.lastElementChild);

let fuserTD = document.createElement('td');
fuserTD.innerHTML = fuserCnt[1] ?? "0"
insertAfter(fuserTD, menu.lastElementChild);

let repTD = document.createElement('td');
repTD.innerHTML = `<a onmouseover="statspopup(event,'badge reputations')" onmouseout="kill\(\)"><font color=#D4D4D4>`+repCnt2
insertAfter(repTD, menu.lastElementChild);

let oreCnt = document.createElement('td');
oreCnt.innerHTML = `<a onmouseover="statspopup(event,'chaos ore')" onmouseout="kill\(\)"><font color=#D4D4D4>`+oreCnt2
insertAfter(oreCnt, menu.lastElementChild);

let shardTD = document.createElement('td');
shardTD.innerHTML = shardCnt[1] ?? "0"
insertAfter(shardTD, menu.lastElementChild);

let skillsTD = document.createElement('td');
skillsTD.innerHTML = skills;
insertAfter(skillsTD, menu.lastElementChild);

let bpTD = document.createElement('td');
bpTD.innerHTML = bpMax+bpItems+" / "+bpCap
insertAfter(bpTD, menu.lastElementChild);

let utilityTD = document.createElement('td');
utilityTD.innerHTML = utility;
insertAfter(utilityTD, menu.lastElementChild);

fetch("profile?suid="+selectedID[1])
.then(res => res.text())
.then((responseText) => {})

document.querySelector("#zero-config").setAttribute('class', 'rgahealth')

})})})})})}}, 1000);

var pageContent =
    `<div id=mvhead><img src=https://studiomoxxi.com/ow_themes/custom_jobs/minimal_01/mv.gif width=80% height=80%></div><p>`+
    `<div class="outer">`+content+`</div><p>`+
    `<div id=beta>MOXXI VISION is in beta. Please report any issues on <a href=https://discord.com/invite/f35cccbWU8?utm_source=Discord%20Widget&utm_medium=Connect>DISCORD</a></div>`

var earnfreepoints = document.querySelector("#content-header-row")

earnfreepoints.innerHTML = pageContent

})}

setTimeout(function() {
if (document.URL.indexOf("earnfreepoints") != -1 ) {
GM_addStyle ( `
#content-header-row > div.outer{display:inline !important;}
#mvhead{display:none !important;}
`)}

}, 32500);

// level chart

if (document.URL.indexOf("home") != -1 ) {

function insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

GM_addStyle ( `
#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div > div:nth-child(7){margin-left:15px !important;}
#expchart{margin-left:0px !important; width:361px !important;height:87px !important;overflow-y: scroll !important}
#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div > div:nth-child(7) > div > div.w-100 > div > table > tbody > tr > td{padding-right:10px !important;}
`);

var levelchart = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div");

var chart = `
<div class="d-flex b-skills">
<div>
</div>
<div class="w-100">
<h5>OUTWAR LEVEL CHART</h5><p>
<table>
<tr><td width="45px">Level</td><td width="125px">Experience</td><td width="35px">SP</td><td width="70px">ATK</td><td width="70x">DEF</td></tr>
</table>
<div class="table-responsive" id="expchart">
<table>
<tr><td width="45px">1</td><td width="125px">0</td><td width="35px">0</td><td width="70px">1</td><td width="70px">3</td></tr>
<tr><td>2</td><td>7</td><td>0</td><td>2</td><td>5</td></tr>
<tr><td>3</td><td>25</td><td>0</td><td>4</td><td>8</td></tr>
<tr><td>4</td><td>50</td><td>0</td><td>6</td><td>12</td></tr>
<tr><td>5</td><td>150</td><td>0</td><td>9</td><td>16</td></tr>
<tr><td>6</td><td>250</td><td>0</td><td>12</td><td>21</td></tr>
<tr><td>7</td><td>450</td><td>0</td><td>15</td><td>27</td></tr>
<tr><td>8</td><td>700</td><td>0</td><td>18</td><td>36</td></tr>
<tr><td>9</td><td>1,000</td><td>0</td><td>22</td><td>44</td></tr>
<tr><td>10</td><td>1,500</td><td>1</td><td>26</td><td>50</td></tr>
<tr><td>11</td><td>3,000</td><td>1</td><td>30</td><td>62</td></tr>
<tr><td>12</td><td>5,000</td><td>2</td><td>36</td><td>71</td></tr>
<tr><td>13</td><td>8,000</td><td>2</td><td>38</td><td>85</td></tr>
<tr><td>14</td><td>12,000</td><td>3</td><td>43</td><td>92</td></tr>
<tr><td>15</td><td>18,000</td><td>3</td><td>48</td><td>107</td></tr>
<tr><td>16</td><td>28,000</td><td>4</td><td>53</td><td>115</td></tr>
<tr><td>17</td><td>40,000</td><td>4</td><td>58</td><td>226</td></tr>
<tr><td>18</td><td>55,000</td><td>5</td><td>63</td><td>231</td></tr>
<tr><td>19</td><td>75,000</td><td>5</td><td>68</td><td>242</td></tr>
<tr><td>20</td><td>100,000</td><td>6</td><td>73</td><td>257</td></tr>
<tr><td>21</td><td>130,000</td><td>6</td><td>78</td><td>264</td></tr>
<tr><td>22</td><td>165,000</td><td>7</td><td>83</td><td>272</td></tr>
<tr><td>23</td><td>215,000</td><td>7</td><td>88</td><td>281</td></tr>
<tr><td>24</td><td>260,000</td><td>8</td><td>95</td><td>290</td></tr>
<tr><td>25</td><td>310,000</td><td>8</td><td>100</td><td>300</td></tr>
<tr><td>26</td><td>370,000</td><td>9</td><td>106</td><td>320</td></tr>
<tr><td>27</td><td>445,000</td><td>9</td><td>112</td><td>335</td></tr>
<tr><td>28</td><td>525,000</td><td>10</td><td>118</td><td>350</td></tr>
<tr><td>29</td><td>625,000</td><td>10</td><td>125</td><td>370</td></tr>
<tr><td>30</td><td>735,000</td><td>11</td><td>132</td><td>392</td></tr>
<tr><td>31</td><td>838,500</td><td>11</td><td>150</td><td>412</td></tr>
<tr><td>32</td><td>950,000</td><td>12</td><td>160</td><td>426</td></tr>
<tr><td>33</td><td>1,082,250</td><td>12</td><td>185</td><td>438</td></tr>
<tr><td>34</td><td>1,224,000</td><td>13</td><td>200</td><td>453</td></tr>
<tr><td>35</td><td>1,378,125</td><td>13</td><td>215</td><td>487</td></tr>
<tr><td>36</td><td>1,530,000</td><td>14</td><td>230</td><td>500</td></tr>
<tr><td>37</td><td>1,732,500</td><td>14</td><td>260</td><td>526</td></tr>
<tr><td>38</td><td>1,920,000</td><td>15</td><td>300</td><td>556</td></tr>
<tr><td>39</td><td>2,131,250</td><td>15</td><td>330</td><td>575</td></tr>
<tr><td>40</td><td>2,325,000</td><td>16</td><td>345</td><td>600</td></tr>
<tr><td>41</td><td>2,537,500</td><td>16</td><td>360</td><td>650</td></tr>
<tr><td>42</td><td>2,800,000</td><td>17</td><td>380</td><td>704</td></tr>
<tr><td>43</td><td>3,105,000</td><td>17</td><td>400</td><td>747</td></tr>
<tr><td>44</td><td>3,380,000</td><td>18</td><td>415</td><td>811</td></tr>
<tr><td>45</td><td>3,687,500</td><td>18</td><td>425</td><td>856</td></tr>
<tr><td>46</td><td>3,990,000</td><td>19</td><td>450</td><td>879</td></tr>
<tr><td>47</td><td>4,312,500</td><td>19</td><td>475</td><td>911</td></tr>
<tr><td>48</td><td>4,620,000</td><td>20</td><td>500</td><td>932</td></tr>
<tr><td>49</td><td>4,935,000</td><td>20</td><td>550</td><td>956</td></tr>
<tr><td>50</td><td>5,250,000</td><td>21</td><td>650</td><td>1,000</td></tr>
<tr><td>51</td><td>6,500,000</td><td>21</td><td>700</td><td>1,032</td></tr>
<tr><td>52</td><td>7,750,000</td><td>22</td><td>750</td><td>1,067</td></tr>
<tr><td>53</td><td>9,250,000</td><td>22</td><td>800</td><td>1,103</td></tr>
<tr><td>54</td><td>11,050,000</td><td>23</td><td>850</td><td>1,250</td></tr>
<tr><td>55</td><td>12,750,000</td><td>23</td><td>875</td><td>1,500</td></tr>
<tr><td>56</td><td>14,750,000</td><td>24</td><td>900</td><td>1,750</td></tr>
<tr><td>57</td><td>17,250,000</td><td>24</td><td>950</td><td>2,000</td></tr>
<tr><td>58</td><td>19,750,000</td><td>25</td><td>1,000</td><td>2,200</td></tr>
<tr><td>59</td><td>22,250,000</td><td>25</td><td>1,250</td><td>2,400</td></tr>
<tr><td>60</td><td>24,750,000</td><td>26</td><td>1,500</td><td>2,500</td></tr>
<tr><td>61</td><td>28,000,000</td><td>26</td><td>1,750</td><td>2,650</td></tr>
<tr><td>62</td><td>31,750,000</td><td>27</td><td>2,000</td><td>2,800</td></tr>
<tr><td>63</td><td>35,750,000</td><td>27</td><td>2,250</td><td>3,000</td></tr>
<tr><td>64</td><td>39,750,000</td><td>28</td><td>2,500</td><td>3,200</td></tr>
<tr><td>65</td><td>44,750,000</td><td>28</td><td>2,750</td><td>3,500</td></tr>
<tr><td>66</td><td>49,750,000</td><td>29</td><td>3,000</td><td>3,800</td></tr>
<tr><td>67</td><td>55,750,000</td><td>29</td><td>3,250</td><td>4,100</td></tr>
<tr><td>68</td><td>61,750,000</td><td>30</td><td>3,500</td><td>4,400</td></tr>
<tr><td>69</td><td>68,750,000</td><td>30</td><td>3,750</td><td>4,700</td></tr>
<tr><td>70</td><td>77,000,000</td><td>31</td><td>4,000</td><td>5,000</td></tr>
<tr><td>71</td><td>90,650,000</td><td>31</td><td>4,150</td><td>5,200</td></tr>
<tr><td>72</td><td>106,900,000</td><td>32</td><td>4,300</td><td>5,450</td></tr>
<tr><td>73</td><td>126,400,000</td><td>32</td><td>4,500</td><td>5,750</td></tr>
<tr><td>74</td><td>152,400,000</td><td>33</td><td>4,750</td><td>6,100</td></tr>
<tr><td>75</td><td>184,900,000</td><td>33</td><td>5,000</td><td>6,500</td></tr>
<tr><td>76</td><td>385,000,000</td><td>34</td><td>5,250</td><td>6,800</td></tr>
<tr><td>77</td><td>675,000,000</td><td>34</td><td>5,500</td><td>7,100</td></tr>
<tr><td>78</td><td>995,600,000</td><td>35</td><td>5,800</td><td>7,500</td></tr>
<tr><td>79</td><td>1,450,920,000</td><td>35</td><td>6,150</td><td>7,900</td></tr>
<tr><td>80</td><td>2,000,000,000</td><td>36</td><td>6,500</td><td>8,500</td></tr>
<tr><td>81</td><td>3,000,000,000</td><td>36</td><td>6,900</td><td>9,200</td></tr>
<tr><td>82</td><td>4,500,000,000</td><td>37</td><td>7,350</td><td>10,000</td></tr>
<tr><td>83</td><td>6,750,000,000</td><td>37</td><td>7,850</td><td>10,900</td></tr>
<tr><td>84</td><td>10,000,000,000</td><td>38</td><td>8,400</td><td>11,900</td></tr>
<tr><td>85</td><td>15,000,000,000</td><td>38</td><td>9,000</td><td>13,000</td></tr>
<tr><td>86</td><td>20,000,000,000</td><td>39</td><td>9,650</td><td>14,200</td></tr>
<tr><td>87</td><td>26,000,000,000</td><td>39</td><td>10,350</td><td>15,500</td></tr>
<tr><td>88</td><td>33,000,000,000</td><td>40</td><td>11,100</td><td>16,900</td></tr>
<tr><td>89</td><td>41,000,000,000</td><td>40</td><td>11,900</td><td>18,400</td></tr>
<tr><td>90</td><td>50,000,000,000</td><td>41</td><td>12,750</td><td>20,000</td></tr>
</table>
</div>
</div>
</div>
</div>
</div>
`

let lvlchart = document.createElement('div');
lvlchart.innerHTML = chart;
insertAfter(lvlchart, levelchart.lastElementChild);

}



// itemlink modifications

if (document.URL.indexOf("itemlink") != -1 ) {

var itemID = window.location.search.replace(/\?id=/g,"").replace(/&owner=.*/g,"")

fetch("/item_rollover.php?id="+itemID+"_1")
   .then(response => response.text())
   .then((response) => {

var holyaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FFFF/g);
if (holyaug == null)
holyaug = 0

var arcaneaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FFFF00/g);
if (arcaneaug == null)
arcaneaug = 0

var fireaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FF0000/g);
if (fireaug == null)
fireaug = 0

var kineticaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FF00/g);
if (kineticaug == null)
kineticaug = 0

var shadowaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#7e01bc/g);
if (shadowaug == null)
shadowaug = 0

var chaosaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#f441be/g);
if (chaosaug == null)
chaosaug = 0

var psaug = response.match(/\+([0-9]+)% perfect strike/g);
if (psaug == null)
psaug = 0

var aug1holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/&nbsp; \+/i,""))
var aug1arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/&nbsp; \+/i,""))
var aug1fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/&nbsp; \+/i,""))
var aug1kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/&nbsp; \+/i,""))
var aug1shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/&nbsp; \+/i,""))
var aug1chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/&nbsp; \+/i,""))
var aug1ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,""))

fetch("/item_rollover.php?id="+itemID+"_2")
   .then(response => response.text())
   .then((response) => {

var holyaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FFFF/g);
if (holyaug == null)
holyaug = 0

var arcaneaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FFFF00/g);
if (arcaneaug == null)
arcaneaug = 0

var fireaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FF0000/g);
if (fireaug == null)
fireaug = 0

var kineticaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FF00/g);
if (kineticaug == null)
kineticaug = 0

var shadowaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#7e01bc/g);
if (shadowaug == null)
shadowaug = 0

var chaosaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#f441be/g);
if (chaosaug == null)
chaosaug = 0

var psaug = response.match(/\+([0-9]+)% perfect strike/g);
if (psaug == null)
psaug = 0

var aug2holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/&nbsp; \+/i,""))
var aug2arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/&nbsp; \+/i,""))
var aug2fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/&nbsp; \+/i,""))
var aug2kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/&nbsp; \+/i,""))
var aug2shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/&nbsp; \+/i,""))
var aug2chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/&nbsp; \+/i,""))
var aug2ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,""))

fetch("/item_rollover.php?id="+itemID+"_3")
   .then(response => response.text())
   .then((response) => {

var holyaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FFFF/g);
if (holyaug == null)
holyaug = 0

var arcaneaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FFFF00/g);
if (arcaneaug == null)
arcaneaug = 0

var fireaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FF0000/g);
if (fireaug == null)
fireaug = 0

var kineticaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FF00/g);
if (kineticaug == null)
kineticaug = 0

var shadowaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#7e01bc/g);
if (shadowaug == null)
shadowaug = 0

var chaosaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#f441be/g);
if (chaosaug == null)
chaosaug = 0

var psaug = response.match(/\+([0-9]+)% perfect strike/g);
if (psaug == null)
psaug = 0

var aug3holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/&nbsp; \+/i,""))
var aug3arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/&nbsp; \+/i,""))
var aug3fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/&nbsp; \+/i,""))
var aug3kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/&nbsp; \+/i,""))
var aug3shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/&nbsp; \+/i,""))
var aug3chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/&nbsp; \+/i,""))
var aug3ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,""))

fetch("/item_rollover.php?id="+itemID+"_4")
   .then(response => response.text())
   .then((response) => {

var holyaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FFFF/g);
if (holyaug == null)
holyaug = 0

var arcaneaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FFFF00/g);
if (arcaneaug == null)
arcaneaug = 0

var fireaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FF0000/g);
if (fireaug == null)
fireaug = 0

var kineticaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FF00/g);
if (kineticaug == null)
kineticaug = 0

var shadowaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#7e01bc/g);
if (shadowaug == null)
shadowaug = 0

var chaosaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#f441be/g);
if (chaosaug == null)
chaosaug = 0

var psaug = response.match(/\+([0-9]+)% perfect strike/g);
if (psaug == null)
psaug = 0

var aug4holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/&nbsp; \+/i,""))
var aug4arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/&nbsp; \+/i,""))
var aug4fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/&nbsp; \+/i,""))
var aug4kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/&nbsp; \+/i,""))
var aug4shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/&nbsp; \+/i,""))
var aug4chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/&nbsp; \+/i,""))
var aug4ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,""))

fetch("/item_rollover.php?id="+itemID+"_5")
   .then(response => response.text())
   .then((response) => {

var holyaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FFFF/g);
if (holyaug == null)
holyaug = 0

var arcaneaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FFFF00/g);
if (arcaneaug == null)
arcaneaug = 0

var fireaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#FF0000/g);
if (fireaug == null)
fireaug = 0

var kineticaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#00FF00/g);
if (kineticaug == null)
kineticaug = 0

var shadowaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#7e01bc/g);
if (shadowaug == null)
shadowaug = 0

var chaosaug = response.match(/&nbsp; \+([0-9]+) <span style="color:#f441be/g);
if (chaosaug == null)
chaosaug = 0

var psaug = response.match(/\+([0-9]+)% perfect strike/g);
if (psaug == null)
psaug = 0

var aug5holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/&nbsp; \+/i,""))
var aug5arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/&nbsp; \+/i,""))
var aug5fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/&nbsp; \+/i,""))
var aug5kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/&nbsp; \+/i,""))
var aug5shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/&nbsp; \+/i,""))
var aug5chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/&nbsp; \+/i,""))
var aug5ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,""))

var aholy = aug1holy+aug2holy+aug3holy+aug4holy+aug5holy
var aarcane = aug1arcane+aug2arcane+aug3arcane+aug4arcane+aug5arcane
var afire = aug1fire+aug2fire+aug3fire+aug4fire+aug5fire
var akinetic = aug1kinetic+aug2kinetic+aug3kinetic+aug4kinetic+aug5kinetic
var ashadow = aug1shadow+aug2shadow+aug3shadow+aug4shadow+aug5shadow
var achaos = aug1chaos+aug2chaos+aug3chaos+aug4chaos+aug5chaos
var aps = aug1ps+aug2ps+aug3ps+aug4ps+aug5ps

var Gslot1 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(3)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0)
var Gslot2 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(4)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0)
var Gslot3 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(5)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0)
var Gslot4 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(6)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0)

var sum = Math.round(Gslot1+Gslot2+Gslot3+Gslot4)

var gems = '';
if (sum == "0")
gems = "4"
if (sum == "1")
gems = "3"
if (sum == "11")
gems = "2"
if (sum == "111")
gems = "1"
if (sum == "1111")
gems = "0"

var item = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(1)").outerHTML.replace(/<span style="color:#00FF00"> \(\+[0-9]+\)<\/span>/g,"").replaceAll(",","");

var atk = item.match(/\+([0-9]+) ATK/) ?? 0
var holy = item.match(/\+([0-9]+) <span style="color:#.*">Holy/) ?? 0
var arcane = item.match(/\+([0-9]+) <span style="color:#.*">Arcane/) ?? 0
var shadow = item.match(/\+([0-9]+) <span style="color:#.*">Shadow/) ?? 0
var fire = item.match(/\+([0-9]+) <span style="color:#.*">Fire/) ?? 0
var kinetic = item.match(/\+([0-9]+) <span style="color:#.*">Kinetic/) ?? 0
var chaos = item.match(/\+([0-9]+) <span style="color:#.*">Chaos/) ?? 0
var vile = item.match(/\+([0-9]+) vile energy/) ?? 0
var hp = item.match(/\+([0-9]+) HP/) ?? 0
var holyr = item.match(/\+([0-9]+) Holy Resist/) ?? 0
var arcaner = item.match(/\+([0-9]+) Arcane Resist/) ?? 0
var shadowr = item.match(/\+([0-9]+) Shadow Resist/) ?? 0
var firer = item.match(/\+([0-9]+) Fire Resist/) ?? 0
var kineticr = item.match(/\+([0-9]+) Kinetic Resist/) ?? 0
var chaosr = item.match(/\+([0-9]+) Chaos Resist/) ?? 0
var block = item.match(/\+([0-9]+)% block/) ?? 0
var eblock = item.match(/\+([0-9]+)% elemental block/) ?? 0
var rpt = item.match(/\+([0-9]+) rage per hr/) ?? 0
var ept = item.match(/\+([0-9]+) exp per hr/) ?? 0
var ramp = item.match(/\+([0-9]+)% rampage/) ?? 0
var ps = item.match(/\+([0-9]+)% perfect strike/) ?? 0
var mr = item.match(/\+([0-9]+) max rage/) ?? 0
var crit = item.match(/\+([0-9]+)% critical hit/) ?? 0

var edititem = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(1)");
if (aholy != 0){
edititem.innerHTML = edititem.innerHTML.replace(/&nbsp; \+.* <span style="color:#00FFFF">Holy/,"&nbsp; +"+(parseInt(holy[1])-aholy)+" <font color=00FF00>(+"+aholy+")</font><font color=00FFFF> Holy</font>")}
if (aarcane != 0){
edititem.innerHTML = edititem.innerHTML.replace(/&nbsp; \+.* <span style="color:#FFFF00">Arcane/,"&nbsp; +"+(parseInt(arcane[1])-aarcane)+" <font color=00FF00>(+"+aarcane+")</font><font color=FFFF00> Arcane</font>")}
if (afire != 0){
edititem.innerHTML = edititem.innerHTML.replace(/&nbsp; \+.* <span style="color:#FF0000">Fire/,"&nbsp; +"+(parseInt(fire[1])-afire)+" <font color=00FF00>(+"+afire+")</font><font color=FF0000> Fire</font>")}
if (akinetic != 0){
edititem.innerHTML = edititem.innerHTML.replace(/&nbsp; \+.* <span style="color:#00FF00">Kinetic/,"&nbsp; +"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>(+"+akinetic+")</font<font color=00FF00> Kinetic</font>")}
if (ashadow != 0){
edititem.innerHTML = edititem.innerHTML.replace(/&nbsp; \+.* <span style="color:#7e01bc">Shadow/,"&nbsp; +"+(parseInt(shadow[1])-ashadow)+" <font color=00FF00>(+"+ashadow+")</font><font color=7e01bc> Shadow</font>")}
if (achaos != 0){
edititem.innerHTML = edititem.innerHTML.replace(/&nbsp; \+.* <span style="color:#f441be">Chaos/,"&nbsp; +"+(parseInt(chaos[1])-achaos)+" <font color=00FF00>(+"+achaos+")</font><font color=f441be> Chaos</font>")}
if (aps != 0){
edititem.innerHTML = edititem.innerHTML.replace(/% perfect strike/," <font color=00FF00>(+"+aps+")</font>% perfect strike")}

var g1 = '';
var g2 = '';
var g3 = '';
var g4 = '';
    if (atk[1] > 0){
    g1 += "+"+Math.round(atk[1]*1.15)+" ATK<br>"
    g2 += "+"+Math.round(atk[1]*1.3225)+" ATK<br>"
    g3 += "+"+Math.round(atk[1]*1.520875)+" ATK<br>"
    g4 += "+"+Math.round(atk[1]*1.74900625)+" ATK<br>"}
    if (holy[1] > 0){
    g1 += "&emsp;+"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>"
    g2 += "&emsp;+"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>"
    g3 += "&emsp;+"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>"
    g4 += "&emsp;+"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>"}
    if (arcane[1] > 0){
    g1 += "&emsp;+"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>"
    g2 += "&emsp;+"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>"
    g3 += "&emsp;+"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>"
    g4 += "&emsp;+"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>"}
    if (shadow[1] > 0){
    g1 += "&emsp;+"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>"
    g2 += "&emsp;+"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>"
    g3 += "&emsp;+"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>"
    g4 += "&emsp;+"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>"}
    if (fire[1] > 0){
    g1 += "&emsp;+"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>"
    g2 += "&emsp;+"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>"
    g3 += "&emsp;+"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>"
    g4 += "&emsp;+"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>"}
    if (kinetic[1] > 0){
    g1 += "&emsp;+"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>"
    g2 += "&emsp;+"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>"
    g3 += "&emsp;+"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>"
    g4 += "&emsp;+"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>"}
    if (chaos[1] > 0){
    g1 += "&emsp;+"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>"
    g2 += "&emsp;+"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>"
    g3 += "&emsp;+"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>"
    g4 += "&emsp;+"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>"}
    if (vile[1] > 0){
    g1 += "&emsp;+"+vile[1]+" vile energy<br>"
    g2 += "&emsp;+"+vile[1]+" vile energy<br>"
    g3 += "&emsp;+"+vile[1]+" vile energy<br>"
    g4 += "&emsp;+"+vile[1]+" vile energy<br>"}
    if (hp[1] > 0){
    g1 += "+"+Math.round(hp[1]*1.15)+" HP<br>"
    g2 += "+"+Math.round(hp[1]*1.3225)+" HP<br>"
    g3 += "+"+Math.round(hp[1]*1.520875)+" HP<br>"
    g4 += "+"+Math.round(hp[1]*1.74900625)+" HP<br>"}
    if (holyr[1] != undefined){
    g1 += "&emsp;+"+holyr[1]+" Holy Resist<br>"
    g2 += "&emsp;+"+holyr[1]+" Holy Resist<br>"
    g3 += "&emsp;+"+holyr[1]+" Holy Resist<br>"
    g4 += "&emsp;+"+holyr[1]+" Holy Resist<br>"}
    if (arcaner[1] > 0){
    g1 += "&emsp;+"+arcaner[1]+" Arcane Resist<br>"
    g2 += "&emsp;+"+arcaner[1]+" Arcane Resist<br>"
    g3 += "&emsp;+"+arcaner[1]+" Arcane Resist<br>"
    g4 += "&emsp;+"+arcaner[1]+" Arcane Resist<br>"}
    if (shadowr[1] > 0){
    g1 += "&emsp;+"+shadowr[1]+" Shadow Resist<br>"
    g2 += "&emsp;+"+shadowr[1]+" Shadow Resist<br>"
    g3 += "&emsp;+"+shadowr[1]+" Shadow Resist<br>"
    g4 += "&emsp;+"+shadowr[1]+" Shadow Resist<br>"}
    if (firer[1] > 0){
    g1 += "&emsp;+"+firer[1]+" Fire Resist<br>"
    g2 += "&emsp;+"+firer[1]+" Fire Resist<br>"
    g3 += "&emsp;+"+firer[1]+" Fire Resist<br>"
    g4 += "&emsp;+"+firer[1]+" Fire Resist<br>"}
    if (kineticr[1] > 0){
    g1 += "&emsp;+"+kineticr[1]+" Kinetic Resist<br>"
    g2 += "&emsp;+"+kineticr[1]+" Kinetic Resist<br>"
    g3 += "&emsp;+"+kineticr[1]+" Kinetic Resist<br>"
    g4 += "&emsp;+"+kineticr[1]+" Kinetic Resist<br>"}
    if (chaosr[1] > 0){
    g1 += "&emsp;+"+chaosr[1]+" Chaos Resist<br>"
    g2 += "&emsp;+"+chaosr[1]+" Chaos Resist<br>"
    g3 += "&emsp;+"+chaosr[1]+" Chaos Resist<br>"
    g4 += "&emsp;+"+chaosr[1]+" Chaos Resist<br>"}
    if (block[1] > 0){
    g1 += "+"+block[1]+"% block<br>"
    g2 += "+"+block[1]+"% block<br>"
    g3 += "+"+block[1]+"% block<br>"
    g4 += "+"+block[1]+"% block<br>"}
    if (eblock[1] > 0){
    g1 += "+"+eblock[1]+"% elemental block<br>"
    g2 += "+"+eblock[1]+"% elemental block<br>"
    g3 += "+"+eblock[1]+"% elemental block<br>"
    g4 += "+"+eblock[1]+"% elemental block<br>"}
    if (rpt[1] > 0){
    g1 += "+"+Math.round(rpt[1]*1.15)+" rage per hour<br>"
    g2 += "+"+Math.round(rpt[1]*1.3225)+" rage per hour<br>"
    g3 += "+"+Math.round(rpt[1]*1.520875)+" rage per hour<br>"
    g4 += "+"+Math.round(rpt[1]*1.74900625)+" rage per hour<br>"}
    if (ept[1] > 0){
    g1 += "+"+Math.round(ept[1]*1.15)+" exp per hour<br>"
    g2 += "+"+Math.round(ept[1]*1.3225)+" exp per hour<br>"
    g3 += "+"+Math.round(ept[1]*1.520875)+" exp per hour<br>"
    g4 += "+"+Math.round(ept[1]*1.74900625)+" exp per hour<br>"}
    if (ramp[1] > 0){
    g1 += "+"+ramp[1]+"% rampage<br>"
    g2 += "+"+ramp[1]+"% rampage<br>"
    g3 += "+"+ramp[1]+"% rampage<br>"
    g4 += "+"+ramp[1]+"% rampage<br>"}
    if (ps[1] > 0){
    g1 += "+"+ps[1]+"<br>% perfect strike<br>"
    g2 += "+"+ps[1]+"<br>% perfect strike<br>"
    g3 += "+"+ps[1]+"<br>% perfect strike<br>"
    g4 += "+"+ps[1]+"<br>% perfect strike<br>"}
    if (mr[1] > 0){
    g1 += "+"+Math.round(mr[1]*1.15)+" max rage<br>"
    g2 += "+"+Math.round(mr[1]*1.3225)+" max rage<br>"
    g3 += "+"+Math.round(mr[1]*1.520875)+" max rage<br>"
    g4 += "+"+Math.round(mr[1]*1.74900625)+" max rage<br>"}
    if (crit[1] > 0){
    g1 += "+"+crit[1]+"% critical hit<br>"
    g2 += "+"+crit[1]+"% critical hit<br>"
    g3 += "+"+crit[1]+"% critical hit<br>"
    g4 += "+"+crit[1]+"% critical hit<br>"}

var openslot = document.querySelectorAll("img[src='/images/gemslot2.jpg']");
if (openslot[0] != null)
openslot[0].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g1+`</div>');`);
if (openslot[0] != null)
openslot[0].setAttribute(`onmouseout`, `kill()`);
if (openslot[1] != null)
openslot[1].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g2+`</div>')`);
if (openslot[1] != null)
openslot[1].setAttribute(`onmouseout`, `kill()`);
if (openslot[2] != null)
openslot[2].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g3+`</div>')`);
if (openslot[2] != null)
openslot[2].setAttribute(`onmouseout`, `kill()`);
if (openslot[3] != null)
openslot[3].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g4+`</div>')`);
if (openslot[3] != null)
openslot[3].setAttribute(`onmouseout`, `kill()`);

var itemNameColor = document.querySelector("#itemtable > tbody > tr:nth-child(1) > td").outerHTML.replace(/<td colspan="2" style="height:20px;font-size:12pt;text-shadow: #47462E 1px 1px 2px;color:#/g,"").replace(/" align="left">.*/g,"");

var itemRarity = '';
if (itemNameColor == "FFFFFF")
itemRarity = "Uncommon";
if (itemNameColor == "1eff00")
itemRarity = "Rare";
if (itemNameColor == "ffde5b")
itemRarity = "Elite";
if (itemNameColor == "0070ff")
itemRarity = "Godly";
if (itemNameColor == "CA1111")
itemRarity = "Brutal";
if (itemNameColor == "ff8000")
itemRarity = "King";
if (itemNameColor == "9000ba")
itemRarity = "Mythic"

var gemTxt = `
<td colspan="2" style="padding:2px;" valign="top"><div id="itemGemCalc">
<table width=300px border=1 bordercolor=#D4D4D4 id=gemcalc><tr><td>
Item Rarity: <font color=`+itemNameColor+`>`+itemRarity+`
</td><td>
Number of Gems: `+gems+`
</td></tr></table>
<div id=mouseovergem>Mouseover empty gem slot to see gemmed stats</div><p>
</div></td>
`

function insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

let menu = document.querySelector("#itemtable > tbody");
let tr = document.createElement('tr');
tr.innerHTML = gemTxt;
insertAfter(tr, menu.lastElementChild);

})})})})})}

// boss raid individual pages

if (document.URL.indexOf("boss_stats") != -1 ) {

let str = document.querySelector("#content-header-row > div > table")
str.innerHTML = str.innerHTML
    .replace("Ancestral","<font color=#FF00FF>Ancestral")
    .replace("Tomb","Tomb</font>")
    .replace("Boon of Vision","<font color=#FF00FF>Boon of Madness</font>")

    .replace("Tier 2 Booster Upgrade","<font color=#FF8000>Tier 2 Booster Upgrade</font>")
    .replace("8-Bit Banana","<font color=#FF8000>8-Bit Banana</font>")
    .replace("Augment of Vision","<font color=#FF8000>Augment of Vision</font>")
    .replace("Transcended Extract","<font color=#FF8000>Transcended Extract</font>")

    .replace("Prophecy Mail Reborn","<font color=#FFDE5B>Prophecy Mail Reborn</font>")
    .replace("Cord of Freezing Winds Reborn","<font color=#FFDE5B>Cord of Freezing Winds Reborn</font>")
    .replace("Soul of Blackhand Reborn","<font color=#FFDE5B>Soul of Blackhand Reborn</font>")
    .replace("Trinket of Aridity Reborn","<font color=#FFDE5B>Trinket of Aridity Reborn</font>")
    .replace("Interstellar Leggings Reborn","<font color=#FFDE5B>Interstellar Leggings Reborn</font>")
    .replace("Myrmidon Helm Reborn","<font color=#FFDE5B>Myrmidon Helm Reborn</font>")
    .replaceAll("Blackhand Reborn","<font color=#FFDE5B>Blackhand Reborn</font>")
    .replace("Incredible Tower Shield Reborn","<font color=#FFDE5B>Incredible Tower Shield Reborn</font>")
    .replace("Ring of the Sea Reborn","<font color=#FFDE5B>Ring of the Sea Reborn</font>")
    .replace("Boots of the Eagle Reborn","<font color=#FFDE5B>Boots of the Eagle Reborn</font>")
    .replace("Core of Exalted Perfection","<font color=#FFDE5B>Core of Exalted Perfection</font>")
    .replace("Greathelm of Exalted Perfection","<font color=#FFDE5B>Greathelm of Exalted Perfection</font>")
    .replace("Brooch of Exalted Perfection","<font color=#FFDE5B>Brooch of Exalted Perfection</font>")
    .replace("Launcher of Exalted Perfection","<font color=#FFDE5B>Launcher of Exalted Perfection</font>")
    .replace("Cuirass of Exalted Perfection","<font color=#FFDE5B>Cuirass of Exalted Perfection</font>")
    .replace("Boon of Exalted Perfection","<font color=#FFDE5B>Boon of Exalted Perfection</font>")
    .replace("Link of Exalted Perfection","<font color=#FFDE5B>Link of Exalted Perfection</font>")
    .replace("Scales of Exalted Perfection","<font color=#FFDE5B>Scales of Exalted Perfection</font>")
    .replace("Twirl of Exalted Perfection","<font color=#FFDE5B>Twirl of Exalted Perfection</font>")
    .replace("Spurs of Exalted Perfection","<font color=#FFDE5B>Spurs of Exalted Perfection</font>")

var deadCheck = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child(1) > td:nth-child(3)").innerHTML;
if (deadCheck > 0){

var bossTableX = document.querySelector("#content-header-row > div > table");
var bossTableRowsX = bossTableX.rows.length;

function insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

var bossName = document.querySelector("#content-header-row > h1").innerHTML
var lootCount = '';
if (bossName == "Cosmos, Great All Being")
lootCount = "50"
if (bossName == "Death, Reaper of Souls")
lootCount = "80"
if (bossName == "Maekrix, Dreaded Striker")
lootCount = "73"
if (bossName == "Blackhand Reborn")
lootCount = "61"
if (bossName == "Zyrak, Vision of Madness")
lootCount = "65"

for (let rownumX = 1; rownumX < bossTableRowsX; rownumX++) {

GM_addStyle ( `
td:nth-of-type(3){display: none !important;}
#content-header-row > div > table > thead > tr > th:nth-child(3){width: 60% !important;}
.table td{border: 1px SOLID #0F0F0F !important;}
`);

var crewName = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(1) > a > font").innerHTML.replace("'","");

var percentage = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(2)").innerHTML.replace(/.*\(/i,"").replace("%)","");

let bossLootCnt = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(3)").innerHTML

let bossLoot = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(3)").outerHTML
bossLoot = `<table id=bossloottable><tr><td width=50px><center><span id=bossloot style='background-color: #D4D4D4; color: #202020;'><b>`+bossLootCnt+`</b><br></span><a onmouseover="popup(event,'`+crewName+`s expected drops')" onmouseout="kill()"><font size=1 color=#D4D4D4>(`+Math.round(percentage/100*lootCount)+`)</td><td> `+bossLoot.replace(/<td onmouseover="popup\(event,'/g,"").replace(/<br>','808080'\)" onmouseout="kill\(\)>.*<\/td>/g,"").replaceAll("<br>",", ").replaceAll(/No Items','808080'\)" onmouseout="kill\(\)">0/g,"").replaceAll(/, ','808080'\)" onmouseout="kill\(\)">[0-9]+/g,"");

let menu = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+")");
let td = document.createElement('td');
td.innerHTML = bossLoot;
insertAfter(td, menu.lastElementChild);

}}}

if (document.URL.indexOf("boss_stats") != -1 ) {

let bossName = document.querySelector("#content-header-row > h1").innerHTML

let lootCount = '';
if (bossName == "Cosmos, Great All Being")
lootCount = "50"
if (bossName == "Death, Reaper of Souls")
lootCount = "78"
if (bossName == "Maekrix, Dreaded Striker")
lootCount = "73"
if (bossName == "Blackhand Reborn")
lootCount = "61"
if (bossName == "Zyrak, Vision of Madness")
lootCount = "64"

var bossHP = '';
if (bossName == "Cosmos, Great All Being")
bossHP = "100000000000"
if (bossName == "Death, Reaper of Souls")
bossHP = "295000000000"
if (bossName == "Maekrix, Dreaded Striker")
bossHP = "320000000000"
if (bossName == "Blackhand Reborn")
bossHP = "570000000000"
if (bossName == "Zyrak, Vision of Madness")
bossHP = "1200000000000"

var bossTable = document.querySelector("#content-header-row > div > table");
var bossTableRows = bossTable.rows.length;

function insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

var aliveCheck = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child(1) > td:nth-child(3)").innerHTML;
if (aliveCheck < 1){

let menu = document.querySelector("#content-header-row > div > table > thead > tr");
let td1 = document.createElement('td');
td1.innerHTML = `<div id=estdrop><a onmouseover="popup\(event,'Estimating the number of items each crew will receive'\)" onmouseout="kill\(\)"><b>ESTIMATED DROPS</div>`;
insertAfter(td1, menu.lastElementChild);

let td4 = document.createElement('td');
td4.innerHTML = `<div id=estdrop><a onmouseover="popup\(event,'Mouseover column to see last raid'\)" onmouseout="kill\(\)"><b>RAID STATUS</div>`;
insertAfter(td4, menu.lastElementChild);

function calcTime(city, offset) {
    d = new Date();
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    nd = new Date(utc + (3600000*offset));
    return nd.toLocaleString();
}
var OWtime = Date.parse((calcTime('Outwar', '-5.0')));

for (let rownum = 1; rownum < bossTableRows; rownum++) {

GM_addStyle ( `
td:nth-of-type(3){display: none !important;}
#content-header-row > div > table > thead > tr > th:nth-child(3) > a > b > font{color: #FFF000 !important;}
.table td{border: 1px SOLID #0F0F0F !important;}
#content-header-row > div > table > thead{border: 0px SOLID !important;}
#estdrop{margin-top:7px !important;}
`);

var crewID = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1)").innerHTML.replaceAll(/"><font.*/g,"").replaceAll(/<a href="crew_profile\.php\?id=/g,"");

fetch("crew_raidresults.php?all_results=Display+all+raid+results&crewid="+crewID)
   .then(response => response.text())
   .then((response) => {

var match = 'valign="top">(.*)<\/td.*[\n\r].*'+bossName
var lastRaid = response.match(match)


var lastRaidprint = ''
if (lastRaid != null)
lastRaidprint = Date.parse(lastRaid[1].replaceAll("-","/").replace(/\/22 /g,"/2022, ").replace("am",":00 AM").replace("pm",":00 PM").replace(/ 0/i," "));
var sinceLast = OWtime-lastRaidprint

var crewName = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1) > a > font").innerHTML.replace("'","");

var crewID = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1)").innerHTML.replaceAll(/<a href="crew_profile\.php\?id=/g,"").replaceAll(/"><font color="#CC0000".*/g,"");

var activeRaids = '';
if (sinceLast < 150000)
activeRaids = `<font color=#FFF000><a href=crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid=`+crewID+` onmouseover="popup\(event,'<b>`+crewName+`</b><br>Last raid vs `+bossName+`:<br>`+Math.round(sinceLast/60000)+` minutes ago<br><font color=#FFF000>(click to see raid results)'\)" onmouseout="kill\(\)">Actively Raiding`
if (sinceLast > 149999)
activeRaids = `<a onmouseover="popup\(event,'<b>`+crewName+`</b><br>Last raid vs `+bossName+`:<br>`+Math.round(sinceLast/60000)+` minutes ago'\)" onmouseout="kill\(\)"><font color=#D4D4D4>Not Raiding`

let td3 = document.createElement('td');
td3.innerHTML = activeRaids;
insertAfter(td3, menu.lastElementChild);
})

bossTable.rows[0].cells[2].innerHTML = `<a onmouseover="popup\(event,'Estimating the total damage when the boss dies'\)" onmouseout="kill\(\)"><b>ESTIMATED DAMAGE`

let percentage = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(2)").innerHTML.replace(/.*\(/i,"").replace("%)","");
var damage = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(2)").innerHTML.replace(/ \(.*%\)/g,"").replaceAll(",","");

let menu = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+")");
let td1 = document.createElement('td');
td1.innerHTML = Math.round(lootCount*(percentage/100));
insertAfter(td1, menu.lastElementChild);

const reducer = (accumulator, curr) => accumulator + curr
var BaseDmgArray = [];
var table = document.querySelector("#content-header-row > div > table").innerHTML
var BaseMatch = table.matchAll(/<td>(.*) \(/g);
for (const BaseMatchLoop of BaseMatch) {
let BaseObj = [parseInt(BaseMatchLoop[1].replace(",","").replace(",","").replace(",",""))];
for (const BaseDmg of BaseObj) {
BaseDmgArray.push(BaseDmg);}}
var BaseNumbers = BaseDmgArray.map(Number)
var SumOfBase = BaseNumbers.reduce(reducer)

let td2 = document.createElement('td');
td2.innerHTML = Math.round(damage/SumOfBase*bossHP).toLocaleString("en-US");
insertAfter(td2, menu.children[2]);

const header = document.querySelector("#content-header-row > h5")
header.innerHTML = "<br>Health Remaining: "+(bossHP-SumOfBase).toLocaleString("en-US")+" ("+((bossHP-SumOfBase)/bossHP*100).toFixed(3)+"%)"


}}}

// moxximod boss raid main page

if (document.URL.indexOf("crew_bossspawns") != -1 ) {

GM_addStyle ( `
#content-header-row > div.col-12.layout-spacing{display: none !important;}
`);

var bossCount = $('#divCollections > div.row > div').length

fetch("crew_profile")
   .then(response => response.text())
   .then((response) => {

var myCrew = response.match(/<h2>.*<\/h2>/g)
var myCrewID = response.match(/href="\/crew_raidresults\.php\?crewid=(.*)">Raid Results<\/a>/i)

var bossHead = document.querySelector("#divHeader > h3")
bossHead.innerHTML = "<a href=crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid="+myCrewID[1]+"> Moxxi Mod Raid Results</a>"

})

for (let bossNum = 1; bossNum < 1+bossCount; bossNum++) {

var bossLink = document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a")
var boss = '';
if (bossLink != null)
boss = document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a")
if (bossLink =! null){
fetch(boss)
   .then(response => response.text())
   .then((response) => {
var bossName = response.match(/<h1 class="w-100">(.*)<\/h1>/i)

if (bossName != null){

var bossHP = '';
if (bossName[1] == "Cosmos, Great All Being")
bossHP = "100000000000"
if (bossName[1] == "Death, Reaper of Souls")
bossHP = "295000000000"
if (bossName[1] == "Maekrix, Dreaded Striker")
bossHP = "320000000000"
if (bossName[1] == "Blackhand Reborn")
bossHP = "570000000000"
if (bossName[1] == "Zyrak, Vision of Madness")
bossHP = "1200000000000"

var crew1 = response.match(/<font color="#CC0000">(.*)<\/font>.*[\n\r].*<td>(.*) \(.*\)<\/font>/i);
const reducer = (accumulator, curr) => accumulator + curr
var BaseDmgArray = [];
var BaseMatch = response.matchAll(/<td>(.*) \(/g);
for (const BaseMatchLoop of BaseMatch) {
let BaseObj = [parseInt(BaseMatchLoop[1].replace(",","").replace(",","").replace(",",""))];
for (const BaseDmg of BaseObj) {
BaseDmgArray.push(BaseDmg);}}
var BaseNumbers = BaseDmgArray.map(Number)
var SumOfBase = BaseNumbers.reduce(reducer)
var cosmosPerc = ((bossHP-SumOfBase)/bossHP*100).toFixed(3)

var cosmosRemain = Math.round(SumOfBase*cosmosPerc/(100-cosmosPerc))
document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-text").innerHTML = "<hr><b>Total Damage Dealt:</b> "+SumOfBase.toLocaleString("en-US")+"<hr><b>Leading Crew:</b><br>"+crew1[1]+"<br>"+crew1[2]+"<hr><b>Health Remaining:</b> "+cosmosRemain.toLocaleString("en-US")+'<br><a href='+document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a")+'>'+cosmosPerc+"%</a>"
document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > h3").innerHTML = '<a href='+document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a")+'>'+bossName[1]+'</a>'
document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation").innerHTML = ''
}})};}}

// moxximod raid results menu and styling

if (document.URL.indexOf("crew_raidresults") != -1 ) {
document.querySelector("#content-header-row > table > tbody > tr > td > form > p > input:nth-child(3)").setAttribute("value", "MoxxiMod raid results");
};

if (document.URL.indexOf("most_recent=MoxxiMod") != -1 ) {
GM_addStyle ( `#content-header-row > table > tbody > tr > td > div > center > div > table{background:#0B0B0B !important;}
td:nth-of-type(3){display: none;}
td:nth-of-type(4){display: none;}
td:nth-of-type(5){display: none;}
`);

var changeHeader0 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table")
changeHeader0.rows[0].cells[0].innerHTML = `<a onmouseover="popup\(event,'Raid time'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>TIME`

var changeHeader1 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table")
changeHeader1.rows[0].cells[1].innerHTML = `<a onmouseover="popup\(event,'Raid god, mob or boss'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>RAID`

// moxximod raid results header row

function insertAfter2(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

let rrHead11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead11 = document.createElement('td');
tdHead11.innerHTML = `<a onmouseover="popup\(event,'Total chars in the raid<br>(number of chars who died)'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>CHARS`;
insertAfter2(tdHead11, rrHead11.lastElementChild);

let rrHead1 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead1 = document.createElement('td');
tdHead1.innerHTML = `<a onmouseover="popup\(event,'Total amount of attack damage<br>Mouseover to see details'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>DMG`;
insertAfter2(tdHead1, rrHead1.lastElementChild);

let rrHead2 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead2 = document.createElement('td');
tdHead2.innerHTML = `<a onmouseover="popup\(event,'Average amount of attack damage per char'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>AVG`;
insertAfter2(tdHead2, rrHead2.lastElementChild);

let rrHead6 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead6 = document.createElement('td');
tdHead6.innerHTML = `<a onmouseover="popup\(event,'Average block rate of all chars'\)" onmouseout="kill\(\)"><font color="ff9e00"><b>BLOCK`;
insertAfter2(tdHead6, rrHead6.lastElementChild);

let rrHead7 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead7 = document.createElement('td');
tdHead7.innerHTML = `<a onmouseover="popup\(event,'Average ele block rate of all chars'\)" onmouseout="kill\(\)"><font color="00ff0b"><b>BLOCK`;
insertAfter2(tdHead7, rrHead7.lastElementChild);

let rrHead13 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead13 = document.createElement('td');
tdHead13.innerHTML = `<a onmouseover="popup\(event,'Average ele shield rate of all chars'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>SHIELD`;
insertAfter2(tdHead13, rrHead13.lastElementChild);

let rrHead14 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead14 = document.createElement('td');
tdHead14.innerHTML = `<a onmouseover="popup\(event,'Total number of individual attacks executed'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>ATKS`;
insertAfter2(tdHead14, rrHead14.lastElementChild);

let rrHead10 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead10 = document.createElement('td');
tdHead10.innerHTML = `<a onmouseover="popup\(event,'Total number of rounds'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>RNDS`;
insertAfter2(tdHead10, rrHead10.lastElementChild);

let rrHead12 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead12 = document.createElement('td');
tdHead12.innerHTML = `<a onmouseover="popup\(event,'Was SIN applied during the raid?'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>SIN`;
insertAfter2(tdHead12, rrHead12.lastElementChild);

let rrHead5 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead5 = document.createElement('td');
tdHead5.innerHTML = `<a onmouseover="popup\(event,'Remaining health of the mob'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>HEALTH`;
insertAfter2(tdHead5, rrHead5.lastElementChild);

let rrHead4 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
let tdHead4 = document.createElement('td');
tdHead4.innerHTML = `<a onmouseover="popup\(event,'Items dropped from raid'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>LOOT`;
insertAfter2(tdHead4, rrHead4.lastElementChild);

// moxximod raid results data scrape

var rrTable = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table");
var rrRowCount = 1+rrTable.rows.length;

for (let rownum = 2; rownum < rrRowCount; rownum++) {

let raidLink11 = '';
if (document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(5) > a") != null)
raidLink11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(5) > a");

let row11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+")")
let chars11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(3)").innerHTML;

let raidNameCell = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(2)");
let raidName = '';
if (raidNameCell != null)
raidNameCell.innerHTML = '<a href='+raidLink11+'>'+raidNameCell.innerHTML.replaceAll(/,.*/g,"").replaceAll(/of.*/g,"").replaceAll("The","").replaceAll(/the.*/g,"").replaceAll(/the.*/g,"")+'</a>';

let timeStampCell = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1)");
let timeStampName = '';
if (timeStampCell != null)
timeStampCell.innerHTML = timeStampCell.innerHTML.replaceAll(/[0-9]+-[0-9]+-[0-9]+/g,"");

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        raidLink11,
    onload:     function (responseDetails) {

var raidDmg11 = /Damage: ([0-9,]*)/;
var printDmg11 = raidDmg11.exec(responseDetails.responseText);

var raidDrops11 = /popup\(event,'<b>(.*)<\/b>'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
var printDrops11 = raidDrops11.exec(responseDetails.responseText);

var drops11 = '';
if (printDrops11 == null)
drops11 = `<b>No items found`
if (printDrops11 != null)
drops11 = printDrops11[1]

var raidHealth11 = /([0-9]+)%<\/span><\/div>.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r]<span id=/i;
var printHealth11 = raidHealth11.exec(responseDetails.responseText);

var health11 = '';
if (printHealth11[1] < 1)
health11 = `<font color=#02B602><b>`+printHealth11[1]+`%</font>`
if (printHealth11[1] > 0)
health11 = `<font color=#FF0000><b>`+printHealth11[1]+`%</font>`

fetch(raidLink11)
   .then(response => response.text())
   .then((response) => {

var attacks11 = response.match(/Base: [0-9]+/g).length;
var blocks11 = response.match(/images\/block\.jpg/g);
var eleblocks11 = response.match(/images\/block2\.jpg/g);
var shields11 = response.match(/_ele_shield\.jpg/g);
var dead11 = response.match(/images\/dead\.jpg/g);
var rounds11 = response.match(/\/img\/skin\/Bar_separator_little\.png/g).length;
var sincheck11 = response.match(/color:#CC0000;"><b>(.*)<\/b>/i);

const reducer = (accumulator, curr) => accumulator + curr

var BaseDmgArray = [];
var BaseMatch = response.matchAll(/onmouseover="popup\(event,.*Base: (.*)<div/g);
for (const BaseMatchLoop of BaseMatch) {
let BaseObj = [parseInt(BaseMatchLoop[1].replace(",",""))];
for (const BaseDmg of BaseObj) {
BaseDmgArray.push(BaseDmg);}}
var BaseNumbers = BaseDmgArray.map(Number)
var BaseDmgCheck = '';
if (BaseNumbers != "")
BaseDmgCheck = BaseNumbers
if (BaseNumbers == "")
BaseDmgCheck = [0]
var SumOfBase = BaseDmgCheck.reduce(reducer).toLocaleString("en-US");
var printBase = "<font color=#FFFFFF><b>+"+SumOfBase+" base<br>"

var FireDmgArray = [];
var FireMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) fire/g);
for (const FireMatchLoop of FireMatch) {
let FireObj = [parseInt(FireMatchLoop[1].replace(",",""))];
for (const FireDmg of FireObj) {
FireDmgArray.push(FireDmg);}}
var FireNumbers = FireDmgArray.map(Number)
var FireDmgCheck = '';
if (FireNumbers != "")
FireDmgCheck = FireNumbers
if (FireNumbers == "")
FireDmgCheck = [0]
var SumOfFire = FireDmgCheck.reduce(reducer).toLocaleString("en-US");
var printFire = "<font color=#ff0000><b>+"+SumOfFire+" fire<br>"

var ShadowDmgArray = [];
var ShadowMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) shadow/g);
for (const ShadowMatchLoop of ShadowMatch) {
let ShadowObj = [parseInt(ShadowMatchLoop[1].replace(",",""))];
for (const ShadowDmg of ShadowObj) {
ShadowDmgArray.push(ShadowDmg);}}
var ShadowNumbers = ShadowDmgArray.map(Number)
var ShadowDmgCheck = '';
if (ShadowNumbers != "")
ShadowDmgCheck = ShadowNumbers
if (ShadowNumbers == "")
ShadowDmgCheck = [0]
var SumOfShadow = ShadowDmgCheck.reduce(reducer).toLocaleString("en-US");
var printShadow = "<font color=#9f02d3><b>+"+SumOfShadow+" shadow<br>"

var HolyDmgArray = [];
var HolyMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) holy/g);
for (const HolyMatchLoop of HolyMatch) {
let HolyObj = [parseInt(HolyMatchLoop[1].replace(",",""))];
for (const HolyDmg of HolyObj) {
HolyDmgArray.push(HolyDmg);}}
var HolyNumbers = HolyDmgArray.map(Number)
var HolyDmgCheck = '';
if (HolyNumbers != "")
HolyDmgCheck = HolyNumbers
if (HolyNumbers == "")
HolyDmgCheck = [0]
var SumOfHoly = HolyDmgCheck.reduce(reducer).toLocaleString("en-US");
var printHoly = "<font color=#00FFFF><b>+"+SumOfHoly+" holy<br>"

var ArcaneDmgArray = [];
var ArcaneMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) arcane/g);
for (const ArcaneMatchLoop of ArcaneMatch) {
let ArcaneObj = [parseInt(ArcaneMatchLoop[1].replace(",",""))];
for (const ArcaneDmg of ArcaneObj) {
ArcaneDmgArray.push(ArcaneDmg);}}
var ArcaneNumbers = ArcaneDmgArray.map(Number)
var ArcaneDmgCheck = '';
if (ArcaneNumbers != "")
ArcaneDmgCheck = ArcaneNumbers
if (ArcaneNumbers == "")
ArcaneDmgCheck = [0]
var SumOfArcane = ArcaneDmgCheck.reduce(reducer).toLocaleString("en-US");
var printArcane = "<font color=#FFFF00><b>+"+SumOfArcane+" arcane<br>"

var KineticDmgArray = [];
var KineticMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) kinetic/g);
for (const KineticMatchLoop of KineticMatch) {
let KineticObj = [parseInt(KineticMatchLoop[1].replace(",",""))];
for (const KineticDmg of KineticObj) {
KineticDmgArray.push(KineticDmg);}}
var KineticNumbers = KineticDmgArray.map(Number)
var KineticDmgCheck = '';
if (KineticNumbers != "")
KineticDmgCheck = KineticNumbers
if (KineticNumbers == "")
KineticDmgCheck = [0]
var SumOfKinetic = KineticDmgCheck.reduce(reducer).toLocaleString("en-US");
var printKinetic = "<font color=#00FF00><b>+"+SumOfKinetic+" kinetic<br>"

var VileDmgArray = [];
var VileMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) vile/g);
for (const VileMatchLoop of VileMatch) {
let VileObj = [parseInt(VileMatchLoop[1].replace(",",""))];
for (const VileDmg of VileObj) {
VileDmgArray.push(VileDmg);}}
var VileNumbers = VileDmgArray.map(Number)
var VileDmgCheck = '';
if (VileNumbers != "")
VileDmgCheck = VileNumbers
if (VileNumbers == "")
VileDmgCheck = [0]
var SumOfVile = VileDmgCheck.reduce(reducer).toLocaleString("en-US");
var printVile = "<font color=#cccccc><b>+"+SumOfVile+" vile energy<br>"

var ChaosDmgArray = [];
var ChaosMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) chaos/g);
for (const ChaosMatchLoop of ChaosMatch) {
let ChaosObj = [parseInt(ChaosMatchLoop[1].replace(",",""))];
for (const ChaosDmg of ChaosObj) {
ChaosDmgArray.push(ChaosDmg);}}
var ChaosNumbers = ChaosDmgArray.map(Number)
var ChaosDmgCheck = '';
if (ChaosNumbers != "")
ChaosDmgCheck = ChaosNumbers
if (ChaosNumbers == "")
ChaosDmgCheck = [0]
var SumOfChaos = ChaosDmgCheck.reduce(reducer).toLocaleString("en-US");
var printChaos = "<font color=#f441be><b>+"+SumOfChaos+" chaos"

var totdead11 = '';
if (dead11 != null)
totdead11 = (dead11.length).toFixed(0)
if (dead11 == null)
totdead11 += "0"

var shieldrate11 = '';
if (shields11 != null)
shieldrate11 = (shields11.length/attacks11*100).toFixed(1)
if (shields11 == null)
shieldrate11 += "0.0"

var sin11 = '';
if (sincheck11[1] != "0")
sin11 += "No"
if (sincheck11[1] == "0")
sin11 += "Yes"

var blockrate11 = '';
if (blocks11 != null)
blockrate11 += (blocks11.length/attacks11*100).toFixed(1)
if (blocks11 == null)
blockrate11 += "0.0"

var eleblockrate11 = '';
if (eleblocks11 != null)
eleblockrate11 = (eleblocks11.length/attacks11*100).toFixed(1)
if (eleblocks11 == null)
eleblockrate11 += "0.0"

let td112 = document.createElement('td');
td112.innerHTML = chars11+" (<span>&#128369;</span>"+totdead11+")";
insertAfter2(td112, row11.lastElementChild);

var damage11 = printDmg11[1];

let td11 = document.createElement('td');
td11.innerHTML = `<span class="dmgbox-text" onmouseover="popup(event,'</center>`+printBase+printFire+printShadow+printHoly+printArcane+printKinetic+printVile+printChaos+`');" onmouseout="kill();">`+damage11;
insertAfter2(td11, row11.lastElementChild);

var cells11 = row11.getElementsByTagName("td");

let td12 = document.createElement('td');
var td12comma = Math.floor(printDmg11[1].replace(/,/g, '')/cells11[2].innerText);
td12.textContent = td12comma.toLocaleString("en-US");
insertAfter2(td12, row11.lastElementChild);

let td61 = document.createElement('td');
td61.innerHTML = blockrate11+"%";
insertAfter2(td61, row11.lastElementChild);

let td71 = document.createElement('td');
td71.innerHTML = eleblockrate11+"%";
insertAfter2(td71, row11.lastElementChild);

let td111 = document.createElement('td');
td111.innerHTML = shieldrate11+"%";
insertAfter2(td111, row11.lastElementChild);

let td13 = document.createElement('td');
td13.innerHTML = attacks11;
insertAfter2(td13, row11.lastElementChild);

let td91 = document.createElement('td');
td91.innerHTML = rounds11;
insertAfter2(td91, row11.lastElementChild);

let td101 = document.createElement('td');
td101.innerHTML = sin11;
insertAfter2(td101, row11.lastElementChild);

let td51 = document.createElement('td');
td51.innerHTML = health11;
insertAfter2(td51, row11.lastElementChild);

let td41 = document.createElement('td');
td41.innerHTML = drops11.replaceAll(/Amulet Chest \(.*\),/g,"").replaceAll(/,/g,"<br>");
insertAfter2(td41, row11.lastElementChild);

});}})}}

// world

function doc_keyUp(e) {
    if (e.key === '1') {
            document.querySelector("#roomDetails > ul > li:nth-child(1) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '2') {
            document.querySelector("#roomDetails > ul > li:nth-child(2) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '3') {
            document.querySelector("#roomDetails > ul > li:nth-child(3) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '4') {
            document.querySelector("#roomDetails > ul > li:nth-child(4) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '5') {
            document.querySelector("#roomDetails > ul > li:nth-child(5) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '6') {
            document.querySelector("#roomDetails > ul > li:nth-child(6) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '7') {
            document.querySelector("#roomDetails > ul > li:nth-child(7) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '8') {
            document.querySelector("#roomDetails > ul > li:nth-child(8) > div > div.ml-3.d-block.align-self-center > a > img").click();}
    if (e.key === '9') {
            document.querySelector("#roomDetails > ul > li:nth-child(9) > div > div.ml-3.d-block.align-self-center > a > img").click();}}

document.addEventListener('keyup', doc_keyUp, false);

if ( document.URL.indexOf("world") != -1 ) {
let observer = new MutationObserver(mutationRecords => {
  attackframe()
});
observer.observe(roomid_display, {
  childList: true,
  subtree: true,
  characterDataOldValue: true
});

function attackframe(){
$('a[target="_blank"]').prop("target", "attack");
};}


if (document.URL.indexOf("plrattack") != -1 ) {
$("#sidebar").hide()
$("body > center > div.sub-header-container").hide()
$("body > center > div.header-container.fixed-top").hide()
$("#ranks-filters > form > div").hide()
GM_addStyle ( `
#container{background:#0B0B0B !important;}
#content > div.layout-px-spacing{margin-top: -50px !important;background:#0B0B0B !important;}
.mr-3, .mx-3 {margin-right: 0rem!important;}
#content-header-row > center{zoom: 90% !important;}
` );}

if ( document.URL.indexOf("world") != -1 ) {
var theImage8;
theImage8 = document.querySelector("#content-header-row > div.col-xl-5.col-lg-12.col-md-6.col-sm-12.col-12.layout-spacing.px-1 > div > div.widget-content > div.room-top")
theImage8.innerHTML =
'<div id="attack"><iframe src="" name="attack" id="attack" style="border:0px #ffffff none;" scrolling="no" frameborder="0" height="1px" width="750px"></iframe></div>'}
if ( document.URL.indexOf("world") != -1 ) {
document.querySelector("#roomDetails").onclick = function() {$("iframe").height(450)}}

if ( document.URL.indexOf("world") != -1 ) {
GM_addStyle ( `
#roomDetails > ul > li > div > div.mr-3 > img {display:none !important;}
#ranks > li > div > div.mr-3 > div > div.rank-row-image > a{width: 0px !important;}
#ranks > li > div > div.media-body{text-align: left !important;}

.mr-3, .mx-3 {margin-right: 0rem!important;}
#content-header-row > div.col-xl-5.col-lg-12.col-md-6.col-sm-12.col-12.layout-spacing.px-1 > div > div.widget-content > div.room-middle{display:none !important;}
.spawnRow{padding-top:0px !important;padding-bottom:0px !important;}
#roomDetails > ul > li {
display: block !important;
list-style-type: disc !important;
margin-block-start: 0em !important;
margin-block-end: 0em !important;
margin-inline-start: 0px !important;
margin-inline-end: 0px !important;
padding-inline-start: 0px !important;
}

` );}

if ( document.URL.indexOf("plrattack") != -1 ) {

GM_addStyle ( `#result_notice_window {
	zoom: 225% !important;
	top: -0px !important;
	;
	left: 15px !important;
	top: -17px !important;
}` );}

// redefined

if ( document.URL.indexOf("scratch_ticket") != -1 ) {
var theImage2;
theImage2 = document.querySelector("#content > div.layout-px-spacing")
theImage2.innerHTML = '<div id="contentframe" style="position:fixed; top: 100px; left: -65px;">' +
'<iframe src="https://www.redefined.ro/?Quests" style="border:0px #ffffff none;" name="redefined" scrolling="yes" frameborder="0" marginheight="0px" marginwidth="0px" height="800px" width="1600px" allowfullscreen></iframe>' +
'</div>'}

// sess id

var byptlink = document.querySelector("#accordionExample > a");
var sessid = byptlink.href.replace(/https:\/\/rampidgaming.outwar.com\/stripe_buy\?game=ow&outwar=0&wsrv=\$subDomain&lvl=\$user\[level]&rg_sess_id=/, ' ');
var bypplink = document.querySelector("#components > li:nth-child(12) > a")

// custom side menu

var theImage;
theImage = document.querySelector("#sidebar");
theImage.innerHTML = '<div class="sidebar-wrapper sidebar-theme">'+
'<nav id="sidebar">'+
'<div class="shadow-bottom"></div>'+
'<ul class="list-unstyled menu-categories ps" id="accordionExample">'+

'<li class="menu">'+
'<a href="/home" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fa fa-home"></i>'+
'<span> HOME</span>'+
'</div>'+
'</a>'+
'</li>'+

'<li class="menu">'+
'<a href="#components" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-user fa-fw"></i>'+
'<span> CHARACTER</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="components" data-parent="#accordionExample">'+

'<li><a href="/profile"> PROFILE</a></li>'+
'<li><a href="/ow_messagecenter"> MESSAGE CENTER</a></li>'+
'<li><a href="/cast_skills"> SKILLS</a></li>'+
'<li><a href="/allies"> MY ALLIES</a></li>'+
'<li><a href="/underlings"> UNDERLINGS</a></li>'+
'<li><a href="/user_preferences"> PREFERENCES</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#server" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-server fa-fw"></i>'+
'<span> SERVER</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="server" data-parent="#accordionExample">'+
'<li><a href="/attack_search"> SEARCH</a></li>'+
'<li><a href="/newrankings"> RANKINGS</a></li>'+
'<li><a href="/gladiator"> GLADIATORS</a></li>'+
'<li><a href="/event?eventid=woz"> WAR OF ZHUL</a></li>'+
'<li><a href="/event?eventid=top"> TRIAL OF POWER</a></li>'+
'<li><a href="/kotw"> KOTW</a></li>'+
'<li><a href="/news"> NEWS</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#elements" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fa fa-shopping-cart fa-fw"></i>'+
'<span> ECONOMY</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="elements" data-parent="#accordionExample">'+
'<li><a href="/treasury?type=-1"> BUY ITEMS</a></li>'+
'<li><a href="/mytreasury"> SELL ITEMS</a></li>'+
'<li><a href="/supplies"> SUPPLIES</a></li>'+
'<li><a href="/pointtransfer"> TRANSFER PNTS</a></li>'+
'<li><a href="' + bypplink.href +'">PREFERRED PLAYER</a></li>'+
'<li><a href="/metamask"> METAMASK NFT</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#forms" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-shield fa-fw"></i>'+
'<span> CREW</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="forms" data-parent="#accordionExample">'+
'<li><a href="/crew_home"> CREW HOME</a></li>'+
'<li><a href="/crew_profile"> CREW PROFILE</a></li>'+
'<li><a href="/crew_bossspawns"> RAID BOSSES</a></li>'+
'<li><a href="/crew_vault"> CREW VAULT</a></li>'+
'<li><a href="/godstatus"> GOD STATUS</a></li>'+
'<li><a href="/crewinvites"> CREW INVITES</a></li>'+
'<li><a href="/crew_leavecrew"> LEAVE CREW</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#pvp" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-shield-alt fa-fw"></i>'+
'<span> PVP</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="pvp" data-parent="#accordionExample">'+
'<li><a href="/attacklog"> ATTACK LOG</a></li>'+
'<li><a href="/pvptourney"> OPEN TOURNEY</a></li>'+
'<li><a href="/closedpvp"> PVP BRAWL</a></li>'+
'<li><a href="/bounty"> BOUNTY BOARD</a></li>'+
'<li><a href="/crew_hitlist"> HITLIST</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#datatables" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-shopping-bag fa-fw"></i>'+
'<span> ITEMS</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="datatables" data-parent="#accordionExample">'+
'<li><a href="/vault"> VAULT</a></li>'+
'<li><a href="/blacksmith"> BLACKSMITH</a></li>'+
'<li><a href="/augmentequip"> ADD AUGMENTS</a></li>'+
'<li><a href="/itemtransfer"> ITEM TRANSFER</a></li>'+
'<li><a href="/cauldron"> CAULDRON</a></li>'+
'<li><a href="/challenge"> CHALLENGE SETS</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#resources" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-book fa-fw"></i>'+
'<span> QUESTS</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="resources" data-parent="#accordionExample">'+
'<li><a href="/scratch_ticket"> REDEFINED</a></li>'+
'<li><a href="/weeklyquests"> BOOSTERS</a></li>'+
'<li><a href="/questlog"> QUEST LOG</a></li>'+
'<li><a href="/dungeons"> DUNGEONS</a></li>'+
'<li><a href="/collections"> COLLECTIONS</a></li>'+
'<li><a href="/challenge"> CHALLENGES</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="#rga" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fa fa-address-card"></i>'+
'<span> RGA</span>'+
'</div>'+
'<div>'+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
'</div>'+
'</a>'+
'<ul class="collapse submenu list-unstyled" id="rga" data-parent="#accordionExample">'+
'<input type="text" value='+sessid+' maxlength="18" size="18" id="sessidbox">'+
'<li><a href="/earnfreepoints"> MOXXI VISION</a></li>'+
'<li><a href="/myaccount.php?ac_serverid=2"> TORAX CHARS</a></li>'+
'<li><a href="/myaccount.php?ac_serverid=1"> SIGIL CHARS</a></li>'+
'<li><a href="/accountinfo.php"> ACCOUNT</a></li>'+
'<li><A href="/editcharacters.php?page=3"> TRUSTEES</a></li>'+
'<li><a href="/support.php"> OW SUPPORT</a></li>'+
'<li><a href="?cmd=logout"> LOGOUT</a></li>'+
'</ul>'+
'</li>'+

'<li class="menu">'+
'<a href="/world" class="dropdown-toggle">'+
'<div class="">'+
'<i class="fas fa-globe fa-fw"></i>'+
'<span> WORLD</span>'+
'</div>'+
'</a>'+
'</li>' +

'<p><br>' +

'<div class=search>' +
'<form method="post" action="playersearch.php" target="_parent">' +
'<div class="col-12 px-2">' +
'<input id="t-text" type="text" name="search" placeholder="player search" class="form-control" required="">' +
'</div>' +
'</form>' +
'</div>' +
'<div class="row mt-4">' +
'</div>'+
'<form method="post" action="crewsearch.php" target="_parent">' +
'<div class="col-12 px-2">' +
'<input id="t-text" type="text" name="search" placeholder="crew search" class="form-control" required="">' +
'</div>' +
'</form>' +
'<p><br><a href=/crew_apply>MoxxiMod v4.9</a>' +
'</div>' +
'<div class="row mt-4">' +
'</div></div>' +
'</p></div>'

var servername = window.location.hostname.split(".")[0];
setTimeout(function() {
$("span:contains('SERVER')").text(servername);
}, 10);

// currency toolbar

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/backpackcontents.php?tab=quest',
    onload:     function (responseDetails) {
const ammyID = /Amulet of Achievement" data-itemqty="([0-9]*)"/g;
const ammyRes = ammyID.exec(responseDetails.responseText);
const badgeID = /Badge Reputation" data-itemqty="([0-9]*)"/g;
const badgeRes = badgeID.exec(responseDetails.responseText);

fetch('ajax/challenge_status.php')
   .then(response => response.text())
   .then((response) => {

var claimed = response.match(/tokens":"(.*)","p_tokens"/i)

var freeTok = '';
if (claimed[1] < 30)
freeTok = claimed[1]
if (claimed[1] > 29)
freeTok = "<font color=#ff0000>"+claimed[1]+"</font>"

var ammyPrint = '';
if (ammyRes != null)
ammyPrint = ammyRes[1]
if (ammyRes == null)
ammyPrint = "0"

var badgePrint = '';
if (badgeRes != null)
badgePrint = badgeRes[1]
if (badgeRes == null)
badgePrint ="0"

var ammyCnt = ammyPrint

var ammy = ammyCnt;

var badgeCnt = badgePrint

var badge = '';
if (badgeCnt < 15)
badge = badgeCnt
if (badgeCnt > 14)
badge = '<font color=#00CC00>'+badgeCnt+'</font>'

var goldPrint = document.body.innerHTML.match(/<tr><td><b>Gold:<\/b><\/td><td>(.*)<\/td><\/tr>/i);
var pbPrint = document.body.innerHTML.match(/<tr><td><b>Points:<\/b><\/td><td><font size=2 color=#00FF00>(.*)<\/font><\/td><\/tr>/i);
var prPrint = document.body.innerHTML.match(/<tr><td><b>Premium:<\/b><\/td><td><font size=2 color=#00FF00>(.*)\.<\/font>/i);
var tkPrint = document.body.innerHTML.match(/<tr><td><b>Tokens:<\/b><\/td><td><font size=2 color=#00FF00>(.*)<\/font>/i);
var skPrint = document.body.innerHTML.match(/<tr><td><b>Skill:<\/b><\/td><td>(.*)<\/td><\/tr>/i);

const theImage = document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav > li:nth-child(4)");
theImage.innerHTML = `<div class="dropdown"><a href="`+byptlink.href+`" onmouseover="statspopup(event,'<table><tr><td><b>Points:</b></td><td>`+pbPrint[1]+`</td></tr><tr><td><b>Premium:</b></td><td>`+prPrint[1]+`</td></tr><tr><td><b>Free Tokens:</b></td><td>`+freeTok+`</td></tr><tr><td><b>Prem Tokens:</b></td><td>`+(tkPrint[1]-claimed[1])+`</td></tr><tr><td><b>Skill Points:</b></td><td>`+skPrint[1]+`</td></tr><tr><td><b>Badge Reps:</b></td><td>`+badge+`</td></tr><tr><td><b>Amulets:</b></td><td>`+ammy+`</td></tr><tr><td><b>Gold:</b></td><td>`+goldPrint[1]+`</td></tr></table><p><font color=#FFF000><center>click to buy points')" onmouseout="kill()"><button class="dropbtn"><font size=1>$$$</button></a></div>`
                }
)}} );

function insertAfter2(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

let menu = document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav");

let li = document.createElement('li');
li.textContent = '';
insertAfter2(li, menu.children[2]);

// moxximod page

if ( document.URL.indexOf("crew_apply") != -1 ) {
var theImage11;
theImage11 = document.querySelector("#content")
theImage11.innerHTML =
'<div id=moxxi_mod_page>' +
'<img src=https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/mm_logo.png width=50% padding=20px><p>' +
'<a href=https://discord.com/invite/f35cccbWU8?utm_source=Discord%20Widget&utm_medium=Connect target=_blank><img src=https://studiomoxxi.com/moxximod/discord.png width=30%></a><p>' +
'MoxxiMod is a userscript written to improve the gaming user interface and player experience<p>' +
'The code is a combination of CSS (cascading style sheets) and JS (javascript)<p>' +
'<b>MoxxiMod is 100% free</b><p>' +
'If you want to support, please send points to <font color=A30020>Moxxi</font><p>' +
'For help with setup or to report a bug, join our Discord server<p>' +
'<a href=https://studiomoxxi.com/moxximod/ target=_blank>Click Here</a> for the latest scripts</div>' +
'<div id=moxxi_mod_tys>' +
'<p>BIG THANK YOU FOR THE TECHNICAL DEV SUPPORT<p>Beast666007, Bello, CarminT' +
'<p>AND THANK YOU TO THE BETA TESTERS<p>Rhino, Andreas, Brillo, Dkgoon<br>StarFox, Kevin, Kriminal, Shawn<br>Tyler, Xafloc, Jalek, Rodeo<br>StarPower, TeddyPain, TheStud'+
'</div>'
}

// toolbar skills

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/profile',
    onload:     function (responseDetails) {

        const skill0 = /<img align="absmiddle" border="0" src="\/images\/skills\/skill_2952\.gif".*/i;
        const lingloy = skill0.exec(responseDetails.responseText);
        const skill1 = /<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png".*/i;
        const circ = skill1.exec(responseDetails.responseText);
        const skill2 = /<img align="absmiddle" border="0" src="\/images\/skills\/markdown\.png".*/i;
        const markdown = skill2.exec(responseDetails.responseText);
        const skill3 = /<img align="absmiddle" border="0" src="\/images\/skills\/hitman\.png".*/i;
        const hitman = skill3.exec(responseDetails.responseText);
        const skill4 = /<img align="absmiddle" border="0" src="\/images\/skills\/haste\.png".*/i;
        const haste = skill4.exec(responseDetails.responseText);
        const skill5 = /<img align="absmiddle" border="0" src="\/images\/skills\/streetsmarts\.png".*/i;
        const street = skill5.exec(responseDetails.responseText);
        const skill6 = /<img align="absmiddle" border="0" src="\/images\/skills\/onguard\.png".*/i;
        const onguard = skill6.exec(responseDetails.responseText);
        const skill7 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz80\.gif".*/i;
        const questexp = skill7.exec(responseDetails.responseText);
        const skill8 = /<img align="absmiddle" border="0" src="\/images\/skills\/killingspree\.png".*/i;
        const spree = skill8.exec(responseDetails.responseText);
        const skill9 = /<img align="absmiddle" border="0" src="\/images\/skills\/masterferoskill\.png".*/i;
        const masterF = skill9.exec(responseDetails.responseText);
        const skil20 = /<img align="absmiddle" border="0" src="\/images\/skills\/masterpresskill\.png".*/i;
        const masterP = skil20.exec(responseDetails.responseText);
        const skil21 = /<img align="absmiddle" border="0" src="\/images\/skills\/masteraffskill\.png".*/i;
        const masterA = skil21.exec(responseDetails.responseText);
        const skil22 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz82\.jpg".*/i;
        const chaosMaj = skil22.exec(responseDetails.responseText);
        const skil23 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz91\.jpg".*/i;
        const chaosMin = skil23.exec(responseDetails.responseText);
        const skil24 = /<img align="absmiddle" border="0" src="\/images\/items\/itemz28\.jpg".*/i;
        const endFlask = skil24.exec(responseDetails.responseText);
        const skil25 = /<img align="absmiddle" border="0" src="\/images\/skills\/blessingfromabove\.png".*/i;
        const bfa = skil25.exec(responseDetails.responseText);

        var skills = '';
        if (lingloy != null)
        skills += lingloy+'<br>';
        if (circ != null)
        skills += circ+'<br>';
        if (markdown != null)
        skills += markdown+'<br>';
        if (hitman != null)
        skills += hitman+'<br>';
        if (haste != null)
        skills += haste+'<br>';
        if (street != null)
        skills += street+'<br>';
        if (onguard != null)
        skills += onguard+'<br>';
        if (questexp != null)
        skills += questexp+'<br>';
        if (spree != null)
        skills += spree+'<br>';
        if (masterF != null)
        skills += masterF+'<br>';
        if (masterP != null)
        skills += masterP+'<br>';
        if (masterA != null)
        skills += masterA+'<br>';
        if (chaosMin != null)
        skills += chaosMin+'<br>';
        if (chaosMaj != null)
        skills += chaosMaj+'<br>';
        if (bfa != null)
        skills += bfa+'<br>';
        if (endFlask != null)
        skills += endFlask+'<br>';
        if (skills == "")
        skills += "void"

// skills tooltab

if (skills != "void"){
$("body").append ( `
    <div id="rightbar">
    <center>
    <a href=cast_skills>SKILLS</a><p>
    `+skills+`
    </div>
` );}

// recent raid tooltab

if (document.location.href.indexOf('characters') === -1){

fetch('/profile')
   .then(response => response.text())
   .then((response) => {var myCrewID = response.match(/<a href="\/crew_profile\?id=.*">/).toString().replace(/<a href="\/crew_profile\?id=/,"").replace(/">/,"")

var raidLink ='/crew_raidresults.php?all_results=Display+all+raid+results&crewid='+myCrewID

fetch(raidLink)
   .then(response => response.text())
   .then((response) => {

    var myLastRaid = '';
    if (response.match(/<a href="raidattack\.php\?raidid=.*">View<\/a>/) != null)
    myLastRaid = response.match(/<a href="raidattack\.php\?raidid=.*">View<\/a>/).toString().replace(/<a href="/,"/").replace(/">View<\/a>/,"")
    if (response.match(/<a href="raidattack\.php\?raidid=.*">View<\/a>/) == null)
    myLastRaid = "void"

if (myLastRaid != "void"){
fetch(myLastRaid)
   .then(response => response.text())
   .then((response) => {

var raidMob = response.match(/<h4 class="text-center d-flex align-items-center justify-content-center">(.*)<\/h4>.*[\n\r].*[\n\r].*<div class="defenderimage skinborder d-flex justify-content-center align-items-center mb-3">.*[\n\r](.*)/i)
var crewName = response.match(/.*<b>(.*) has (.*)!<\/b>/i)

var raidLootx = response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i)

var raidLoot = '';
if (response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i) != null)
raidLoot = response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i)
if (response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i) == null)
raidLoot = "void"

var raidLoot2 = '';
if (raidLoot != "void")
raidLoot2 = raidLoot[1].toString().replace(/<\/b>'\)" onmouseout="kill\(\)">.*/i,"").replaceAll(/<br>/g,", ")
if (raidLoot == "void")
raidLoot2 = "Nothing"

var raidResult = '';
if (crewName[2] == "lost")
raidResult = "<font color=#FF0000>lost</font> to"
if (crewName[2] == "won")
raidResult = "<font color=#00FF00>defeated</font>"

$("body").append ( `
    <div id="recentraid">
    <center>
    <a href=`+raidLink+`>RAIDS</a><p>
    <a href=`+myLastRaid+` onmouseover="popup(event,'<b>`+crewName[1]+`</b> `+raidResult+` `+raidMob[1]+`<br><b>Found:</b> `+raidLoot2+`<br><font color=#FFFF00>(click to view the raid)</a>')" onmouseout="kill()">`+raidMob[2]+`
    </div>
` );

})}})})}}})

// extra

if (document.URL.indexOf("726169") != -1 ) {
GM_addStyle ( `
   #divProfile > div:nth-child(2) > div > div > div.col-xl-4.col-md-5 > div > div:nth-child(2) > div > div > div:nth-child(2) > img{content: url("https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/disa_head.png") !important;}` );
};

// server switch link

var server = window.location.href;

var server2 = server.replace(/\.outwar\.com.*/, '');
var server3 = server2.replace(/http.*:\/\//, '');

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/myaccount.php?ac_serverid=2',
    onload:     function (responseDetails) {
const toraxGet = /https:\/\/torax\.outwar\.com\/world\?suid=[0-9]+&serverid=2/i;
const toraxGetPrint = toraxGet.exec(responseDetails.responseText);

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/myaccount.php?ac_serverid=1',
    onload:     function (responseDetails) {
const sigilGet = /https:\/\/sigil\.outwar\.com\/world\?suid=[0-9]+&serverid=1/i;
const sigilGetPrint = sigilGet.exec(responseDetails.responseText);

var torax = "torax";
var sigil = "sigil";

var servSwitch = '';
if (server3 != torax)
servSwitch += toraxGetPrint+"#";
if (server3 != sigil)
servSwitch += sigilGetPrint+"#";

let serverGo1 = servSwitch.replace("null", "");
let serverGo2 = serverGo1.replace("world", "home");

var otherServ = '';
if (server3 != torax)
otherServ = torax;
if (server3 != sigil)
otherServ = sigil;

// toolbar supplies notification

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://outwar.com/supplies',
    onload:     function (responseDetails) {
const supplies = /<img border="0" src="images\/suppliestriangle\.gif" width="11" height="11">[\n\r](.*)%<\/td>/i;
const suppliesPrint = supplies.exec(responseDetails.responseText);

let result;
if (suppliesPrint[1] < 100) {
    result = 'positive';
  } else {
    result = null;
  }
        var suppliesPOP = '';
        if (result != null)
        suppliesPOP += `<a href=/supplies><img src=https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/suppliespop.png width=25px height=25px onmouseover="popup(event,'<b><font color=#FFFFFF>SUPPLIES: `+suppliesPrint[1]+`%<br></b><font color=#fff000>(click to buy more)')" onmouseout="kill()"></a>`;

// toolbar strength notification

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://outwar.com/profile',
    onload:     function (responseDetails) {
const strength = /event,'Strength: ([0-9]+)'/i;
const strengthPrint = strength.exec(responseDetails.responseText);


let resultStr;
if (strengthPrint[1] < 100) {
    resultStr = 'positive';
  } else {
    resultStr = null;
  }

        var strengthtb = '';
        if (resultStr != null)
        strengthtb += `<img src=https://torax.outwar.com/images/items/pot6.jpg width=25px height=25px onmouseover="popup(event,'<b><font color=#FFFFFF>STRENGTH: `+strengthPrint[1]+`%<br></b>')" onmouseout="kill()">`;

// toolbar gladiator notification

fetch('/gladiator?mobid=4391')
   .then(response => response.text())
   .then((response) => {

var vorkCheck = response.match(/Will retreat in/i);

        var vork = '';
        if (vorkCheck != null)
        vork += `<a href=/gladiator?mobid=4391><img src=https://outwar.com/images/mobs/velgladiator.jpg width=25px height=25px onmouseover="popup(event,'<b>Vork is Available</b><br><font color=#FFF000>(click to view)')" onmouseout="kill()"></a>`;

fetch('/gladiator?mobid=3991')
   .then(response => response.text())
   .then((response) => {

var zerxCheck = response.match(/Will retreat in/i);

        var zerx = '';
        if (zerxCheck != null)
        zerx += `<a href=/gladiator?mobid=3991><img src=https://outwar.com/images/mobs/mobc34.jpg width=25px height=25px onmouseover="popup(event,'<b> Zerx is Available</b><br><font color=#FFF000>(click to view)')" onmouseout="kill()"></a>`;

// toolbar brawl notification

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://outwar.com/closedpvp',
    onload:     function (responseDetails) {
const brawlCheck = /images\/atk_player_icon\.jpg/i;
const brawlPrint = brawlCheck.exec(responseDetails.responseText);

        var brawl = '';
        if (brawlPrint != null)
        brawl += `<a href=/closedpvp><img src=https://images.emojiterra.com/google/android-pie/512px/1f94a.png width=25px height=25px onmouseover="popup(event,'<b>PVP Brawl is Active</b><br><font color=#FFF000>(Click to view)')" onmouseout="kill()"></a>`;

// toolbar boss notification

fetch('/crew_bossspawns')
   .then(response => response.text())
   .then((response) => {

        const cosmos = response.match(/images\/CosmosGreatAllBeing\.jpg/i);
        const death = response.match(/images\/DeathReaperOfSouls\.jpg/i);
        const maekrix = response.match(/images\/MaekrixDreadedStriker\.jpg/i);
        const blackhand = response.match(/images\/BlackhandReborn\.png/i);
        const zyrak = response.match(/images\/velserverboss\.jpg/i);

        const cosmosh = response.match(/Cosmos, Great All Being.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i);
        const deathh = response.match(/Death, Reaper of Souls.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i);
        const maekrixh = response.match(/Maekrix, Dreaded Striker.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i);
        const blackhandh = response.match(/Blackhand Reborn.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i);
        const zyrakh = response.match(/Zyrak, Vision of Madness.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i);

        const cosmoss = response.match(/Cosmos, Great All Being.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i);
        const deaths = response.match(/Death, Reaper of Souls.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i);
        const maekrixs = response.match(/Maekrix, Dreaded Striker.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i);
        const blackhands = response.match(/Blackhand Reborn.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i);
        const zyraks = response.match(/Zyrak, Vision of Madness.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i);

        var boss = '';
        if (cosmos != null)
        boss += cosmoss[1]+`<img src="http://www.outwar.com/`+cosmos+`" width="25px" height="25px" onmouseover="popup(event,'<b>Cosmos, Great All Being</b><br>Health: `+cosmosh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
        if (death != null)
        boss += deaths[1]+`<img src="http://www.outwar.com/`+death+`" width="25px" height="25px" onmouseover="popup(event,'<b>Death, Reaper of Souls</b><br>Health: `+deathh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
        if (maekrix != null)
        boss += maekrixs[1]+`<img src="http://www.outwar.com/`+maekrix+`" width="25px" height="25px" onmouseover="popup(event,'<b>Maekrix, Dreaded Striker</b><br>Health: `+maekrixh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
        if (blackhand != null)
        boss += blackhands[1]+`<img src="http://www.outwar.com/`+blackhand+`" width="25px" height="25px" onmouseover="popup(event,'<b>Blackhand Reborn</b><br>Health: `+blackhandh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
        if (zyrak != null)
        boss += zyraks[1]+`<img src="http://www.outwar.com/`+zyrak+`" width="25px" height="25px" onmouseover="popup(event,'<b>Zyrak, Vision of Madness</b><br>Health: `+zyrakh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;

// toolbar god notification

fetch('/raidtools')
   .then(response => response.text())
   .then((response) => {

	    const god1imgPRINT = response.match(/onclick="sendTeleportRequest.*(images.*)" border.*/i);
        const god1txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*Teleport to (.*)<\/font>/i);
        const god2imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*(images.*)" border.*/i);
        const god2txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i);
        const god3imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i);
        const god3txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i);
        const god4imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i);
        const god4txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i);
        const god5imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i);
        const god5txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i);
        const god6imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i);
        const god6txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i);
        const god7imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i);
        const god7txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i);

        var gods = '';
        if (god1imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god1imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god1txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
        if (god2imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god2imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god2txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
        if (god3imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god3imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god3txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
        if (god4imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god4imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god4txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
        if (god5imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god5imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god5txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
        if (god6imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god6imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god6txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
        if (god7imgPRINT != null)
        gods += `<img src="http://www.outwar.com/`+god7imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god7txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;

// all toolbar

document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav > li.nav-item.more-dropdown.little-space.hide-on-mob.progress-top").innerHTML =

'<table><tr>'+
'<td><div id=toolbar1>toolbar1</div></td>'+
'<td><div id=toolbar2>toolbar2</div></td>'+

'</tr></table>'

document.querySelector("#toolbar1").innerHTML =

'<table><tr><td>' +
`<div class="dropdown"><a href=`+serverGo2+` onmouseover="popup(event,'switch to `+otherServ+`')" onmouseout="kill()"><button class="dropbtn"><font size=1>SERVER</button></a></div>` +
    '</td><td>'+

'</td><td>'+
'<div class="dropdown">' +
'<button class="dropbtn"><font size=1>FAST TRAVEL</button></a>' +
'<div class="dropdown-content">' +
    '<a href="/world.php?room=26137">ASTRAL RIFT</a>' +
    '<a href="/world.php?room=25989">CHALLENGES</a>' +
    '<a href="/world.php?room=24284">DEATHBAT GRAVEYARD</a>' +
    '<a href="/world.php?room=4249">EOB SANDS</a>' +
    '<a href="/world.php?room=42550">MADNESS VAULT</a>' +
    '<a href="/world.php?room=23311">MOUNTAIN CAVE</a>' +
    '<a href="/world.php?room=23471">PRISTINE DEPTHS</a>' +
    '<a href="/world.php?room=11">ROOM 11</a>' +
    '<a href="/world.php?room=6640">SCIENTIFIC DISTRICT</a>' +
    '<a href="/world.php?room=17321">UNDERGROUND Q SEC BASE</a>' +
    '<a href="/world.php?room=10697">VALLEY OF DEATH</a>' +
    '<a href="/world.php?room=25994">WARDENS SANCTUARY</a>' +
    '<a href="/wilderness">WILDERNESS</a>' +
    '</div>' +
    '</div>' +
'</td></tr></table>'

document.querySelector("#toolbar2").innerHTML =

    '<div id=toolbaralerts>'+

    gods+boss+zerx+vork+suppliesPOP+strengthtb+brawl+

    '</div>'

})})}})})})}})}});

// homepage rankings

if ( document.URL.indexOf("outwar.com/home") != -1 ) {

function insertBefore(newNode, existingNode) {
let sp2 = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(2) > div > div:nth-child(1)");
existingNode.parentNode.insertBefore(newNode, sp2);
}

fetch('/crew_profile')
   .then(response => response.text())
   .then((response) => {var crewName = response.match(/<h4><img src="\/img\/CrewPoints\.png" onmouseover="popup\(event,'.*Crew Points'\);" onmouseout="kill\(\);"> .*<\/h4>/).toString().replace(/<h4><img src="\/img\/CrewPoints\.png" onmouseover="popup\(event,'.* Crew Points'\);" onmouseout="kill\(\);"> /,"").replace(/<\/h4>/,"")

let menu = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(2) > div")

var homepageEQ =

'<div id="char_rankings"><table><tr>' +
'<td>CHAR: POWER<div id="rankings_home"></div></td>' +
'<td>CHAR: ELE DMG<div id="rankings_charele"></div></td>' +
'<td>CHAR: CHAOS DMG<div id="rankings_charchaos"></div></td>'+
'</tr></table></div>' +
'<p><div id="crew_rankings"><table><tr>' +
'<td>CREW: POWER<div id="rankings_crewpow"></div></td>' +
'<td>CREW: ELE DMG<div id="rankings_crewele"></div></td>' +
'<td>CREW: CHAOS DMG<div id="rankings_crewchaos"></div></td>' +
'</tr></table></div>'

var myName = document.querySelector("#select2-charselectdropdown-container").innerHTML

let div = document.createElement('div');
div.innerHTML += homepageEQ;
insertBefore(div, menu.children[0]);

if ( document.URL.indexOf("outwar.com/home") != -1 ) {
GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/rankings?type=crew_power',
    onload:     function (responseDetails) {
const EQ = /\{.*/i;
const EQprint = EQ.exec(responseDetails.responseText);

        var isLoading = false;

        function selectCategory(category, title, isCrew) {
            if(isLoading)
                return;

            $('#rank-title').html(title);
            $('#ranks').hide();
            $('#ranks').html('');
            $('#last-updated').html('');
            isLoading = true;

           $.getJSON('/ajax/rankings.php?type=' + category, function(data) {

                var isOdd = true;
                $.each(data.results, function(key, value) {

                    if(isCrew) {

                        var profileUrl = 'crew_profile?id=' + value.id;
                    }
                    else {

                        var profileUrl = 'characters/' + value.id;
                    }

                    var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';

                    var stat = '0';

                    if(value.stat ) {
                        stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                    }

                    var html = '<li class="list-group-item list-group-item-action ranksulli">'
                    + '<div class="media">'
                    + '<div class="mr-3">'
                    + '<div class="rank-row top">'
                    + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>'
                    + '<div class="rank-row-image">'
                    + '<a href="' + profileUrl + '">'
                    + '</a>'
                    + '</div></div></div>'
                    + '<div class="media-body">'
                    + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>'
                    + '</div>'
                    + '</li>'

var rankSearch1 = document.querySelector("#rankings_home")
rankSearch1.innerHTML = rankSearch1.innerHTML.replace(myName,"<div id=myRank>"+myName+"</div>")

                    $('#rankings_home').append(html);

                    isOdd = !isOdd;

                });

                isLoading = false;
                $('#last-updated').html('<br>Last updated: ' + data.timestamp);
                $('#ranks').show();
            }, "json");
        }

        $( document ).ready(function() {

            var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
            $( ".rank-sel2" ).change(function() {

                if($( this ).val() == '')
                    return;

                var isCrew = $( this ).attr('iscrew') == '1';
                selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);

            });
        });


GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/rankings?type=char_elepower',
    onload:     function (responseDetails) {
const EQ = /\{.*/i;
const EQprint = EQ.exec(responseDetails.responseText);

        var isLoading = false;

        function selectCategory(category, title, isCrew) {
            if(isLoading)
                return;

            $('#rank-title').html(title);
            $('#ranks').hide();
            $('#ranks').html('');
            $('#last-updated').html('');
            isLoading = true;

           $.getJSON('/ajax/rankings.php?type=char_elepower', function(data) {

                var isOdd = true;
                $.each(data.results, function(key, value) {

                    if(isCrew) {
                        var imgurl = data.baseimageurl + "/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }
                    else {
                        var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
                        var profileUrl = 'characters/' + value.id;
                    }

                    if(value.pic == ''  || value.pic == null)
                        imgurl = '/images/gangster1.jpg';

                    var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';

                    var stat = '0';

                    if(value.stat ) {
                        stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                    }

                    var html = '<li class="list-group-item list-group-item-action ranksulli">'
                    + '<div class="media">'
                    + '<div class="mr-3">'
                    + '<div class="rank-row top">'
                    + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>'
                    + '<div class="rank-row-image">'
                    + '<a href="' + profileUrl + '">'
                    + '</a>'
                    + '</div></div></div>'
                    + '<div class="media-body">'
                    + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>'
                    + '</div>'
                    + '</li>'

var rankSearch1 = document.querySelector("#rankings_charele")
rankSearch1.innerHTML = rankSearch1.innerHTML.replace(myName,"<div id=myRank>"+myName+"</div>")

                    $('#rankings_charele').append(html);

                    isOdd = !isOdd;

                });

                isLoading = false;
                $('#last-updated').html('<br>Last updated: ' + data.timestamp);
                $('#ranks').show();
            }, "json");
        }

        $( document ).ready(function() {

            var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
            $( ".rank-sel2" ).change(function() {

                if($( this ).val() == '')
                    return;

                var isCrew = $( this ).attr('iscrew') == '1';
                selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);

            });
        });

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/rankings?type=crew_power',
    onload:     function (responseDetails) {
const EQ = /\{.*/i;
const EQprint = EQ.exec(responseDetails.responseText);

        var isLoading = false;

        function selectCategory(category, title, isCrew) {
            if(isLoading)
                return;

            $('#rank-title').html(title);
            $('#ranks').hide();
            $('#ranks').html('');
            $('#last-updated').html('');
            isLoading = true;

           $.getJSON('/ajax/rankings.php?type=crew_power', function(data) {

                var isOdd = true;
                $.each(data.results, function(key, value) {

                    if(isCrew) {
                        var imgurl = data.baseimageurl + "/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }
                    else {
                        var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }

                    if(value.pic == ''  || value.pic == null)
                        imgurl = '/images/gangster1.jpg';

                    var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';

                    var stat = '0';

                    if(value.stat ) {
                        stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                    }

                    var html = '<li class="list-group-item list-group-item-action ranksulli">'
                    + '<div class="media">'
                    + '<div class="mr-3">'
                    + '<div class="rank-row top">'
                    + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>'
                    + '<div class="rank-row-image">'
                    + '<a href="' + profileUrl + '">'
                    + '</a>'
                    + '</div></div></div>'
                    + '<div class="media-body">'
                    + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>'
                    + '</div>'
                    + '</li>'

var rankSearch1 = document.querySelector("#rankings_crewpow")
rankSearch1.innerHTML = rankSearch1.innerHTML.replace(crewName,"<div id=myRank>"+crewName+"</div>")

                    $('#rankings_crewpow').append(html);

                    isOdd = !isOdd;

                });

                isLoading = false;
                $('#last-updated').html('<br>Last updated: ' + data.timestamp);
                $('#ranks').show();
            }, "json");
        }

        $( document ).ready(function() {

            var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
            $( ".rank-sel2" ).change(function() {

                if($( this ).val() == '')
                    return;

                var isCrew = $( this ).attr('iscrew') == '1';
                selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);

            });
        });

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/rankings?type=crew_elepower',
    onload:     function (responseDetails) {
const EQ = /\{.*/i;
const EQprint = EQ.exec(responseDetails.responseText);

        var isLoading = false;

        function selectCategory(category, title, isCrew) {
            if(isLoading)
                return;

            $('#rank-title').html(title);
            $('#ranks').hide();
            $('#ranks').html('');
            $('#last-updated').html('');
            isLoading = true;

           $.getJSON('/ajax/rankings.php?type=crew_elepower', function(data) {

                var isOdd = true;
                $.each(data.results, function(key, value) {

                    if(isCrew) {
                        var imgurl = data.baseimageurl + "/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }
                    else {
                        var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }

                    if(value.pic == ''  || value.pic == null)
                        imgurl = '/images/gangster1.jpg';

                    var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';

                    var stat = '0';

                    if(value.stat ) {
                        stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                    }

                    var html = '<li class="list-group-item list-group-item-action ranksulli">'
                    + '<div class="media">'
                    + '<div class="mr-3">'
                    + '<div class="rank-row top">'
                    + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>'
                    + '<div class="rank-row-image">'
                    + '<a href="' + profileUrl + '">'
                    + '</a>'
                    + '</div></div></div>'
                    + '<div class="media-body">'
                    + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>'
                    + '</div>'
                    + '</li>'

var rankSearch1 = document.querySelector("#rankings_crewele")
rankSearch1.innerHTML = rankSearch1.innerHTML.replace(crewName,"<div id=myRank>"+crewName+"</div>")

                    $('#rankings_crewele').append(html);

                    isOdd = !isOdd;

                });

                isLoading = false;
                $('#last-updated').html('<br>Last updated: ' + data.timestamp);
                $('#ranks').show();
            }, "json");
        }

        $( document ).ready(function() {

            var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
            $( ".rank-sel2" ).change(function() {

                if($( this ).val() == '')
                    return;

                var isCrew = $( this ).attr('iscrew') == '1';
                selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);

            });
        });

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/rankings?type=char_chaos',
    onload:     function (responseDetails) {
const EQ = /\{.*/i;
const EQprint = EQ.exec(responseDetails.responseText);

        var isLoading = false;

        function selectCategory(category, title, isCrew) {
            if(isLoading)
                return;

            $('#rank-title').html(title);
            $('#ranks').hide();
            $('#ranks').html('');
            $('#last-updated').html('');
            isLoading = true;

           $.getJSON('/ajax/rankings.php?type=char_chaos', function(data) {

                var isOdd = true;
                $.each(data.results, function(key, value) {

                    if(isCrew) {
                        var imgurl = data.baseimageurl + "/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }
                    else {
                        var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
                        var profileUrl = 'characters/' + value.id;
                    }

                    if(value.pic == ''  || value.pic == null)
                        imgurl = '/images/gangster1.jpg';

                    var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';

                    var stat = '0';

                    if(value.stat ) {
                        stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                    }

                    var html = '<li class="list-group-item list-group-item-action ranksulli">'
                    + '<div class="media">'
                    + '<div class="mr-3">'
                    + '<div class="rank-row top">'
                    + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>'
                    + '<div class="rank-row-image">'
                    + '<a href="' + profileUrl + '">'
                    + '</a>'
                    + '</div></div></div>'
                    + '<div class="media-body">'
                    + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>'
                    + '</div>'
                    + '</li>'

var rankSearch1 = document.querySelector("#rankings_charchaos")
rankSearch1.innerHTML = rankSearch1.innerHTML.replace(myName,"<div id=myRank>"+myName+"</div>")

                    $('#rankings_charchaos').append(html);

                    isOdd = !isOdd;

                });

                isLoading = false;
                $('#last-updated').html('<br>Last updated: ' + data.timestamp);
                $('#ranks').show();
            }, "json");
        }

        $( document ).ready(function() {

            var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
            $( ".rank-sel2" ).change(function() {

                if($( this ).val() == '')
                    return;

                var isCrew = $( this ).attr('iscrew') == '1';
                selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);

            });
        });

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/ajax/rankings?type=crew_chaos',
    onload:     function (responseDetails) {
const EQ = /\{.*/i;
const EQprint = EQ.exec(responseDetails.responseText);

        var isLoading = false;

        function selectCategory(category, title, isCrew) {
            if(isLoading)
                return;

            $('#rank-title').html(title);
            $('#ranks').hide();
            $('#ranks').html('');
            $('#last-updated').html('');
            isLoading = true;

           $.getJSON('/ajax/rankings.php?type=crew_chaos', function(data) {

                var isOdd = true;
                $.each(data.results, function(key, value) {

                    if(isCrew) {
                        var imgurl = data.baseimageurl + "/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }
                    else {
                        var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
                        var profileUrl = 'crew_profile?id=' + value.id;
                    }

                    if(value.pic == ''  || value.pic == null)
                        imgurl = '/images/gangster1.jpg';

                    var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';

                    var stat = '0';

                    if(value.stat ) {
                        stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                    }

                    var html = '<li class="list-group-item list-group-item-action ranksulli">'
                    + '<div class="media">'
                    + '<div class="mr-3">'
                    + '<div class="rank-row top">'
                    + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>'
                    + '<div class="rank-row-image">'
                    + '<a href="' + profileUrl + '">'
                    + '</a>'
                    + '</div></div></div>'
                    + '<div class="media-body">'
                    + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>'
                    + '</div>'
                    + '</li>'

var rankSearch1 = document.querySelector("#rankings_crewchaos")
rankSearch1.innerHTML = rankSearch1.innerHTML.replace(crewName,"<div id=myRank>"+crewName+"</div>")

                    $('#rankings_crewchaos').append(html);

                    isOdd = !isOdd;

                });

                isLoading = false;
                $('#last-updated').html('<br>Last updated: ' + data.timestamp);
                $('#ranks').show();
            }, "json");
        }

        $( document ).ready(function() {

            var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
            $( ".rank-sel2" ).change(function() {

                if($( this ).val() == '')
                    return;

                var isCrew = $( this ).attr('iscrew') == '1';
                selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);

            });
        });


    }})}})}})}})}})}})}})};

// equipment injection

if ( document.URL.indexOf("outwar.com/home") != -1 ) {
GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/profile',
    onload:     function (responseDetails) {
const EQ = /<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im;
const EQprint = EQ.exec(responseDetails.responseText);

function insertBefore(newNode, existingNode) {
let sp2 = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div > div:nth-child(1)");
existingNode.parentNode.insertBefore(newNode, sp2);
}

let menu = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div")

var homepageEQ =

'<div ID=EQhome style="position:relative; width:300px; height:385px; background-image:url(https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/thedude_dark.png)">' +
EQprint +
'</div>'

let div = document.createElement('div');
div.innerHTML += homepageEQ;
insertBefore(div, menu.children[0]);



}})};

if ( document.URL.indexOf("world") != -1 ) {
GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/profile',
    onload:     function (responseDetails) {
const EQ = /<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im;
const EQprint = EQ.exec(responseDetails.responseText);

var EQworld = document.querySelector("#content-header-row > div.col-xl-4.col-lg-12.col-md-12.col-sm-12.col-12.layout-spacing.px-1 > div > div.widget-heading");
EQworld.innerHTML =

'<div id=EQworld style="position:relative; width:300px; height:385px; background-image:url(https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/thedude_dark.png)">' +
EQprint +
'</div>'

}})};

if ( document.URL.indexOf("treasury") != -1 ) {
GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'https://torax.outwar.com/profile',
    onload:     function (responseDetails) {
const EQ = /<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im;
const EQprint = EQ.exec(responseDetails.responseText);

var EQtreas = document.querySelector("#content-header-row > div.col-8.col-lg-3.pl-3.pl-xl-0.pr-1 > div > div.widget-heading");
EQtreas.innerHTML =

'<div id=EQtreas style="position:relative; width:300px; height:385px; background-image:url(https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/thedude_dark.png)">' +
EQprint +
'</div>'

    }})}

// crew raid menus

var crewID1 = '';
if (document.documentElement.innerHTML.match(/href="\/crew_raidresults\.php\?crewid=(.*)">Raid Results<\/a>/i) != null)
crewID1 = document.documentElement.innerHTML.match(/href="\/crew_raidresults\.php\?crewid=(.*)">Raid Results<\/a>/i);


var crewID2 = document.documentElement.innerHTML.match(/tradeWith=(.*)"><svg/i);

if ( document.URL.indexOf("crew_profile") != -1 ) {
$('a[href="crew_raidresults.php?crewid='+crewID2[1]+'&most_recent=1"]').prop('href', 'https://torax.outwar.com/crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid='+crewID2[1]);

$('a[href="crew_raidresults.php?crewid='+crewID2[1]+'&most_recent=1"]').text("Bed 2");}

var crewmenu =

'<div class="btn-group" role="group">' +
'<button id="btnGroupDefault" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">' +
'Moxxi Mod Raids <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-down"><polyline points="6 9 12 15 18 9"></polyline></svg>' +
'</button>' +
'<div class="dropdown-menu" aria-labelledby="btnGroupDefault" style="will-change: transform;">' +
'<a class="dropdown-item" href="/crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid='+crewID1[1]+'">Moxxi Mod Raid Results</a>' +
'<a class="dropdown-item" href="/crew_raidresults.php?all_results=Display+all+raid+results&crewid='+crewID1[1]+'">All Raid Results</a>' +
'<a class="dropdown-item" href="/crew_raidresults.php?wins=Display+only+victorious+raids&crewid='+crewID1[1]+'">Only Victorious Raids</a>' +
'</div>' +
'</div>'

if ( document.URL.indexOf("crew_") != -1 ) {
function insertAfter9(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

var rrHead = document.querySelector("#content-header-row > div > div > div.btn-group.mb-3.mr-2");
let tdHead = document.createElement('div');
tdHead.innerHTML = crewmenu;

if (rrHead != null)
insertAfter9(tdHead, rrHead.children[2]);}

    }})}})