Better foreign aid for Cyber Nations

Improves the foreign aid page.

// ==UserScript==
// @name         Better foreign aid for Cyber Nations
// @namespace    http://tampermonkey.net/
// @version      1.8
// @description  Improves the foreign aid page.
// @author       RandomNoobster
// @match        https://www.cybernations.net/aid_*
// @icon         https://www.cybernations.net/favicon.ico
// @license      MIT
// @grant        none
// ==/UserScript==


(function() {
    'use strict';

    function setCookie(cname, cvalue) {
        const d = new Date();
        d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
        let expires = "expires=" + d.toUTCString();
        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
    }

    function getCookie(cname) {
        let name = cname + "=";
        let ca = document.cookie.split(';');
        for(let i = 0; i < ca.length; i++) {
            let c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return "";
    }

    if (window.location.href.includes("https://www.cybernations.net/aid_information.asp?Nation_ID=") || window.location.href == "https://www.cybernations.net/aid_information.asp") {
        let myNation = document.querySelectorAll('[data-popupmenu="popmenu3"]')[0];
        let str = myNation.baseURI;
        let myID = str.substring(str.indexOf('=') + 1);
        let aidNations = document.querySelectorAll("table form table a");
        let balances = {};
        let nationIDs = [];
        aidNations.forEach(aidNation => {
            var theirID = aidNation.href.substring(aidNation.href.indexOf('=') + 1);
            if (theirID === myID) {
                //pass
            } else if (aidNation.href.includes("nation_drill")) {
                aidNation.href = "https://www.cybernations.net/aid_form.asp?Nation_ID=" + theirID + "&bynation=" + myID;
                if (!nationIDs.includes(theirID)) {
                    nationIDs.push(theirID);
                    balances[`${theirID}`] = {money: 0, tech: 0};
                }
            }
        });
        console.log(balances);
        let rows = document.querySelectorAll('[valign="middle"][align="center"]');
        function colorRows() {
            console.log(nationIDs)
            rows.forEach(row => {
                let matchingID = null;
                nationIDs.forEach(item => {
                    if (row.innerHTML.includes(item)) {
                        matchingID = item;
                    }
                })
                if (matchingID != null) {
                    if ((row.innerHTML.includes("$6,000,000") || row.innerHTML.includes("$9,000,000")) && row.innerHTML.includes("0 Tech")) {
                        if (row.innerHTML.indexOf(myID) < row.innerHTML.indexOf(matchingID)) {
                            balances[`${matchingID}`].money -= 1;
                        } else {
                            balances[`${matchingID}`].money += 1;
                        }
                    } else if (row.innerHTML.includes("100 Tech") && row.innerHTML.includes("$0")) {
                        if (row.innerHTML.indexOf(myID) < row.innerHTML.indexOf(matchingID)) {
                            balances[`${matchingID}`].tech -= 1;
                        } else {
                            balances[`${matchingID}`].tech += 1;
                        }
                    }
                }
            })
            rows.forEach(row => {
                if (!row.innerHTML.includes("Expired")) {
                    nationIDs.slice().forEach(item => {
                        if (row.innerHTML.includes(item)) {
                            nationIDs.splice(nationIDs.indexOf(item), 1);
                        }
                    });
                } else {
                    let found = false;
                    let thisID = null;
                    console.log(nationIDs)
                    nationIDs.slice().forEach(item => {
                        console.log(1)
                        if (row.innerHTML.includes(item)) {
                            found = true;
                            thisID = item;
                        }
                    });
                    let sellOrBuy = getCookie("sellOrBuy");
                    if (found) {
                        console.log(sellOrBuy)
                        if (Math.abs(balances[`${thisID}`].money) === Math.abs(balances[`${thisID}`].tech)) {
                            row.style.backgroundColor = "#f3fa28";
                        } else if (Math.abs(balances[`${thisID}`].money) > Math.abs(balances[`${thisID}`].tech)) {
                            if (sellOrBuy == "false") {
                                row.style.backgroundColor = "#ff4d4d"; // red
                            } else {
                                row.style.backgroundColor = "#4ef542"; // green
                            }
                        }
                        else if (Math.abs(balances[`${thisID}`].money) < Math.abs(balances[`${thisID}`].tech)) {
                            if (sellOrBuy == "true") {
                                row.style.backgroundColor = "#4ef542"; // green
                            } else {
                                row.style.backgroundColor = "#ff4d4d"; // red
                            }
                        }
                        else {
                            row.style.backgroundColor = "blue";
                        }
                    }
                    else {
                        console.log("did not find")
                    }
                }
            })
        }

        let paragraph = document.querySelectorAll('table table table table table p')[1];

        let checkSeller = document.createElement("input");
        checkSeller.type = "radio";
        checkSeller.name = "sellOrBuy";
        checkSeller.id = "sell";
        checkSeller.style.verticalAlign = "bottom";
        let labelSeller = document.createElement("label");
        labelSeller.innerHTML = "I am a tech seller";

        let checkBuyer = document.createElement("input");
        checkBuyer.type = "radio";
        checkBuyer.name = "sellOrBuy";
        checkBuyer.id = "buy";
        checkBuyer.style.verticalAlign = "bottom";
        let labelBuyer = document.createElement("label");
        labelBuyer.innerHTML = "I am a tech buyer";
        labelBuyer.style.marginLeft = "20px";

        let sellOrBuy = getCookie("sellOrBuy");
        if (sellOrBuy == "true") {
            checkSeller.checked = true;
        } else {
            checkBuyer.checked = true;
        }

        checkSeller.onchange = checkBuyer.onchange = function renewCookie(event) {
            if (event.target.id == "sell") {
                checkSeller.checked = true;
                setCookie("sellOrBuy", true);
            } else {
                checkBuyer.checked = true;
                setCookie("sellOrBuy", false);
            }
            colorRows();
        }

        labelSeller.appendChild(checkSeller);
        labelBuyer.appendChild(checkBuyer);

        paragraph.after(labelBuyer);
        paragraph.after(labelSeller);

        colorRows();
    } else if (window.location.href.includes("https://www.cybernations.net/aid_form.asp?Nation_ID=")) {
        let inputs = document.querySelectorAll('input');
        let sellOrBuy = getCookie("sellOrBuy");
        if (sellOrBuy == "true") {
            inputs[3].value = 100;
        } else {
            inputs[2].value = 6000000;
        }

    }
})();