Heasley's Egg Navigator

Traverse every page in Torn in search for eggs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Heasley's Egg Navigator
// @namespace    egg.traverse
// @version      1.5.2
// @description  Traverse every page in Torn in search for eggs
// @author       Heasleys4hemp [1468764]
// @match        https://www.torn.com/*
// @grant        GM.addStyle
// @grant        GM.registerMenuCommand
// @run-at       document-start
// @license      MIT
// @require      https://www.torn.com/js/script/lib/jquery-1.8.2.js
// ==/UserScript==
'use strict';
var ButtonFloat = parseInt(localStorage.getItem('eeh-float')) || 0;
var ButtonFloatPos = parseInt(localStorage.getItem('eeh-float-pos')) || 0; //0 = bottom-left ; 1 = top-left; 2 = bottom-right; 3 = top-right
var linkIndex = localStorage.getItem('eeh-index') || 0;
var eeh_pressTimer, eeh_anim_pressTimer;
var eeh_reset_time = 9800;
var eeh_fade_in = 200;
var eeh_is_disabled = false;
var eeh_holding = false;



if (typeof GM == 'undefined') {
    window.GM = {};
}

if (typeof GM.addStyle == "undefined") { //Add GM.addStyle for browsers that do not support it (e.g. TornPDA, Firefox+Greasemonkey)
    GM.addStyle = function (aCss) {
        'use strict';
        let head = document.getElementsByTagName('head')[0];
        if (head) {
            let style = document.createElement('style');
            style.setAttribute('type', 'text/css');
            style.textContent = aCss;
            head.appendChild(style);
            return style;
        }
        return null;
    };
}

if (typeof GM.registerMenuCommand != "undefined") {
    GM.registerMenuCommand('Toggle Floating Button', toggleFloatButton,
                           {
        autoClose: false
    }
                          );

    GM.registerMenuCommand('Toggle Float Position', toggleFloatPosition,
                           {
        autoClose: false
    }
                          );
}

const obs_ops = {attributes: false, childList: true, characterData: false, subtree:true};

const easteregg_svg = `<svg xmlns="http://www.w3.org/2000/svg" fill="#AFC372" stroke="transparent" stroke-width="0" width="13" height="17" viewBox="0 0 14 18"><path d="M1.68,16a5.6,5.6,0,0,0,.43.41A5.72,5.72,0,0,0,3,17a4.73,4.73,0,0,0,.74.39,5.08,5.08,0,0,0,.8.3,5.35,5.35,0,0,0,.69.17,8.62,8.62,0,0,0,.87.11h.84a8.46,8.46,0,0,0,.88-.11l.69-.17a7.14,7.14,0,0,0,.81-.31q.38-.18.72-.39a6.57,6.57,0,0,0,.9-.67,5.14,5.14,0,0,0,.41-.4A6.3,6.3,0,0,0,13,11.67a8.86,8.86,0,0,0-.09-1.21c0-.31-.1-.64-.17-1s-.2-.85-.33-1.29-.3-.93-.48-1.39-.33-.81-.51-1.2c-.1-.2-.19-.39-.29-.58L11,4.72c-.18-.33-.4-.69-.64-1s-.4-.55-.62-.82A4.41,4.41,0,0,0,6.5,1,4.41,4.41,0,0,0,3.29,2.86a9.15,9.15,0,0,0-.61.82c-.24.34-.44.68-.62,1L1.87,5l-.33.66c-.16.36-.32.72-.46,1.09S.74,7.7.61,8.16a13.14,13.14,0,0,0-.34,1.3,10,10,0,0,0-.18,1A8.47,8.47,0,0,0,0,11.67a6.29,6.29,0,0,0,.89,3.25A6.63,6.63,0,0,0,1.68,16ZM1.27,14.8a.7.7,0,0,1,.4.38,1.4,1.4,0,0,1,.09.29A6.38,6.38,0,0,1,1.27,14.8Zm1,1.15c.17-.14.46,0,.66.32a1.41,1.41,0,0,1,.14.31A5.55,5.55,0,0,1,2.22,16Zm1.41,1a.44.44,0,0,1,.2-.39c.22-.11.52.1.67.46a1.28,1.28,0,0,1,.09.32A6.22,6.22,0,0,1,3.63,16.94Zm1.58.55a.47.47,0,0,1,.27-.4c.22-.06.46.16.57.51A7.4,7.4,0,0,1,5.21,17.49ZM7,17.6c.11-.35.35-.57.57-.51a.49.49,0,0,1,.27.39A5.66,5.66,0,0,1,7,17.6Zm1.46-.28A1.18,1.18,0,0,1,8.52,17c.16-.36.46-.57.67-.46a.43.43,0,0,1,.2.38A7.27,7.27,0,0,1,8.44,17.32ZM10,16.56a.84.84,0,0,1,.13-.29c.19-.31.47-.44.65-.33A7.57,7.57,0,0,1,10,16.56Zm1.26-1.14a.75.75,0,0,1,.08-.24.72.72,0,0,1,.36-.37A6.76,6.76,0,0,1,11.28,15.42Zm1.06-6q.11.51.18,1a.73.73,0,0,1-.37-.4A.44.44,0,0,1,12.34,9.45ZM10.49,4.67l.3.54c.11.2.21.41.31.63a.85.85,0,0,1-.65-.4C10.24,5.12,10.26,4.78,10.49,4.67Zm-.41,2.2c-.25.09-.58-.12-.74-.46s-.09-.68.16-.76a.69.69,0,0,1,.74.46C10.4,6.45,10.33,6.79,10.08,6.87ZM7.22,1.49a3.3,3.3,0,0,1,1,.51.5.5,0,0,1-.14.59.68.68,0,0,1-.86-.28A.61.61,0,0,1,7.22,1.49Zm-2.39.45a3.34,3.34,0,0,1,1-.46.6.6,0,0,1,0,.83A.66.66,0,0,1,5,2.59.53.53,0,0,1,4.83,1.94ZM3.58,3.12a4.75,4.75,0,0,0,2.91.93A4.7,4.7,0,0,0,9.42,3.1c.24.3.47.62.68.92A4.5,4.5,0,0,1,6.49,5.39,4.46,4.46,0,0,1,2.9,4,9.35,9.35,0,0,1,3.58,3.12ZM7.93,7.54c-.29,0-.57-.25-.64-.64a.59.59,0,0,1,.38-.76c.29,0,.57.25.64.63S8.21,7.5,7.93,7.54Zm-2-.64c-.07.39-.36.67-.65.64s-.45-.38-.38-.77.36-.67.64-.63A.6.6,0,0,1,5.9,6.9Zm-3-.79a.69.69,0,0,1,.74-.46c.25.08.32.42.16.76s-.49.55-.74.46S2.78,6.45,2.94,6.11Zm-.73-.9c.08-.16.18-.33.28-.51.17.14.17.45,0,.74a.89.89,0,0,1-.57.39C2,5.62,2.1,5.41,2.21,5.21ZM1.38,7.08A7.89,7.89,0,0,0,6.52,8.7a7.91,7.91,0,0,0,5.11-1.6c.19.5.36,1,.5,1.52-1,1.2-3.11,2-5.61,2S1.83,9.8.88,8.58C1,8.09,1.19,7.58,1.38,7.08ZM11.55,11.5A.59.59,0,0,1,11,11a.46.46,0,0,1,.4-.57.59.59,0,0,1,.56.52A.47.47,0,0,1,11.55,11.5Zm-1.68.85a.6.6,0,0,1-.59-.5.45.45,0,0,1,.36-.59.62.62,0,0,1,.59.51A.45.45,0,0,1,9.87,12.35Zm-1.77,0a.56.56,0,0,1-.53.57.57.57,0,0,1-.51-.6.52.52,0,1,1,1,0Zm-2,0a.56.56,0,0,1-.5.6.59.59,0,0,1,0-1.17A.55.55,0,0,1,6.06,12.27Zm-2.21-.42a.61.61,0,0,1-.59.5.45.45,0,0,1-.36-.58.6.6,0,0,1,.59-.51A.46.46,0,0,1,3.85,11.85ZM2.13,11a.58.58,0,0,1-.56.52.46.46,0,0,1-.39-.57.59.59,0,0,1,.56-.52A.46.46,0,0,1,2.13,11ZM.65,9.48A.46.46,0,0,1,.78,10a.69.69,0,0,1-.29.36C.53,10.11.59,9.8.65,9.48ZM.38,11.67a4.84,4.84,0,0,1,0-.53c.74,1.68,3.19,3,6.1,3s5.33-1.32,6.09-3c0,.17,0,.35,0,.51a5.86,5.86,0,0,1-.39,2.11C11.21,15.09,9,16,6.51,16S1.75,15.06.75,13.73A5.84,5.84,0,0,1,.38,11.67Z"></path></svg>`;
const EVERY_LINK = ["", "index.php","forums.php#/p=threads&f=67&t=16326854&b=0&a=0","city.php","jobs.php","gym.php","properties.php","page.php?sid=education",
                    "crimes.php","loader.php?sid=missions","newspaper.php","jailview.php","hospitalview.php",
                    "casino.php","page.php?sid=hof","factions.php","competition.php","page.php?sid=list&type=friends",
                    "page.php?sid=list&type=enemies", "page.php?sid=list&type=targets","messages.php","page.php?sid=events","awards.php","points.php","rules.php",
                    "staff.php","credits.php","citystats.php","committee.php","bank.php","donator.php","item.php",
                    "page.php?sid=stocks","fans.php","museum.php","loader.php?sid=racing","church.php",
                    "dump.php","loan.php","page.php?sid=travel","amarket.php","bigalgunshop.php","shops.php?step=bitsnbobs",
                    "shops.php?step=cyberforce","shops.php?step=docks","shops.php?step=jewelry",
                    "shops.php?step=nikeh","shops.php?step=pawnshop","shops.php?step=pharmacy","pmarket.php",
                    "shops.php?step=postoffice","shops.php?step=super","shops.php?step=candy",
                    "shops.php?step=clothes","shops.php?step=recyclingcenter","shops.php?step=printstore","page.php?sid=ItemMarket","estateagents.php","bazaar.php?userId=1",
                    "calendar.php","token_shop.php","freebies.php","bringafriend.php","comics.php","archives.php","joblist.php",
                    "newspaper_class.php","personals.php","newspaper.php#/archive",
                    "profiles.php?XID=1",
                    "bounties.php","usersonline.php","joblist.php?step=search#!p=corpinfo&ID=79286","page.php?sid=log","page.php?sid=ammo","playerreport.php",
                    "loader.php?sid=itemsMods","displaycase.php","trade.php",
                    "crimes.php?step=criminalrecords","page.php?sid=factionWarfare#/dirty-bombs",
                    "index.php?page=fortune","page.php?sid=bunker","church.php?step=proposals",
                    "messageinc.php","preferences.php","messageinc2.php#!p=main","page.php?sid=gallery&XID=1","personalstats.php?ID=1",
                    "properties.php?step=rentalmarket","properties.php?step=sellingmarket","forums.php",
                    "page.php?sid=slots",
                    "page.php?sid=roulette","page.php?sid=highlow","page.php?sid=keno","page.php?sid=craps",
                    "page.php?sid=bookie","page.php?sid=lottery","page.php?sid=blackjack",
                    "page.php?sid=holdem","page.php?sid=russianRoulette","page.php?sid=spinTheWheel",
                    "page.php?sid=spinTheWheelLastSpins","page.php?sid=slotsStats",
                    "page.php?sid=slotsLastRolls","page.php?sid=rouletteStatistics","page.php?sid=rouletteLastSpins",
                    "page.php?sid=highlowStats","page.php?sid=highlowLastGames",
                    "page.php?sid=kenoStatistics","page.php?sid=kenoLastGames","page.php?sid=crapsStats",
                    "page.php?sid=crapsLastRolls","page.php?sid=bookie#/stats/","page.php?sid=lotteryTicketsBought",
                    "page.php?sid=lotteryPreviousWinners","page.php?sid=blackjackStatistics",
                    "page.php?sid=blackjackLastGames","page.php?sid=holdemStats",
                    "loader.php?sid=viewRussianRouletteLastGames","loader.php?sid=viewRussianRouletteStats",
                    "messageinc2.php#!p=viewall","bazaar.php#/add",
                    "bazaar.php#/personalize","factions.php?step=your#/tab=crimes",
                    "factions.php?step=your#/tab=rank","page.php?sid=events#onlySaved=true",
                    "factions.php?step=your#/tab=controls","factions.php?step=your#/tab=info","messages.php#/p=ignorelist",
                    "messages.php#/p=outbox","factions.php?step=your#/tab=upgrades",
                    "messages.php#/p=saved","messages.php#/p=compose","displaycase.php#add","displaycase.php#manage",
                    "factions.php?step=your#/tab=armoury","bazaar.php#/manage","companies.php",
                    "itemuseparcel.php","index.php?page=rehab","index.php?page=people","christmas_town.php",
                    "christmas_town.php#/mymaps","christmas_town.php#/parametereditor","christmas_town.php#/npceditor",
                    "page.php?sid=UserList","index.php?page=hunting","old_forums.php","donatordone.php","revive.php","pc.php",
                    "loader.php?sid=attackLog","loader.php?sid=attack&user2ID=1","loader.php?sid=crimes","loader.php?sid=crimes#/searchforcash",
                    "loader.php?sid=crimes#/bootlegging","loader.php?sid=crimes#/graffiti","loader.php?sid=crimes#/shoplifting",
                    "loader.php?sid=crimes#/pickpocketing","loader.php?sid=crimes#/cardskimming","loader.php?sid=crimes#/burglary","loader.php?sid=crimes#/hustling",
                    "loader.php?sid=crimes#/disposal","loader.php?sid=crimes#/cracking","loader.php?sid=crimes#/forgery","loader.php?sid=crimes#/scamming",
                    "/war.php?step=rankreport&rankID=69","/war.php?step=warreport&warID=420","/war.php?step=raidreport&raidID=69",
                    "/war.php?step=chainreport&chainID=69420", "page.php?sid=keepsakes",
                    "page.php?sid=crimes2","authenticate.php"];

const eeeh_options_observer = new MutationObserver(function(mutations) {
    const url = window.location.href;
    if (url.includes("forums.php")) {
        if (url.includes("f=67&t=16326854") && $('li.parent-post[data-id="23383506"]').length) {
            if (!document.getElementsByClassName("eeh-options").length) {
                insertOptions();
            }
            eeeh_options_observer.disconnect();
        }
    } else {
        eeeh_options_observer.disconnect();
    }
});

const eeeh_observer = new MutationObserver(function(mutations) {
    if (document.getElementById("eggTraverse")) {
        eeeh_observer.disconnect();
        return;
    }

    if (ButtonFloat) {
        //insert floating button
        if (document.getElementsByTagName('body')[0]) {
            insertFloat();
            eeeh_observer.disconnect();
            return;
        }
    } else {
        // Insert into sidebar
        if (document.querySelector('#sidebar > div:first-of-type')) {
            insertNormal(); // Insert normal sidebar version
            eeeh_observer.disconnect();
            return;
        }
    }
});


window.addEventListener(
    "hashchange",
    () => {
        hashChanged();
    },
    false,
);

eeeh_observer.observe(document, obs_ops);
eeeh_options_observer.observe(document, obs_ops);

function hashChanged() {
    const url = window.location.href;
    if (url.includes("forums.php")) {
        eeeh_options_observer.observe(document, obs_ops);
    }
    if (eeh_is_disabled) {
        setTimeout(() => {
            eeh_is_disabled = false;
        }, "1000");
    }
}

function getEggLabel(eggButtonType) {
    let eggLabel = `Egg Navigator (${linkIndex})`;
    if (eggButtonType == "float") {
        eggLabel = `#${linkIndex}`;
    }
    return eggLabel;
}

function setEggTraverseClickEvent(eggButtonType) {
    var eggTraverse = $('#eggTraverse');
    var egg_icon = eggTraverse.find('.eeh-icon');
    eggTraverse.on('mousedown touchstart', function(e) {
        eeh_anim_pressTimer = window.setTimeout(function() {
            eeh_holding = true;
            egg_icon.fadeOut(eeh_reset_time);

            eeh_pressTimer = window.setTimeout(function() {
                if (eeh_holding) {
                    linkIndex = 0;
                    egg_icon.fadeIn(eeh_fade_in);
                    localStorage.setItem("eeh-index", linkIndex);
                    eggTraverse.attr('href', EVERY_LINK[0]);
                    eggTraverse.find('.eeh-name').text(getEggLabel(eggButtonType));
                }
            }, eeh_reset_time);

        }, eeh_fade_in);
    }).on('mouseup touchend mouseleave', function(e){
        clearTimeout(eeh_anim_pressTimer);
        if (eeh_holding) {
            clearTimeout(eeh_pressTimer);
            eeh_holding = false;
            egg_icon.stop(true, true).fadeIn(eeh_fade_in);
        }
    }).contextmenu(function(e) {
        e.preventDefault();
        e.stopPropagation();
        e.stopImmediatePropagation();
        return false;
    }).on('click', function(e) {
        if (eeh_holding) {
            eeh_holding = false;
            egg_icon.stop(true, true).fadeIn(eeh_fade_in);
        }
        if (window.event.ctrlKey) {
            //ctrl was held down during the click
            incrementEggTraverse(eggButtonType);
        } else {
            //normal click
            if (!eeh_is_disabled) {
                eeh_is_disabled = true;
                incrementEggTraverse(eggButtonType);
            } else {
                e.preventDefault();
            }
        }
    });
}

function incrementEggTraverse(eggButtonType) {
    var eggTraverse = $('#eggTraverse');
    linkIndex++;
    if (linkIndex >= EVERY_LINK.length) linkIndex = 0;
    localStorage.setItem("eeh-index", linkIndex);
    eggTraverse.attr('href', EVERY_LINK[linkIndex]);
    eggTraverse.find('.eeh-name').text(getEggLabel(eggButtonType));
}

function insertNormal() {
    console.log("[Heasley][Egg Navigator] Inserting to sidebar...");
    if (!document.getElementById("eggTraverse")) {
        let href = EVERY_LINK[linkIndex];

        let easterspans = `<div class="eeh-link">
                               <a href="${href}" id="eggTraverse">
                                   <span class="eeh-icon">${easteregg_svg}</span>
                                   <span class="eeh-name">Egg Navigator (${linkIndex})</span>
                               </a>
                           </div>`;

            const sidebar = document.getElementById('sidebar');
            if (sidebar.firstChild) {
                // Insert the easterspans HTML string after the first child element of sidebar
                $('#sidebar > *').first().after(easterspans);
                setEggTraverseClickEvent("sidebar");
            }
            insertStyle();
        }
    }

function insertFloat() {
    console.log("[Heasley][Egg Navigator] Inserting floating button...");
    if (!document.getElementById("eggTraverse")) {
        let href = EVERY_LINK[linkIndex];
        const eeh_float = `<a href="${href}" id="eggTraverse" class="eeh-float">
                               <span class="eeh-icon">${easteregg_svg}</span>
                               <span class="eeh-name"> #${linkIndex}</span>
                           </a>`;

            $('body').append(eeh_float);

            setFloatPosition();
            setEggTraverseClickEvent("float");
            insertStyle();
        }
    }

function insertOptions() {
    console.log("[Heasley][Egg Navigator] Inserting options...");
    if (!document.getElementsByClassName("eeh-options").length) {
        const post = $('li.parent-post[data-id="23383506"]').find('div.post-container div.post');
        let enabled_float = ButtonFloat ? "enabled" : "disabled";
        let enabledClass_float = ButtonFloat ? "eeh-green" : "eeh-red";

        let enabled_float_pos;

        switch(ButtonFloatPos) {
            case 0:
                enabled_float_pos = "bottom left";
                break;
            case 1:
                enabled_float_pos = "top left";
                break;
            case 2:
                enabled_float_pos = "bottom right";
                break;
            case 3:
                enabled_float_pos = "top right";
                break;
        }

        post.before(`
            <div class="eeh-options"><button id="eeh-float-toggle">Toggle floating button</button>
                <p>Floating button: <span id="eeh-float-toggle-label" class="${enabledClass_float}">${enabled_float}</span></p>
            </div>
            <div class="eeh-options"><button id="eeh-float-pos-toggle">Toggle float position</button>
                <p>Float position: <span id="eeh-float-pos-toggle-label">${enabled_float_pos}</span></p>
            </div>
        `);

            $('#eeh-float-toggle').click(function() {
                let label = $('#eeh-float-toggle-label');
                if (toggleFloatButton()) {
                    label.text("enabled");
                } else {
                    label.text("disabled");
                }
                label.toggleClass('eeh-green eeh-red');
            });

            $('#eeh-float-pos-toggle').click(function() {
                let label = $('#eeh-float-pos-toggle-label');
                switch(toggleFloatPosition()) {
                    case 0:
                        label.text("bottom left");
                        break;
                    case 1:
                        label.text("top left");
                        break;
                    case 2:
                        label.text("bottom right");
                        break;
                    case 3:
                        label.text("top right");
                        break;
                    default:
                        label.text("Float button is not enabled");
                }

            });
        }
    }

function insertStyle() {
    GM.addStyle(`
.eeh-link {
  background-color: var(--default-bg-panel-color);
  cursor: pointer;
  overflow: hidden;
  vertical-align: top;
  border-bottom-right-radius: 5px;
  border-top-right-radius: 5px;
  margin-top: 2px;
  height: 23px;
  margin-bottom: 2px;
}

.eeh-link:hover {
  background-color: var(--default-bg-panel-active-color);
}

.eeh-link a {
  display: flex;
  -ms-align-items: center;
  align-items: center;
  color: var(--default-color);
  text-decoration: none;
  height: 100%;
}

.eeh-link a .eeh-icon {
  float: left;
  width: 34px;
  height: 23px;
  display: flex;
  -ms-align-items: center;
  align-items: center;
  justify-content: center;
  margin-left: 0;
}

.eeh-link a .eeh-icon {
  stroke: transparent;
  stroke-width: 0;
}

.eeh-link a .eeh-name {
  line-height: 22px;
  padding-top: 1px;
  overflow: hidden;
  max-width: 134px;
}

.eeh-float.eeh-float-right .eeh-icon {
  order: 1;
}

.eeh-float.eeh-float-left .eeh-icon {
  order: 2;
}

.eeh-float.eeh-float-right .eeh-name {
  margin-left: 5px;
  order: 2;
}

.eeh-float.eeh-float-left .eeh-name {
  margin-right: 5px;
  order: 1;
}

.eeh-float .eeh-icon svg {
  width: 20px !important;
  height: 26px !important;
}

#eggTraverse.eeh-float {
    z-index: 999999;
    height: 40px;
    width: 80px;
    cursor: pointer;
    padding: 10px 15px 10px 15px;
    box-sizing: border-box;
    border: 1px solid var(--default-panel-divider-outer-side-color);
    position: fixed;
    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
    display: flex;
    align-items: center;
    text-shadow: var(--default-tabs-text-shadow);
    background: var(--info-msg-bg-gradient);
    box-shadow: var(--default-tabs-box-shadow);
    border-radius: 5px;
    overflow: hidden;
    font-size: 15px;
    font-weight: 700;
    line-height: 18px;
    font-family: arial;
    color: var(--default-color);
    text-decoration: none;
}

#eggTraverse.eeh-float.eeh-float-top {
    top: 80px;
}

#eggTraverse.eeh-float.eeh-float-bottom {
    bottom: 80px;
}

#eggTraverse.eeh-float.eeh-float-left {
    left: -10px;
    padding-right: 5px;
    justify-content: right;
}

#eggTraverse.eeh-float.eeh-float-right {
    right: -10px;
    padding-left: 5px;
    justify-content: left;
}

[class*='topSection_'] .eeh-icon-svg-wrap {
    position: absolute;
    -ms-transform: translate(-120%, 10%);
    transform: translate(-120%, 10%);
}

.content-wrapper > #easterrandom .eeh-icon-svg-wrap {
    position: absolute;
    -ms-transform: translate(-140%, 10%);
    transform: translate(-140%, 10%);
}

.eeh-options {
    margin: 20px;
    margin-left: 0px;
}

.eeh-options p {
    margin-top: 5px;
    margin-left: 2px;
    font-size: 15px;
    font-weight: 700;
    line-height: 18px;
    font-family: arial;
}

.eeh-options button {
    background: transparent linear-gradient(180deg ,#CCCCCC 0%,#999999 60%,#666666 100%) 0 0 no-repeat;
    border-radius: 5px;
    font-family: Arial,sans-serif;
    font-size: 14px;
    font-weight: 700;
    text-align: center;
    letter-spacing: 0;
    color: #333;
    text-shadow: 0 1px 0 #ffffff66;
    text-decoration: none;
    text-transform: uppercase;
    margin: 0;
    border: none;
    outline: none;
    overflow: visible;
    box-sizing: border-box;
    line-height: 16px;
    padding: 4px 8px;
    height: auto;
    white-space: nowrap;
    cursor: pointer;
    margin-right: 5px;
}

.eeh-green {
    color: var(--user-status-green-color);
}

.eeh-red {
    color: var(--user-status-red-color);
}


@media screen and (max-width: 1000px) {
    html:not(.html-manual-desktop) [class*='topSection_'] #easterrandom span.eeh-text, .content-wrapper > #easterrandom span.eeh-text {
        display: none;
    }

    [class*='topSection_'] .eeh-icon-svg-wrap {
        -ms-transform: translate(-140%, -110%);
        transform: translate(-140%, -110%);
    }

    html:not(.html-manual-desktop) #eggTraverse.eeh-float.eeh-float-top {
        top: 170px !important;
    }
}

/* SVG Colors */
.eeh-link svg, .eeh-icon-svg svg {
  filter: drop-shadow(0px 0.7px 0.1px #fff);
  width: 13px !important;
  height: 17px !important;
}
.eeh-icon-svg svg path {
  fill: #AFC372 !important;
}
body.dark-mode .eeh-icon svg, body.dark-mode .eeh-icon-svg svg {
  filter: drop-shadow(0px 0px 1.3px #000);
}

/* Torn Edits */
.members-cont>.member-item>a[href="profiles.php?XID=1468764"]>.member>.member-header {
    color: #E0CE00 !important;
}

.members-cont>.member-item>a[href="profiles.php?XID=1468764"]>.member>.member-cont>span::after {
    content: "👑  " url("https://profileimages.torn.com/ad324318-744c-c686-1468764.gif?v=1940629196397");
}
`);
    }

function killButton() {
    console.log("[Heasley][Egg Navigator] Killing button...");
    let eeh_button = document.getElementById("eggTraverse");
    if (eeh_button) {
        let parent = eeh_button.closest(`.eeh-link`);
        if (parent) {
            parent.remove();
        } else {
            eeh_button.remove();
        }
    }
}

function toggleFloatButton() {
    killButton();
    if (ButtonFloat) {
        ButtonFloat = 0;
        insertNormal();
    } else {
        ButtonFloat = 1;
        insertFloat();
    }
    localStorage.setItem("eeh-float", ButtonFloat);
    return ButtonFloat;
}

function toggleFloatPosition() {
    let float_button = document.querySelector("#eggTraverse.eeh-float");
    if (!float_button) return;

    console.log("[Heasley][Egg Navigator] Changing float position...");
    ButtonFloatPos++;
    if (ButtonFloatPos >= 4) ButtonFloatPos = 0; //cycle back to 0=bottom-left
    setFloatPosition();
    return ButtonFloatPos;
}

function setFloatPosition() {
    let float_button = document.querySelector("#eggTraverse.eeh-float");
    if (!float_button) return;

    float_button.classList.remove("eeh-float-bottom", "eeh-float-top", "eeh-float-left", "eeh-float-right");

    switch(ButtonFloatPos) {
        case 0:
            float_button.classList.add("eeh-float-bottom", "eeh-float-left");
            break;
        case 1:
            float_button.classList.add("eeh-float-top", "eeh-float-left");
            break;
        case 2:
            float_button.classList.add("eeh-float-bottom", "eeh-float-right");
            break;
        case 3:
            float_button.classList.add("eeh-float-top", "eeh-float-right");
            break;
        default:
            float_button.classList.add("eeh-float-bottom", "eeh-float-left");
    }

    localStorage.setItem("eeh-float-pos", ButtonFloatPos);
}