Raw Source
obame-tbot / OGLight Ninja

// ==UserScript==
// @name         OGLight Ninja
// @namespace    https://openuserjs.org/users/obame-tbot
// @version      2.3.4
// @description  OGLight script for OGame
// @author       nullNaN, Tralla
// @license      MIT
// @copyright    2021, nullNaN, Tralla
// @match        https://*.ogame.gameforge.com/game/*
// @match        https://*.ogame.ninja/bots/*/browser/html/*
// @match        http://127.0.0.1:*/game/*
// @match        http://localhost:*/game/*
// @updateURL    https://openuserjs.org/meta/obame-tbot/OGLight.meta.js
// @grant        GM_addStyle
// @run-at       document-start
// ==/UserScript==

let redirect = localStorage.getItem('ogl-redirect');
if(redirect && redirect.indexOf('https') > -1)
{
    localStorage.setItem('ogl-redirect', false);
    window.location.href = redirect;
}

// goodbye tooltips
function goodbyeTipped()
{
    if(typeof Tipped !== 'undefined')
    {
        for(let [key] of Object.entries(Tipped))
        {
            Tipped[key] = function() { return false; }
        }
    }
    else requestAnimationFrame(() => goodbyeTipped());
}

GM_addStyle(`
    /*@import url('https://fonts.googleapis.com/css?family=Material+Icons');*/

    @font-face
    {
        font-family:'Material Icons';
        font-style:normal;
        font-weight:400;
        src:local('Material Icons'), local('MaterialIcons-Regular'),
        url('data:font/woff2;base64,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');
    }

    .icon:not(.sprite):not(.resource), .material-icons, .close-tooltip, .ogl-0, .ogl-harvest, .ogl-sideLock
    {
        transform:rotate(0.03deg);
        font-family:'Material Icons' !important;
        font-weight:normal !important;
        font-style:normal !important;
        font-size:inherit !important;
        line-height:inherit !important;
        letter-spacing:normal;
        text-transform:none;
        display:inline-block;
        white-space:nowrap;
        word-wrap:normal;
        direction:ltr;
        -webkit-font-feature-settings:'liga';
        -webkit-font-smoothing:antialiased;
    }
`);

class OGLight
{
    constructor()
    {
        this.rawURL = new URL(window.location.href);
        this.page = this.rawURL.searchParams.get('component') || this.rawURL.searchParams.get('page');
        this.mode = this.rawURL.searchParams.get('oglMode') || 0; // 0=default; 1=transpo; 2=lock; 3=autoHarvest; 4=raid; 5=linkedMoon;
        this.ecoSpeed = document.querySelector('head meta[name="ogame-universe-speed"]').getAttribute('content');
        this.fleetSpeed = document.querySelector('head meta[name="ogame-universe-speed-fleet"]').getAttribute('content');
        this.planetList = document.querySelectorAll('.smallplanet');
        this.isMobile = ('ontouchstart' in document.documentElement);
        this.universe = window.location.host.replace(/\D/g,'');

        this.highlighted = false;
        this.tooltipList = {};
        this.keyboardActionsList = {};
        this.spyList = [];
        this.spyId = [];

        // current planet
        this.current = {};
        this.current.planet = (document.querySelector('.smallplanet .active') || document.querySelector('.smallplanet .planetlink')).parentNode;
        this.current.coords = this.current.planet.querySelector('.planet-koords').textContent.slice(1, -1);
        this.current.hasMoon = this.current.planet.querySelector('.moonlink') ? true : false;
        this.current.isMoon = this.current.hasMoon && this.current.planet.querySelector('.moonlink.active') ? true : false;
        this.current.name = this.current.isMoon ? 'Moon' : this.current.planet.querySelector('.smallplanet .planet-name').textContent;
        this.current.resources =
            {
            "metal" : Math.floor(document.querySelector(`#resources_metal`).getAttribute('data-raw')),
            "crystal" : Math.floor(document.querySelector(`#resources_crystal`).getAttribute('data-raw')),
            "deut" : Math.floor(document.querySelector(`#resources_deuterium`).getAttribute('data-raw')),
        }

        // get data & init default values
        this.json = JSON.parse(localStorage.getItem('ogl-data')) || {};
        this.json.techs = this.json.techs || {};
        this.json.ptFret = this.json.ptFret || 5000;
        this.json.gtFret = this.json.gtFret || 25000;
        this.json.pfFret = this.json.pfFret || 10000;
        this.json.autoHarvest = this.json.autoHarvest || ['0:0:0', 3];
        this.json.myMines = this.json.myMines || {};
        this.json.myActivities = this.json.myActivities || {};
        this.json.sideStalk = this.json.sideStalk || false;
        this.json.markers = this.json.markers || {};
        this.json.locked = this.json.locked || {};
        this.json.targetTabs = this.json.targetTabs || {g:1, s:0};
        this.json.spyProbes = this.json.spyProbes || 5;
        this.json.jumpGateTimers = this.json.jumpGateTimers || {};
        this.json.myEmpire = this.json.myEmpire || {};
        this.json.lastScoreCheck = this.json.lastScoreCheck || 0;
        this.json.topScore = this.json.topScore || 1;

        // user options
        this.json.options = this.json.options || {};
        this.json.options.fret = this.json.options.fret || 202;
        this.json.options.harvestMission = this.json.options.harvestMission || 3;
        this.json.options.spyFilter = this.json.options.spyFilter || '$';
        this.json.options.rvalLimit = this.json.options.rvalLimit || 400000 * this.ecoSpeed;
        this.json.options.headerDisabled = this.json.options.headerDisabled || {};
        this.json.options.spyTableEnable = this.json.options.spyTableEnable === false ? false : true;
        this.json.options.compactViewEnable = this.json.options.compactViewEnable === false ? false : true;
        this.json.options.autoDeleteEnable = this.json.options.autoDeleteEnable === true ? true : false;
        this.json.options.kept = this.json.options.kept || [0,0,0];
        this.json.options.hiddenTargets = this.json.options.hiddenTargets || {};
        this.json.options.empireMode = this.json.options.empireMode || 0;
        this.json.options.expeType = this.json.options.expeType || 202;
        this.json.options.expeSubType = this.json.options.expeSubType || 0;
        this.json.options.expeRatio = this.json.options.expeRatio || 0;
        this.json.options.nextTarget = this.json.options.nextTarget || '0:0:0';
        this.json.options.draggable = this.json.options.draggable || {};
        this.json.options.panelMode = this.json.options.panelMode || 0;

        this.gameLang = document.querySelector('meta[name="ogame-language"]').getAttribute('content');
        this.separatorLangType = ['en', 'us'].includes(this.gameLang) ? 1 : 0;

        goodbyeTipped();
        this.start();
    }

    start()
    {
        if(this.page == 'fleetdispatch')
        {
            fleetDispatcher.apiTechData.forEach(tech => this.json.techs[tech[0]] = tech[1]);

            this.json.ptFret = fleetDispatcher.fleetHelper.shipsData[202].baseCargoCapacity;
            this.json.gtFret = fleetDispatcher.fleetHelper.shipsData[203].baseCargoCapacity;
            this.json.pfFret = fleetDispatcher.fleetHelper.shipsData[219].baseCargoCapacity;

            this.json.playerClass = fleetDispatcher.apiCommonData[1][1];

            this.saveData();

            this.current.resources = 
                {
                metal:  fleetDispatcher.metalOnPlanet,
                crystal:  fleetDispatcher.crystalOnPlanet,
                deut:  fleetDispatcher.deuteriumOnPlanet,
            }
        }

        for(let coords in this.json.markers)
        {
            if(typeof this.json.markers[coords] == 'string')
            {
                this.json.markers[coords] = {color:this.json.markers[coords]};
            }
        }

        this.saveData();

        this.sideOptions();
        this.neededCargo();
        this.keepResources();
        this.checkTop();
        this.empire();
        this.harvest();
        this.autoHarvest();
        this.expedition();
        this.quickPlanetList();
        this.timers();
        this.marker();
        this.targetList();
        this.sideStalk();
        this.checkDebris();
        this.spyTable(true);
        this.lock();
        this.sideLock();
        this.calcResOnPlanet();

        // util.
        this.missingEnergy();
        this.minesLevel();
        this.highlightTarget();
        this.toggleImage();
        this.checkInputs();
        this.keyboardActions();
        this.betterTooltip();
        this.utilities();
        this.loopUtilities();
        this.checkResources();
        this.checkStorage();
        this.jumpGateTimer();
        this.checkShipsOnPlanet();
        this.draggableItems();

        return unsafeWindow.ogl = true;
    }

    sideOptions()
    {
        let harvestOptions = this.createDOM('div', {'class':'ogl-harvestOptions'});
        let container = document.querySelector('#myPlanets') || document.querySelector('#myWorlds');
        container.prepend(harvestOptions);

        let syncOption = harvestOptions.appendChild(this.createDOM('div', 
                                                                   {'class':'ogl-option ogl-syncOption tooltipLeft', 'title':this.getTranslatedText(0)}, '<i class="material-icons">settings</i>'));
        syncOption.addEventListener('click', () => this.importExport());

        harvestOptions.appendChild(this.createDOM('a', 
                                                  {'class':'ogl-option ogl-targetIcon tooltipLeft', 'title':this.getTranslatedText(1)}, '<i class="material-icons">adjust</i>'));

        // switch between PT/GT
        let cargo = harvestOptions.appendChild(this.createDOM('div', {'class':'ogl-option ogl-defaultCargo'}, this.getTranslatedText(15)));

        let cargoChoice = this.createDOM('div', {'class':'ogl-shipPicker'}, '');
        let scChoice = cargoChoice.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-202'}));
        let lcChoice = cargoChoice.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-203'}));
        let pfChoice = cargoChoice.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-219'}));

        if(this.json.options.fret == 202)
        {
            cargo.innerHTML = this.getTranslatedText(15);
            scChoice.classList.add('ogl-active');
        }
        else if(this.json.options.fret == 203)
        {
            cargo.innerHTML = this.getTranslatedText(16);
            lcChoice.classList.add('ogl-active');
        }
        else if(this.json.options.fret == 219)
        {
            cargo.innerHTML = this.getTranslatedText(30);
            pfChoice.classList.add('ogl-active');
        }

        let updateDefaultShip = shipID =>
        {
            this.json.options.fret = shipID;
            this.saveData();
            document.location.reload();
        }

        scChoice.addEventListener('click', () => { updateDefaultShip(202) });
        lcChoice.addEventListener('click', () => { updateDefaultShip(203) });
        pfChoice.addEventListener('click', () => { updateDefaultShip(219) });

        cargo.addEventListener('mouseover', () => this.tooltip(cargo, cargoChoice, false, false, 50));

        // switch between statio/transpo
        let mission = harvestOptions.appendChild(this.createDOM('div', 
                                                                {'class':'ogl-option ogl-harvestMission tooltipLeft', 'title':this.getTranslatedText(3)}, '<i class="material-icons">keyboard_tab</i>'));

        if(this.json.options.harvestMission == 3)
        {
            mission.classList.add('ogl-transpoIcon');
            mission.innerHTML = '<i class="material-icons">swap_horiz</i>';
        }

        mission.addEventListener('click', () =>
                                 {
            let oldMission = this.json.options.harvestMission;
            this.json.options.harvestMission = this.json.options.harvestMission == 3 ? 4 : 3;

            this.saveData();
            window.location.href = window.location.href.replace(`&mission=${oldMission}`, `&mission=${this.json.options.harvestMission}`);
        });

        // harvest from planets
        let autoHarvestPlanet = harvestOptions.appendChild(this.createDOM('div',
                                                                          {'class':'ogl-option ogl-autoHarvest ogl-autoHarvestPlanet tooltipLeft', 'title':this.getTranslatedText(4)}, '<i class="material-icons">all_inclusive</i>'));
        if(this.mode == 3 || this.mode == 5) autoHarvestPlanet.classList.add('ogl-active');

        autoHarvestPlanet.addEventListener('click', () =>
                                           {
            this.openPlanetList(planet =>
                                {
                this.json.autoHarvest = [planet.galaxy + ':' + planet.system + ':' + planet.position, planet.type];
                this.saveData();

                let link = `?page=ingame&component=fleetdispatch&galaxy=${planet.galaxy}&system=${planet.system
                }&position=${planet.position}&type=${planet.type}&mission=${this.json.options.harvestMission}&oglMode=3`;
                if (window.location.href.indexOf('https') > -1)
                {
                    window.location.href = 'https://' + window.location.host + window.location.pathname + link;
                }
                else {
                    window.location.href = 'http://' + window.location.host + window.location.pathname + link;
                }
            }, true);
        });

        let updatePanel = (sender, mode) =>
        {
            this.json.options.panelMode = mode;
            this.saveData();

            document.querySelector('.ogl-panel.ogl-active').classList.remove('ogl-active');
            sender.classList.add('ogl-active');
            document.querySelector('#rechts').setAttribute('data-panel', this.json.options.panelMode);
        }

        let panelOptions = this.createDOM('div', {'class':'ogl-panelOptions'});
        container.insertBefore(panelOptions, document.querySelector('#planetList'));

        let defaultView = panelOptions.appendChild(this.createDOM('div', 
                                                                  {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(64)}, '<i class="material-icons">public</i>'));
        defaultView.addEventListener('click', () => updatePanel(defaultView, 0));
        if(this.json.options.panelMode == 0) defaultView.classList.add('ogl-active');

        let resView = panelOptions.appendChild(this.createDOM('div', 
                                                              {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(65)}, '<i class="material-icons">account_balance</i>'));
        resView.addEventListener('click', () => updatePanel(resView, 1));
        if(this.json.options.panelMode == 1) resView.classList.add('ogl-active');

        let prodView = panelOptions.appendChild(this.createDOM('div', 
                                                               {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(66)}, '<i class="material-icons">equalizer</i>'));
        prodView.addEventListener('click', () => updatePanel(prodView, 2));
        if(this.json.options.panelMode == 2) prodView.classList.add('ogl-active');

        /*let targetView = panelOptions.appendChild(this.createDOM('div', 
            {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(67)}, '<i class="material-icons">gps_fixed</i>'));
        targetView.addEventListener('click', () => updatePanel(targetView, 3));
        if(this.json.options.panelMode == 3) targetView.classList.add('ogl-active');*/

        document.querySelector('#rechts').setAttribute('data-panel', this.json.options.panelMode);
    }

    neededCargo()
    {
        if(this.page == 'fleetdispatch')
        {
            let min =
                {
                    metal : Math.max(0, fleetDispatcher.metalOnPlanet - this.json.options.kept[0]),
                    crystal : Math.max(0, fleetDispatcher.crystalOnPlanet - this.json.options.kept[1]),
                    deut : Math.max(0, fleetDispatcher.deuteriumOnPlanet - this.json.options.kept[2])
                }

            let total = min.metal + min.crystal + min.deut;

            document.querySelectorAll('.technology[data-technology]').forEach(ship =>
                                                                              {
                let shipID = ship.getAttribute('data-technology');
                if(shipID == '202' || shipID == '203' || shipID == '219')
                {
                    let amount = this.calcNeededShips({'fret':shipID, 'resources':total});
                    let span = this.createDOM('span', {class:'ogl-needed'}, amount.toLocaleString('de-DE'));
                    ship.querySelector('span.icon').appendChild(span);

                    // add needed buttons
                    span.addEventListener('click', event => 
                                          {
                        event.preventDefault();
                        event.stopPropagation();
                        this.selectShips(shipID, amount);
                    });
                }

                if(ship.getAttribute('data-status') == 'off') return;

                let delta = ship.querySelector('span.icon').appendChild(this.createDOM('span', {class:'ogl-deltaFleet'}, '<i class="material-icons">fiber_smart_record</i>'));

                delta.addEventListener('click', event => 
                                       {
                    let selected = ship.querySelector('input').value.replace(/\./g, '') || 0;
                    let amount = parseInt(ship.querySelector('.amount').getAttribute('data-value'));
                    amount = amount - selected;

                    event.preventDefault();
                    event.stopPropagation();
                    this.selectShips(shipID, amount);
                });
            });

            let empty = document.querySelector('#fleetdispatchcomponent #warning h3');

            if(empty)
            {
                empty.textContent = '';
                let grid = empty.appendChild(this.createDOM('div', {'class':'ogl-emptyGrid'}));

                [202,203,219].forEach(shipID =>
                                      {
                    let amount = this.calcNeededShips({'fret':shipID, 'resources':total});
                    let div = grid.appendChild(this.createDOM('div', {'class':'ogl-emptyShip'}));
                    div.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-'+shipID}));
                    div.appendChild(this.createDOM('span', {}, amount.toLocaleString('de-DE')));
                });
            }
        }
    }

    fillFret(params)
    {
        params = params || {};

        if(params.resources)
        {
            let min =
                {
                    metal: Math.min(params.resources.metal, this.current.resources.metal),
                    crystal: Math.min(params.resources.crystal, this.current.resources.crystal),
                    deut: Math.min(params.resources.deut, this.current.resources.deut - fleetDispatcher.getConsumption()),
                }

            let capacity = fleetDispatcher.getCargoCapacity();

            fleetDispatcher.cargoDeuterium = Math.min(min.deut, capacity);
            fleetDispatcher.cargoCrystal = Math.min(min.crystal, capacity - fleetDispatcher.cargoDeuterium);
            fleetDispatcher.cargoMetal = Math.min(min.metal, capacity - fleetDispatcher.cargoDeuterium - fleetDispatcher.cargoCrystal);
        }
    }

    harvest()
    {
        if(this.page == 'fleetdispatch')
        {
            if(this.mode == 1)
            {
                let total = fleetDispatcher.metalOnPlanet + fleetDispatcher.crystalOnPlanet + fleetDispatcher.deuteriumOnPlanet;
                this.selectShips(this.json.options.fret, this.calcNeededShips({'resources':total}));
                document.querySelector('#allresources').click();
            }
        }

        // buttons action on click
        let btnAction = (event, coords, type) =>
        {
            event.preventDefault();
            event.stopPropagation();

            let link = `?page=ingame&component=fleetdispatch&galaxy=${coords[0]}&system=${coords[1]
            }&position=${coords[2]}&type=${type}&mission=${this.json.options.harvestMission
            }&oglMode=1`;

            if (window.location.href.indexOf('https') > -1)
            {
                window.location.href = 'https://' + window.location.host + window.location.pathname + link;
            }
            else {
                window.location.href = 'http://' + window.location.host + window.location.pathname + link;
            }
        }

        let lastCoords = 0;
        let isGroup = false;
        let countGroup = 0;

        // planet & moon harvest icons
        this.planetList.forEach(planet =>
                                {
            let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1).split(':');

            if(lastCoords == coords[0] + ':' + coords[1])
            {
                planet.setAttribute('data-multi', countGroup);
                isGroup = true;
            }
            else
            {
                if(isGroup) countGroup++;
                isGroup = false;
            }

            lastCoords = coords[0] + ':' + coords[1];

            if(this.current.coords != coords.join(':') || this.current.isMoon)
            {
                let btn = planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':'ogl-harvest tooltip', 'title':this.getTranslatedText(62)}));
                btn.addEventListener('click',  event => btnAction(event, coords, 1));
            }

            let moon = planet.querySelector('.moonlink');

            if(moon)
            {
                moon.classList.remove('tooltipLeft');
                moon.classList.add('tooltipRight');

                if(this.current.coords == coords.join(':') && this.current.isMoon) return;

                let btn = planet.querySelector('.moonlink').appendChild(this.createDOM('div', {'class':'ogl-harvest tooltip', 'title':this.getTranslatedText(62)}));
                btn.addEventListener('click', event => btnAction(event, coords, 3));
            }
        });
    }

    openPlanetList(callcback, full)
    {
        let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-routine'}, '<h1>'+this.getTranslatedText(10)+'</h1>');

        if(full)
        {
            let text = this.current.isMoon ? this.getTranslatedText(34) : this.getTranslatedText(31);
            let sourceType = this.current.isMoon ? 1 : 3;

            let linkedMoon = container.appendChild(this.createDOM('div', {'class':'ogl-linkedMoon'}, text));
            linkedMoon.innerHTML += '<figure class="planetIcon moon"></figure><figure class="planetIcon moon"></figure><figure class="planetIcon moon"></figure>';

            linkedMoon.addEventListener('click', () =>
                                        {
                let coords = this.current.coords.split(':');
                let id;

                if(this.current.isMoon)
                {
                    id = new URL(this.current.planet.querySelector('.moonlink').href).searchParams.get('cp');
                }
                else
                {
                    id = this.current.planet.getAttribute('id').replace('planet-', '');
                }

                let link = `?page=ingame&component=fleetdispatch&galaxy=${coords[0]}&system=${coords[1]
                }&position=${coords[2]}&type=${sourceType}&mission=${this.json.options.harvestMission}&cp=${id}&oglMode=5`;

                if (window.location.href.indexOf('https') > -1)
                {
                    window.location.href = 'https://' + window.location.host + window.location.pathname + link;
                }
                else {
                    window.location.href = 'http://' + window.location.host + window.location.pathname + link;
                }
            });
        }

        let links = container.appendChild(this.createDOM('div', {'class':'ogl-quickLinks'}));

        let buildButton = (planet, id, galaxy, system, position, type) =>
        {
            let data = {'id':id, 'galaxy':galaxy, 'system':system, 'position':position, 'type':type};

            let div = links.appendChild(this.createDOM('div'));

            if(type == 1) div.classList.add('ogl-quickPlanet');
            else div.classList.add('ogl-quickMoon');

            if((planet == this.current.planet && !this.current.isMoon && type == 1)
               || (planet == this.current.planet && this.current.isMoon && type == 3))
            {
                div.classList.add('ogl-quickEmpty');
            }
            else
            {
                div.addEventListener('click', () => callcback(data));
            }

            return div;
        }

        this.planetList.forEach(planet =>
                                {
            let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1).split(':');

            // planet
            let btn = buildButton(planet, new URL(planet.querySelector('.planetlink').href).searchParams.get('cp'),
                                  coords[0], coords[1], coords[2], 1);

            btn.innerHTML = `[${coords.join(':')}] ${planet.querySelector('.planet-name').textContent}`;

            // moon
            if(planet.querySelector('.moonlink'))
            {
                let btn = buildButton(planet, new URL(planet.querySelector('.moonlink').href).searchParams.get('cp'),
                                      coords[0], coords[1], coords[2], 3);

                btn.innerHTML = '<figure class="planetIcon moon"></figure>';
            }
            else links.appendChild(this.createDOM('div', {'class':'ogl-quickEmpty'}));
        });

        this.popup(false, container);
    }

    autoHarvest()
    {
        if(this.mode != 3 && this.mode != 5) return;

        this.planetList.forEach(planet =>
                                {
            let targetCoords = planet.querySelector('.planet-koords').textContent.slice(1, -1).split(':');

            if(fleetDispatcher.targetPlanet.galaxy == targetCoords[0]
               && fleetDispatcher.targetPlanet.system == targetCoords[1]
               && fleetDispatcher.targetPlanet.position == targetCoords[2])
            {
                if(fleetDispatcher.targetPlanet.type == 1)
                {
                    planet.querySelector('.planetlink').classList.add('ogl-target');
                }
                else if(planet.querySelector('.moonlink'))
                {
                    planet.querySelector('.moonlink').classList.add('ogl-target');
                }
            }
        });

        if(this.page == 'fleetdispatch')
        {
            let nextElement = this.current.planet.nextElementSibling || document.querySelectorAll('.smallplanet')[0];

            if(this.mode == 5)
            {
                this.json.autoHarvest = false;
            }

            // ignore source
            if(nextElement.querySelector('.planet-koords').textContent.slice(1, -1) == this.json.autoHarvest[0]
               && ((!this.current.isMoon && this.json.autoHarvest[1] == 1) || (this.current.isMoon && this.json.autoHarvest[1] == 3)))
            {
                nextElement = nextElement.nextElementSibling || document.querySelectorAll('.smallplanet')[0];
            }

            // search for next element for moon to linked planet routine
            if(this.current.isMoon && this.mode == 5 && !nextElement.querySelector('.moonlink'))
            {
                do nextElement = nextElement.nextElementSibling || document.querySelectorAll('.smallplanet')[0];
                while(!nextElement.querySelector('.moonlink'));
            }

            let destination;
            let type = 1;
            let mission = this.json.options.harvestMission;
            let id = nextElement.getAttribute('id').replace('planet-', '');

            if((this.current.isMoon && this.mode == 3) || (this.current.isMoon && this.mode == 5))
            {
                if(nextElement.querySelector('.moonlink'))
                {
                    id = new URL(nextElement.querySelector('.moonlink').href).searchParams.get('cp');
                }
            }

            if(this.mode == 3)
            {
                destination = this.json.autoHarvest[0].split(':');
                type = this.json.autoHarvest[1];
            }
            else if(this.mode == 5)
            {
                destination = nextElement.querySelector('.planet-koords').textContent.slice(1, -1).split(':');
                if(!this.current.isMoon) type = 3;
            }

            let link = `?page=ingame&component=fleetdispatch&galaxy=${destination[0]}&system=${destination[1]
            }&position=${destination[2]}&type=${type}&mission=${mission}&cp=${id}&oglMode=${this.mode}`;

            if (window.location.href.indexOf('https') > -1)
            {
                link = 'https://' + window.location.host + window.location.pathname + link;
            }
            else {
                link = 'http://' + window.location.host + window.location.pathname + link;
            }

            let needed = document.querySelector(`.technology[data-technology="${this.json.options.fret}"] .ogl-needed`);
            if(needed) needed.click();

            this.keyboardActionSkip = link;

            document.querySelector('#allresources').click();

            let pCoords = this.current.isMoon ? this.current.coords+'M' : this.current.coords;
            let sent = false;

            let sendFleet = () =>
            {
                if(sent) return;

                localStorage.setItem('ogl-redirect', link);
                sent = true;

                this.json.myEmpire[pCoords].metal -= fleetDispatcher.cargoMetal;
                this.json.myEmpire[pCoords].crystal -= fleetDispatcher.cargoCrystal;
                this.json.myEmpire[pCoords].deut -= fleetDispatcher.cargoDeuterium;
                this.saveData();
            }

            document.querySelector('#sendFleet').addEventListener('click', () => sendFleet());

            document.addEventListener('keydown', event =>
                                      {
                if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                   && !document.querySelector('.chat_box_textarea:focus'))
                {
                    if(fleetDispatcher.currentPage == 'fleet3')
                    {
                        let keycode = event.keyCode ? event.keyCode : event.which;
                        if(keycode == 13) sendFleet();
                    }
                }
            });
        }
    }

    expedition()
    {
        if(this.page == 'fleetdispatch')
        {
            if(!document.querySelector('#allornone .allornonewrap')) return;

            let fleetExpe = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'ogl-prefab tooltip', 'title':'Expedition'}));
            let mainFleet = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'tooltip ogl-shipIcon ogl-'+this.json.options.expeType, 'title':this.getTranslatedText(51)}));
            let subFleet = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'tooltip ogl-active ogl-shipIcon ogl-'+this.json.options.expeSubType, 'title':this.getTranslatedText(52)}));

            if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219)
            {
                subFleet.classList.remove('ogl-active');
            }

            let ratioDiv = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'ogl-expeRatio tooltip', 'title':'Ratio'}));
            let more = ratioDiv.appendChild(this.createDOM('div', {}, '+'));
            let less = ratioDiv.appendChild(this.createDOM('div', {}, '-'));
            let count = ratioDiv.appendChild(this.createDOM('div', {}, this.json.options.expeRatio));

            mainFleet.addEventListener('click', () =>
                                       {
                let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-shipPicker'});
                container.appendChild(this.createDOM('h1', {}, this.getTranslatedText(51)));

                [202,203,204,205,206,207,211,213,214,215,218,219].forEach(shipID =>
                                                                          {
                    let btn = container.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-'+shipID}));
                    btn.addEventListener('click', () =>
                                         {
                        this.json.options.expeType = shipID;
                        mainFleet.className = 'ogl-shipIcon ogl-' + this.json.options.expeType;

                        if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219)
                        {
                            this.json.options.expeSubType = 0;
                            subFleet.className = 'ogl-shipIcon ogl-' + this.json.options.expeSubType;
                        }
                        else
                        {
                            subFleet.classList.add('ogl-active');
                        }

                        this.saveData();
                        document.querySelector('.ogl-dialog .close-tooltip').click();
                    });
                });

                this.popup(false, container);
            });

            subFleet.addEventListener('click', () =>
                                      {
                if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219) return;

                let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-shipPicker'});
                container.appendChild(this.createDOM('h1', {}, this.getTranslatedText(52)));

                [202,203,219,0].forEach(shipID =>
                                        {
                    let btn = container.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-'+shipID}));
                    if(shipID == 0) btn.classList.add('ogl-active');
                    btn.addEventListener('click', () =>
                                         {
                        this.json.options.expeSubType = shipID;
                        subFleet.className = 'ogl-shipIcon ogl-' + this.json.options.expeSubType;

                        this.saveData();
                        document.querySelector('.ogl-dialog .close-tooltip').click();

                        if(shipID == 0)
                        {
                            subFleet.classList.add('ogl-active');
                        }
                    });
                });

                this.popup(false, container);
            });

            more.addEventListener('click', () =>
                                  {
                this.json.options.expeRatio = Math.min(this.json.options.expeRatio * 10 + 1, 20) / 10;
                count.textContent = this.json.options.expeRatio;
                this.saveData();
            });

            less.addEventListener('click', () =>
                                  {
                this.json.options.expeRatio = Math.max(this.json.options.expeRatio * 10 - 1, 0) / 10;
                count.textContent = this.json.options.expeRatio;
                this.saveData();
            });

            fleetExpe.addEventListener('click', () =>
                                       {
                document.querySelector('#resetall').click();

                let mainAmount, subAmount, fillerId = 0;
                let coords = this.current.coords.split(':');

                if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219)
                {
                    let maxTotal = 0;
                    let minShip = 0;
                    let currentStep = 0;

                    let steps =
                        {
                            10000 : { 202:273, 203:91, 219:137, max:40000 },
                            100000 : { 202:423, 203:141, 219:212, max:500000 },
                            1000000 : { 202:423, 203:191, 219:212, max:1200000 },
                            5000000 : { 202:423, 203:191, 219:212, max:1800000 },
                            25000000 : { 202:573, 203:191, 219:287, max:2400000 },
                            50000000 : { 202:723, 203:241, 219:362, max:3000000 },
                            75000000 : { 202:873, 203:291, 219:437, max:3600000 },
                            100000000 : { 202:1023, 203:341, 219:512, max:4200000 },
                            0 : { 202:1223, 203:417, 219:612, max:5000000 },
                        }

                    if(this.json.topScore < 10000) currentStep = 10000;
                    else if(this.json.topScore < 100000) currentStep = 100000;
                    else if(this.json.topScore < 1000000) currentStep = 1000000;
                    else if(this.json.topScore < 5000000) currentStep = 5000000;
                    else if(this.json.topScore < 25000000) currentStep = 25000000;
                    else if(this.json.topScore < 50000000) currentStep = 50000000;
                    else if(this.json.topScore < 75000000) currentStep = 75000000;
                    else if(this.json.topScore < 100000000) currentStep = 100000000;

                    maxTotal = steps[currentStep]['max'];
                    minShip = steps[currentStep][this.json.options.expeType];

                    maxTotal = this.json.playerClass == 3 ? maxTotal * 3 * this.ecoSpeed : maxTotal * 2;
                    mainAmount = Math.max(minShip, this.calcNeededShips({'fret':this.json.options.expeType, 'resources':maxTotal}));
                }
                else
                {
                    mainAmount = parseInt(document.querySelector(`.technology[data-technology="${this.json.options.expeType}"] .amount`).getAttribute('data-value'));
                    mainAmount = (Math.floor(mainAmount / (fleetDispatcher.maxExpeditionCount - fleetDispatcher.expeditionCount)) || 0);
                    subAmount = Math.floor(mainAmount * this.json.options.expeRatio);
                }

                let prio = [218, 213, 211, 215, 207];

                prio.forEach(shipID =>
                             {
                    let count = document.querySelector(`.technology[data-technology="${shipID}"] .amount`).getAttribute('data-value');
                    if(fillerId == 0 && count > 0) fillerId = shipID;
                });

                shipsOnPlanet.forEach(ship =>
                                      {
                    if(ship.id == this.json.options.expeType) this.selectShips(ship.id, mainAmount);
                    else if(ship.id == this.json.options.expeSubType) this.selectShips(ship.id, subAmount);
                    else if(ship.id == fillerId && this.json.options.expeType != fillerId) this.selectShips(ship.id, 1);
                    else if(ship.id == 210) this.selectShips(ship.id, 1);
                    else if(ship.id == 219 && this.json.options.expeType != 219 && this.json.options.expeSubType != 219) this.selectShips(ship.id, 1);
                });

                fleetDispatcher.targetPlanet.galaxy = coords[0];
                fleetDispatcher.targetPlanet.system = coords[1];
                fleetDispatcher.targetPlanet.position = 16;
                fleetDispatcher.targetPlanet.type = 1;
                fleetDispatcher.targetPlanet.name = '-';
                fleetDispatcher.mission = 15;
                fleetDispatcher.expeditionTime = 1;
                fleetDispatcher.refresh();

            });
        }
    }

    quickPlanetList()
    {
        if(this.page == 'fleetdispatch' && fleetDispatcher)
        {
            if(!document.querySelector("#shortcuts .dropdown")) return;

            let btn = document.querySelector('#shortcuts span').appendChild(this.createDOM('btn', {'class':'ogl-quickBtn'}, '-'));
            let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-quickLinks'});

            container.addEventListener('click', event =>
                                       {
                if(!event.target.href)
                {
                    event.stopPropagation();
                    event.preventDefault();
                }
            });

            btn.addEventListener('click', () =>
                                 {
                this.openPlanetList((planet) =>
                                    {
                    fleetDispatcher.targetPlanet = planet;
                    fleetDispatcher.refresh();
                    document.querySelector('.ogl-dialogOverlay').classList.remove('ogl-active');
                    document.querySelector('#continueToFleet3').focus();
                });
            });
        }
    }

    timers()
    {
        let now = Date.now();

        if(!this.json.myActivities[this.current.coords]) this.json.myActivities[this.current.coords] = [0, 0];

        let planetActivity = this.json.myActivities[this.current.coords][0];
        let moonActivity = this.json.myActivities[this.current.coords][1];

        if(this.current.isMoon) moonActivity = now;
        else planetActivity = now;

        this.json.myActivities[this.current.coords] = [planetActivity, moonActivity];
        this.saveData();

        this.planetList.forEach(planet =>
                                {
            let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1);
            let timers = this.json.myActivities[coords] || [0,0];

            let pTimer = planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':'ogl-timer ogl-medium ogl-short',
                                                                                                'data-timer':Math.min(Math.round((now - timers[0]) / 60000), 60)}));

            this.updateTimer(pTimer);
            setInterval(() => this.updateTimer(pTimer, true), 60000);

            if(planet.querySelector('.moonlink'))
            {
                let mTimer = planet.querySelector('.moonlink').appendChild(this.createDOM('div', {'class':'ogl-timer ogl-medium ogl-short',
                                                                                                  'data-timer':Math.min(Math.round((now - timers[1]) / 60000), 60)}));

                this.updateTimer(mTimer);
                setInterval(() => this.updateTimer(mTimer, true), 60000);
            }
        });
    }

    updateTimer(element, increment)
    {
        let time = parseInt(element.getAttribute('data-timer'));

        if(time >= 15) element.classList.remove('ogl-short');
        if(time >= 30) element.classList.remove('ogl-medium');
        if(time >= 60) return;

        if(increment)
        {
            time++;
            element.setAttribute('data-timer', time);

            element.title = time;
        }
    }

    minesLevel()
    {
        if(this.page == 'supplies' && !this.current.isMoon)
        {
            let targetMetal = document.querySelector('.technology.metalMine .targetlevel');
            let targetCrystal = document.querySelector('.technology.crystalMine .targetlevel');
            let targetDeut = document.querySelector('.technology.deuteriumSynthesizer .targetlevel');

            let metal = targetMetal ? '('+targetMetal.getAttribute('data-value')+')' : document.querySelector('.technology.metalMine .level').getAttribute('data-value');
            let crystal = targetCrystal ? '('+targetCrystal.getAttribute('data-value')+')' : document.querySelector('.technology.crystalMine .level').getAttribute('data-value');
            let deut = targetDeut ? '('+targetDeut.getAttribute('data-value')+')' : document.querySelector('.technology.deuteriumSynthesizer .level').getAttribute('data-value');

            this.json.myMines[this.current.coords] = {'metal':metal, 'crystal':crystal, 'deut':deut};
            this.saveData();
        }
    }

    marker()
    {
        if(this.page == 'galaxy')
        {
            this.FPSLoop('marker');

            let galaxytable = document.querySelector('#galaxytable');

            if(!galaxytable || galaxytable.classList.contains('ogl-markerReady')) return;
            galaxytable.classList.add('ogl-markerReady');

            // move planets
            /*document.querySelectorAll('td.microplanet').forEach(planet =>
            {
                planet.parentNode.insertBefore(planet, planet.parentNode.querySelector('td.moon'));
            });*/

            let coords = document.querySelector('#galaxy_input').value;
            coords += ':' + document.querySelector('#system_input').value;

            document.querySelectorAll('#galaxytable tbody .allytag').forEach((element, index) =>
                                                                             {
                let id = coords + ':' + (parseInt(index) + 1);
                let colors = this.createDOM('div', {'class':'ogl-colors', 'data-coords':id});
                element.appendChild(colors);

                this.addMarkerUI(id, colors);
            });

            document.querySelectorAll('#galaxytable tbody tr').forEach((element, index) =>
                                                                       {
                let id = coords + ':' + (parseInt(index) + 1);

                if(this.json.markers[id])
                {
                    element.classList.add('ogl-marked');
                    element.setAttribute('data-marked', this.json.markers[id].color);
                }
            });
        }
        else if(this.page == 'messages')
        {
            document.querySelectorAll('.ogl-colors').forEach(element =>
                                                             {
                this.addMarkerUI(element.getAttribute('data-coords'), element);
            });

            document.querySelectorAll('.ogl-spyTable tr').forEach((element, index) =>
                                                                  {
                if(index > 0)
                {
                    let coords = element.querySelector('.ogl-colors').getAttribute('data-coords');

                    if(this.json.markers[coords])
                    {
                        element.classList.add('ogl-marked');
                        element.setAttribute('data-marked', this.json.markers[coords].color);
                    }
                }
            });
        }
    }

    targetList()
    {
        let targetIcon = document.querySelector('.ogl-harvestOptions .ogl-targetIcon');

        if(!targetIcon.classList.contains('ogl-targetsReady'))
        {
            targetIcon.classList.add('ogl-targetsReady');
            targetIcon.addEventListener('click', () => this.popup(header, content));
        }

        // popup header
        let header = this.createDOM('div');
        header.innerHTML = '<h1>'+this.getTranslatedText(13)+'</h1>';

        ['red', 'yellow', 'green', 'blue', 'violet', 'gray'].forEach(color =>
                                                                     {
            let toggle = this.createDOM('div', {'class':'tooltip ogl-toggle', 'title':this.getTranslatedText(5)});
            toggle.setAttribute('data-toggle', color);
            header.appendChild(toggle);

            if(!this.json.options.hiddenTargets[color]) toggle.classList.add('ogl-active');

            toggle.addEventListener('click', () =>
                                    {
                this.json.options.nextTarget = '0:0:0';
                this.json.options.hiddenTargets[color] = this.json.options.hiddenTargets[color] ? false : true;
                this.saveData();

                if(this.json.options.hiddenTargets[color]) toggle.classList.remove('ogl-active');
                else toggle.classList.add('ogl-active');

                content.querySelectorAll(`.ogl-targetItem[data-marked="${color}"]`).forEach(planet =>
                                                                                            {
                    if(this.json.options.hiddenTargets[color]) planet.classList.add('ogl-colorHidden');
                    else planet.classList.remove('ogl-colorHidden');
                });

                checkEmpty();
            });
        });

        header.appendChild(this.createDOM('hr'));

        // popup content
        let content = this.createDOM('div', {'class':'ogl-dialogContainer ogl-stalkContainer'});
        let galaxyTabList = header.appendChild(this.createDOM('div', {'class':'ogl-tabList ogl-galaxyTabList'}));
        let systemTabList = header.appendChild(this.createDOM('div', {'class':'ogl-tabList ogl-systemTabList'}));
        let planetList = content.appendChild(this.createDOM('div', {'class':'ogl-stalkPlanets'}))

        let checkEmpty = () =>
        {
            for(let g=1; g<=10; g++)
            {
                let children = content.querySelector(`.ogl-targetItem[data-galaxy="${g}"]:not(.ogl-colorHidden)`);

                if(children) header.querySelector(`.ogl-tab[data-galaxy="${g}"]`).classList.remove('ogl-isEmpty');
                else header.querySelector(`.ogl-tab[data-galaxy="${g}"]`).classList.add('ogl-isEmpty');
            }

            for(let s=0; s<step * 10; s+=step)
            {
                let children = content.querySelector(`.ogl-targetItem[data-galaxy="${this.json.targetTabs.g}"][data-system="${s}"]:not(.ogl-colorHidden)`);

                if(children) header.querySelector(`.ogl-tab[data-system="${s}"]`).classList.remove('ogl-isEmpty');
                else header.querySelector(`.ogl-tab[data-system="${s}"]`).classList.add('ogl-isEmpty');
            }
        }

        // cleanup saved coords
        for(let coords in this.json.markers)
        {
            if(this.json.markers[coords] == '')
            {
                delete this.json.markers[coords];
            }
        };

        // sort coords
        let keys = Object.keys(this.json.markers).sort((a, b) =>
                                                       {
            let coordsA = a.split(':').map(x => x.padStart(3, '0')).join('');
            let coordsB = b.split(':').map(x => x.padStart(3, '0')).join('');

            return coordsA - coordsB;
        });

        let step = 50;

        // system buttons
        for(let i=0; i<step * 10; i+=step)
        {
            let sTab = systemTabList.appendChild(this.createDOM('div', {'class':'ogl-tab', 'data-system':i}, i));
            if(this.json.targetTabs.s == i) sTab.classList.add('ogl-active');

            sTab.addEventListener('click', event =>
                                  {
                header.querySelectorAll('.ogl-tab[data-system].ogl-active').forEach(e => e.classList.remove('ogl-active'));
                event.target.classList.add('ogl-active');

                content.querySelectorAll(`.ogl-targetItem[data-system]`).forEach(planet =>
                                                                                 {
                    planet.classList.add('ogl-systemHidden');

                    if(planet.getAttribute('data-system') == i)
                    {
                        planet.classList.remove('ogl-systemHidden');
                    }

                    this.json.targetTabs.s = i;
                });
                this.saveData();
            });
        }

        // galaxy buttons
        for(let i=1; i<=10; i++)
        {
            let gTab = galaxyTabList.appendChild(this.createDOM('div', {'class':'ogl-tab', 'data-galaxy':i}, 'G'+i));
            if(this.json.targetTabs.g == i) gTab.classList.add('ogl-active');
            if(this.json.targetTabs.g == 0) gTab.click();

            gTab.addEventListener('click', event =>
                                  {
                header.querySelectorAll('.ogl-tab[data-galaxy]').forEach(e => e.classList.remove('ogl-active'));
                event.target.classList.add('ogl-active');

                content.querySelectorAll(`.ogl-targetItem[data-galaxy]`).forEach(planet =>
                                                                                 {
                    planet.classList.add('ogl-galaxyHidden');

                    if(planet.getAttribute('data-galaxy') == i)
                    {
                        planet.classList.remove('ogl-galaxyHidden');
                    }
                });

                this.json.targetTabs.g = i;
                this.saveData();

                checkEmpty();
            });
        }

        if(!this.json.markers[this.json.options.nextTarget] || this.json.markers[this.json.options.nextTarget].color == 'gray')
        {
            this.json.options.nextTarget = '0:0:0';
            this.saveData();
        }

        let upcoming = false;

        // build ui
        keys.forEach(coords =>
                     {
            if(this.json.markers[coords])
            {
                let splitted = coords.split(':');
                let a = this.createDOM('a', {'class':'ogl-marked ogl-targetItem'}, `${coords}`);

                a.setAttribute('data-marked', this.json.markers[coords].color);
                a.setAttribute('data-coords', coords);
                a.setAttribute('data-galaxy', splitted[0]);
                a.setAttribute('data-system', Math.floor(splitted[1] / step) * step);

                let atk = a.appendChild(this.createDOM('div', {'class':'icon icon_missile tooltip', 'title':this.getTranslatedText(22)}));
                let lastAttack = this.json.markers[coords].attacked || 0;
                if(Date.now() < lastAttack + 6 * 60 * 60 * 1000) atk.classList.add('ogl-hidden');

                atk.addEventListener('click', () =>
                                     {
                    event.preventDefault();
                    event.stopPropagation();

                    this.json.markers[coords].attacked = Date.now();
                    this.saveData();

                    let needed = this.calcNeededShips({'resources':this.json.options.rvalLimit});
                    let link = `?page=ingame&component=fleetdispatch&galaxy=${splitted[0]}&system=${splitted[1]
                    }&position=${splitted[2]}&type=1&mission=1&am${this.json.options.fret}=${needed}`;
                    if (window.location.href.indexOf('https') > -1)
                    {
                        link = 'https://' + window.location.host + window.location.pathname + link;
                    }
                    else {
                        link = 'http://' + window.location.host + window.location.pathname + link;
                    }

                    if(event.ctrlKey) window.open(link, '_blank');
                    else
                    {
                        if(this.page == 'fleetdispatch')
                        {
                            this.selectShips(this.json.options.fret, needed);
                            fleetDispatcher.targetPlanet = {'galaxy':splitted[0], 'system':splitted[1], 'position':splitted[2], 'type':1, 'name':'-'};
                            fleetDispatcher.mission = 1;
                            fleetDispatcher.refresh();

                            document.querySelector('.ogl-dialogOverlay').classList.remove('ogl-active');

                            if(fleetDispatcher.currentPage == 'fleet1' && document.querySelector('#continueToFleet2')) document.querySelector('#continueToFleet2').focus();
                            else if(fleetDispatcher.currentPage == 'fleet2') document.querySelector('#continueToFleet3').focus();
                            else document.querySelector('#sendFleet').focus();
                        }
                        else window.location.href = link;
                    }
                });

                let pin = a.appendChild(this.createDOM('div', {'class':'icon ogl-pin tooltip', 'title':this.getTranslatedText(62)}));

                pin.addEventListener('click', e =>
                                     {
                    e.stopPropagation();
                    this.json.options.nextTarget = coords;
                    this.saveData();

                    document.location.reload();
                });

                a.addEventListener('click', () =>
                                   {
                    let link = `?page=ingame&component=galaxy&galaxy=${splitted[0]}&system=${splitted[1]
                    }&position=${splitted[2]}`;
                    if (window.location.href.indexOf('https') > -1)
                    {
                        link = 'https://' + window.location.host + window.location.pathname + link;
                    }
                    else {
                        link = 'http://' + window.location.host + window.location.pathname + link;
                    }

                    if(event.ctrlKey) window.open(link, '_blank');
                    else
                    {
                        if(this.page == 'galaxy')
                        {
                            document.querySelector('#galaxy_input').value = splitted[0];
                            document.querySelector('#system_input').value = splitted[1];
                            submitForm();
                        }
                        else window.location.href = link;
                    }
                });

                if(this.json.options.hiddenTargets[this.json.markers[coords].color])
                {
                    a.classList.add('ogl-colorHidden');
                }

                if(this.json.targetTabs.g != splitted[0])
                {
                    a.classList.add('ogl-galaxyHidden');
                }

                if(this.json.targetTabs.s != Math.floor(splitted[1] / step) * step)
                {
                    a.classList.add('ogl-systemHidden');
                }

                if(!this.upcomingTarget && upcoming && !a.classList.contains('ogl-colorHidden')
                   && this.json.markers[coords].color != 'gray' && !atk.classList.contains('ogl-hidden'))
                {
                    this.upcomingTarget = coords;
                }

                if(this.json.options.nextTarget == coords)
                {
                    pin.classList.add('ogl-active');
                    if(!upcoming) upcoming = true;
                }

                planetList.appendChild(a);
            }
        });
        checkEmpty();
    }

    addMarkerUI(coords, parent)
    {
        let div = this.createDOM('div', {'class':'ogl-colorChoice'});

        ['red', 'yellow', 'green', 'blue', 'violet', 'gray'].forEach(color =>
                                                                     {
            let circle = div.appendChild(this.createDOM('div', {'data-marker':color}));
            div.appendChild(circle);

            if(this.json.markers[coords] && this.json.markers[coords].color == color)
            {
                circle.classList.add('ogl-active');
            }

            circle.addEventListener('click', () =>
                                    {
                div.querySelectorAll('div[data-marker]').forEach(e => e.classList.remove('ogl-active'));

                if(this.json.markers[coords] && this.json.markers[coords].color == color)
                {
                    delete this.json.markers[coords];
                    parent.closest('tr').removeAttribute('data-marked');
                }
                else
                {
                    this.json.markers[coords] = this.json.markers[coords] || {};
                    this.json.markers[coords].color = color;
                    circle.classList.add('ogl-active');
                    parent.closest('tr').setAttribute('data-marked', color);
                }

                document.querySelector('.ogl-tooltip').classList.remove('ogl-active');
                document.querySelector('.ogl-targetIcon').classList.remove('ogl-targetsReady');

                this.saveData();
                this.targetList();
                this.sideStalk();
            });
        });

        let eventAction = this.isMobile ? 'touchstart' : 'mouseenter';

        parent.addEventListener(eventAction, () =>
                                {
            this.tooltip(parent, div);
        });
    }

    stalk(sender)
    {
        if(this.page == 'galaxy')
        {
            sender.classList.add('ogl-stalkReady');

            let eventAction = this.isMobile ? 'touchstart' : 'mouseenter';

            let galaxyPlayer = {};
            galaxyPlayer.id = sender.getAttribute('rel');

            let content = document.querySelector('#' + galaxyPlayer.id);

            galaxyPlayer.name = content.querySelector('h1 span').textContent;
            galaxyPlayer.rank = content.querySelector('.rank a') ? content.querySelector('.rank a').textContent : '0';
            galaxyPlayer.links = {};
            galaxyPlayer.planets = [];
            galaxyPlayer.ready = false;

            content.querySelectorAll('a').forEach(link =>
                                                  {
                if(link.href.indexOf('page=highscore') > -1) galaxyPlayer.links.highscore = link.href;
                else if(link.href.indexOf('page=chat') > -1) galaxyPlayer.links.chat = link.href;
                else if(link.classList.contains('js_openChat')) galaxyPlayer.links.chat = link.href;
                else if(link.href.indexOf('component=buddies') > -1) galaxyPlayer.links.buddy = link.href;
                else if(link.href.indexOf('page=ignorelist') > -1) galaxyPlayer.links.ignore = link.href;
            });

            galaxyPlayer.content = this.createDOM('div');
            galaxyPlayer.content.innerHTML =
                `
                <h1>${galaxyPlayer.name} <a href="${galaxyPlayer.links.highscore || ''}" class="ogl-ranking">#${galaxyPlayer.rank || 'b'}</a></h1>
                <hr>
                <a href="${galaxyPlayer.links.chat || ''}" class="icon icon_chat sendMail js_openChat" data-playerid="${galaxyPlayer.id}"></a>
                <a href="${galaxyPlayer.links.buddy || ''}" class="icon icon_user overlay buddyrequest"></a>
                <a href="${galaxyPlayer.links.ignore || ''}" class="icon icon_against"></a>
            `;

            sender.appendChild(this.createDOM('a', {'href':galaxyPlayer.links.highscore || '', 'class':'ogl-ranking'}, ('#' + galaxyPlayer.rank) || 'b'));

            let date = galaxyPlayer.content.appendChild(this.createDOM('span', {'class':'ogl-right ogl-date'}));

            galaxyPlayer.content.appendChild(this.createDOM('hr'));
            let detailRank = galaxyPlayer.content.appendChild(this.createDOM('div', {'class':'ogl-detailRank'}));
            galaxyPlayer.content.appendChild(this.createDOM('hr'));
            let list = galaxyPlayer.content.appendChild(this.createDOM('div', {'class':'ogl-stalkPlanets'}));
            let count = galaxyPlayer.content.appendChild(this.createDOM('div', {'class':'ogl-fullGrid ogl-right'}));

            let sideStalk = galaxyPlayer.content.appendChild(this.createDOM('a', {'class':'icon ogl-pin'}));
            sideStalk.addEventListener('click', () => this.sideStalk(galaxyPlayer));

            let stats = galaxyPlayer.content.appendChild(this.createDOM('a', {'class':'icon ogl-mmorpgstats'}));
            stats.addEventListener('click', () =>
                                   {
                let lang = ['fr', 'de', 'en', 'es', 'pl', 'it', 'ru', 'ar', 'mx', 'tr', 'fi', 'tw', 'gr', 'br', 'nl',
                            'hr', 'sk', 'cz', 'ro', 'us', 'pt', 'dk', 'no', 'se', 'si', 'hu', 'jp', 'ba'].indexOf(this.gameLang);

                let link = `https://www.mmorpg-stat.eu/0_fiche_joueur.php?pays=${lang}&ftr=${galaxyPlayer.id.replace(/\D/g,'')}.dat&univers=_${this.universe}`;
                window.open(link, '_blank');
            });

            sender.addEventListener(eventAction, () =>
                                    {
                this.tooltip(sender, galaxyPlayer.content, false, {}, 200);

                if(galaxyPlayer.ready)
                {
                    list.innerHTML = '';
                    this.updateStalk(galaxyPlayer).forEach(e => list.appendChild(e));
                }
                else
                {
                    let http;
                    if (window.location.href.indexOf('https') > -1)
                    {
                        http = this.callAPI('https://' + window.location.host + '/api/playerData.xml?id=' + galaxyPlayer.id.replace(/\D/g,''));
                    }
                    else {
                        http = this.callAPI('http://' + window.location.host + '/api/playerData.xml?id=' + galaxyPlayer.id.substring(6));
                    }

                    http.onreadystatechange = () =>
                    {
                        if(http.readyState === XMLHttpRequest.DONE && http.status === 200)
                        {
                            let parser = new DOMParser();
                            let xml = parser.parseFromString(http.responseText, 'text/xml');

                            galaxyPlayer.planets = [];

                            Array.from(xml.querySelectorAll('planet')).forEach((planet, index) =>
                                                                               {
                                let jsonPlanet = {};
                                jsonPlanet.name = planet.getAttribute('name');
                                jsonPlanet.coords = planet.getAttribute('coords');
                                jsonPlanet.hasMoon = planet.querySelector('moon') ? true : false;
                                jsonPlanet.isMain = index == 0 ? true : false;

                                galaxyPlayer.planets.push(jsonPlanet);
                            });

                            galaxyPlayer.planets.sort((a, b) =>
                                                      {
                                let coordsA = a.coords.split(':').map(x => x.padStart(3, '0')).join('');
                                let coordsB = b.coords.split(':').map(x => x.padStart(3, '0')).join('');

                                return coordsA - coordsB;
                            });

                            list.innerHTML = '';
                            this.updateStalk(galaxyPlayer).forEach(e => list.appendChild(e));

                            let timestamp = parseInt(xml.querySelector('playerData').getAttribute('timestamp'));
                            galaxyPlayer.date = date.innerHTML = new Date(timestamp * 1000).toLocaleDateString("fr-FR");

                            let total = parseInt(xml.querySelector('position[type="0"]').getAttribute('score'));
                            let eco = parseInt(xml.querySelector('position[type="1"]').getAttribute('score'));
                            let tech = parseInt(xml.querySelector('position[type="2"]').getAttribute('score'));
                            let str = parseInt(xml.querySelector('position[type="3"]').getAttribute('score'));
                            let fleetCount = (parseInt(xml.querySelector('position[type="3"]').getAttribute('ships')) || 0);
                            let def = Math.max(str - (total - eco - tech), 0);
                            let fleet = str - def;

                            count.innerHTML = galaxyPlayer.planets.length + ' planet(s)';
                            detailRank.innerHTML =
                                `
                                <div title="${this.getTranslatedText(42, true)}"><div class="ogl-totalIcon"></div> ${this.formatToUnits(total)}</div>
                                <div title="${this.getTranslatedText(43, true)}"><div class="ogl-ecoIcon"></div> ${this.formatToUnits(eco)}</div>
                                <div title="${this.getTranslatedText(44, true)}"><div class="ogl-techIcon"></div> ${this.formatToUnits(tech)}</div>
                                <div title="${this.getTranslatedText(45, true)}"><div class="ogl-fleetIcon"></div> ${this.formatToUnits(fleet)}</div>
                                <div title="${this.getTranslatedText(46, true)}"><div class="ogl-defIcon"></div> ${this.formatToUnits(def)}</div>
                            `;

                            galaxyPlayer.ready = true;
                        }
                    }
                }
            });
        }
    }

    updateStalk(galaxyPlayer)
    {
        let domArr = [];

        galaxyPlayer.planets.forEach(planet =>
                                     {
            let coords = planet.coords.split(':');

            let a = this.createDOM('a');  
            a.appendChild(this.createDOM('span', {}, planet.coords));
            a.setAttribute('data-coords', planet.coords);

            if(planet.isMain)
            {
                a.classList.add('ogl-main');
                a.appendChild(this.createDOM('i', {}, 'PM'));
            }

            let mIcon = a.appendChild(this.createDOM('div', {'class':'icon ogl-moon'}));

            a.addEventListener('click', event =>
                               {
                let link = `?page=ingame&component=galaxy&galaxy=${coords[0]}&system=${coords[1]
                }&position=${coords[2]}`;

                if (window.location.href.indexOf('https') > -1)
                {
                    link = 'https://' + window.location.host + window.location.pathname + link;
                }
                else {
                    link = 'http://' + window.location.host + window.location.pathname + link;
                }

                if(event.ctrlKey) window.open(link, '_blank');
                else
                {
                    if(this.page == 'galaxy')
                    {
                        document.querySelector('#galaxy_input').value = coords[0];
                        document.querySelector('#system_input').value = coords[1];
                        submitForm();
                        this.highlighted = coords.join(':');
                    }
                    else window.location.href = link;
                }
            });

            if(planet.hasMoon)
            {
                mIcon.classList.add('ogl-active');
            }

            let targeted = this.json.markers[planet.coords];

            if(targeted)
            {
                a.classList.add('ogl-marked');
                a.setAttribute('data-marked', targeted.color);
            }
            else
            {
                a.classList.remove('ogl-marked');
                a.removeAttribute('data-marked');
            }

            domArr.push(a);
        });

        return domArr;
    }

    sideStalk(galaxyPlayer)
    {
        if(galaxyPlayer)
        {
            this.json.sideStalk = JSON.stringify(galaxyPlayer);
            this.saveData();
        }

        if(this.json.sideStalk)
        {
            let sideStalk = document.querySelector('.ogl-sideStalk');
            let sidePlayer = galaxyPlayer || JSON.parse(this.json.sideStalk);

            if(!sideStalk)
            {
                sideStalk = document.querySelector('#rechts').appendChild(this.createDOM('div', {'id':'ogl-draggableSideStalk', 'class':'ogl-sideStalk ogl-draggable', 'draggable':'true'}));
            }

            sideStalk.innerHTML = `
                ${sidePlayer.name} #${sidePlayer.rank}
<hr>
            `;

            let btn = sideStalk.appendChild(this.createDOM('a', {'class':'close-tooltip'}));
            btn.addEventListener('click', () =>
                                 {
                this.json.sideStalk = false;
                this.saveData();
                sideStalk.remove();
            });

            document.querySelector('.ogl-sideStalk > div') && document.querySelector('.ogl-sideStalk > div').remove();
            let container = sideStalk.appendChild(this.createDOM('div', {'class':'ogl-stalkPlanets'}));

            this.updateStalk(sidePlayer).forEach(dom => container.appendChild(dom));

            container.appendChild(this.createDOM('div', {'class':'ogl-right ogl-date'}, sidePlayer.date));
        }
    }

    checkDebris()
    {
        if(this.page == 'galaxy')
        {
            this.FPSLoop('checkDebris');

            document.querySelectorAll('.debris').forEach(element =>
                                                         {
                let debris = element.querySelector('.ListLinks');
                if(debris && !debris.classList.contains('ogl-debrisReady'))
                {
                    debris.classList.add('ogl-debrisReady');
                    let total = 0;

                    debris.querySelectorAll('.debris-content').forEach(resources =>
                                                                       {
                        let value = this.removeNumSeparator(resources.innerText.replace(/(\D*)/, ''));
                        total += parseInt(value);

                        element.querySelector('.debrisField').innerHTML += this.formatToUnits(this.cleanValue(value)) + '<br>';
                    });

                    if(total > this.json.options.rvalLimit)
                    {
                        element.classList.add('ogl-active');
                    }
                }
            });

            let expeBox = document.querySelector('.expeditionDebrisSlotBox');
            if(expeBox && !expeBox.classList.contains('ogl-done'))
            {
                let content = expeBox.querySelectorAll('.ListLinks li');
                expeBox.classList.add('ogl-done');

                let scouts = content[2];
                let action = content[3];
                let res =
                    [
                        content[0].textContent.replace(/(\D*)/, ''),
                        content[1].textContent.replace(/(\D*)/, '')
                    ];

                expeBox.innerHTML = `
                    <img src="https://gf1.geo.gfsrv.net/cdnc5/fa3e396b8af2ae31e28ef3b44eca91.gif">
                    <div>
                        <div class="ogl-metal">${res[0]}</div>
                        <div class="ogl-crystal">${res[1]}</div>
                    </div>
                    <div>
                        <div>${scouts.textContent}</div>
                        <div>${action.outerHTML}</div>
                    </div>
                `;
            }
        }
    }

    genTrashsimLink(apiKey)
    {
        let coords = this.current.coords.split(':');

        let jsonTechs = {"0":
                         [{
                             planet:
                             {
                                 galaxy:coords[0],
                                 system:coords[1],
                                 position:coords[2],
                             },
                             class: this.json.playerClass,
                             "research": {}
                         }]};

        for(let [key, value] of Object.entries(this.json.techs))
        {
            jsonTechs[0][0].research[key] = {"level":value};
        }

        jsonTechs = btoa(JSON.stringify(jsonTechs));

        return 'https://trashsim.universeview.be/' + this.gameLang + '?SR_KEY=' + apiKey + '#prefill=' + jsonTechs;
    }

    updateReportTotal(reportList)
    {
        if(document.querySelector('.ogl-spyTable') && this.json.options.spyTableEnable)
        {
            let container = document.querySelector('.ogl-spyTable .ogl-total');

            if(!container)
            {
                container = document.querySelector('.ogl-spyTable').appendChild(this.createDOM('div', {'class':'ogl-total'}));
            }

            let total = reportList.reduce((prev, cur) => !cur.deleted ? prev + cur.renta : prev + 0, 0);

            container.innerHTML = `Total : <span>${total.toLocaleString('de-DE')}</span>`;
        }
    }

    buildReportTable(reportList)
    {
        document.querySelector('.ogl-spyTable') && document.querySelector('.ogl-spyTable').remove();

        let addShipLink = (id, coords, report)  =>
        {
            if(this.json.options.compactViewEnable || this.json.options.fret == id)
            {
                let param = `am${id}=${report['s'+id]}`;

                let link = `?page=ingame&component=fleetdispatch&galaxy=${coords[0]}&system=${coords[1]
                }&position=${coords[2]}&type=${report.type}&mission=1&${param}&oglMode=4`;

                let td = this.createDOM('td');
                if(this.json.options.fret == id) td.classList.add('ogl-favShip');

                if (window.location.href.indexOf('https') > -1)
                {
                    td.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + link}, report['s'+id].toLocaleString('de-DE')));
                }
                else {
                    td.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + link}, report['s'+id].toLocaleString('de-DE')));
                }

                return td;
            }
            else return false;
        };

        let deleteAction = (report, line) =>
        {
            document.querySelectorAll(`.ogl-spyTable *[data-msg="${report.id}"]`).forEach(l => l.remove());

            line.remove();
            report.delete.click();
            reportList.splice(reportList.indexOf(report), 1);
            this.updateReportTotal(reportList);
            return;
        }

        let expandAction = (report, line) =>
        {
            if(!document.querySelector(`.ogl-sub[data-msg="${report.id}"]`))
            {
                let splittedCoords = report.coords.split(':');

                let newTotal = report.renta;

                let nextElement = line.nextElementSibling;

                for(let i=2; i<=6; i++)
                {
                    let newLine = this.createDOM('tr', {'class':'ogl-sub', 'data-msg':report.id});
                    line.parentNode.insertBefore(newLine, nextElement);

                    newTotal -= newTotal * report.loot / 100;

                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, `(${i})`));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));

                    newLine.appendChild(this.createDOM('td', {}, this.formatToUnits(Math.ceil(newTotal))));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));

                    if(this.json.options.compactViewEnable || this.json.options.fret == 202)
                    {
                        let newPTFret = this.calcNeededShips({'moreFret':true, 'resources':newTotal, 'fret':202});
                        let newPTLink = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1]
                        }&position=${splittedCoords[2]}&type=${report.type}&mission=1&am202=${newPTFret}&oglMode=4`;

                        let newPT = newLine.appendChild(this.createDOM('td'));

                        if (window.location.href.indexOf('https') > -1)
                        {
                            newPT.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + newPTLink}, newPTFret.toLocaleString('de-DE')));
                        }
                        else {
                            newPT.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + newPTLink}, newPTFret.toLocaleString('de-DE')));
                        }
                    }

                    if(this.json.options.compactViewEnable || this.json.options.fret == 203)
                    {
                        let newGTFret = this.calcNeededShips({'moreFret':true, 'resources':newTotal, 'fret':203});
                        let newGTLink = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1]
                        }&position=${splittedCoords[2]}&type=${report.type}&mission=1&am203=${newGTFret}&oglMode=4`;

                        let newGT = newLine.appendChild(this.createDOM('td'));

                        if (window.location.href.indexOf('https') > -1)
                        {
                            newGT.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + newGTLink}, newGTFret.toLocaleString('de-DE')));
                        }
                        else {
                            newGT.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + newGTLink}, newGTFret.toLocaleString('de-DE')));
                        }
                    }

                    if(this.json.options.compactViewEnable || this.json.options.fret == 219)
                    {
                        let newPFFret = this.calcNeededShips({'moreFret':true, 'resources':newTotal, 'fret':219});
                        let newPFLink = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1]
                        }&position=${splittedCoords[2]}&type=${report.type}&mission=1&am219=${newPFFret}&oglMode=4`;

                        let newPF = newLine.appendChild(this.createDOM('td'));

                        if (window.location.href.indexOf('https') > -1)
                        {
                            newPF.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + newPFLink}, newPFFret.toLocaleString('de-DE')));
                        }
                        else {
                            newPF.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + newPFLink}, newPFFret.toLocaleString('de-DE')));
                        }
                    }

                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));
                    newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-'));
                }
            }
            else
            {
                document.querySelectorAll(`.ogl-sub[data-msg="${report.id}"]`).forEach(e => e.remove());
            }
        }

        let toggleConfig = configId =>
        {
            if(configId == 0) this.json.options.spyTableEnable = !this.json.options.spyTableEnable;
            else if(configId == 1) this.json.options.compactViewEnable = !this.json.options.compactViewEnable;
            else if(configId == 2) this.json.options.autoDeleteEnable = !this.json.options.autoDeleteEnable;

            this.saveData();
            this.buildReportTable(reportList);
        }

        let filterAction = filter =>
        {
            this.json.options.spyFilter = this.json.options.spyFilter == filter ? "REVERSE_" + filter : filter;
            this.saveData();
            this.buildReportTable(reportList);
        }

        let deleteNotifAction = () =>
        {
            document.querySelectorAll('.msg').forEach(e =>
                                                      {
                if(e.querySelector('.espionageDefText')) e.querySelector('.icon_refuse').click();
            });
        }

        //let pagination = document.querySelector('.pagination').cloneNode(true);
        //document.querySelector('ul.subtabs').after(pagination);

        let container = this.createDOM('div', {'class':'ogl-spyTable'})
        document.querySelector('ul.subtabs').after(container);

        let config = container.appendChild(this.createDOM('div', {'class':'ogl-tableOptions'}));

        let enableTable = config.appendChild(this.createDOM('button', {'class':'icon icon_eye ogl-enableTable tooltip', 'title':this.getTranslatedText(8)}, '', () => toggleConfig(0)));
        if(this.json.options.spyTableEnable) enableTable.classList.add('ogl-active');

        let compactView = config.appendChild(this.createDOM('button', {'class':'icon icon_maximize ogl-icon tooltip', 'title':this.getTranslatedText(11)}, '', () => toggleConfig(1)));
        if(this.json.options.compactViewEnable) compactView.classList.add('ogl-active');

        let autoDelete = config.appendChild(this.createDOM('button', {'class':'icon icon_trash ogl-autoDelete tooltip', 'title':this.getTranslatedText(7)}, '', () => toggleConfig(2)));
        if(this.json.options.autoDeleteEnable) autoDelete.classList.add('ogl-active');

        config.appendChild(this.createDOM('button', {'class':'icon ogl-wipe tooltip', 'title':this.getTranslatedText(35)}, '', () => deleteNotifAction(2)));

        if(!this.json.options.spyTableEnable) return;

        reportList.sort((a, b) =>
                        {
            if(this.json.options.spyFilter == "$") return b.renta - a.renta;
            else if(this.json.options.spyFilter == "DATE") return a.deltaDate - b.deltaDate;
            else if(this.json.options.spyFilter == "COORDS") return a.tmpCoords - b.tmpCoords;
            else if(this.json.options.spyFilter == "FLEET") return b.fleet - a.fleet;
            else if(this.json.options.spyFilter == "DEF") return b.defense - a.defense;
            else if(this.json.options.spyFilter == "REVERSE_$") return a.renta - b.renta;
            else if(this.json.options.spyFilter == "REVERSE_DATE") return b.deltaDate - a.deltaDate;
            else if(this.json.options.spyFilter == "REVERSE_COORDS") return b.tmpCoords - a.tmpCoords;
            else if(this.json.options.spyFilter == "REVERSE_FLEET") return a.fleet - b.fleet;
            else if(this.json.options.spyFilter == "REVERSE_DEF") return a.defense - b.defense;
        });

        let table = container.appendChild(this.createDOM('table'));
        let header = table.appendChild(this.createDOM('tr'));
        header.appendChild(this.createDOM('th', {}, '#'));
        header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("DATE") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Date*', () => filterAction('DATE')));
        header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("COORDS") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Coords', () => filterAction('COORDS')));
        header.appendChild(this.createDOM('th', {}, '-'));
        header.appendChild(this.createDOM('th', {}, 'Name+'));
        header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("$") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Renta', () => filterAction('$')));
        header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("FLEET") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Fle', () => filterAction('FLEET')));
        header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("DEF") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Def', () => filterAction('DEF')));
        if(this.json.options.compactViewEnable || this.json.options.fret == 202) header.appendChild(this.createDOM('th', {'class':'ogl-shipIcon ogl-202'}));
        if(this.json.options.compactViewEnable || this.json.options.fret == 203) header.appendChild(this.createDOM('th', {'class':'ogl-shipIcon ogl-203'}));
        if(this.json.options.compactViewEnable || this.json.options.fret == 219) header.appendChild(this.createDOM('th', {'class':'ogl-shipIcon ogl-219'}));
        header.appendChild(this.createDOM('th', {'class':'ogl-headerColors'}, '-'));
        header.appendChild(this.createDOM('th', {}, '-'));

        let spyTableTarget = false;

        reportList.forEach((report, index) =>
                           {
            if(report.deleted) return;

            if((this.json.options.autoDeleteEnable && report.fleet == 0 && report.bad))
            {
                report.deleted = true;
                report.delete.click();
                return;
            }

            let splittedCoords = report.coords.split(':');

            let line = table.appendChild(this.createDOM('tr'));

            if(report.attacked) line.classList.add('ogl-attacked');

            if(report.fleet == 0 && report.defense == 0 && !report.attacked && !spyTableTarget)
            {
                spyTableTarget = true;
                line.setAttribute('data-nexttarget', true);
            }

            // index
            line.appendChild(this.createDOM('td', {}, index + 1));

            // date
            let dateDetail = `
                ${report.cleanDate.toLocaleDateString('fr-FR')}<br>
                ${report.cleanDate.toLocaleTimeString()}<br>
                Activity : ${report.activity < 0 ? 'N/A' : report.activity}
`;

            let date = line.appendChild(this.createDOM('td', {'class':'tooltipLeft ogl-date', 'title':dateDetail}, report.cleanDate.toLocaleTimeString()));
            if(report.activity > 0 && report.activity <= 15) date.classList.add('ogl-danger');
            else if(report.activity > 0 && report.activity < 60) date.classList.add('ogl-care');
            else date.classList.add('ogl-good');

            // coords
            let coords = line.appendChild(this.createDOM('td', {'class':'ogl-coordReport'}));
            coords.appendChild(this.createDOM('a', {'href':report.coordsLink}, report.coords));

            // planet/moon
            let type = line.appendChild(this.createDOM('td', {'class':'ogl-type'}));
            if(report.type == 1) type.appendChild(this.createDOM('div', {'class':'icon ogl-planet'}));
            else type.appendChild(this.createDOM('div', {'class':'icon ogl-moon'}));

            // playername
            let name = line.appendChild(this.createDOM('td', {'class':'ogl-name tooltip', 'title':'details'}));
            name.appendChild(this.createDOM('a', {'class':'msg_action_link overlay', 'href':report.detail}, report.name.substring(0, 6) + '... ' + report.status));

            // renta
            let totalDetail = `
                <div class="ogl-metal">M: ${this.formatToUnits(report.metal)}</div>
                <div class="ogl-crystal">C: ${this.formatToUnits(report.crystal)}</div>
                <div class="ogl-deut">D: ${this.formatToUnits(report.deut)}</div>
                <div class="splitLine"></div>
                TOTAL: ${this.formatToUnits(report.total)}
`;

            let total = line.appendChild(this.createDOM('td', {'class':'tooltipLeft ogl-lootable', 'title':totalDetail}, this.formatToUnits(report.renta)));
            if(this.json.options.rvalLimit <= Math.round(report.total * report.loot / 100)) total.classList.add('ogl-good');

            total.style.background = `linear-gradient(to right, #9c4949 ${report.resRatio[0]}%, #498d9c ${report.resRatio[0]}%
            , #498d9c ${report.resRatio[0] + report.resRatio[1]}%, #abdeb4 ${report.resRatio[2]}%)`;

            // fleet
            let fleet = line.appendChild(this.createDOM('td', {'class':'tooltip', 'title':report.fleet.toLocaleString('de-DE')}, report.fleet > -1 ? this.formatToUnits(report.fleet, 0) : 'N/A'));
            if(report.fleet > 0 || report.fleet == -1) fleet.classList.add('ogl-danger');

            // defense
            let defense = line.appendChild(this.createDOM('td', {'class':'tooltip', 'title':report.defense.toLocaleString('de-DE')}, report.defense > -1 ? this.formatToUnits(report.defense, 0) : 'N/A'));
            if(report.defense > 0 || report.defense == -1) defense.classList.add('ogl-danger');

            // small cargo
            let scLink = addShipLink(202, splittedCoords, report);
            if(scLink) line.appendChild(scLink);

            // large cargo
            let lcLink = addShipLink(203, splittedCoords, report);
            if(lcLink) line.appendChild(lcLink);

            // pathfinder
            let pfLink = addShipLink(219, splittedCoords, report);
            if(pfLink) line.appendChild(pfLink);

            // colors
            let colors = line.appendChild(this.createDOM('td'));
            colors.appendChild(this.createDOM('div', {class:'ogl-colors', 'data-coords':report.coords}));

            // actions
            let opt = line.appendChild(this.createDOM('td', {'class':'ogl-spyOptions'}));
            opt.appendChild(this.createDOM('button', {'class':'icon ogl-simButton'}, 'S', () => report.sim.click()));
            opt.appendChild(this.createDOM('button', {'class':'icon icon_eye', 'onclick':report.spy}));
            opt.appendChild(this.createDOM('button', {'class':'icon ogl-expand'}, '', () => expandAction(report, line)));
            opt.appendChild(this.createDOM('button', {'class':'icon icon_close'}, '', () => deleteAction(report, line)));
        });

        this.updateReportTotal(reportList);
        this.marker();
    }

    spyTable(firstLoop)
    {
        if(this.page == 'fleetdispatch' && this.mode == 4)
        {

            let link;
            if (window.location.href.indexOf('https') > -1)
            {
                link = 'https://' + window.location.host + window.location.pathname + '?page=messages';
            }
            else {
                link = 'http://' + window.location.host + window.location.pathname + '?page=messages';
            }

            document.querySelector('#sendFleet').addEventListener('click', () =>
                                                                  {
                localStorage.setItem('ogl-redirect', link);
            });

            let sent = false;

            document.addEventListener('keydown', event =>
                                      {
                if(!sent && fleetDispatcher.currentPage == 'fleet3')
                {
                    if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                       && !document.querySelector('.chat_box_textarea:focus'))
                    {
                        let keycode = event.keyCode ? event.keyCode : event.which;
                        if(keycode == 13)
                        {
                            localStorage.setItem('ogl-redirect', link);
                            sent = true;
                        }
                    }
                }
            });
        }

        if(this.page != 'messages') return;

        this.FPSLoop('spyTable');

        if(!document.querySelector('#tabs-nfFleets[tabindex="0"]')) return;

        let detail = document.querySelector('.detail_msg');

        if(detail && detail.getAttribute('data-message-type') == 10 && !detail.classList.contains('ogl-detailReady'))
        {
            let apiKey = this.createDOM('div', {});
            apiKey.innerHTML = detail.querySelector('.icon_apikey').getAttribute('title') || detail.querySelector('.icon_apikey').getAttribute('data-title');
            apiKey = apiKey.querySelector('input').value;

            let simButton = detail.querySelector('.msg_actions').appendChild(this.createDOM('div', {'class':'ogl-sim icon_nf'}, 'S'));
            simButton.addEventListener('click', () => window.open(this.genTrashsimLink(apiKey), '_blank'));

            detail.classList.add('ogl-detailReady');
        }

        let reportList = [];
        let updated = false;

        document.querySelectorAll('#fleetsTab .msg:not([data-table="true"])').forEach(msg =>
                                                                                      {
            msg.setAttribute('data-table', "true");

            if(msg.querySelectorAll('.compacting').length < 1 || document.querySelector('#subtabs-nfFleetTrash.ui-tabs-active')) return;

            updated = true;

            let data = msg.querySelectorAll('.compacting');

            let rawDate = msg.querySelector('.msg_date').textContent.split(/\.| /g);
            let cleanDate = new Date(`${rawDate[2]}/${rawDate[1]}/${rawDate[0]} ${rawDate[3]}`);
            let deltaDate = Date.now() - cleanDate;
            let mins = deltaDate / 60000;
            let hours = mins / 60;

            if(!data[0] || !(/\[.*\]/g).exec(msg.querySelector('.msg_title').innerHTML)) return;

            let apiKey = this.createDOM('div', {});
            apiKey.innerHTML = msg.querySelector('.icon_apikey').getAttribute('title') || msg.querySelector('.icon_apikey').getAttribute('data-title');
            apiKey = apiKey.querySelector('input').value;

            let report = {};
            report.id = msg.getAttribute('data-msg-id');
            report.apiKey = this.genTrashsimLink(apiKey);
            report.attacked = msg.querySelector('.icon_attack img');
            report.type = msg.querySelector('figure.moon') ? 3 : 1;
            report.name = data[0].querySelectorAll('span[class^="status"]')[0].textContent.replace(/&nbsp;/g,'').trim();
            report.status = data[0].querySelectorAll('span[class^="status"]')[1].textContent.replace(/&nbsp;/g,'').trim();
            report.spy = msg.querySelector('a[onclick*="sendShipsWithPopup"]').getAttribute('onclick');
            report.activity = data[0].querySelectorAll('span.fright')[0].textContent ? parseInt(data[0].querySelectorAll('span.fright')[0].textContent.match(/\d+/)[0]) : -1;
            report.coords = (/\[.*\]/g).exec(msg.querySelector('.msg_title').innerHTML)[0].slice(1, -1);
            report.coordsLink = msg.querySelector('.msg_title a').href;
            report.detail = msg.querySelector('.msg_actions a.fright').href;
            report.delete = msg.querySelector('.msg_head .fright a .icon_refuse');
            report.fleet = data[4].querySelectorAll('span').length > 0 ? this.cleanValue(data[4].querySelectorAll('span.ctn')[0].textContent.replace(/(\D*)/, '').split(' ')[0]) : -1;
            report.defense = data[4].querySelectorAll('span').length > 1 ? this.cleanValue(data[4].querySelectorAll('span.ctn')[1].textContent.replace(/(\D*)/, '').split(' ')[0]) : -1;
            report.deltaDate = deltaDate;
            report.cleanDate = cleanDate;
            report.date = hours < 1 ? Math.floor(mins)+' min' : Math.floor(hours)+'h';
            report.loot = data[3].querySelector('.ctn').textContent.replace(/(\D*)/, '').replace(/%/, '');
            report.metal = this.cleanValue(data[2].querySelectorAll('.resspan')[0].textContent.replace(/(\D*)/, ''));
            report.crystal = this.cleanValue(data[2].querySelectorAll('.resspan')[1].textContent.replace(/(\D*)/, ''));
            report.deut = this.cleanValue(data[2].querySelectorAll('.resspan')[2].textContent.replace(/(\D*)/, ''));
            report.total = report.metal + report.crystal + report.deut;
            report.renta = Math.round(report.total * report.loot / 100);
            report.s202 = this.calcNeededShips({'moreFret':true, 'fret':202, 'resources':Math.ceil(report.total * report.loot / 100)});
            report.s203 = this.calcNeededShips({'moreFret':true, 'fret':203, 'resources':Math.ceil(report.total * report.loot / 100)});
            report.s219 = this.calcNeededShips({'moreFret':true, 'fret':219, 'resources':Math.ceil(report.total * report.loot / 100)});
            report.bad = report.total * report.loot / 100 < this.json.options.rvalLimit ? true : false;
            report.deleted = false;

            let resRatio = [report.total/report.metal, report.total/report.crystal, report.total/report.deut];
            report.resRatio = resRatio.map(x => Math.round(1/x*100));

            report.tmpCoords = report.coords.split(':');
            report.tmpCoords = report.tmpCoords.map(x => x.padStart(3, '0'));
            report.tmpCoords = report.tmpCoords.join('');

            report.sim = msg.querySelector('.msg_actions').appendChild(this.createDOM('div', {'class':'ogl-sim icon_nf'}, 'S'));
            report.sim.addEventListener('click', () => window.open(report.apiKey, '_blank'));

            reportList.push(report); 
        });

        if(updated)
        {
            this.buildReportTable(reportList);
        }

        if(document.querySelector('.ogl-spyTable'))
        {
            if(!document.querySelector('#subtabs-nfFleet20.ui-tabs-active') || document.querySelector('#subtabs-nfFleetTrash.ui-tabs-active'))
            {
                document.querySelector('.ogl-spyTable').classList.add('ogl-hidden');
            }
            else
            {
                document.querySelector('.ogl-spyTable').classList.remove('ogl-hidden');
            }
        }

        if(firstLoop)
        {
            let sent = false;

            document.addEventListener('keyup', event =>
                                      {
                let tab = document.querySelector('#subtabs-nfFleet20') || document.querySelector('#subtabs-nfCommunication11');

                if(!tab || sent || !tab.classList.contains('ui-tabs-active')
                   || !document.querySelector('.pagination')
                   || !document.querySelector('.ogl-spyTable')) return;

                if(document.querySelector('tr[data-nexttarget="true"]'))
                {
                    if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                       && !document.querySelector('.chat_box_textarea:focus'))
                    {
                        let keycode = event.keyCode ? event.keyCode : event.which;
                        if(keycode == 13)
                        {
                            sent = true;
                            document.querySelector('tr[data-nexttarget="true"] .ogl-favShip a').click();
                        }
                    }
                }
            });
        }
    }

    lock()
    {
        let pages = ['supplies', 'research', 'facilities', 'shipyard', 'defenses']

        if(pages.includes(this.page))
        {
            this.FPSLoop('lock');

            let data;
            let detail = document.querySelector('#technologydetails');

            let tech = {};
            tech.onMoon = this.current.isMoon;

            if(this.json.locked[this.current.coords])
            {
                data = JSON.parse(this.json.locked[this.current.coords]);

                if(data.onMoon == tech.onMoon)
                {
                    if(data.isShip)
                    {
                        if(data.metal <= 0 && data.crystal <= 0 && data.deut <= 0)
                        {
                            this.json.locked[this.current.coords] = '';
                            this.saveData();
                        }
                    }
                    else
                    {
                        let techDom = document.querySelector(`#technologies .technology[data-technology="${data.id}"]`);

                        if(techDom)
                        {
                            let finished = parseInt(techDom.querySelector('.level').getAttribute('data-value')) >= data.level;
                            let started = techDom.querySelector('.targetlevel') ? parseInt(techDom.querySelector('.targetlevel').getAttribute('data-value')) >= data.level : false;

                            if(started || finished)
                            {
                                this.json.locked[this.current.coords] = '';
                                this.saveData();
                            }
                        }
                    }
                }
            }

            if(!detail || detail.classList.contains('ogl-detailReady')) return;
            detail.classList.add('ogl-detailReady');

            let m = detail.querySelector('.costs .metal');
            let c = detail.querySelector('.costs .crystal');
            let d = detail.querySelector('.costs .deuterium');

            tech.id = detail.getAttribute('data-technology-id');
            tech.metal = m ? parseInt(m.getAttribute('data-value')) + 5 : 0;
            tech.crystal = c ? parseInt(c.getAttribute('data-value')) + 5 : 0;
            tech.deut = d ? parseInt(d.getAttribute('data-value')) + 5 : 0;
            tech.name = detail.querySelector('h3').textContent;

            let btn = detail.querySelector('.sprite_large').appendChild(this.createDOM('button', {'class':'ogl-lock'}));
            btn.appendChild(this.createDOM('div', {'class':'icon icon_lock'}));
            let lvl = btn.appendChild(this.createDOM('div'));

            if(data)
            {
                lvl.innerHTML = `<span>${data.name}</span> (${data.level})`;
                btn.classList.add('ogl-active');
            }

            btn.addEventListener('click', () =>
                                 {
                if(data && data.id == tech.id)
                {
                    this.json.locked[this.current.coords] = '';
                }
                else
                {
                    tech.page = this.page;

                    if(this.page != 'shipyard' && this.page != 'defenses')
                    {
                        tech.level = parseInt(detail.querySelector('.level').getAttribute('data-value'));
                        tech.metal = Math.max(0, tech.metal - parseInt(this.removeNumSeparator(document.querySelector('#resources_metal').textContent)));
                        tech.crystal = Math.max(0, tech.crystal - parseInt(this.removeNumSeparator(document.querySelector('#resources_crystal').textContent)));
                        tech.deut = Math.max(0, tech.deut - parseInt(this.removeNumSeparator(document.querySelector('#resources_deuterium').textContent)));
                    }
                    else
                    {
                        if(!document.querySelector('#build_amount')) return;

                        tech.level = parseInt(document.querySelector('#build_amount').value || 0);

                        ['metal', 'crystal', 'deut'].forEach(res =>
                                                             {
                            let val = 0;

                            if(detail.querySelector('.costs .resource.'+res.replace('deut', 'deuterium')))
                            {
                                val = detail.querySelector('.costs .resource.'+res.replace('deut', 'deuterium')).getAttribute('data-total');
                                val = val - parseInt(this.removeNumSeparator(document.querySelector('#resources_'+res.replace('deut', 'deuterium')).textContent));
                            }

                            tech[res] = Math.max(0, val);
                        });

                        tech.isShip = true;
                    }

                    this.json.locked[this.current.coords] = JSON.stringify(tech);

                    if(tech.isShip)
                    {
                        if(tech.metal <= 0 && tech.crystal <= 0 && tech.deut <= 0)
                        {
                            this.json.locked[this.current.coords] = '';
                        }
                    }
                }

                detail.classList.remove('ogl-detailReady');
                btn.remove();

                this.saveData();
                this.sideLock();
            });
        }
    }

    sideLock()
    {
        document.querySelectorAll('.ogl-sideLock').forEach(e => e.remove());

        this.planetList.forEach(planet =>
                                {
            let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1);
            let splittedCoords = coords.split(':');

            if(this.json.locked[coords])
            {
                let data = JSON.parse(this.json.locked[coords]);
                let btn = planet.appendChild(this.createDOM('div', {'class':'ogl-sideLock tooltip tooltipRight'}));
                btn.title = `
                    ${data.name} (${data.level})
                    <div class="splitLine"></div>
                    M: ${this.formatToUnits(Math.max(0, data.metal - 5))}<br>
                    C: ${this.formatToUnits(Math.max(0, data.crystal - 5))}<br>
                    D: ${this.formatToUnits(Math.max(0, data.deut - 5))}
`;

                if(data.metal <= 0 && data.crystal <= 0 && data.deut <= 0)
                {
                    btn.classList.add('ogl-active');

                    if(data.isShip)
                    {
                        btn.classList.add('ogl-hidden');
                        btn.remove();
                    }
                }

                btn && btn.addEventListener('click', () =>
                                            {
                    let link;
                    let type = planet.querySelector('.moonlink') && !planet.querySelector('.moonlink.active') ? 3 : 1;

                    if(data.metal <= 0 && data.crystal <= 0 && data.deut <= 0)
                    {
                        let cp;

                        if(data.onMoon == 3)
                            cp = new URL(planet.querySelector('.moonlink').href).searchParams.get('cp');
                        else
                            cp = new URL(planet.querySelector('.planetlink').href).searchParams.get('cp');

                        link = `?page=ingame&component=${data.page || 'supplies'}&cp=${cp}`;
                    }
                    else
                    {
                        link = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1]
                    }&position=${splittedCoords[2]}&type=${type}&mission=${this.json.options.harvestMission}&oglMode=2`;
                    }

                    if (window.location.href.indexOf('https') > -1)
                    {
                        window.location.href = 'https://' + window.location.host + window.location.pathname + link;
                    }
                    else {
                        window.location.href = 'http://' + window.location.host + window.location.pathname + link;
                    }
                });

                /*let destCoords =
                [
                    this.rawURL.searchParams.get(`galaxy`) || 0,
                    this.rawURL.searchParams.get(`system`) || 0,
                    this.rawURL.searchParams.get(`position`) || 0,
                ].join(':');

                if(this.mode == 2 && coords == destCoords && btn)
                {
                    btn.classList.add('ogl-sideLockFilled');
                }*/
            }
        });

        if(this.page == 'fleetdispatch' && this.mode == 2)
        {
            if(fleetDispatcher)
            {
                let coords = fleetDispatcher.targetPlanet.galaxy + ':' + fleetDispatcher.targetPlanet.system + ':' + fleetDispatcher.targetPlanet.position;

                if(this.json.locked[coords])
                {
                    let data = JSON.parse(this.json.locked[coords]);

                    let metal = Math.min(data.metal, fleetDispatcher.metalOnPlanet);
                    let crystal = Math.min(data.crystal, fleetDispatcher.crystalOnPlanet);
                    let deut = Math.min(data.deut, fleetDispatcher.deuteriumOnPlanet);

                    let total = metal + crystal + deut;
                    this.selectShips(this.json.options.fret, this.calcNeededShips({'resources':total}));

                    this.fillFret({'resources':{'metal':metal, 'crystal':crystal, 'deut':deut}});
                    console.log(data)

                    let sent = false;

                    let sendAction = () =>
                    {
                        data.metal = Math.max(0, data.metal - fleetDispatcher.cargoMetal);
                        data.crystal = Math.max(0, data.crystal - fleetDispatcher.cargoCrystal);
                        data.deut = Math.max(0, data.deut - fleetDispatcher.cargoDeuterium);

                        this.json.locked[coords] = JSON.stringify(data);
                        this.saveData();
                        sent = true;
                    };

                    document.addEventListener('keydown', event =>
                                              {
                        if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                           && !document.querySelector('.chat_box_textarea:focus'))
                        {
                            if(!sent && fleetDispatcher.currentPage == 'fleet3')
                            {
                                let keycode = event.keyCode ? event.keyCode : event.which;
                                if(keycode == 13) sendAction();
                            }
                        }
                    });

                    document.querySelector('#sendFleet').addEventListener('click', () =>
                                                                          {
                        if(!sent) sendAction();
                    });
                }
            }
        }
    }

    missingEnergy()
    {
        if(this.page == 'supplies' && !this.current.isMoon)
        {
            this.FPSLoop('missingEnergy');

            let detail = document.querySelector('#technologydetails');

            if(!detail || detail.classList.contains('ogl-energyReady') || !detail.querySelector('.level')
               || parseInt(detail.getAttribute('data-technology-id')) > 3) return;
            detail.classList.add('ogl-energyReady');

            let node = detail.querySelector('.additional_energy_consumption span.value');
            let neededEnergy = parseInt(node.getAttribute('data-value'));
            let currentEnergy = parseInt(this.removeNumSeparator(document.querySelector('#resources_energy').textContent));

            let totalEnergy = currentEnergy - neededEnergy;
            let span = node.appendChild(this.createDOM('span', {}, ` (${totalEnergy.toLocaleString('de-DE')})`));

            totalEnergy > 0 ? span.classList.add('bonus') : span.classList.add('overmark');
        }
    }

    calcResOnPlanet()
    {
        document.querySelectorAll('.smallplanet .ogl-metal, .smallplanet .ogl-crystal, .smallplanet .ogl-deut').forEach(e => e.remove());
        document.querySelector('.ogl-panelTotalRes') && document.querySelector('.ogl-panelTotalRes').remove();
        document.querySelector('.ogl-panelTotalProd') && document.querySelector('.ogl-panelTotalProd').remove();

        let updateRes = (id) =>
        {
            let updatedValues = [0,0,0];

            if(this.json.myEmpire[id] && this.json.myEmpire[id].timer)
            {
                let deltaTime = Math.floor((Date.now() - this.json.myEmpire[id].timer) / 1000);

                ['metal', 'crystal', 'deut'].forEach((type, index) =>
                                                     {
                    updatedValues[index] = Math.floor(this.json.myEmpire[id][type] 
                                                      + (this.json.myEmpire[id]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * deltaTime));
                });
            }

            return updatedValues;
        }

        let totalRes = [0,0,0];
        let totalProd = [0,0,0];

        this.planetList.forEach(planet =>
                                {
            let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1);
            let pRes = updateRes(coords);
            let mRes = 0;
            if(planet.querySelector('.moonlink')) mRes = updateRes(coords+'M');

            ['metal', 'crystal', 'deut'].forEach((type, index) =>
                                                 {
                planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-stored`}, this.formatToUnits(pRes[index], 2)));
                totalRes[index] += pRes[index];

                if(mRes)
                {
                    planet.querySelector('.moonlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-stored`}, this.formatToUnits(mRes[index], 0)));
                    totalRes[index] += mRes[index];
                }

                let pProd = 0;

                if(this.json.myEmpire[coords])
                {
                    pProd = this.json.myEmpire[coords]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * 3600 * 24;
                    totalProd[index] += pProd;
                }

                planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-prod`}, `+${this.formatToUnits(pProd, 2)}`));

                if(this.json.myMines[coords]) planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-mineLvl`}, `${this.json.myMines[coords][type]}`));
            });
        });

        let tResDiv = this.createDOM('div', {'class':'ogl-panelTotalRes'});
        document.querySelector('#planetList').parentNode.appendChild(tResDiv);
        tResDiv.appendChild(this.createDOM('div', {'class':'ogl-sumIcon'}, '<span class="material-icons">functions</span>'));
        ['metal', 'crystal', 'deut'].forEach((type, index) => tResDiv.appendChild(this.createDOM('div', {'class':`ogl-${type}`}, this.formatToUnits(totalRes[index]))));

        let tProdDiv = this.createDOM('div', {'class':'ogl-panelTotalProd'});
        document.querySelector('#planetList').parentNode.appendChild(tProdDiv);
        tProdDiv.appendChild(this.createDOM('div', {'class':'ogl-sumIcon'}, '<span class="material-icons">functions</span>'));
        ['metal', 'crystal', 'deut'].forEach((type, index) => tProdDiv.appendChild(this.createDOM('div', {'class':`ogl-${type}`}, '+'+this.formatToUnits(totalProd[index]))));

        setTimeout(() => this.calcResOnPlanet(), 5000);
    }

    empire(mode)
    {
        let reload = mode;

        if(mode || mode == 0) this.json.options.empireMode = mode;
        else mode = this.json.options.empireMode;

        let now = Date.now();
        let id = this.current.isMoon ? this.current.coords+'M' : this.current.coords;

        // store data
        ['metal', 'crystal', 'deut'].forEach(type =>
                                             {
            let currentValue = this.current.resources[type];
            let target = document.querySelector(`#${type.replace('deut', 'deuterium')}_box`);

            let data = target.getAttribute('title') || target.getAttribute('data-title');
            let splitted = data.replace(/\./g, '').match(/\d+/g);

            this.json.myEmpire[id] = this.json.myEmpire[id] || {};
            this.json.myEmpire[id].timer = now;
            this.json.myEmpire[id].name = this.current.name;
            this.json.myEmpire[id][type] = currentValue;
            this.json.myEmpire[id]['prod' + type.charAt(0).toUpperCase() + type.substring(1)] = (splitted[2] / 3600).toFixed(2);

            this.saveData();
        });

        // display data
        if(this.page == 'movement')
        {
            let container = document.querySelector('.ogl-empireContainer') || this.createDOM('div', {'class':'ogl-empireContainer'});
            container.textContent = '';

            for(let i=0; i<3; i++)
            {
                let textId = 47 + i;
                let btn = container.appendChild(this.createDOM('button', {'class':'ogl-empireMode'}, this.getTranslatedText(textId)));
                btn.addEventListener('click', () => this.empire(i));

                if(mode == i) btn.classList.add('ogl-active');
            }

            let empireDiv = container.appendChild(this.createDOM('div', {'class':'ogl-empire'}));

            let resources = {};
            let totalFly = {'metal':0, 'crystal':0, 'deut':0};

            document.querySelectorAll('.fleetDetails').forEach(line =>
                                                               {
                let mission = line.getAttribute('data-mission-type');
                let back = line.getAttribute('data-return-flight');
                let route = line.querySelector('.route a');
                let rel = route.getAttribute('rel');

                let destination;
                let tr;

                if(line.getAttribute('data-fleet'))
                {
                    let tmp = document.createElement('div');
                    tmp.innerHTML = line.getAttribute('data-fleet');
                    tr = tmp;
                }
                else
                {
                    tr = document.querySelector('#' + rel);
                    line.setAttribute('data-fleet', tr.outerHTML);
                }

                tr = tr.querySelectorAll('tr');

                if(back != 1 && (mission == 3 || mission == 4 || mission == 7))
                {
                    destination = line.querySelector('.destinationCoords').textContent.slice(1, -1);
                    if(line.querySelector('.destinationPlanet figure.moon')) destination += 'M';
                }
                else
                {
                    destination = line.querySelector('.originCoords').textContent.slice(1, -1);
                    if(line.querySelector('.originPlanet figure.moon')) destination += 'M';
                }

                let metal = parseInt(this.removeNumSeparator(tr[tr.length-3].querySelector('.value').textContent.trim(), true));
                let crystal = parseInt(this.removeNumSeparator(tr[tr.length-2].querySelector('.value').textContent.trim(), true));
                let deut = parseInt(this.removeNumSeparator(tr[tr.length-1].querySelector('.value').textContent.trim(), true));

                resources[destination] = resources[destination] || {'metal':0, 'crystal':0, 'deut':0};
                resources[destination].metal += metal;
                resources[destination].crystal += crystal;
                resources[destination].deut += deut;

                totalFly.metal += metal;
                totalFly.crystal += crystal;
                totalFly.deut += deut;
            });

            let total = [0, 0, 0];
            let prodTotal = [0, 0, 0];

            let addLine = (line, planet, link) =>
            {
                let title = planet.indexOf('M') > -1 ? 'Moon' : `${this.json.myEmpire[planet].name}<br>[${planet}]`;
                let name = line.appendChild(this.createDOM('div', {}, title));
                let prod = line.appendChild(this.createDOM('div'));

                name.addEventListener('click', () => window.location.href = link);

                if(this.json.myEmpire[planet].timer)
                {
                    let deltaTime = Math.floor((Date.now() - this.json.myEmpire[planet].timer) / 1000);
                    ['metal', 'crystal', 'deut'].forEach((type, index) =>
                                                         {
                        let updatedValue = 0;

                        if(mode == 0 || mode == 2)
                        {
                            updatedValue = Math.floor(this.json.myEmpire[planet][type] 
                                                      + (this.json.myEmpire[planet]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * deltaTime));
                        }

                        if((mode == 1 || mode == 2) && resources[planet])
                        {
                            updatedValue += resources[planet][type];
                        }

                        total[index] += updatedValue;
                        prodTotal[index] += this.json.myEmpire[planet]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * 86400;  

                        prod.innerHTML += `<div class="ogl-${type}">`+updatedValue.toLocaleString('de-DE')+'</div>';
                    });
                }
                else
                {
                    ['metal', 'crystal', 'deut'].forEach((type, index) =>
                                                         {
                        prod.innerHTML += `<div class="ogl-${type}">?</div>`;
                    });
                }
            }

            this.planetList.forEach(planet =>
                                    {
                let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1);
                let line = empireDiv.appendChild(this.createDOM('div', {'class':'ogl-empireLine'}));

                if(!this.json.myEmpire[coords])
                {
                    this.json.myEmpire[coords] =
                        {
                        name: '???',
                        metal: 0,
                        crystal: 0,
                        deut: 0,
                    }
                }

                addLine(line, coords, planet.querySelector('.planetlink').getAttribute('href'));

                if(planet.querySelector('.moonlink'))
                {
                    if(!this.json.myEmpire[coords+'M'])
                    {
                        this.json.myEmpire[coords+'M'] =
                            {
                            metal: 0,
                            crystal: 0,
                            deut: 0,
                        }
                    }
                    addLine(line, coords+'M', planet.querySelector('.moonlink').getAttribute('href'));
                }
            });

            let totalDiv = empireDiv.appendChild(this.createDOM('div', {'class':'ogl-empireTotal ogl-fullGrid'}));
            totalDiv.innerHTML = `<h3>Total (+prod/24h)</h3><hr>
            <div class="ogl-metal"><b>${total[0].toLocaleString('de-DE')}</b> (+${this.formatToUnits(prodTotal[0], 0)})</div>
            <div class="ogl-crystal"><b>${total[1].toLocaleString('de-DE')}</b> (+${this.formatToUnits(prodTotal[1], 0)})</div>
            <div class="ogl-deut"><b>${total[2].toLocaleString('de-DE')}</b> (+${this.formatToUnits(prodTotal[2], 0)})</div>`;

            if(!reload && reload != 0)
            {
                this.addKeyboardAction('o', this.getTranslatedText(41), () =>
                                       {
                    this.empire(this.json.options.empireMode);
                    let overlay = document.querySelector('.ogl-dialogOverlay.ogl-active');
                    if(overlay) overlay.click();
                    else this.popup(false, container);
                });
            }
        }
    }

    highlightTarget()
    {
        if(this.page == 'galaxy')
        {
            this.FPSLoop('highlightTarget');

            if(document.querySelector('#galaxyLoading').style.display != 'none') return;

            let coords;

            if(this.highlighted)
            {
                coords = this.highlighted.split(':');
            }
            else
            {
                coords =
                    [
                    this.rawURL.searchParams.get(`galaxy`) || 0,
                    this.rawURL.searchParams.get(`system`) || 0,
                    this.rawURL.searchParams.get(`position`) || 0,
                ];
                coords.join(':');
            }

            if(document.querySelector('#galaxy_input').value == coords[0]
               && document.querySelector('#system_input').value == coords[1])
            {
                let target = document.querySelectorAll('#galaxytable tbody tr')[parseInt(coords[2])-1];
                if(target) target.classList.add('ogl-highlighted');
            }

            document.querySelectorAll('a[data-coords]').forEach(a =>
                                                                {
                let hCoords = a.getAttribute('data-coords').split(':');

                if(document.querySelector('#galaxy_input').value == hCoords[0]
                   && document.querySelector('#system_input').value == hCoords[1])
                {
                    a.classList.add('ogl-active');
                }
                else
                {
                    a.classList.remove('ogl-active');
                }
            });
        }
    }

    toggleImage()
    {
        let btn = this.createDOM('a', {'class':'toggleHeader'});
        let wrapper = document.querySelector('#supplies header, #facilities header, #research header, #defense header, #shipyard header');
        if(wrapper) wrapper.appendChild(btn);

        btn.addEventListener('click', () =>
                             {
            this.json.options.headerDisabled[this.page] = this.json.options.headerDisabled[this.page] ? false : true;
            this.saveData();

            if(this.json.options.headerDisabled[this.page])
            {
                document.querySelector('.maincontent header').classList.add('ogl-shortHeader');
            }
            else
            {
                document.querySelector('.maincontent header').classList.remove('ogl-shortHeader');
            }
        });

        if(this.json.options.headerDisabled[this.page])
        {
            document.querySelector('.maincontent header').classList.add('ogl-shortHeader');
        }
    }

    keepResources()
    {
        if(this.page == 'fleetdispatch')
        {
            fleetDispatcher.metalOnPlanet = Math.max(0, this.current.resources.metal - this.json.options.kept[0]);
            fleetDispatcher.crystalOnPlanet = Math.max(0, this.current.resources.crystal - this.json.options.kept[1]);
            fleetDispatcher.deuteriumOnPlanet = Math.max(0, this.current.resources.deut - this.json.options.kept[2]);
            fleetDispatcher.refresh();

            document.querySelectorAll('#resources .res').forEach((element, index) =>
                                                                 {
                let div = element.appendChild(this.createDOM('div', {'class':'ogl-keepRes tooltip', 'title':this.getTranslatedText(12)}, '<i class="material-icons">attach_money</i>'));
                let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-keptResources'});
                container.appendChild(this.createDOM('h1', {}, this.getTranslatedText(25)));
                container.appendChild(this.createDOM('hr'));
                let input = container.appendChild(this.createDOM('input', {'type':'text', 'class':'ogl-formatInput'}));
                container.appendChild(this.createDOM('hr'));
                let button = container.appendChild(this.createDOM('button', {'class':'btn_blue'}, 'OK'));

                if(this.json.options.kept[index]) div.classList.add('ogl-active');

                container.addEventListener('click', event =>
                                           {
                    event.preventDefault();
                    event.stopPropagation();
                });

                div.addEventListener('click', () =>
                                     {
                    input.value = this.json.options.kept[index];
                    this.popup(false, container);
                });

                button.addEventListener('click', () =>
                                        {
                    this.json.options.kept[index] = parseInt(this.removeNumSeparator(input.value, true));
                    this.saveData();
                    document.location.reload();
                });
            });
        }
    }

    checkResources(params)
    {
        if(this.page != 'fleetdispatch') return;

        params = params || {};
        this.FPSLoop('checkResources', params);

        if(fleetDispatcher.currentPage == 'fleet1')
        {
            if(fleetDispatcher.cargoMetal > 0 || fleetDispatcher.cargoCrystal > 0 || fleetDispatcher.cargoDeuterium > 0)
            {
                params.loop = true;
                params.resources = {'metal':fleetDispatcher.cargoMetal, 'crystal':fleetDispatcher.cargoCrystal, 'deut':fleetDispatcher.cargoDeuterium};
            }
        }
        else if(fleetDispatcher.currentPage == 'fleet2')
        {
            if(params.loop)
            {
                params.loop = false;
                this.fillFret({'resources':params.resources});
            }
        }
        else if(fleetDispatcher.currentPage == 'fleet3')
        {
            let max = this.current.resources.deut - this.json.options.kept[2] - fleetDispatcher.getConsumption();
            if(fleetDispatcher.cargoDeuterium > max)
            {
                fleetDispatcher.cargoDeuterium = Math.max(0, max);
                fleetDispatcher.refresh();
            }
        }
    }

    checkInputs()
    {
        this.FPSLoop('checkInputs');

        if(this.page == 'fleetdispatch')
        {
            document.querySelectorAll('.technology input').forEach(i => i.classList.add('ogl-formatInput'));
        }

        document.querySelectorAll('input.ogl-formatInput').forEach(input =>
                                                                   {
            if(input.value)
            {
                input.value = input.value.toLowerCase().replace(/m/g, '000000').replace(/k/g, '000');
                input.value = parseInt(this.removeNumSeparator(input.value, true)).toLocaleString('de-DE');
            }
        });
    }

    checkStorage()
    {
        if(this.current.isMoon) return;

        let getData = box =>
        {
            let data = box.getAttribute('title') || box.getAttribute('data-title');
            let splitted = data.replace(/\./g, '').match(/\d+/g);

            let timeLeft = splitted[2] > 0 ? Math.floor((splitted[1] - splitted[0]) / splitted[2]) || 0 : 0;

            let day = Math.floor(timeLeft / 24);
            let hour = Math.floor(timeLeft % 24);

            box.querySelector('.resourceIcon').appendChild(this.createDOM('div', {'class':'ogl-resTimeLeft'}, day + 'j ' + hour + 'h'));
        }

        ['metal', 'crystal', 'deut'].forEach(type =>
                                             {
            let target = document.querySelector(`#${type.replace('deut', 'deuterium')}_box`);
            target.querySelector('.value').classList.add('ogl-' + type);
            getData(target);
        });
    }

    jumpGateTimer()
    {
        let self = this;

        jumpgateDone = function(data)
        {
            var data = $.parseJSON(data);
            if(data["status"])
            {
                planet = data["targetMoon"];
                $('.overlayDiv').dialog('destroy');

                let originCoords = self.current.coords;
                let originLevel = self.current.planet.querySelector('.moonlink').getAttribute('data-jumpgatelevel');
                let originTimer = (0.25*Math.pow(originLevel,2)-7.57*originLevel+67.34)/self.fleetSpeed * 60000;

                let destinationCoords = document.querySelector(`.moonlink[href*="${jumpGateTargetId}"]`).parentNode.querySelector('.planet-koords').textContent.slice(1, -1);
                let destinationLevel = document.querySelector(`.moonlink[href*="${jumpGateTargetId}"]`).getAttribute('data-jumpgatelevel');
                let destinationTimer = (0.25*Math.pow(destinationLevel,2)-7.57*destinationLevel+67.34)/self.fleetSpeed * 60000;

                let now = Date.now();

                self.json.jumpGateTimers[originCoords] = now + originTimer;
                self.json.jumpGateTimers[destinationCoords] = now + destinationTimer;
                self.saveData();
            }

            errorBoxAsArray(data["errorbox"]);
            if (typeof data.newToken != 'undefined')
            {
                setNewTokenData(data.newToken);
            }
        }

        this.planetList.forEach(planet =>
                                {
            let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1);
            if(this.json.jumpGateTimers[coords] && this.json.jumpGateTimers[coords] > Date.now())
            {
                let updateTimer = () => new Date(this.json.jumpGateTimers[coords] - (Date.now() + 3600000)).toLocaleTimeString().substr(3);

                let timer = updateTimer();
                let div = planet.appendChild(this.createDOM('div', {'class':'ogl-jumpGateTimer'}, timer));
                let interval = setInterval(() =>
                                           {
                    if(this.json.jumpGateTimers[coords] <= Date.now()) clearInterval(interval);
                    else div.textContent = updateTimer();
                }, 1000);
            }
        });
    }

    checkShipsOnPlanet()
    {
        if(this.page != 'fleetdispatch' || document.querySelector('#fleet1 #warning')) return;

        let shipsId = [202,203,204,205,206,207,211,213,214,215,218,219];
        let url = new URLSearchParams(window.location.search);

        shipsId.forEach(shipID =>
                        {
            let required = parseInt(url.get('am'+shipID)) || 0;
            let amount = parseInt(document.querySelector(`.technology[data-technology="${shipID}"] .amount`).getAttribute('data-value'));

            if(amount < required)
            {
                document.querySelector(`.technology[data-technology="${shipID}"]`).classList.add('ogl-notEnough');
            }
        });
    }

    checkTop()
    {
        if(this.json.lastScoreCheck < Date.now() - 86400000)
        {
            let parser = new DOMParser();
            let http = new XMLHttpRequest();
            if (window.location.href.indexOf('https') > -1)
            {
                http.open('GET', 'https://' + window.location.host + '/api/serverData.xml');
            }
            else {
                http.open('GET', 'http://' + window.location.host + '/api/serverData.xml');
            }
            http.send();
            http.onreadystatechange = () =>
            {
                if(http.readyState === XMLHttpRequest.DONE && http.status === 200)
                {
                    let xml = parser.parseFromString(http.responseText, 'text/xml');
                    this.json.topScore = parseInt(xml.querySelector('topScore').innerHTML);
                    this.json.lastScoreCheck = Date.now();
                    this.saveData();
                }
            }
        }
    }

    draggableItems()
    {
        document.querySelectorAll('.ogl-draggable').forEach(e =>
                                                            {
            let id = e.getAttribute('id');
            this.json.options.draggable[id] = this.json.options.draggable[id] || {'x':0, 'y':0};
            this.saveData();

            e.style.left = this.json.options.draggable[id].x + 'px';
            e.style.top = this.json.options.draggable[id].y + 'px';

            document.body.addEventListener('dragover', event => event.preventDefault());

            e.addEventListener('dragstart', event =>
                               {
                let x = this.json.options.draggable[id].x - event.clientX;
                let y = this.json.options.draggable[id].y - event.clientY;
                event.dataTransfer.setData("text/plain", `${x},${y}`);
            }, false);

            document.body.addEventListener('drop', event =>
                                           {
                let offset = event.dataTransfer.getData("text/plain").split(',');
                let x = event.clientX + parseInt(offset[0],10);
                let y = event.clientY + parseInt(offset[1],10);

                this.json.options.draggable[id] = {'x':x, 'y':y};
                this.saveData();

                e.style.left = this.json.options.draggable[id].x + 'px';
                e.style.top = this.json.options.draggable[id].y + 'px';

                event.preventDefault();
            }, false);
        });
    }

    selectShips(shipID, amount)
    {
        if(this.page == 'fleetdispatch')
        {
            fleetDispatcher.shipsOnPlanet.forEach(ship =>
                                                  {
                if(ship.id == shipID)
                {
                    if(amount > ship.number)
                    {
                        amount = ship.number;
                        document.querySelector(`.technology[data-technology="${ship.id}"]`).classList.add('ogl-notEnough');
                    }

                    fleetDispatcher.selectShip(parseInt(shipID), parseInt(amount));
                    fleetDispatcher.refresh();
                    if(document.querySelector('#continueToFleet2')) document.querySelector('#continueToFleet2').focus();
                }
            });
        }

        return amount;
    }

    preselectShips()
    {
        if(this.page == 'fleetdispatch')
        {
            fleetDispatcher.shipsOnPlanet.forEach(ship =>
                                                  {
                let param = this.rawURL.searchParams.get(`am${ship.id}`);
                if(param)
                {
                    this.selectShips(ship.id, param);
                }
            });
        }
    }

    calcNeededShips(options)
    {
        options = options || {};

        // get resources
        let resources = [this.removeNumSeparator(document.querySelector('#resources_metal').textContent),
                         this.removeNumSeparator(document.querySelector('#resources_crystal').textContent),
                         this.removeNumSeparator(document.querySelector('#resources_deuterium').textContent)];

        resources = resources.reduce((a, b) => parseInt(a) + parseInt(b));

        if(options.resources || options.resources == 0) resources = options.resources;

        let type = options.fret || this.json.options.fret;
        let fret;

        if(type == 202)
        {
            fret = this.json.ptFret;
        }
        else if(type == 203)
        {
            fret = this.json.gtFret;
        }
        else if(type == 219)
        {
            fret = this.json.pfFret;
        }

        let total = resources / fret;
        if(options.moreFret) total *= 107 / 100;

        return Math.ceil(total);
    }

    calcAvailableFret(shipAmount)
    {
        let fret = this.json.options.fret == 203 ? this.json.gtFret : this.json.ptFret;
        return shipAmount * fret;
    }

    saveData()
    {
        localStorage.setItem('ogl-data', JSON.stringify(this.json));
    }

    createDOM(element, options, content, clickCallback)
    {
        let e = document.createElement(element);

        for(var key in options)
        {
            e.setAttribute(key, options[key]);
        }

        if(content || content == 0) e.innerHTML = content;

        if(clickCallback)
        {
            e.addEventListener('click', () => clickCallback());
        }

        return e;
    }

    formatToUnits(value, forced)
    {
        let precision;

        if(value == 0 || forced == 0 || value < 1000) precision = 0;
        else if(value < 1000000 || forced == 1) precision = 1;
        else if(value < 1000000000 || forced == 2) precision = 2;
        else precision = 3;

        if(isNaN(value)) return value;

        const abbrev = ['', 'k', 'M', 'Md', 't'];
        const unrangifiedOrder = Math.floor(Math.log10(Math.abs(value)) / 3);
        const order = Math.max(0, Math.min(unrangifiedOrder, abbrev.length-1));
        const suffix = abbrev[order];

        return (value / Math.pow(10, order * 3)).toFixed(precision) + suffix;
    }

    formatFromUnits(value)
    {
        value = value.toLowerCase();
        value = value.replace(/m/g, '000000').replace(/k/g, '000');
        return value;
    }

    cleanValue(value)
    {
        if(this.separatorLangType == 0)
        {
            if(value.indexOf('Md') > -1)
            {
                if(value.indexOf(',') == -1)
                {
                    value = value.replace('Md', '.000Md');
                }

                value = value.replace(/\Md/g, '').replace(/\,/g, '.');

                value = value.split('.');
                value[1] = value[1].padEnd(9, '0');
                value = value.join();
                value = value.replace(/\,/g, '');
            }
            else if(value.indexOf('M') > -1)
            {
                if(value.indexOf(',') == -1)
                {
                    value = value.replace('M', '.000M');
                }

                value = value.replace(/\M/g, '').replace(/\,/g, '.');

                value = value.split('.');
                value[1] = value[1].padEnd(6, '0');
                value = value.join();
                value = value.replace(/\,/g, '');
            }
            else
            {
                value = value.replace(/\./g, '');
            }
        }
        else
        {
            if(value.indexOf('Md') > -1)
            {
                if(value.indexOf('.') == -1)
                {
                    value = value.replace('Md', '.000Md');
                }

                value = value.replace(/\Md/g, '').replace(/\,/g, '.');

                value = value.split('.');
                value[1] = value[1].padEnd(9, '0');
                value = value.join();
                value = value.replace(/\,/g, '');
            }
            else if(value.indexOf('Mn') > -1)
            {
                if(value.indexOf('.') == -1)
                {
                    value = value.replace('Mn', '.000Mn');
                }

                value = value.replace(/\Mn/g, '').replace(/\,/g, '.');

                value = value.split('.');
                value[1] = value[1].padEnd(6, '0');
                value = value.join();
                value = value.replace(/\,/g, '');
            }
            else
            {
                value = value.replace(/\./g, '');
            }
        }


        return parseInt(value);
    }

    addStyle(option, style)
    {
        if(option != 'disabled')
        {
            GM_addStyle(style);
        }
    }

    callAPI(url)
    {
        let http = new XMLHttpRequest();
        http.open('GET', url);
        http.send();
        return http;
    }

    removeNumSeparator(str, forced)
    {
        if(this.separatorLangType == 0 || forced)
        {
            return str.replace(/\./g, '');
        }
        else
        {
            return str.replace(/\,/g, '');
        }
    }

    addKeyboardAction(key, text, callback) 
    {
        this.keyboardActionsList[key] = callback;

        if(!document.querySelector('.ogl-tipsList'))
        {
            let container;

            if(this.page == 'movement') container = document.querySelector('#movement .fleetStatus');
            else if(this.page == 'fleetdispatch') container = document.querySelector('#allornone') || document.querySelector('#fleet1 #warning');
            else if(this.page == 'galaxy') container = document.querySelector('#galaxycomponent');
            else return;

            container.appendChild(this.createDOM('div', {'class':'ogl-tipsList'}));
        }

        let tip = document.querySelector('.ogl-tipsList').appendChild(this.createDOM('div', {'class':'ogl-tips'}, text));
        tip.appendChild(this.createDOM('div', {'class':'ogl-keyboard'}, key.toUpperCase()));
        tip.addEventListener('click', () => callback());
    }

    keyboardActions()
    {
        if(this.page == 'fleetdispatch')
        {
            let sent = false;

            let sendAction = () =>
            {
                if(!this.selectUpcomingTarget) return;

                this.json.markers[this.json.options.nextTarget].attacked = Date.now();
                this.json.options.nextTarget = this.upcomingTarget || '';
                this.saveData();
            };

            document.addEventListener('keydown', event =>
                                      {
                if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                   && !document.querySelector('.chat_box_textarea:focus'))
                {
                    if(!sent && fleetDispatcher.currentPage == 'fleet3')
                    {
                        let keycode = event.keyCode ? event.keyCode : event.which;
                        if(keycode == 13) sendAction();
                    }
                }
            });

            document.querySelector('#sendFleet').addEventListener('click', () =>
                                                                  {
                if(!sent) sendAction();
            });
        }

        let actionSkip = () =>
        {
            if(this.mode == 3 || this.mode == 5)
            {
                window.location.href = this.keyboardActionSkip;
                return;
            }

            let nextElement = this.current.planet.nextElementSibling || document.querySelectorAll('.smallplanet')[0];

            if(this.current.isMoon && !nextElement.querySelector('.moonlink'))
            {
                do nextElement = nextElement.nextElementSibling || document.querySelectorAll('.smallplanet')[0];
                while(!nextElement.querySelector('.moonlink'));
            }

            let cp;

            if(this.current.isMoon)
                cp = new URL(nextElement.querySelector('.moonlink').href).searchParams.get('cp');
            else
                cp = new URL(nextElement.querySelector('.planetlink').href).searchParams.get('cp');

            let url = new URL(window.location.href);
            url.searchParams.delete('cp');
            url.searchParams.set('cp', cp);

            window.location.href = url.href;
        }

        let actionAll = () =>
        {
            if(fleetDispatcher.currentPage == 'fleet1') document.querySelector('#sendall').click();
            else if(fleetDispatcher.currentPage == 'fleet3') document.querySelector('#allresources').click();
        }

        let actionExpe = shipID =>
        {
            let main = this.json.options.expeType;
            let sub = this.json.options.expeSubType;

            this.json.options.expeType = shipID;
            this.json.options.expeSubType = 0;

            document.querySelector('.ogl-prefab').click();

            this.json.options.expeType = main;
            this.json.options.expeSubType = sub;
        }

        let actionFastGhosting = () =>
        {
            document.querySelector('#sendall').click();
            document.querySelector('#allresources').click();

            let coords = this.current.coords.split(':');

            fleetDispatcher.targetPlanet.galaxy = coords[0];
            fleetDispatcher.targetPlanet.system = coords[1];
            fleetDispatcher.targetPlanet.position = coords[2];
            fleetDispatcher.targetPlanet.type = 2;
            fleetDispatcher.targetPlanet.name = '-';
            fleetDispatcher.mission = 8;
            fleetDispatcher.refresh();
        }

        let actionTarget = () =>
        {
            let coords = this.json.options.nextTarget.split(':');

            this.selectShips(this.json.options.fret, this.calcNeededShips({'resources':this.json.options.rvalLimit}));

            fleetDispatcher.targetPlanet.galaxy = coords[0];
            fleetDispatcher.targetPlanet.system = coords[1];
            fleetDispatcher.targetPlanet.position = coords[2];
            fleetDispatcher.targetPlanet.type = 1;
            fleetDispatcher.targetPlanet.name = '-';
            fleetDispatcher.mission = 1;
            fleetDispatcher.refresh();

            this.selectUpcomingTarget = true;
        }

        if(this.page == 'fleetdispatch' && document.querySelector('#allornone'))
        {
            this.addKeyboardAction('a', this.getTranslatedText(32), actionAll);
            this.addKeyboardAction('n', this.getTranslatedText(39), () => document.querySelector('#resetall').click());
            this.addKeyboardAction('r', this.getTranslatedText(38), () => document.querySelectorAll('.ogl-deltaFleet').forEach(e => e.click()));
            this.addKeyboardAction('e', this.getTranslatedText(36), () => document.querySelector('.ogl-prefab').click());
            this.addKeyboardAction('s', this.getTranslatedText(59), () => actionExpe(202));
            this.addKeyboardAction('l', this.getTranslatedText(37), () => actionExpe(203));
            this.addKeyboardAction('o', this.current.isMoon ? this.getTranslatedText(40) : this.getTranslatedText(9), actionSkip);
            this.addKeyboardAction('g', this.getTranslatedText(60), () => actionFastGhosting());
            if(this.json.options.nextTarget != '0:0:0') this.addKeyboardAction('t', this.getTranslatedText(61) + ` [${this.json.options.nextTarget}]`, () => actionTarget());
        }
        else if(this.page == 'fleetdispatch' && document.querySelector('#fleet1 #warning'))
        {
            this.addKeyboardAction('o', this.current.isMoon ? this.getTranslatedText(40) : this.getTranslatedText(9), actionSkip);
        }
        else if(this.page == 'galaxy')
        {
            this.addKeyboardAction('z', this.getTranslatedText(54), () => submitOnKey(38));
            this.addKeyboardAction('s', this.getTranslatedText(53), () => submitOnKey(40));
            this.addKeyboardAction('q', this.getTranslatedText(55), () => submitOnKey(37));
            this.addKeyboardAction('d', this.getTranslatedText(56), () => submitOnKey(39));
        }

        document.addEventListener('keydown', event =>
                                  {
            for(const key in this.keyboardActionsList)
            {
                let keycode = event.keyCode ? event.keyCode : event.which;

                if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                   && !document.querySelector('.chat_box_textarea:focus'))
                {
                    if(key.toUpperCase() == String.fromCharCode(keycode)) this.keyboardActionsList[key]();
                }
            }
        });
    }

    FPSLoop(callbackAsString, params)
    {
        setTimeout(() =>
                   {
            requestAnimationFrame(() => this[callbackAsString](params));
        }, 1000 / 20);
    }

    tooltip(sender, content, autoHide, side, timer)
    {
        side = side || {};
        timer = timer || 200;

        let tooltip = document.querySelector('.ogl-tooltip');
        document.querySelector('.ogl-tooltip > div') && document.querySelector('.ogl-tooltip > div').remove();

        let close = document.querySelector('.close-tooltip');

        let oldSender = document.querySelector('.ogl-senderActive');
        oldSender && oldSender.classList.remove('ogl-senderActive');
        sender.classList.add('ogl-senderActive');

        if(!tooltip)
        {
            tooltip = document.body.appendChild(this.createDOM('div', {'class':'ogl-tooltip tpd-tooltip'}));

            close = tooltip.appendChild(this.createDOM('a', {'class':'close-tooltip'}));

            close.addEventListener('click', () => tooltip.classList.remove('ogl-active'));

            document.body.addEventListener('click', event =>
                                           {
                if(!event.target.getAttribute('rel')
                   && !event.target.closest('.tooltipRel')
                   && !event.target.classList.contains('ogl-colors')
                   && !tooltip.contains(event.target)
                   && !event.target.classList.contains('ogl-senderActive'))
                {
                    tooltip.classList.remove('ogl-active');
                }
            });

            document.body.addEventListener('scroll', () => tooltip.classList.remove('ogl-active'));
        }

        // remove old tooltip classes
        if(sender != this.oldSender) tooltip.classList.remove('ogl-active');
        tooltip.classList.remove('ogl-autoHide');
        tooltip.classList.remove('ogl-tooltipLeft');
        tooltip.classList.remove('ogl-tooltipRight');
        tooltip.classList.remove('ogl-tooltipBottom');

        this.oldSender = sender;

        // tooltip position
        let rect = sender.getBoundingClientRect();
        let win = sender.ownerDocument.defaultView;
        let position =
            {
                x:rect.left + win.pageXOffset,
                y:rect.top + win.pageYOffset
            };

        if(side.left)
        {
            tooltip.classList.add('ogl-tooltipLeft');
            position.y -= 20;
            position.y += rect.height / 2;
        }
        else if(side.right)
        {
            tooltip.classList.add('ogl-tooltipRight');
            position.x += rect.width;
            position.y -= 20;
            position.y += rect.height / 2;
        }
        else if(side.bottom)
        {
            tooltip.classList.add('ogl-tooltipBottom');
            position.x += rect.width / 2;
            position.y += rect.height;
        }
        else
        {
            position.x += rect.width / 2;
        }

        if(sender.classList.contains('tooltipOffsetX'))
        {
            position.x += 42;
        }

        if(autoHide)
        {
            tooltip.classList.add('ogl-autoHide');
        }

        content.querySelectorAll('.tooltip').forEach(e =>
                                                     {
            e.classList.remove('tooltip');
        });

        // display tooltip
        tooltip.appendChild(content);

        tooltip.style.top = position.y + 'px';
        tooltip.style.left = position.x + 'px';

        this.tooltipTimer = setTimeout(() => tooltip.classList.add('ogl-active'), timer);

        if(!sender.classList.contains('ogl-tooltipInit'))
        {
            sender.classList.add('ogl-tooltipInit');
            sender.addEventListener('mouseleave', event =>
                                    {
                if(autoHide)
                {
                    tooltip.classList.remove('ogl-active');
                }
                clearTimeout(this.tooltipTimer);
            });
        }

        return tooltip;
    }

    popup(header, content)
    {
        let overlay = document.querySelector('.ogl-dialogOverlay');

        if(!overlay)
        {
            overlay = document.body.appendChild(this.createDOM('div', {'class':'ogl-dialogOverlay'}));
            overlay.addEventListener('click', event => overlay.classList.remove('ogl-active'));
        }

        let dialog = overlay.querySelector('.ogl-dialog');

        if(!dialog)
        {
            dialog = overlay.appendChild(this.createDOM('div', {'class':'ogl-dialog'}));
            let close = dialog.appendChild(this.createDOM('div', {'class':'close-tooltip'}));
            close.addEventListener('click', () => overlay.classList.remove('ogl-active'));

            dialog.addEventListener('click', event =>
                                    {
                event.preventDefault();
                event.stopPropagation();
            });
        }

        let top = dialog.querySelector('header') || dialog.appendChild(this.createDOM('header'));
        let body = dialog.querySelector('.ogl-dialogContent') || dialog.appendChild(this.createDOM('div', {'class':'ogl-dialogContent'}));

        top.innerHTML = '';
        body.innerHTML = '';

        if(header)
        {
            top.appendChild(header);
        }

        if(content)
        {
            body.appendChild(content);
        }

        overlay.classList.add('ogl-active');
    }

    betterTooltip()
    {
        this.FPSLoop('betterTooltip');

        let eventAction = this.isMobile ? 'touchstart' : 'mouseenter';

        if(this.page == 'galaxy')
        {
            // tooltipRel galaxy
            document.querySelectorAll('.tooltipRel').forEach(sender =>
                                                             {
                if(sender.getAttribute('rel').indexOf('player') == 0)
                {
                    if(!sender.classList.contains('ogl-stalkReady'))
                    {
                        this.stalk(sender);
                    }
                }
            });

            if(document.querySelector('#galaxytable:not(.ogl-ready)'))
            {
                document.querySelector('#galaxytable').classList.add('ogl-ready');
                document.querySelector('.ogl-tooltip') && document.querySelector('.ogl-tooltip').classList.remove('ogl-active');
                this.tooltipList = {};
            }
        }

        document.querySelectorAll('.tooltip, .tooltipLeft, .tooltipRight, .tooltipBottom, .tooltipClose, .tooltipHTML, .tooltipRel, .tooltipCustom').forEach(sender =>
        {
            if(!sender.classList.contains('ogl-tooltipReady')
               && !sender.classList.contains('ogl-stalkReady')
               && !sender.classList.contains('activity'))
            {
                sender.classList.add('ogl-tooltipReady');

                sender.addEventListener(eventAction, () =>
                                        {
                    let content;
                    let appendMode = false;

                    if(sender.classList.contains('tooltipRel'))
                    {
                        let id = '#' + sender.getAttribute('rel');
                        if(id == '#demolition_costs_tooltip_oneTimeelement' && document.querySelector(id)) this.tooltipList[id] = document.querySelector(id);
                        this.tooltipList[id] = this.tooltipList[id] || document.querySelector(id);
                        content = this.tooltipList[id];
                        appendMode = true;
                    }
                    else
                    {
                        content = sender.getAttribute('data-title');
                    }

                    if(!content)
                    {
                        content = sender.getAttribute('title');
                        if(!content) return;
                        sender.setAttribute('data-title', content);
                    }

                    if(content.style && content.style.display == 'none')
                    {
                        content.style.display = 'block';
                    }

                    sender.removeAttribute('title');

                    if(sender.classList.contains('tooltipHTML'))
                    {
                        content = content.replace('|', '<hr>');
                    }

                    if(sender.classList.contains('planetlink'))
                    {
                        sender.classList.remove('tooltipLeft');
                        sender.classList.add('tooltipRight');
                        sender.classList.add('tooltipOffsetX');
                    }

                    if(sender.parentNode.getAttribute('id') == 'playerName')
                    {
                        sender.classList.remove('tooltip');
                        sender.classList.add('tooltipBottom');
                    }

                    if(sender.getAttribute('id')
                       && sender.getAttribute('id').indexOf('route_') == 0)
                    {
                        sender.classList.add('tooltipRight');
                    }

                    if(sender.classList.contains('resource_list_el'))
                    {
                        sender.classList.remove('tooltipCustom');
                    }

                    let div = this.createDOM('div');
                    appendMode ? div.appendChild(content) : div.innerHTML = content;

                    let side = {};
                    side.left = sender.classList.contains('tooltipLeft');
                    side.right = sender.classList.contains('tooltipRight');
                    side.bottom = sender.classList.contains('tooltipBottom');

                    let autoHide = true;
                    if(sender.classList.contains('tooltipClose')
                       || sender.classList.contains('tooltipCustom'))
                    {
                        autoHide = false;
                    }

                    this.tooltip(sender, div, autoHide, side);
                });
            }
        });
    }

    utilities()
    {
        // fix top tooltips
        document.querySelectorAll('#resources .tooltipHTML, #commandercomponent .tooltipHTML').forEach(e =>
                                                                                                       {
            e.classList.add('tooltipBottom');
        });

        if(this.page == 'fleetdispatch')
        {
            // speed slider
            document.querySelector('.steps').addEventListener('click', () =>
                                                              {
                document.querySelector('#continueToFleet3').focus();
            });

            document.querySelector('#speedPercentage').classList.add('ogl-hidden');

            let slider = this.createDOM('div', {'class':'ogl-fleetSpeed'});
            document.querySelector('#fleetBriefingPart1').appendChild(slider);

            let steps = this.json.playerClass == 2 ? .5 : 1;

            for(let i=steps; i<=10; i+=steps)
            {
                let step = slider.appendChild(this.createDOM('div', {'data-step':i}, i*10));
                if(fleetDispatcher.speedPercent == i) step.classList.add('ogl-active');
            }

            slider.addEventListener('click', event =>
                                    {
                if(this.mode == 1 || this.mode == 3) document.querySelector('#allresources').click();

                slider.querySelectorAll('div').forEach(e => e.classList.remove('ogl-active'));
                event.target.classList.add('ogl-active');
                fleetDispatcher.speedPercent = event.target.getAttribute('data-step');
                fleetDispatcher.refresh();
                document.querySelector('#continueToFleet3').focus();
            });

            slider.addEventListener('mouseover', event =>
                                    {
                fleetDispatcher.speedPercent = event.target.getAttribute('data-step');
                fleetDispatcher.refresh();
            });

            slider.addEventListener('mouseout', event =>
                                    {
                fleetDispatcher.speedPercent = slider.querySelector('.ogl-active').getAttribute('data-step');
                fleetDispatcher.refresh();
            });

            // ship infos
            let data = fleetDispatcher.fleetHelper.shipsData;
            for(let id in data)
            {
                let infos = `
                    <div class="ogl-fleetInfo">
                        ${data[id].name}
<hr>
                        <div><span>Fret</span>${data[id].cargoCapacity.toLocaleString('de-DE')}</div>
                        <div><span>${this.getTranslatedText(19)}</span>${data[id].speed.toLocaleString('de-DE')}</div>
                        <div><span>Conso</span>${data[id].fuelConsumption.toLocaleString('de-DE')}</div>
                    </div>
                `;

                let ship = document.querySelector(`.technology[data-technology="${id}"]`);

                if(ship)
                {
                    ship.setAttribute('data-title', infos);
                    ship.removeAttribute('title');
                }
            }

            document.addEventListener('keydown', event =>
                                      {
                let valid = false;

                if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none')
                   && !document.querySelector('.chat_box_textarea:focus'))
                {
                    valid = true;
                }

                // preselect fleet
                if(fleetDispatcher.currentPage == 'fleet1')
                {
                    if(fleetDispatcher.shipsToSend.length == 0)
                    {
                        let keycode = event.keyCode ? event.keyCode : event.which;
                        if(keycode == 13 && valid)
                        {
                            let needed = document.querySelector(`.technology[data-technology="${this.json.options.fret}"] .ogl-needed`);
                            if(needed) needed.click();
                        }
                    }
                }

                // preselect associated moon/planet
                if(fleetDispatcher.currentPage == 'fleet2'
                   && fleetDispatcher.currentPlanet.galaxy == fleetDispatcher.targetPlanet.galaxy
                   && fleetDispatcher.currentPlanet.system == fleetDispatcher.targetPlanet.system
                   && fleetDispatcher.currentPlanet.position == fleetDispatcher.targetPlanet.position
                   && fleetDispatcher.currentPlanet.type == fleetDispatcher.targetPlanet.type)
                {
                    let keycode = event.keyCode ? event.keyCode : event.which;
                    if(keycode == 13 && valid)
                    {
                        fleetDispatcher.targetPlanet.type = fleetDispatcher.targetPlanet.type == 1 ? 3 : 1;
                        if(!fleetDispatcher.mission) fleetDispatcher.mission = this.json.options.harvestMission;
                        fleetDispatcher.refresh();
                    }
                }
            });

            if(document.querySelector('#continueToFleet2')) document.querySelector('#continueToFleet2').focus();
        }

        if(this.page == 'movement')
        {
            document.querySelectorAll('.fleetDetails').forEach(fleet =>
                                                               {
                if(!fleet.querySelector('.reversal')) return;

                let back = fleet.querySelector('.reversal a').title || fleet.querySelector('.reversal a').getAttribute('data-title');
                let splitted = back.split('|')[1].replace('<br>', '/').replace(/:|\./g, '/').split('/');

                let backDate =
                    {
                        'year':splitted[2],
                        'month':splitted[1],
                        'day':splitted[0],
                        'h':splitted[3],
                        'm':splitted[4],
                        's':splitted[5],
                    }

                let baseBack = new Date(backDate.year, backDate.month, backDate.day, backDate.h, backDate.m, backDate.s).getTime();
                let baseTime = Date.now();
                let currentTime = Date.now();
                let content = fleet.querySelector('.starStreak').appendChild(this.createDOM('div', {'class':'ogl-backTimer'}));

                let updateTimer = () =>
                {
                    currentTime = Date.now();
                    let newTimestamp = baseBack + (currentTime - baseTime) * 2;
                    let date = new Date(newTimestamp);
                    content.innerHTML = `<div>${date.toLocaleDateString('fr-FR')}</div><div>${date.toLocaleTimeString()}</div>`;
                }

                updateTimer();

                setInterval(() => updateTimer(), 300);
            });
        }

        // display the date when the building/tech/ship/def end
        document.querySelectorAll('#buildingCountdown, #researchCountdown, #shipyardCountdown2').forEach(timer =>
                                                                                                         {
            let timeLeft = 0;

            if(timer.getAttribute('id') == 'buildingCountdown')
            {
                timeLeft = restTimebuilding * 1000;
            }
            else if(timer.getAttribute('id') == 'researchCountdown')
            {
                timeLeft = restTimeresearch * 1000;
            }
            else if(timer.getAttribute('id') == 'shipyardCountdown2')
            {
                timeLeft = restTimeship2 * 1000;
            }

            let newDate = new Date(Date.now() + timeLeft);

            timer.parentNode.appendChild(this.createDOM('div', {'class':'ogl-buildingTimeLeft', 'data-time':timeLeft},
                                                        `<span>${newDate.toLocaleDateString('fr-FR')}</span> - ${newDate.toLocaleTimeString().slice(0,-3)}`));
        });
    }

    loopUtilities()
    {
        this.FPSLoop('loopUtilities');

        if(this.page == 'fleetdispatch')
        {
            if(!fleetDispatcher.mission && fleetDispatcher.currentPage == 'fleet3')
            {
                // select expedition mission
                if(!fleetDispatcher.mission && fleetDispatcher.targetPlanet.position == 16)
                {
                    fleetDispatcher.mission = 15;
                    fleetDispatcher.expeditionTime = 1;
                }

                // select unique mission available
                if(!fleetDispatcher.mission && document.querySelectorAll('#missions .on').length == 1)
                {
                    document.querySelectorAll('#missions .on')[0].querySelector('a').click();
                }

                fleetDispatcher.refresh();
            }

            // add fret on fleet1
            if(fleetDispatcher.currentPage == 'fleet1' && document.querySelector('#civilships'))
            {
                let div = document.querySelector('#civilships .ogl-fret');

                if(!div)
                {
                    div = document.querySelector('#civilships').appendChild(this.createDOM('div', {'class':'ogl-fret tooltip', 'title':this.getTranslatedText(57)}));

                    div.addEventListener('click', () =>
                                         {
                        let wantedFret = prompt(this.getTranslatedText(58, true), '10k');
                        if(wantedFret)
                        {
                            let amount = this.calcNeededShips({'resources':this.formatFromUnits(wantedFret)});
                            this.selectShips(this.json.options.fret, amount);
                        };
                    });
                }

                let capacity = fleetDispatcher.getCargoCapacity();

                if(this.oldCapacity == null || this.oldCapacity != capacity)
                {
                    this.oldCapacity = capacity;

                    let currentFret = capacity.toLocaleString('de-DE');
                    let neededFret = (fleetDispatcher.metalOnPlanet + fleetDispatcher.crystalOnPlanet + fleetDispatcher.deuteriumOnPlanet).toLocaleString('de-DE');
                    let totalFret = 0;

                    fleetDispatcher.shipsOnPlanet.forEach(s =>
                                                          {
                        totalFret += s.baseCargoCapacity * s.number;
                    });

                    totalFret = totalFret.toLocaleString('de-DE');

                    div.innerHTML = `
                        <div>${this.getTranslatedText(27)}: <b>${neededFret}</b></div>
                        <div>${this.getTranslatedText(28)}: <b>${totalFret}</b></div>
                        <div>${this.getTranslatedText(29)}: <b>${currentFret}</b></div>
                    `;
                }
            }
        }

        if(this.page == 'galaxy')
        {
            if(document.querySelector('a[onclick*="sendShips"'))
            {
                let ships = document.querySelector('a[onclick*="sendShips"').getAttribute('onclick').match(/\d+/g).map(Number);
                if(ships[0] == 6) this.json.spyProbes = ships[5];
            }
        }

        // display build time
        if(this.page == 'shipyard' || this.page == 'defenses')
        {
            let detail = document.querySelector('#technologydetails');
            if(detail && detail.querySelector('#build_amount'))
            {
                if(!detail.querySelector('.ogl-buildTime'))
                {                    
                    let baseTime = detail.querySelector('time').getAttribute('datetime').replace('PT', '');

                    let totalTime = 0;
                    let indexArr = baseTime.match(/\D+/g).map(String);
                    let valueArr = baseTime.match(/\d+/g).map(Number);

                    valueArr.forEach((value, index) =>
                                     {
                        if(indexArr[index] == "DT") totalTime += value * 86400;
                        if(indexArr[index] == "H") totalTime += value * 3600;
                        if(indexArr[index] == "M") totalTime += value * 60;
                        if(indexArr[index] == "S") totalTime += value;
                    });

                    let buildTime = detail.querySelector('.information').appendChild(this.createDOM('div', {'class':'ogl-buildTime'}, '<span>-</span>'));

                    // officer fix
                    detail.querySelector('#build_amount').setAttribute('onkeyup', 'checkIntInput(this, 1, 99999);event.stopPropagation();');

                    let updateTime = () =>
                    {
                        setTimeout(() =>
                                   {
                            let timestamp = Date.now() + totalTime * detail.querySelector('#build_amount').value * 1000;

                            if(document.querySelector('#shipyardCountdown2 + .ogl-buildingTimeLeft'))
                            {
                                timestamp = parseInt(document.querySelector('#shipyardCountdown2 + .ogl-buildingTimeLeft').getAttribute('data-time')) + timestamp;
                            }

                            timestamp = new Date(timestamp);

                            let newDate = `${timestamp.toLocaleDateString('fr-FR')} - <span>${timestamp.toLocaleTimeString()}</span>`;
                            buildTime.innerHTML = newDate;

                            detail.querySelectorAll('.costs li').forEach(res =>
                                                                         {
                                let resValue = res.getAttribute('data-value') * Math.max(detail.querySelector('#build_amount').value, 1);

                                if((res.classList.contains('metal') && this.current.resources.metal >= resValue)
                                   || (res.classList.contains('crystal') && this.current.resources.crystal >= resValue)
                                   || (res.classList.contains('deuterium') && this.current.resources.deut >= resValue))
                                {
                                    res.classList.add('ogl-active');
                                    res.classList.remove('ogl-noMoney');
                                }
                                else
                                {
                                    res.classList.remove('ogl-active');
                                    res.classList.add('ogl-noMoney');
                                }

                                res.setAttribute('data-total', resValue);
                                res.textContent = this.formatToUnits(resValue);
                            });
                        }, 200);
                    }

                    detail.querySelector('.maximum') && detail.querySelector('.maximum').addEventListener('click', () => updateTime());
                    detail.querySelector('#build_amount').addEventListener('keyup', () => updateTime());
                }
            }
        }

        // add jumpgate reverse selection button
        if(document.querySelector('#jumpgateForm') && !document.querySelector('#jumpgateForm').classList.contains('ogl-ready'))
        {
            document.querySelector('#jumpgateForm').classList.add('ogl-ready');
            document.querySelectorAll('#jumpgateForm .ship_txt_row:not(.tdInactive)').forEach(ship =>
                                                                                              {
                ship.style.position = 'relative';
                let delta = ship.appendChild(this.createDOM('div',{'class':'ogl-deltaFleet'}, '<i class="material-icons">fiber_smart_record</i>'));

                delta.addEventListener('click', event => 
                                       {
                    let input = ship.nextElementSibling.querySelector('input');
                    let selected = input.value.replace(/\./g, '') || 0;
                    let amount = parseInt(input.getAttribute('rel'));

                    input.value = amount - selected;
                });
            });
        }
    }

    getTranslatedText(id, raw)
    {
        let text =
            {
                0 :
                [
                    "Gestion des données",
                    "Manage data",
                    "Διαχείριση δεδομένων",
                ],
                1 :
                [
                    "Ouvrir la liste de cibles",
                    "Open targets list",
                    "Λίστα στόχων",
                ],
                2 :
                [
                    "Alterne entre PT et GT comme type de vaisseaux à utilser pour les envois de ressources",
                    "Switch between SC and LC as default ship to use for transporting resources",
                    "Εναλλαγή μεταξύ μικρών(SC) και μεγάλων μεταγωγικών(LC) ως προεπιλεγμένου πλοίου για τη μεταφορά πόρων",
                ],
                3 :
                [
                    "Alterne entre transport et stationnement comme type de mission à utiliser pour les rapatriements",
                    "Switch between transport and deployment as default mission to use for transporting resources",
                    "Εναλλαγή μεταξύ μεταφοράς και παράταξης ως προεπιλεγμένης αποστολής που χρησιμοποιείται για τη μεταφορά πόρων",
                ],
                4 :
                [
                    "Rapatrie les ressources vers la planète/lune ciblée",
                    "Send resources to the target planet/moon",
                    "Αποστολή πόρων στον στόχο πλανήτη/φεγγάρι",
                ],
                5 :
                [
                    "Afficher/masquer les cibles",
                    "Show ignored targets",
                    "Εμφάνιση αγνοουμένων στόχων",
                ],
                6 :
                [
                    "Rentabilité minimale d'une cible pour être considéré comme intéressante",
                    "Minimal target rentability to be considered as interesting",
                    "To ελάχιστo κέρδος του στόχου  που πρέπει να θεωρείται ενδιαφέρον",
                ],
                7 :
                [
                    "Active/désactive la suppression automatique des rapports inintéréssants",
                    "Toggle automatic removal of low rentability reports",
                    "Εναλλαγή αυτόματης κατάργησης αναφορών χαμηλής απόδοσης",
                ],
                8 :
                [
                    "Active/désactive le tableau d'espionnage",
                    "Toggle spy table",
                    "Εναλλαγή πίνακα κατασκοπείας",
                ],
                9 :
                [
                    "Planète suivante",
                    "Next planet",
                    "Next planet",
                ],
                10 :
                [
                    "Envoyer vers...",
                    "Send to...",
                    "Αποστολή σε..."
                ],
                11 :
                [
                    "Active/désactive la vue compacte",
                    "Toggle compact view",
                    "Εναλλαγή συμπαγούς προβολής",
                ],
                12 :
                [
                    "Quantité de ressources à laisser ici",
                    "Amount of resources that stays here",
                    "Ποσό πόρων που θα μένει εδώ",
                ],
                13 :
                [
                    "Liste des cibles",
                    "Targets list",
                    "Λίστα στόχων",
                ],
                14 :
                [
                    "Aucun résultat trouvé",
                    "No data found",
                    "Δε βρέθηκαν δεδομένα",
                ],
                15 :
                [
                    "PT",
                    "SC",
                    "SC",
                ],
                16 :
                [
                    "GT",
                    "LC",
                    "LC",
                ],
                17 :
                [
                    "Epingler ces données",
                    "Pin this data",
                    "Καρφίτσωμα δεδομένων",
                ],
                18 :
                [
                    "Ressources en vol",
                    "In flight resources",
                    "Πόροι σε πτήση",
                ],
                19 :
                [
                    "Vit.",
                    "Speed",
                    "Ταχύτητα",
                ],
                20 :
                [
                    "Espionner la planète",
                    "Spy planet",
                    "Κατασκοπεία πλανήτη",
                ],
                21 :
                [
                    "Espionner la lune",
                    "Spy moon",
                    "Κατασκοπεία φεγγαριού",
                ],
                22 :
                [
                    "Attaquer la planète",
                    "Attack planet",
                    "Επίθεση σε πλανήτη",
                ],
                23 :
                [
                    "Technologie hyperespace",
                    "Hyperspace technology",
                    "Υπερδιαστημική Τεχνολογία",
                ],
                24 :
                [
                    "Seuil rentabilité (RVal)",
                    "Rentability threshold (RVal)",
                    "Rentability threshold (RVal)",
                ],
                25 :
                [
                    "Quantité de ressources à garder",
                    "Resources amount to keep",
                    "Πόροι που πρέπει να κρατηθούν",
                ],
                26 :
                [
                    "Rappel",
                    "Recall",
                    "Ανάκληση",
                ],
                27 :
                [
                    "Frêt nécessaire",
                    "Required capacity",
                    "Απαιτούμενη χωρητικότητα",
                ],
                28 :
                [
                    "Frêt max.",
                    "Maximum capacity",
                    "Μέγιστη χωρητικότητα",
                ],
                29 :
                [
                    "Frêt actuel",
                    "Current capacity",
                    "Τρέχουσα χωρητικότητα",
                ],
                30 :
                [
                    "EC",
                    "PF",
                    "PF",
                ],
                31 :
                [
                    "Lunes associées",
                    "Linked moons",
                    "Συνδεδεμένα φεγγάρια",
                ],
                32 :
                [
                    "Tous les vaisseaux",
                    "Select all ships",
                    "Επιλογή όλων των πλοίων",
                ],
                33 :
                [
                    "Toutes les ressources",
                    "Select all resources",
                    "Επιλογή όλων των πόρων",
                ],
                34 :
                [
                    "Planètes associées",
                    "Linked planets",
                    "Συνδεδεμένοι πλανήτες",
                ],
                35 :
                [
                    "Supprimer les rapports d'espionnage contre moi",
                    "Delete spy reports against me",
                    "Διαγραφή των εναντίων μου κατασκοπευτικών αναφορών",
                ],
                36 :
                [
                    "Expédition",
                    "Expedition",
                    "Expedition",
                ],
                37 :
                [
                    "Expédition GT",
                    "LC expedition",
                    "LC expedition",
                ],
                38 :
                [
                    "Inverser la selection",
                    "Reverse selection",
                    "Reverse selection",
                ],
                39 :
                [
                    "Effacer la selection",
                    "Reset selection",
                    "Reset selection",
                ],
                40 :
                [
                    "Lune suivante",
                    "Next moon",
                    "Next moon",
                ],
                41 :
                [
                    "Ressources disponibles",
                    "Available resources",
                    "Available resources",
                ],
                42 :
                [
                    "Points totaux",
                    "Total points",
                    "Total points",
                ],
                43 :
                [
                    "Points éco",
                    "Economy points",
                    "Economy points",
                ],
                44 :
                [
                    "Points tech",
                    "Research points",
                    "Research points",
                ],
                45 :
                [
                    "Points flotte",
                    "Fleet points",
                    "Fleet points",
                ],
                46 :
                [
                    "Points défense",
                    "Defense points",
                    "Defense points",
                ],
                47 :
                [
                    "Disponible",
                    "Available",
                    "Available",
                ],
                48 :
                [
                    "En vol",
                    "In flight",
                    "In flight",
                ],
                49 :
                [
                    "Cumulé",
                    "Full",
                    "Full",
                ],
                50 :
                [
                    "Configuration des expéditions",
                    "Expeditions configuration",
                    "Expeditions configuration",
                ],
                51 :
                [
                    "Vaisseaux principaux",
                    "Main ships",
                    "Main ships",
                ],
                52 :
                [
                    "Vaisseaux optionnels",
                    "Optionnal ships",
                    "Optionnal ships",
                ],
                53 :
                [
                    "Galaxie précédente",
                    "Previous galaxy",
                    "Previous galaxy",
                ],
                54 :
                [
                    "Galaxie suivante",
                    "Next galaxy",
                    "Next galaxy",
                ],
                55 :
                [
                    "Système précédent",
                    "Previous system",
                    "Previous system",
                ],
                56 :
                [
                    "Système suivant",
                    "Next system",
                    "Next system",
                ],
                57 :
                [
                    "Cliquer pour sélectionner une valeur",
                    "Click to select a value",
                    "Click to select a value",
                ],
                58 :
                [
                    "Frêt souhaîté",
                    "Desired capacity",
                    "Desired capacity",
                ],
                59 :
                [
                    "Expédition PT",
                    "SC expedition",
                    "SC expedition",
                ],
                60 :
                [
                    "Ghost rapide",
                    "Fast ghosting",
                    "Fast ghosting",
                ],
                61 :
                [
                    "Cible",
                    "Target",
                    "Target",
                ],
                62 :
                [
                    "Envoyer des ressources",
                    "Send resources",
                    "Send resources",
                ],
                63 :
                [
                    "Définir le point de départ des pillages",
                    "Set starting point",
                    "Set starting point",
                ],
                64 :
                [
                    "Vue par défaut",
                    "Default view",
                    "Default view",
                ],
                65 :
                [
                    "Vue ressources",
                    "Resources view",
                    "Resources view",
                ],
                66 :
                [
                    "Vue production (24h)",
                    "Production view (24h)",
                    "Production view (24h)",
                ],
                67 :
                [
                    "Vue cibles",
                    "Targets view",
                    "Targets view",
                ],
            }

        let line = 1;

        if(this.gameLang == 'fr') line = 0;
        else if(this.gameLang == 'gr') line = 2;

        if(raw) return text[id][line];
        else return '<span class="ogl-translated">'+text[id][line]+'</span>';
    }

    importExport()
    {
        let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-importExport'}, '<h1>'+this.getTranslatedText(0, true)+'</h1>');
        let text = container.appendChild(this.createDOM('textarea', {}, JSON.stringify(this.json)));
        text.addEventListener('click', () => text.select());

        let header = this.createDOM('div', {'class':'ogl-mainTitle'}, `<h1>OGLight <b>(v${GM_info.script.version})</b></h1>`);

        // limit option
        container.appendChild(this.createDOM('hr'));
        container.appendChild(this.createDOM('span', {}, this.getTranslatedText(24, true)));
        let rvalInput = container.appendChild(this.createDOM('input', {'type':'text',
                                                                       'class':'ogl-rvalInput ogl-formatInput tooltip', 'value':this.json.options.rvalLimit, 'title':this.getTranslatedText(6)}));

        container.appendChild(this.createDOM('hr'));
        container.appendChild(this.createDOM('span', {}, this.getTranslatedText(23, true)));
        container.appendChild(this.createDOM('span', {'class':'ogl-right'}, this.json.techs[114] || '?'));
        container.appendChild(this.createDOM('hr'));
        container.appendChild(this.createDOM('span', {}, 'Universe speed'));
        container.appendChild(this.createDOM('span', {'class':'ogl-right'}, `x${this.ecoSpeed}x${this.fleetSpeed}`));
        container.appendChild(this.createDOM('hr'));
        container.appendChild(this.createDOM('span', {}, 'Universe top 1'));
        container.appendChild(this.createDOM('span', {'class':'ogl-right'}, this.formatToUnits(this.json.topScore)+' pts'));
        container.appendChild(this.createDOM('hr'));

        let importBtn = container.appendChild(this.createDOM('button', {'class':'btn_blue'}, 'Save'));
        importBtn.addEventListener('click', () =>
                                   {
            this.json = JSON.parse(text.value);
            this.json.options.rvalLimit = parseInt(this.removeNumSeparator(rvalInput.value, true));
            this.saveData();
            document.location.reload();
        });

        let resetBtn = container.appendChild(this.createDOM('button', {'class':'btn_blue ogl-btn_red'}, 'Reset'));
        resetBtn.addEventListener('click', () =>
                                  {
            let reset = confirm("Voulez vous vraiment supprimer les données d'OGLight ?");
            if(reset)
            {
                this.json = {};
                this.saveData();
                document.location.reload();
            }
        });

        container.appendChild(this.createDOM('div', {'class':'clearfloat'}));

        this.popup(header, container);
    }
}

window.addEventListener ("DOMContentLoaded", () =>
                         {
    let oglight = new OGLight();
});

GM_addStyle(`
:root
{
    --main:#375879;
    --mainLight:#466c92;
    --hover:#9c6809;
    --hoverLight:#de991c;
    --active:#8e1b70;
    --activeLight:#ab2e8c;

    /* todo */
    /* ultra(default) > medium > low */
    --quality:url('//gf3.geo.gfsrv.net/cdn53/7a9861be0c38bf7de05a57c56d73cf.jpg');
    /*--quality:url(https://i.imgur.com/nyR3GWA.jpg);
    --quality:url(https://i.imgur.com/PZSbneY.jpg);*/
}

/* RIGHT MENU
------------------------------- */

#rechts
{
    margin-top:-57px;
}

#countColonies
{
    background:linear-gradient(to right, #1c2b38 45%, #090e13) !important;
    box-shadow:inset 0 11px rgba(255,255,255,.05), 0 0 0 1px;
    border-radius:0 0 4px 4px;
    font-size:10px;
    height:auto !important;
    line-height:22px !important;
    margin:0 !important;
}

#countColonies
{
    color:transparent !important;
}

#countColonies p
{
    text-align:left !important;
    text-indent:5px;
}

#countColonies span
{
    color:#6f9fc8;
}

#countColonies p
{
    cursor:pointer;
}

#countColonies p:hover:after
{
    color:var(--hoverLight);
}

.smallplanet
{
    border-radius:0 !important;
    display:grid;
    grid-gap:3px;
    grid-template-columns:auto 39px;
    height:auto !important;
    font-size:10px;
    margin:0 0 3px 0!important;
    position:relative !important;
    width:100% !important;
}

.smallplanet *
{
    box-sizing:border-box;
    color:inherit !important;
    font-size:inherit !important;
    font-weight:normal !important;
}

.smallplanet img
{
    background:#284563;
    border-radius:50% !important;
    box-shadow:0 0 0 1px #000 !important;
    height:14px;
    left:5px !important;
    margin:0 !important;
    position:absolute !important;
    top:12px !important;
    width:14px;
    z-index:2;
}

.smallplanet .planetlink, .smallplanet .moonlink
{
    background:linear-gradient(to right, #1c2b38 45%, #090e13);
    background-position:0 !important;
    border:none !important;
    border-radius:4px;
    box-shadow:inset 0 1px rgba(255,255,255,.07), inset 0 13px rgba(255,255,255,0.03), inset 0 100px rgba(0,0,0,.15), 0 0 0 1px #000;
    height:39px !important;
    overflow:hidden;
    position:relative !important;
    z-index:1;
}

.smallplanet .planetlink.ogl-target, .smallplanet .moonlink.ogl-target
{
   border:1px dashed #fff !important;
}

.smallplanet .planetlink
{
    border-right:1px solid #000;
    left:0 !important;
    text-align:left;
    top:0 !important;
}

.smallplanet .moonlink
{
    background:linear-gradient(to right, #1c2b38 -15px, #090e13);
    bottom:0 !important;
    color:#9e945b !important;
    left:0 !important;
    text-align:left;
    top:auto !important;
}

.smallplanet .planetlink:hover, .smallplanet .moonlink:hover
{
    background:linear-gradient(to right, var(--hover), #090e13);
    z-index:10;
}

.smallplanet .planetlink.active, .smallplanet .moonlink.active
{
    background:linear-gradient(to right, var(--active), #090e13);
}

.smallplanet .planetlink img
{
    height:16px;
    top:11px !important;
    transition:top .2s;
    width:16px;
}

.smallplanet .moonlink img
{
    filter:grayscale(1);
}

.planetlink .planet-name
{
    color:#5a7f88 !important;
    display:inline-block;
    font-size:10px !important;
    font-weight:bold !important;
    left:28px !important;
    max-width:86px;
    overflow:hidden;
    position:absolute !important;
    text-overflow:ellipsis;
    top:7px !important;
    transition:transform .2s, opacity .2s;
}

.planetlink .planet-koords
{
    bottom:7px !important;
    color:#e6de7b !important;
    font-size:9px !important;
    font-weight:bold !important;
    left:28px !important;
    line-height:10px;
    position:absolute !important;
    top:auto !important;
    transition:transform .2s, opacity .2s;
}

.planetlink .ogl-timer, .moonlink .ogl-timer
{
    background:currentColor;
    border:1px solid #000;
    border-radius:50%;
    color:#cc5656 !important;
    content:'';
    height:7px;
    left:15px;
    position:absolute;
    top:22px;
    width:7px;
}

.planetlink .ogl-timer
{
    left:16px;
    top:23px;
}

.planetlink .ogl-medium, .moonlink .ogl-medium
{
    color:#ce9021 !important;
}

.planetlink .ogl-short, .moonlink .ogl-short
{
    color:#36bb6c !important;
}

.planetlink .ogl-harvest,
.moonlink .ogl-harvest
{
    background:#19222b;
    border-radius:5px 0 0 0;
    bottom:0;
    color:rgba(255,255,255,.2) !important;
    font-size:14px !important;
    height:16px;
    right:0 !important;
    line-height:17px !important;
    position:absolute;
    right:auto;
    text-align:center;
    text-indent:0px;
    width:16px;
    z-index:5;
}

.planetlink .ogl-harvest:before,
.moonlink .ogl-harvest:before
{
    content:'arrow_back';
}

.planetlink .ogl-harvest:hover,
.moonlink .ogl-harvest:hover
{
    background:var(--hover);
    color:#fff !important;
}

.smallplanet .constructionIcon
{
    box-sizing:content-box;
    left:1px !important;
    padding:2px 1px;
    top:0px !important;
    transform:translateX(-100%);
    width:14px !important;
    z-index:10;
}

.smallplanet .constructionIcon.moon
{
    top:16px !important;
}

.smallplanet .alert
{
    left:7px !important;
    top:17px !important;
    z-index:10;
}

.smallplanet .alert.moon
{
    left:auto !important;
    right:17px !important;
}

#planetList .moonlink img,
#planetList .ogl-harvest,
#rechts #planetList .ogl-timer:before
{
    opacity:1;
    transform:translateX(0);
    transition:transform .2s, opacity .2s;
}

#rechts[data-panel="1"] #planetList .ogl-harvest,
#rechts[data-panel="1"] #planetList .ogl-sideLock,
#rechts[data-panel="2"] #planetList .ogl-harvest,
#rechts[data-panel="2"] #planetList .ogl-sideLock,
#planetList .ogl-timer:before
{
    opacity:0;
    transform:translateX(5px);
}

#rechts[data-panel="1"] #planetList .planet-koords,
#rechts[data-panel="1"] #planetList .planet-name,
#rechts[data-panel="2"] #planetList .planet-koords,
#rechts[data-panel="2"] #planetList .planet-name
{
    opacity:0;
    transform:translateX(-5px);
}

#rechts[data-panel="1"] #planetList .ogl-timer
{
    background:none;
    border:none;
    z-index:10;
}

#rechts[data-panel="1"] #planetList .ogl-timer:before
{
    color:inherit;
    content:attr(data-timer)"'";
    font-weight:bold;
    left:-15px;
    padding:0 1px;
    position:absolute;
    text-align:center;
    text-shadow:0 0 2px #000;
    top:0;
    width:23px;
}

#rechts[data-panel="1"] #planetList .smallplanet
{
    grid-template-columns:auto 40%;
}

#planetList .ogl-metal, #planetList .ogl-crystal, #planetList .ogl-deut
{
    opacity:0;
    position:absolute;
    right:5px;
    transform:translateX(-5px);
    transition:transform .2s, opacity .2s;
}

#planetList .ogl-metal { top:0px; }
#planetList .ogl-crystal { top:13px; }
#planetList .ogl-deut { top:26px; }

#rechts[data-panel="1"] #planetList .ogl-stored,
#rechts[data-panel="2"] #planetList .ogl-prod
{
    opacity:1;
    transform:translateX(0);
}

#rechts[data-panel="1"] #planetList .smallplanet img
{
    top:6px !important;
}

.planetlink .ogl-mineLvl
{
    color:#6f8598 !important;
    font-weight:bold !important;
    left:32px;
    text-shadow:1px 1px #000;
}

#rechts[data-panel="2"] #planetList .planetlink .ogl-mineLvl
{
    opacity:1;
}

/* GALAXY REDESIGN
------------------------------- */

#galaxytable
{
    background:#0e1115;
}

#galaxytable tbody
{
    border-spacing:1px;
}

#galaxytable tbody tr
{
    background:linear-gradient(to left, #090e13, #191d21, #090e13);
}

#galaxytable tbody tr td
{
    background:none !important;
    border-radius:0;
    box-shadow:inset 0 1px rgba(255,255,255,.07), inset 0 15px rgba(255,255,255,.03);
    outline:1px solid #000;
    text-shadow:1px 1px #000;
    filter:brightness(100%) !important;
}

#galaxytable tbody tr td.planetname
{
    width:160px !important;
}

#galaxytable tbody tr td.action
{
    width:83px !important;
}

#galaxytable tbody tr td.moon a
{
    width:38px !important;
}

#galaxytable tbody tr td .moon_a
{
    background-size:30px !important;
    width:100% !important;
}

#galaxytable .playername
{
    padding:0 7px;
    position:relative;
    text-align:left;
}

#galaxytable .playername > a
{
    display:inline-block;
}

#galaxytable .playername .status_abbr_longinactive
{
    color:#888 !important;
}

#galaxytable .playername .status_abbr_inactive
{
    color:#c3c3c3 !important;
}

#galaxytable .playername span
{
    display:inline-block;
    overflow:hidden;
    text-overflow:ellipsis;
    vertical-align:top;
    max-width:60px;
    white-space:nowrap;
}

#galaxytable .allytag
{
    position:relative;
}

#galaxytable tr[data-marked].debris.ogl-active td
{
    background:#c14529 !important;
    opacity:1 !important;
}

#galaxytable .debrisField
{
    background:none !important;
    color:#fff;
    font-size:10px;
    line-height:14px;
    padding:0;
    width:100% !important;
}

#galaxytable tr[class*="filtered_filter"],
#galaxytable tr[data-marked="gray"]
{
    background:none;
    opacity:1 !important;
}

tr[class*="filtered_filter"] td,
tr[data-marked="gray"] td,
.ogl-stalkPlanets [data-marked="gray"]
{
    opacity:.2 !important;
}

#galaxytable .debris.ogl-active
{
    background:#c14529 !important;
    opacity:1 !important;
}

#galaxytable tr[data-marked]:not([data-marked="gray"])
{
    box-shadow:inset 0 50px 0 rgba(0,0,0,.5);
}

#galaxytable tr[data-marked]:not([data-marked="gray"]) td
{
    opacity:1 !important;
}

#galaxytable .ogl-highlighted td
{
    border-bottom:1px solid #5a5a5a !important;
    border-top:1px solid #5a5a5a !important;
}

#galaxytable .ogl-highlighted td:first-child
{
    border-left:1px solid #5a5a5a !important;
}

#galaxytable .ogl-highlighted td:last-child
{
    border-right:1px solid #5a5a5a !important;
}

.ogl-colors
{
    background:linear-gradient(-45deg, #fff, #ab2727, #f3de4c, #28c78d, #1f8ad6, #8e35d2, #fff);
    background:#212121;
    border:2px dotted #414f5d;
    border-radius:50%;
    box-shadow:inset 0 5px 5px rgba(0,0,0,.7);
    cursor:pointer;
    height:16px;
    position:absolute;
    top:5px;
    width:16px;
}

.ogl-colors:hover
{
    box-shadow:inset 0 50px rgba(255,255,255,.1), inset 0 5px 5px rgba(0,0,0,.7);
}

div[data-marker], [data-marked] .ogl-colors
{
    background:currentColor;
    border:2px solid currentColor;
    border-radius:50%;
    box-shadow:inset 0 50px rgba(0,0,0,.9);
    cursor:pointer;
    height:16px;
    width:16px;
}

.ogl-spyTable .ogl-colors
{
    height:16px;
    left:1px;
    padding:0;
    top:2px;
    width:16px;
}

.ogl-colorChoice
{
    background:rgba(0,0,0,.5);
    border-radius:6px;
    display:grid;
    grid-gap:10px;
    grid-template-columns:repeat(2, 1fr);
    padding:10px;
}

div[data-marker].ogl-active,
[data-marked] .ogl-colors,
div[data-marker]:hover
{
    box-shadow:inset 0 50px rgba(0,0,0,.3), inset 0 5px 5px rgba(0,0,0,.3);
}

[data-marker="red"], [data-marked="red"] .ogl-colors, [data-toggle="red"] { color:#ab2727; }
[data-marker="yellow"], [data-marked="yellow"] .ogl-colors, [data-toggle="yellow"] { color:#f3de4c; }
[data-marker="green"], [data-marked="green"] .ogl-colors, [data-toggle="green"] { color:#31af9d; }
[data-marker="blue"], [data-marked="blue"] .ogl-colors, [data-toggle="blue"] { color:#435f92; }
[data-marker="violet"], [data-marked="violet"] .ogl-colors, [data-toggle="violet"] { color:#8e35d2; }
[data-marker="gray"], [data-marked="gray"] .ogl-colors, [data-toggle="gray"] { color:#8a8a8a; }

.ogl-stalkPlanets [data-marked="red"] { background:#ab2727 !important; }
.ogl-stalkPlanets [data-marked="yellow"] { background:#b5a349 !important; }
.ogl-stalkPlanets [data-marked="green"] { background:#31af9d !important; }
.ogl-stalkPlanets [data-marked="blue"] { background:#435f92 !important; }
.ogl-stalkPlanets [data-marked="violet"] { background:#8e35d2 !important; }

.ogl-spyTable tr { background:#33333e; }
.ogl-spyTable tr[data-marked="red"] { background:#6b3e3f !important; }
.ogl-spyTable tr[data-marked="yellow"] { background:#696734 !important; }
.ogl-spyTable tr[data-marked="green"] { background:#1d5f5c !important; }
.ogl-spyTable tr[data-marked="blue"] { background:#344971 !important; }
.ogl-spyTable tr[data-marked="violet"] { background:#5d3d77 !important; }

#galaxytable tr[data-marked="red"] { background:linear-gradient(to left, #1a202b, #b13434, #1a202b) !important; }
#galaxytable tr[data-marked="yellow"] { background:linear-gradient(to left, #1a202b, #948138, #1a202b) !important; }
#galaxytable tr[data-marked="green"] { background:linear-gradient(to left, #1a202b, #24777b, #1a202b) !important; }
#galaxytable tr[data-marked="blue"] { background:linear-gradient(to left, #1a202b, #355084, #1a202b) !important; }
#galaxytable tr[data-marked="violet"] { background:linear-gradient(to left, #1a202b, #5d2b94, #1a202b) !important; }

.ogl-needed
{
    background:#203546;
    border-radius:0 0 10px 0;
    font-size:10px;
    height:20px;
    line-height:20px;
    left:0;
    min-width:68%;
    padding:0;
    position:absolute;
    text-align:center;
    top:0;
    user-select:none;
}

.ogl-deltaFleet
{
    background:#141e26;
    border-radius:0 0 0 10px;
    color:#fff;
    font-size:12px;
    height:20px;
    line-height:18px;
    right:0;
    padding:0;
    position:absolute;
    text-align:center;
    top:0px;
    user-select:none;
    width:26%;
}

.ogl-needed, .ogl-deltaFleet
{
    display:inline-block;
}

.ogl-needed:hover, .ogl-deltaFleet:hover
{
    background:var(--hover);
}

.ogl-spyTable
{
    margin-top:60px;
}

.ogl-spyTable table
{
    background:#000;
    border-spacing:1px;
    font-size:11px;
    text-align:center;
    width:100%;
}

.ogl-total
{
    background:#0a0d0e;
    border-bottom:4px solid #22313b;
    color:#fff;
    margin-bottom:10px;
    padding:5px 0;
    text-align:right;
    width:100%;
}

.ogl-total span
{
    color:gold;
    margin-right:5px;
}

ogl-spyTable
{
    padding:20px;
    width:100%;
}

.ogl-spyTable figure
{
    margin-left:3px;
    vertical-align:sub;
}

.ogl-spyTable tr:not(:first-child):hover
{
    background:#c56c49 !important;
}

.ogl-spyTable tr
{
    box-shadow:inset 0 -40px rgba(0,0,0,.5);
}

.ogl-spyTable td, .ogl-spyTable th
{
    color:#8193a2;
    height:26px;
    margin:auto;
    padding:0 1px;
    position:relative;
}

.ogl-spyTable td:last-child, .ogl-spyTable th:last-child
{
    width:72px;
}

.ogl-spyTable td
{
    height:24px;
}

.ogl-spyTable th
{
    background:#0a0d0e;
    color:#d4d4d4;
    font-size:10px;
    user-select:none;
}

.ogl-spyTable .ogl-headerColors
{
    width:20px;
}

.ogl-spyTable th.ogl-filter
{
    cursor:pointer;
}

.ogl-spyTable th.ogl-filter:hover
{
    background:var(--hover);
    color:#fff;
}

.ogl-spyTable th.ogl-filter.ogl-active
{
    background:var(--active);
    color:#fff;
}

.ogl-spyTable th.ogl-filter:after
{
    content:'<>';
    display:inline-block;
    font-family:consolas;
    font-size:9px;
    margin-left:3px;
    transform:rotate(90deg);
}

.ogl-spyTable .ogl-metal
{
    background:#cab6a9;
}

.ogl-spyTable .ogl-crystal
{
    background:#406b8a;
}

.ogl-spyTable .ogl-deut
{
    background:#376f58;
}

.ogl-spyTable a
{
    color:inherit;
    font-size:10px;
    text-decoration:none;
}

.ogl-spyTable a:hover
{
    color:orange;
}

.ogl-spyTable tr > *:nth-child(odd)
{
    box-shadow:inset 0 -40px rgba(0,0,0,.2);
}

.ogl-spyTable .ogl-spyOptions
{
    display:grid;
    grid-template-columns:repeat(4, 1fr);
    justify-items:center;
    padding:0 1px !important;
}

.ogl-spyTable .ogl-spyOptions .icon:not(.sprite):not(.resource)
{
    border-radius:0 !important;
    margin-top:4px;
}

.ogl-spyTable .ogl-attacked td:not(.ogl-colors)
{
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.5);
}

.ogl-spyTable .ogl-good
{
    color:#73d2af !important;
}

.ogl-spyTable .ogl-care
{
    color:#d2b62c !important;
}

.ogl-spyTable .ogl-danger
{
    color:#fb6a6a !important;
}

.ogl-spyTable .ogl-date
{
    font-size:10px;
}

.ogl-spyTable .icon.ogl-planet:not(.sprite):not(.resource),
.ogl-spyTable .icon.ogl-moon:not(.sprite):not(.resource),
.ogl-spyTable .icon.ogl-planet:not(.sprite):not(.resource):hover,
.ogl-spyTable .icon.ogl-moon:not(.sprite):not(.resource):hover
{
    background:none !important;
    bottom:auto !important;
    box-shadow:none !important;
    color:inherit !important;
    line-height:18px !important;
    position:relative !important;
    right:auto !important;
}

.ogl-spyTable .ogl-name
{
    font-size:10px;
    padding-left:5px;
    text-align:left;
}

.ogl-spyTable .ogl-sub
{
    background:linear-gradient(to left, #090e13, #0c1319, #090e13);
}

.ogl-spyTable .ogl-sub .ogl-inactive
{
    color:rgba(255,255,255,.2);
}

.ogl-spyTable .ogl-lootable:not(:hover)
{
    background:none !important;
}

.ogl-spyTable .ogl-lootable:hover
{
    color:#fff !important;
}

.ogl-spyTable .ogl-attacked
{
    opacity:.9;
}

.ogl-spyTable .ogl-attacked .ogl-type:after
{
    background:url(/cdn/img/layout/fleet_12x12_hostile.gif);
    bottom:-2px;
    content:'';
    display:block;
    height:12px;
    position:absolute;
    right:-4px;
    width:12px;
    zoom:.75;
}

.ogl-spyTable .ogl-sc,
.ogl-spyTable .ogl-lc,
.ogl-spyTable .ogl-pf
{
    image-rendering:pixelated;
    min-width:26px;
}

.ogl-spyTable .ogl-sc:before,
.ogl-spyTable .ogl-lc:before,
.ogl-spyTable .ogl-pf:before
{
    background:var(--quality) !important;
    background-size:550px 825px !important;
    display:block;
    content:'';
    height:26px;
    left:50%;
    position:absolute;
    top:0;
    transform:translateX(-50%);
    width:26px;
}

.ogl-spyTable .ogl-sc:before
{
    background-position:42.1% 51.72% !important;
}

.ogl-spyTable .ogl-lc:before
{
    background-position:47.36% 51.72% !important;
}

.ogl-spyTable .ogl-pf:before
{
    background-position:78.94% 51.72% !important;
}

.ogl-tableOptions
{
    background:#0a0d0e;
    border-bottom:2px solid #404040;
    box-sizing:border-box;
    height:28px;
    padding:5px;
    text-align:right;
    width:100%;
}

.ogl-tableOptions:before
{
    content:'OGL options:';
    margin-right:5px;
    vertical-align:top;
}

.ogl-tableOptions > *
{
    float:right !important;
}

.ogl-tableOptions button
{
    cursor:pointer;
    margin-left:4px;
}

.ogl-smallBtn
{
    height:16px !important;
    line-height:10px !important;
    min-width:0 !important;
    padding:0 4px !important;
}

.ogl-none
{
    background:#000;
    color:gold;
    font-size:16px;
    line-height:30px;
    text-align:center;
    width:30px;
}

.ogl-harvestOptions
{
    background:#141e25;
    border-bottom:1px solid #000;
    border-radius:4px 4px 0 0;
    box-shadow:0 0 0 1px #000;
    display:grid;
    grid-gap:6px;
    grid-template-columns:repeat(5, 1fr);
    justify-items:center;
    margin-top:5px;
    padding:3px;
    text-align:center;
    width:141px;
}

.ogl-option
{
    align-items:center;
    background:linear-gradient(180deg, #203448, #1d262d, #20384a);
    border:1px solid #000;
    border-radius:4px;
    color:#fff;
    cursor:pointer;
    display:flex;
    font-size:17px;
    font-weight:normal;
    height:23px;
    justify-content:center;
    overflow:hidden;
    position:relative;
    user-select:none;
    text-decoration:none;
    text-shadow:1px 1px 2px #000;
    width:100%;
}

.ogl-option:after
{
    background:linear-gradient(rgba(255,255,255,.1) 50%, transparent 50%);
    content:'';
    display:block;
    height:100%;
    left:0;
    position:absolute;
    top:0;
    width:100%;
}

.ogl-option:hover
{
    color:#fff !important;
}

.ogl-syncOption
{
    color:#ab53d8;
}

.ogl-targetIcon
{
    color:#ca4c4c;
}

.ogl-defaultCargo
{
    color:#e4ce33;
}

.ogl-harvestMission
{
    color:#43ec77;
}

.ogl-harvestMission.ogl-transpoIcon
{
    color:#c2f75a;
}

.ogl-autoHarvest
{
    color:#50deec;
}

.ogl-syncOption:hover
{
    background:#45185d !important;
    border-color:#64367d !important;
}

.ogl-targetIcon:hover
{
    background:#6b0e0e !important;
    border-color:#7d3232 !important;
}

.ogl-defaultCargo:hover
{
    background:#866900 !important;
    border-color:#b99719 !important;
}

.ogl-defaultCargo span
{
    font-size:11px;
    font-weight:bold;
    pointer-events:none;
}

.ogl-harvestMission:hover
{
    background:#256d45 !important;
    border-color:#3d9c67 !important;
}

.ogl-harvestMission.ogl-transpoIcon:hover
{
    background:#56840c !important;
    border-color:#7bb124 !important;
}

.ogl-autoHarvest:hover
{
    background:#285371 !important;
    border-color:#3c759c !important;
}

.ogl-autoHarvest.ogl-active
{
    border:1px dashed #fff;
}

.ogl-skipList
{
    background-color:#13181d;
    box-shadow:inset 0 1px rgba(255,255,255,.05);
    color:#96a0a2 !important;
    line-height:24px;
    outline:1px solid #000;
    padding:0 5px;
    position:relative;
}

.ogl-skipList:nth-child(odd)
{
    background-color:#0d1014;
}

.ogl-skipList:hover
{
    background:rgba(255, 215, 0, 0.1) !important;
    color:#e6648e !important;
    outline:1px solid gold;
    z-index:10;
}

.ogl-skipList figure
{
    margin-left:5px;
}

#galaxytable .ogl-ranking
{
    top:5px;
}

.ogl-ranking
{
    position:absolute;
    right:5px;
}

.ogl-stalkContainer h1
{
    display:inline-block;
    margin-right:5px;
    vertical-align:sub;
}

.ogl-toggle.ogl-active
{
    box-shadow:inset 0 50px rgba(0,0,0,.3);
}

.ogl-toggle.ogl-active:before
{ 
    color:#fff;
    content:"✓";
    display:inline-block;
    left:0;
    line-height:16px;
    text-align:center;
    top:0;
    width:100%;
}

.ogl-toggle:hover
{
    opacity:.7;
}

.ogl-toggle
{
    background:currentColor;
    border:2px solid currentColor;
    border-radius:3px;
    box-shadow:inset 0 50px rgba(0,0,0,.9);
    display:inline-block;
    height:14px;
    margin-right:5px;
    vertical-align:middle;
    width:14px;
}

.ogl-stalk h1 a, .ogl-ranking
{
    color:#e6648e !important;
    font-size:10px;
}

.ogl-stalk h1 a:hover, .ogl-ranking:hover
{
    color:orange !important;
    text-decoration:underline !important;
}

.ogl-stalk h1 s
{
    color:#fff;
}

.ogl-stalkPlanets
{
    display:grid;
    grid-gap:3px;
    grid-template-columns:repeat(4, 1fr);
}

.ogl-tooltip .ogl-stalkPlanets
{
    grid-template-columns:repeat(4, 1fr);
}

.ogl-sideStalk .ogl-stalkPlanets
{
    max-height:none;
}

.ogl-stalkPlanets > a
{
    background:#0c0e10;
    border:1px solid #000;
    border-radius:4px;
    box-sizing:border-box;
    color:#aaa !important;
    cursor:pointer;
    display:block;
    font-size:11px;
    height:27px;
    line-height:23px;
    padding:0 22px 0 8px;
    position:relative;
    text-decoration:none !important;
    text-align:left !important;
}

.ogl-stalkPlanets > a.ogl-main i
{
    color:gold;
    font-size:10px;
    font-style:normal;
    margin:0 2px 0 4px;
}

.ogl-stalkPlanets [data-marked]:not([data-marked="gray"])
{
    box-shadow:inset 0 50px 0 rgba(0,0,0,.6);
}

.ogl-stalkPlanets > a.ogl-active:before,
.ogl-stalkPlanets [data-marked]:not([data-marked="gray"]).ogl-active:before
{
    background:#fff;
    border-radius:50%;
    content:'';
    height:5px;
    position:absolute;
    right:-2px;
    top:-2px;
    width:5px;
}

.ogl-stalkPlanets > a:hover
{
    box-shadow:inset 0 100px 0 rgba(0,0,0,.5) !important;
    color:#fff !important;
}

.ogl-stalkPlanets.ogl-stalkList a
{
    opacity:1 !important;
    text-align:center;
}

.ogl-stalkPlanets .splitLine
{
    grid-column: 1/-1;
}

.ogl-textRight
{
    text-align:right;
}

#fleetdispatchcomponent .allornonewrap .secondcol
{
    background:#0d1014;
    border-radius:5px;
    display:grid !important;
    grid-gap:5px;
    grid-template-columns:repeat(3, 1fr);
    padding:5px !important;
    width:107px !important;
}

#allornone .secondcol .clearfloat
{
    display:none !important;
}

#allornone .secondcol *
{
    float:none !important;
}

.ogl-prefab
{
    background:url(https://gf2.geo.gfsrv.net/cdn14/f45a18b5e55d2d38e7bdc3151b1fee.jpg) no-repeat;
    background-size:calc(36px * 11) !important;
    background-position:-5px -5px;
    border:2px solid #223473 !important;
    border-radius:4px;
    box-shadow:inset 0 -14px rgba(0,0,0,.15);
    box-sizing:border-box;
    cursor:pointer;
    display:inline-block;
    height:32px;
    position:relative;
    text-shadow:1px 1px 0 rgba(0,0,0,.3);
    width:32px;
    z-index:10;
}

.ogl-prefab:hover
{
    border-color:var(--hoverLight) !important;
}

.ogl-expeOption
{
    background:#3a62b4;
    color:#fff;
    font-size:24px !important;
    padding:0;
}

.ogl-expeOption:hover
{
    background:var(--hover);
}

.ogl-expeLine
{
    grid-column:1/-1;
}

.ogl-importExport .ogl-rvalInput
{
    cursor:auto !important;
    float:right;
    height:14px;
    line-height:16px;
    padding:0 4px;
    text-align:center;
    width:60px !important;
}

.ogl-importExport .ogl-right
{
    color:#f5d271;
    font-size:11px;
    font-weight:bold;
    margin-top:0;
}

.ogl-importExport .btn_blue
{
    float:right;
    margin-left:5px;
}

.ogl-quickLinks
{
    box-sizing:border-box;
    display:grid;
    grid-gap:1px;
    grid-template-columns:auto 40px;
    user-select:none;
}

.ogl-quickLinked figure, .ogl-quickLinks figure
{
    box-shadow:inset 0 0 4px 1px #090a0c;
    border-radius:50%;
}

.ogl-quickLinks > div
{
    background-color:#13181d;
    box-shadow:inset 0 1px rgba(255,255,255,.05);
    color:#96a0a2 !important;
    line-height:24px;
    outline:1px solid #000;
    position:relative;
}

.ogl-quickLinks > .ogl-quickPlanet:nth-of-type(4n+3),
.ogl-quickLinks > .ogl-quickPlanet:nth-of-type(4n+3) + div
{
    background-color:#0d1014;
}

.ogl-quickPlanet
{
    cursor:pointer;
    font-size:11px;
    padding:0 8px;
}

.ogl-quickMoon
{
    cursor:pointer;
    text-align:center !important;
}

.ogl-quickEmpty
{
    background-color:#3c1212 !important;
    opacity:.3;
    cursor:not-allowed;
}

.ogl-quickLinked
{
    background-color:#0d1014;
    box-shadow:inset 0 1px rgba(255,255,255,.05);
    color:#96a0a2 !important;
    cursor:pointer;
    line-height:24px;
    outline:1px solid #000;
    padding:0 8px;
    position:relative;
}

.ogl-quickLinked figure
{
    position:absolute;
    right:8px;
    top:5px;
}

.ogl-quickPlanet:not(.ogl-quickEmpty):hover, .ogl-quickMoon:not(.ogl-quickEmpty):hover,
.ogl-quickLinked:hover
{
    background:var(--hover) !important;
    color:#fff !important;
    z-index:10;
}

.ogl-spacer
{
    margin:14px 0;
    text-align:center;
}

#shortcuts .dropdown.planets
{
    display:none !important;
}

.ogl-quickBtn
{
    background:#1e2c39;
    border:1px solid #000;
    border-radius:4px;
    box-shadow:inset 0 1px 3px rgba(255,255,255,.1), 0 0 10px 3px #192026;
    box-sizing:border-box;
    display:block;
    height:24px;
    line-height:22px;
    margin-top:4px;
    padding:0 4px;
    position:relative;
    width:144px;
}

.ogl-quickBtn:before
{
    background:url("https://gf3.geo.gfsrv.net/cdne1/d03835718066a5a592a6426736e019.png");
    background-position:100% -488px;
    content:'';
    display:block;
    height:24px;
    position:absolute;
    right:-1px;
    top:-1px;
    width:24px;
}

.ogl-quickBtn:hover
{
    background:#243746;
}

.ogl-quickBtn:hover:before
{
    background-position:100% -512px;
}

.maincontent .ogl-shortHeader
{
    height:auto !important;
    min-height:40px !important;
}

.maincontent .ogl-shortHeader #slot01
{
    right:40px !important;
}

.maincontent .ogl-shortHeader + #technologydetails_wrapper
{
    display:none !important;
    margin-top:-48px !important;
    position:relative !important;
}

.maincontent .ogl-shortHeader + #technologydetails_wrapper.slide-up
{
    display:block !important;
}

.toggleHeader
{
    background:url("//gf1.geo.gfsrv.net/cdn0b/d55059f8c9bab5ebf9e8a3563f26d1.gif") no-repeat 0 -22px !important;
    cursor:pointer;
    height:22px;
    position:absolute;
    right:13px;
    top:8px;
    width:23px;
}

.ogl-shortHeader .toggleHeader, .shortHeader .toggleHeader
{
    background:url("//gf1.geo.gfsrv.net/cdn0b/d55059f8c9bab5ebf9e8a3563f26d1.gif") no-repeat 0 0 !important;
}

.ogl-hidden
{
    display:none !important;
}

.eventFleet[data-mission-type="1"], .fleetDetails[data-mission-type="1"]
{
    color:#ea463e !important;
}

.eventFleet[data-mission-type="2"], .fleetDetails[data-mission-type="2"]
{
    color:#ff6046 !important;
}

.eventFleet[data-mission-type="3"], .fleetDetails[data-mission-type="3"]
{
    color:#76c754 !important;
}

.eventFleet[data-mission-type="4"], .fleetDetails[data-mission-type="4"]
{
    color:#47c79e !important;
}

.eventFleet[data-mission-type="5"], .fleetDetails[data-mission-type="5"]
{
    color:#e48d50 !important;
}

.eventFleet[data-mission-type="6"], .fleetDetails[data-mission-type="6"]
{
    color:#cabe6e !important;
}

.eventFleet[data-mission-type="7"], .fleetDetails[data-mission-type="7"]
{
    color:#72d9de !important;
}

.eventFleet[data-mission-type="8"], .fleetDetails[data-mission-type="8"]
{
    color:#6bb786 !important;
}

.eventFleet[data-mission-type="9"], .fleetDetails[data-mission-type="9"]
{
    color:#fd2e2e !important;
}

.eventFleet[data-mission-type="15"], .fleetDetails[data-mission-type="15"]
{
    color:#6d98e2 !important;
}

.eventFleet[data-mission-type="16"], .fleetDetails[data-mission-type="16"]
{
    color:#72c4d4 !important;
}

#eventContent tbody
{
    outline:1px solid #000;
}

#eventContent tr
{
    background:#141e26;
    line-height:18px;
}

#eventContent tr td
{
    font-size:10px;
    padding:0;
    position:relative;
    vertical-align:middle;
}

#eventContent tr td *
{
    font-size:inherit !important;
    vertical-align:inherit !important;
}

#eventContent tr td *:not(.textBeefy):not(a)
{
    color:inherit;
}

#eventContent tr td a
{
    text-decoration:none;
}

#eventContent tr td figure
{
    margin-right:2px;
}

#eventContent tr td:before
{
    bottom:0;
    box-shadow:inset 0 -1px rgba(0,0,0,.5), inset 0 1px rgba(255,255,255,.05);
    display:block;
    content:'';
    height:100%;
    pointer-events:none;
    position:absolute;
    width:100%;
}

#eventContent tr .icon_movement,
#eventContent tr .icon_movement_reserve
{
    background-position-y:center;
    display:table-cell;
    height:auto;
    padding:0;
}

.eventFleet[data-return-flight="true"],
.fleetDetails[data-return-flight="1"]
{
    box-shadow:inset 0 150px 0 rgba(0,0,0,.5);
}

#eventContent td a:hover
{
    color:#73a7c5;
}

#eventContent tr[data-return-flight="true"] td
{
    opacity:.5;
}

#eventContent .originFleet span, #eventContent .destFleet span
{
    display:block !important;
}

.eventFleet .countDown, .eventFleet .arrivalTime
{
    text-align:left;
    text-indent:5px;
}

#eventContent .countDown
{
    text-shadow:1px 1px #000;
}

#movementcomponent
{
    background:#10181f;
    outline:1px solid #000;
    padding-bottom:7px;
}

#movementcomponent .destinationPlanet .tooltip,
#movementcomponent .originPlanet .tooltip
{
    color:inherit !important;   
}

.ogl-translated
{
    font-size:11px;
}

.ogl-keepRes
{
    background:var(--main);
    border:none;
    border-radius:2px;
    box-shadow:0 0 0 1px rgba(0,0,0,.5);
    color:#fff;
    float:right;
    height:11px;
    line-height:11px;
    margin-top:1px;
    padding:0;
    text-align:center;
    width:14px;
}

.ogl-keepRes.ogl-active
{
    background:var(--activeLight);
}

.ogl-keepRes:hover
{
    background:var(--hoverLight);
}

.ogl-keptResources input
{
    width:280px;
}

.res #selectMinMetal,
.res #selectMinCrystal,
.res #selectMinDeuterium,
.res #selectMaxMetal,
.res #selectMaxCrystal,
.res #selectMaxDeuterium
{
    cursor:pointer;
}

.ogl-sideStalk
{
    background:linear-gradient(#131d24, #0c1015);
    left:0;
    margin-top:15px;
    outline:1px solid #000;
    padding:10px;
    position:relative;
    top:0;
    width:127px;
}

.ogl-sideStalk .close-tooltip
{
    position:absolute;
    right:3px;
    top:3px;
}

.ogl-sideStalk hr
{
    background:rgba(255,255,255,.2);
    border:none;
    height:1px;
}

.ogl-sideStalk h1 a
{
    color:#e6648e !important;
    font-size:10px;
}

.ogl-sideStalk .ogl-stalkPlanets
{
    grid-template-columns:repeat(1, 1fr);
}

.ogl-sideStalk .ogl-stalkPlanets a
{
    width:auto;
}

.ogl-right
{
    float:right;
    margin-top:5px;
    text-align:right;
}

.ogl-fullGrid
{
    grid-column:1/-1;
}

.ogl-dialog h1
{
    grid-column:1/-1;
    margin-bottom:10px;
}

.ogl-flyingGrid > div
{
    display:grid;
    grid-gap:10px;
    grid-template-columns:repeat(4,1fr);
    overflow-y:auto;
}

.ogl-flyingGrid > div > div
{
    background:#0f1317;
    padding:10px;
}

.ogl-flyingGrid .ogl-metal span,
.ogl-flyingGrid .ogl-crystal span,
.ogl-flyingGrid .ogl-deut span
{
    display:inline-block;
    margin-right:10px;
    width:20px;
}

.ogl-flyingGrid .ogl-destination
{
    text-align:center;
}

.ogl-hiddenTooltip
{
    display:none !important;
    visibility:hidden !important;
    z-index:-1 !important;
}

.ogl-fleetSpeed
{
    background:linear-gradient(to left, #248469, #b9801a, #a72525);
    border-radius:2px;
    box-shadow:inset 0 1px rgba(255,255,255,.2), 0 0 0 1px #000;
    color:#fff;
    display:grid;
    grid-template-columns:repeat(10, 1fr);
    margin-top:23px;
    text-align:center;
}

.ogl-fleetSpeed > div
{
    background:#252d3e;
    box-shadow:inset -2px 0 7px rgba(0, 0, 0, 0.7);
    cursor:pointer;
    padding:5px 0;
    position:relative;
    transition:all .2s;
}

.ogl-fleetSpeed > div:hover
{
    opacity:.5;
}

.ogl-fleetSpeed > div.ogl-active
{
    background:none;
    opacity:1;
}

.ogl-tooltip
{
    background:#171d23;
    border:2px solid #364352;
    border-radius:7px;
    box-shadow:0 0 10px #000;
    display:none;
    font-size:11px;
    padding:10px;
    position:absolute;
    transform:translateX(-50%) translateY(-100%);
    max-width:370px;
    width:fit-content;
    z-index:100000;
}

.ogl-tooltip div[style*="display:none;"]
{
    display:block !important;
}

.ogl-tooltip a
{
    color:cornflowerblue;
    text-decoration:none;
}

.ogl-tooltip a:hover
{
    color:orange;
}

.ogl-tooltip.ogl-active
{
    display:block;
}

.ogl-tooltip hr, .ogl-dialog hr
{
    background:#364352;
    border:none;
    height:1px;
}

.ogl-tooltip .ogl-date,
.ogl-sideStalk .ogl-date
{
    color:#61768e;
    font-size:10px;
}

.ogl-tooltip .ogl-pin
{
    position:absolute;
    right:26px;
    top:7px;
}

.ogl-tooltip .ogl-mmorpgstats
{
    position:absolute;
    right:45px;
    top:7px;
}

.ogl-tooltip .ogl-ranking
{
    position:relative !important;
    right:auto !important;
}

.ogl-tooltip .icon_chat,
.ogl-tooltip .icon_user,
.ogl-tooltip .icon_against
{
    margin-right:0px;
}

.ogl-tooltip .galaxyTooltip
{
    display:block !important;
}

.ogl-tooltip.ogl-autoHide .close-tooltip
{
    display:none;
}

.ogl-tooltip.ogl-tooltipLeft
{
    transform:translateX(-100%);
}

.ogl-tooltip.ogl-tooltipRight
{
    transform:none;
}

.ogl-tooltip.ogl-tooltipBottom
{
    transform:translateX(-50%);
}

.ogl-tooltip:after
{
    background:#171d23;
    border-bottom:2px solid #364352;
    border-right:2px solid #364352;
    bottom:-6px;
    content:'';
    display:block;
    height:15px;
    left:50%;
    pointer-events:none;
    position:absolute;
    transform:translateX(-50%) rotate(45deg);
    width:15px;
    z-index:-1;
}

.ogl-tooltip.ogl-tooltipLeft:after
{
    border:none;
    border-top:2px solid #364352;
    border-right:2px solid #364352;
    bottom:auto;
    left:auto;
    top:8px;
    transform:rotate(45deg);
    right:-6px;
}

.ogl-tooltip.ogl-tooltipRight:after
{
    border:none;
    border-bottom:2px solid #364352;
    border-left:2px solid #364352;
    bottom:auto;
    left:-6px;
    transform:rotate(45deg);
    top:8px;
}

.ogl-tooltip.ogl-tooltipBottom:after
{
    border:none;
    border-top:2px solid #364352;
    border-left:2px solid #364352;
    bottom:auto;
    left:50%;
    top:-8px;
    transform:translateX(-50%) rotate(45deg);
}

.ogl-listSeparator
{
    background:rgba(255,255,255,.1);
    font-size:14px;
    margin-top:5px;
    padding:5px 0;
    text-align:center;
}

.ogl-listSeparator:after
{
    content:'>';
    display:inline-block;
    float:right;
    font-family:consolas;
    margin-right:10px;
    transform:rotate(90deg);
}

.ogl-dialogOverlay
{
    align-items:center;
    background:rgba(0,0,0,.7);
    bottom:0;
    display:none;
    justify-content:center;
    left:0;
    position:fixed;
    right:0;
    top:0;
    z-index:1000;
}

.ogl-dialogOverlay.ogl-active
{
    display:flex;
}

.ogl-dialog
{
    background:#1a222b;
    border-radius:6px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
    display:inline-flex;
    overflow:hidden;
    padding:20px;
    position:fixed;
    max-width:800px;
}

.ogl-dialog .close-tooltip
{
    position:absolute;
    right:5px;
    top:5px;
}

.ogl-dialogContent
{
    max-height:70vh;
    overflow-y:auto;
    padding:10px;
}

.ogl-dialogContent .ogl-stalkPlanets
{
    align-content:start;
    background:#0d1117;
    padding:10px;
    min-height:300px;
    min-width:467px;
}

.ogl-dialogContent .ogl-stalkPlanets .ogl-targetItem
{
    box-shadow:inset 0 100px 0 rgba(0,0,0,.8);
    width:112px;
}

.ogl-dialogContent .ogl-stalkPlanets .ogl-targetItem .icon
{
    position:absolute !important;
    right:4px;
    top:4px;
}

.ogl-dialogContent .ogl-stalkPlanets .ogl-targetItem .ogl-pin
{
    right:24px;
}

.ogl-tabList
{
    display:inline-block;
    vertical-align:top;
    width:50%;
}

.ogl-tabList .ogl-tab
{
    background:#334258;
    border-radius:2px;
    color:#fff;
    cursor:pointer;
    margin-right:2px;
    margin-bottom:2px;
    padding:5px 0;
    text-align:center;
}

.ogl-tabList .ogl-tab:hover
{
    background:#a95b19;
}

.ogl-tabList .ogl-tab.ogl-active
{
    background:#a95b19;
    opacity:1 !important;
}

.ogl-tab.ogl-isEmpty
{
    opacity:.2;
}

.ogl-colorHidden,
.ogl-galaxyHidden,
.ogl-systemHidden
{
    display:none !important;
}

.ogl-atk
{
    background:#c14d4d;
    border:6px double #fff;
    border-radius:50%;
    bottom:4px;
    box-sizing:border-box;
    height:14px;
    opacity:.2;
    position:absolute;
    right:3px;
    width:14px;
}

.ogl-atk:hover
{
    background:#cd33ff;
    border-color:#e39fff;
    opacity:1;
}

.ogl-atk.ogl-active
{
    opacity:1;
}

.ogl-fleetInfo div:nth-of-type(1)
{
    color:#eac612;
}

.ogl-fleetInfo div:nth-of-type(2)
{
    color:#36c7e8;
}

.ogl-fleetInfo div:nth-of-type(3)
{
    color:#e979f1;
}

.ogl-fleetInfo span
{
    display:inline-block;
    width:50px;
}

#civilships .ogl-fret
{
    background:#13181d;
    border:1px solid #000;
    bottom:5px;
    color:#9e9e9e;
    cursor:pointer;
    font-size:11px;
    line-height:15px;
    padding:8px 12px;
    position:absolute;
    right:16px;
}

#civilships .ogl-fret:hover
{
    border-color:var(--hoverLight);
}

#civilships .ogl-fret b
{
    color:#eac612;
    float:right;
    margin-left:20px;
}

.ogl-lock
{
    background:rgba(0,0,0,.7) !important;
    color:#fff;
    display:block;
    line-height:20px;
    padding:5px !important;
    text-align:left;
    width:100%;
}

.ogl-lock .icon_lock
{
    margin-right:10px;
    vertical-align:middle;
}

.ogl-lock > *
{
    display:inline-block;
}

.ogl-sideLock
{
    background:none;
    color:#bb2121 !important;
    font-size:18px !important;
    position:absolute !important;
    right:60px;
    text-shadow:0 0 4px #000;
    top:4px;
    transform:translateX(100%) rotate(0.03deg) !important;
    z-index:20;
}

.ogl-sideLock:before
{
    content:'lock_outline';
}

.ogl-sideLock.ogl-active
{
    color:#22824d !important;
}

.ogl-sideLock:hover
{
    color:var(--hoverLight) !important;
}

/* FLEET INFO TOOTIP
------------------------------- */
table.fleetinfo tr td,
table.fleetinfo tr th
{
    padding:2px 5px;
}

table.fleetinfo tr:nth-child(even)
{
    box-shadow:inset 0 50px rgba(0,0,0,.2);
}

table.fleetinfo tr:nth-child(odd)
{
    box-shadow:inset 0 50px rgba(0,0,0,.4);
}

table.fleetinfo tr:nth-last-child(-n+3) .value
{
    /*position:absolute;
    right:10px;*/
}

table.fleetinfo tr:nth-last-child(3),
.ogl-metal
{
    color:#c76593 !important;
}

table.fleetinfo tr:nth-last-child(2),
.ogl-crystal
{
    color:#80d4dc !important;
}

table.fleetinfo tr:nth-last-child(1),
.ogl-deut
{
    color:#74e6a0 !important;
}

/* BTN_BLUE
------------------------------- */
.btn_blue
{
    background:linear-gradient(to top, var(--main) 50%, var(--mainLight) 50%) !important;
    border:1px solid var(--mainLight) !important;
    border-radius:2px !important;
}

.ogl-btn_red
{
    background:#b13131 !important;
    border:1px solid #de3e3e !important;
}

.btn_blue:hover
{
    background:linear-gradient(to top, var(--hover) 50%, var(--hoverLight) 50%) !important;
    border:1px solid var(--hoverLight) !important;
}

/* ICONS
------------------------------- */
.icon:not(.sprite):not(.resource), .close-tooltip
{
    background:var(--main) !important;
    border-radius:3px;
    box-shadow:inset 0 1px rgba(255,255,255,.2), 0 0 0 1px rgba(0,0,0,.3);
    color:#fff !important;
    font-size:14px !important;
    height:16px;
    line-height:17px !important;
    position:relative;
    text-align:center;
    width:16px;
}

.icon:not(.sprite):not(.resource):before, .close-tooltip:before
{
    display:block;
    height:100%;
    left:0;
    position:absolute;
    top:0;
    width:100%;
}

.icon.ogl-active:not(.sprite):not(.resource)
{
    background:var(--active) !important;
}

.icon:not(.sprite):not(.resource):hover
{
    background:var(--hover) !important;
}

.close-tooltip:hover
{
    background:#822525 !important;
}

.icon.blank, .icon[style="background: none;"]
{
    visibility:hidden;
}

.icon.ogl-planet:not(.sprite):not(.resource),
.icon.ogl-moon:not(.sprite):not(.resource)
{
    background:#2b3d52 !important;
    border-radius:4px !important;
    bottom:2px;
    color:#080d13 !important;
    cursor:default;
    position:absolute !important;
    right:2px;
}

.icon.ogl-planet:not(.sprite):not(.resource):hover,
.icon.ogl-moon:not(.sprite):not(.resource):hover
{
    background:var(--mainLight) !important;
    color:#1a2733 !important;
}

.ogl-stalkPlanets .icon.ogl-moon:not(.sprite):not(.resource)
{
    background:none !important;
    box-shadow:none !important;
    color:rgba(0,0,0,.5) !important;
    bottom:4px;
}

.ogl-stalkPlanets .icon.ogl-moon.ogl-active:not(.sprite):not(.resource)
{
    color:gold !important;
}

.icon:not(.sprite):not(.resource).planetMoveIcons.planetMoveInactive,
.icon:not(.sprite):not(.resource).planetMoveIcons.planetMoveBreakup,
.icon:not(.sprite):not(.resource).colonize-inactive
{
    background:#b12727 !important;
}

.icon:not(.sprite):not(.resource).planetMoveIcons.planetMoveOk
{
    background:#6d8a15 !important;
}

.close-tooltip:before { content:'close'; }
.icon.icon.allianceMember:before { content:'group'; }
.icon.icon_fastforward:before { content:'fast_forward'; }
.icon.icon_eye:before { content:'remove_red_eye'; }
.icon.icon_close:before { content:'close'; }
.icon.icon_maximize:before { content:'zoom_out_map'; }
.icon.icon_trash:before { content:'delete'; }
.icon.icon_chat:before { content:'comment'; }
.icon.icon_user:before { content:'person'; }
.icon.icon_missile:before { content:'gps_fixed'; }
.icon.icon_against:before { content:'block'; }
.icon.icon_reload:before { content:'refresh'; }
.icon.icon_restore:before { content:'subdirectory_arrow_left'; }
.icon.icon_info:before { content:'info_outline'; }
.icon.icon_lock:before { content:'lock_open'; }
.icon.icon_warning:before { content:'priority_high'; }
.icon.icon_reply:before { content:'keyboard_return'; }
.icon.icon_combatunits:before { content:'edit'; }
.icon.icon_mail:before { content:'email'; }

.ogl-active .icon.icon_lock, .icon.icon_lock.ogl-sideLock { background:#bb2121 !important; }
.ogl-active .icon_lock:before, .icon.icon_lock.ogl-sideLock:before { content:'lock_outline'; }
.icon.icon_lock.ogl-sideLock.ogl-active { background:#22824d !important; }

.ogl-pin, .ogl-mmorpgstats { position:absolute !important; }
.ogl-pin:before { content:'place'; }
.ogl-mmorpgstats:before { content:'call_made'; }
.ogl-wipe:before { content:'delete_sweep' }
.ogl-planet:before { content:'language'; }
.ogl-moon:before { content:'brightness_2';transform:rotate(20deg) }
.ogl-expand:before { content:'expand_more'; }

.planetMoveIcons.settings:before { content:'settings'; }
.planetMoveIcons.colonize-inactive:before { content:'flag'; }
.planetMoveIcons.colonize-active:before { content:'flag'; }
.planetMoveIcons.planetMoveDefault:before { content:'flight'; }
.planetMoveIcons.planetMoveInactive:before { content:'flight'; }
.planetMoveIcons.planetMoveOk:before { content:'flight'; }
.planetMoveIcons.planetMoveBreakup:before { content:'flight'; }
.cancelMove .icon:before { content:'close'; }

.og-sortable.active .icon { margin-left:5px; }
.og-sortable.active .icon:before { content:'unfold_more'; }
.og-sortable.active.desc .icon:before { content:'keyboard_arrow_down'; }
.og-sortable.active.asc .icon:before { content:'keyboard_arrow_up'; }

.ogl-simButton.icon:not(.sprite):not(.resource)
{
    font-family:inherit !important;
    font-size:13px !important;
    font-weight:bold !important;
    line-height:15px !important;
    padding:0 !important;
}

/* EXPEDITION DEBRIS 
------------------------------- */
.expeditionDebrisSlotBox
{
    align-items:center;
    display:grid;
    grid-template-columns:20% auto auto auto;
}

.expeditionDebrisSlotBox li
{
    list-style:none;
}

.expeditionDebrisSlotBox > img
{
    float:right;
    justify-self:center;
}

.expeditionDebrisSlotBox > div
{
    line-height:1.6;
    text-align:left;
}

.expeditionDebrisSlotBox a:hover
{
    color:orange;
}

.ogl-detailRank
{
    background-color:#13181d;
    display:grid;
    grid-template-columns:repeat(5, 1fr);
    line-height:16px;
    padding:2px 0;
}

.ogl-detailRank > div
{
    font-size:10px;
    padding:2px;
}

.ogl-detailRank > div:nth-child(1) { color:#71b1da; }
.ogl-detailRank > div:nth-child(2) { color:#9a9a9a; }
.ogl-detailRank > div:nth-child(3) { color:#97ce48; }
.ogl-detailRank > div:nth-child(4) { color:#ff8600; }
.ogl-detailRank > div:nth-child(5) { color:#cec65d; }

.ogl-ecoIcon, .ogl-techIcon, .ogl-fleetIcon, .ogl-totalIcon, .ogl-defIcon
{
    background:url(https://gf3.geo.gfsrv.net/cdne9/1fd57fa51cdb81035382943e635348.gif)  no-repeat;
    background-position:100% 0 !important;
    background-size:calc(16px * 6) !important;
    border-radius:3px;
    box-shadow:0 0 0 1px #000;
    display:inline-block;
    float:left;
    height:16px;
    image-rendering:crisp-edges;
    image-rendering:-moz-crisp-edges;
    image-rendering:-webkit-optimize-contrast;
    margin-right:3px;
    vertical-align:middle;
    width:16px;
}

.ogl-techIcon
{
    background-position:80% 0 !important;
}

.ogl-fleetIcon
{
    background-position:60% 0 !important;
    filter:hue-rotate(27deg) brightness(1.75);
}

.ogl-defIcon
{
    background-position:60% 0 !important;
    filter:hue-rotate(67deg) brightness(1.75);
}

.ogl-totalIcon
{
    background-position:0 0 !important;
}

.fleetDetails.detailsOpened
{
    height:87px;
}

.detailsOpened .starStreak
{
    background-color:rgba(0,0,0,.5);
    height:58px;
}

.fleetDetails.detailsClosed .ogl-backTimer
{
    display:none;
}

.ogl-backTimer
{
    border-left:1px solid #000;
    border-right:1px solid #000;
    bottom:0;
    color:#7b7b7b;
    left:-2px;
    line-height:18px;
    padding:0 4px;
    position:absolute;
    right:-2px;
    text-align:center;
}

.ogl-backTimer div
{
    display:inline-block;
}
.ogl-backTimer div:nth-child(1)
{
    color:#fff;
}

.ogl-backTimer div:nth-child(2)
{
    color:gold;
    font-weight:bold;
}

.ogl-backTimer div:nth-child(2):before
{
    color:#7b7b7b;
    content:'-';
    margin:0 5px;
}

.tpd-tooltip:not(.ogl-tooltip)
{
    display:none !important;
    height:1px !important;
    overflow:hidden !important;
    visibility:hidden !important;
    width:1px !important;
    z-index:-1000 !important;
}

#fleet1 .technology .icon
{
    box-shadow:inset 0 20px 20px #000;
}

#middle
{
    padding-bottom:60px;
}

#movement .fleetStatus
{
    height:auto;
}

.ogl-leftOption
{
    padding:5px 10px;
    position:relative;
    text-align:left;
    width:100%;
}

.ogl-keyboard
{
    background:#cccccc;
    border:1px solid #d2d2d2;
    box-shadow:1px 0 1px 0 #797979, 0 2px 0 2px #7b7b7b, 0 2px 0 3px #1f1f1f;
    border-radius:3px;
    color:#585858;
    display:inline-block;
    font-weight:bold;
    right:5px;
    padding:0 4px;
    position:absolute;
    text-shadow:0px 1px 0 #dedede;
    top:2px;
}

.ogl-tipsList
{
    display:grid;
    grid-gap:1px 5px;
    grid-template-columns:repeat(3, 1fr);
    line-height:16px;
    width:639px;
}

#warning .ogl-tipsList
{
    margin-left:17px;
}

#galaxycomponent .ogl-tipsList
{
    background:#141e26;
    border:1px solid #000;
    border-radius:3px;
    margin-left:11px;
    padding:10px;
    width:629px;
}

.ogl-tips
{
    background:#13181d;
    border:1px solid #030303;
    cursor:pointer;
    margin-top:5px;
    padding:5px;
    position:relative;
    max-width:210px;
}

.ogl-tips:hover
{
    background:#541d0c;
    border:1px solid var(--hoverLight);
}

.resourceIcon
{
    position:relative;
}

.ogl-resTimeLeft
{
    background:rgba(0,0,0,.8);
    border-top:1px solid #000;
    bottom:0;
    color:#fbd467;
    display:none;
    font-size:9px;
    font-weight:bold;
    height:100%;
    line-height:33px;
    pointer-events:none;
    position:absolute;
    width:100%;
}

#resourcesbarcomponent:hover .ogl-resTimeLeft
{
    display:block;
}

#allornone .secondcol
{
    background:#0e1014;
}

#resources .value > span
{
    position:relative;
    top:2px;
}

#fleetdispatchcomponent #buttonz #civilships
{
    min-height:300px;
}

.ogl-routine > div
{
    margin-bottom:10px;
}

.ogl-linkedMoon
{
    background:#564a1e;
    box-shadow:inset 0 1px rgba(255, 255, 255, 0.2);
    color:#fff !important;
    cursor:pointer;
    line-height:24px;
    outline:1px solid #000;
    padding:0 8px;
    position:relative;
}

.ogl-linkedMoon:hover
{
    background:var(--hover);
}

.ogl-linkedMoon figure
{
    box-shadow:inset 0 0 4px 1px #090a0c;
    border-radius:50%;
    float:right !important;
    margin:4px 0 0 3px;
}

#technologies_battle h3, #technologies_civil h3,
#battleships .header, #civilships .header
{
    display:none;
}

#battleships
{
    padding:0 0 0 10px;
    width:430px !important;
}

#technologies_battle .icons,
#technologies_battle .icons ul
{
    padding:0 !important;
    width:430px !important;
}

#technologies_civil
{
    right:-14px !important;
}

#technologies_civil .icons,
#technologies_civil .icons ul
{
    padding:0 !important;
    width:240px !important;
}

#battleships ul, #civilships ul
{
    padding:0 !important;
}

.ogl-buildingTimeLeft,
.ogl-buildTime
{
    color:#af981e;
    display:inline-block;
    margin-top:3px;
}

#technologydetails .ogl-buildTime
{
    background:#151f29;
    border-radius:3px 0 3px 3px;
    bottom:85px;
    font-size:12px;
    padding:4px;
    position:absolute;
    right:5px;
}

.ogl-buildingTimeLeft span,
.ogl-buildTime span
{
    color:gold;
}

#fleetdispatchcomponent #allornone .info
{
    display:none;
}

#planetList
{
    width:147px !important;
}

.ogl-sim
{
    background:linear-gradient(to top, #1a2027, #2e3948) !important;
    box-shadow:inset 0 1px 3px #374454;
    border-radius:5px;
    color:#9ea5af;
    cursor:pointer;
    float:left;
    font-size:16px;
    font-weight:bold;
    line-height:26px;
    text-align:center;
}

.ogl-sim:hover
{
    background:linear-gradient(to bottom, #1a2027, #2e3948) !important;
    box-shadow:inset 0 -1px 3px #374454;
}

#messages .no_msg
{
    position:relative;
    margin:0;
}

/* universeview timers fix 
------------------------------- */
.uv-idletimer-timer
{
    border-radius:0 !important;
    font-size:9px !important;
    height:10px !important;
    padding:0 1px !important;
    opacity:1 !important;
    top:0 !important;
    right:0 !important;
}

.ogl-jumpGateTimer
{
    background:#1b252e;
    border:1px solid #000;
    bottom:-1px;
    color:gold;
    font-size:9px;
    padding:1px 2px;
    position:absolute;
    right:-2px;
    transform:translateX(100%);
}

#jumpgate .ogl-deltaFleet
{
    width:20px;
}

.ogl-empire
{
    background:rgba(0,0,0,.4);
    display:grid;
    font-size:10px;
    grid-gap:7px;
    grid-template-columns:repeat(4, 1fr);
    padding:10px;
}

.ogl-empireLine
{
    background:#161d27;
    box-shadow:0 0 4px rgba(0,0,0,.3);
    display:grid;
    grid-template-columns:auto auto;
    position:relative;
}

.ogl-empireLine > div
{
    padding:10px;
}

.ogl-empireLine > div:nth-child(odd)
{
    background:#202b38;
    position:relative;
    cursor:pointer;
}

.ogl-empireLine > div:nth-child(odd):hover
{
    background:#541d0c;
    outline:1px solid var(--hoverLight);
    z-index:10;
}

.ogl-empireLine > div:nth-child(3),
.ogl-empireLine > div:nth-child(4)
{
    border-top:1px solid #10141a;
}

.ogl-empireTotal
{
    background:#2b3746;
    box-shadow:0 0 4px rgba(0,0,0,.3);
    margin-top:3px;
    padding:10px;
    text-align:right;
}

.ogl-empireContainer > button
{
    background:linear-gradient(to bottom, var(--mainLight) 50%, var(--main) 50%);
    border-radius:3px 3px 0 0;
    color:#fff;
    cursor:pointer;
    font-size:14px;
    margin-right:2px;
    padding:5px 10px;
}

.ogl-empireContainer > button:hover
{
    background:linear-gradient(to bottom, var(--hoverLight) 50%, var(--hover) 50%);
}

.ogl-empireContainer > button.ogl-active
{
    background:linear-gradient(to bottom, var(--activeLight) 50%, var(--active) 50%);
}

#technologydetails .costs > p
{
    visibility:hidden;
}

#technologydetails .costs li.ogl-active
{
    color:#44ffb1;
}

#technologydetails .costs li.ogl-noMoney
{
    color:#e62424;
}

.ogl-shipIcon
{
    background-size:cover !important;
    border:2px solid #000;
    border-radius:4px;
    box-sizing:border-box;
    height:32px;
    width:32px;
}

.ogl-shipIcon.ogl-active
{
    border-color:var(--active) !important;
}

.ogl-shipIcon.ogl-0
{
    background:#731a1a;
    color:#fff;
    font-size:16px !important;
    line-height:28px !important;
    text-align:center;
}

.ogl-shipIcon.ogl-0:after { content:'close'; }
.ogl-shipIcon.ogl-0.ogl-active { background:#1f5a4d; }
.ogl-shipIcon.ogl-0.ogl-active:after { content:'create'; }

.ogl-shipIcon.ogl-202 { background-image:url(https://gf2.geo.gfsrv.net/cdnd9/60555c3c87b9eb3b5ddf76780b5712.jpg); }
.ogl-shipIcon.ogl-203 { background-image:url(https://gf1.geo.gfsrv.net/cdn34/fdbcc505474e3e108d10a3ed4a19f4.jpg); }
.ogl-shipIcon.ogl-204 { background-image:url(https://gf2.geo.gfsrv.net/cdnd2/9ed5c1b6aea28fa51f84cdb8cb1e7e.jpg); }
.ogl-shipIcon.ogl-205 { background-image:url(https://gf1.geo.gfsrv.net/cdnf1/8266a2cbae5ad630c5fedbdf270f3e.jpg); }
.ogl-shipIcon.ogl-206 { background-image:url(https://gf2.geo.gfsrv.net/cdn45/b7ee4f9d556a0f39dae8d2133e05b7.jpg); }
.ogl-shipIcon.ogl-207 { background-image:url(https://gf1.geo.gfsrv.net/cdn32/3f4a081f4d15662bed33473db53d5b.jpg); }
.ogl-shipIcon.ogl-211 { background-image:url(https://gf1.geo.gfsrv.net/cdnca/4d55a520aed09d0c43e7b962f33e27.jpg); }
.ogl-shipIcon.ogl-213 { background-image:url(https://gf3.geo.gfsrv.net/cdn2a/c2b9fedc9c93ef22f2739c49fbac52.jpg); }
.ogl-shipIcon.ogl-214 { background-image:url(https://gf3.geo.gfsrv.net/cdn84/155e9e24fc1d34ed4660de8d428f45.jpg); }
.ogl-shipIcon.ogl-215 { background-image:url(https://gf3.geo.gfsrv.net/cdn5a/24f511ec14a71e2d83fd750aa0dee2.jpg); }
.ogl-shipIcon.ogl-218 { background-image:url(https://gf1.geo.gfsrv.net/cdn39/12d016c8bb0d71e053b901560c17cc.jpg); }
.ogl-shipIcon.ogl-219 { background-image:url(https://gf3.geo.gfsrv.net/cdne2/b8d8d18f2baf674acedb7504c7cc83.jpg); }

.allornonewrap .secondcol > .ogl-shipIcon:not(.ogl-prefab)
{
    cursor:pointer;
}

.allornonewrap .secondcol > .ogl-shipIcon:not(.ogl-prefab):hover
{
    border:2px solid var(--hoverLight) !important;
    opacity:1;
}

.allornonewrap #sendall,
.allornonewrap #resetall
{
    background:#d09200;
    border:2px solid #cc9213;
    border-radius:4px;
    box-shadow:inset 0 -14px rgba(0,0,0,.15);
    box-sizing:border-box;
    color:#fff !important;
    position:relative;
    height:32px;
    text-shadow:1px 1px 0 rgba(0,0,0,.3);
    transform:rotate(0.03deg);
    width:32px;

    font-family:'Material Icons' !important;
    font-weight:normal !important;
    font-style:normal !important;
    font-size:inherit !important;
    line-height:inherit !important;
    letter-spacing:normal;
    text-transform:none;
    display:inline-block;
    white-space:nowrap;
    word-wrap:normal;
    direction:ltr;
    -webkit-font-feature-settings:'liga';
    -webkit-font-smoothing:antialiased;
}

.allornonewrap #sendall:before,
.allornonewrap #resetall:before
{
    content:'double_arrow';
    font-size:24px;
    height:30px;
    left:0;
    line-height:30px;
    position:absolute;
    text-align:center;
    top:0;
    width:30px;
}

.allornonewrap #resetall
{
    background:#9e1b1b;
    border-color:#a01414;
}

.allornonewrap #resetall:before
{
    content:'exposure_zero';
}

.allornonewrap #sendall:hover,
.allornonewrap #resetall:hover
{
    background:var(--hover);
    border:2px solid var(--hoverLight);
}

.allornonewrap .ogl-shipIcon.ogl-active
{
    border-color:#fff;
    opacity:1 !important;
}

.allornonewrap .ogl-shipIcon
{
    border-color:#222b33 !important;
}

tr[data-nexttarget="true"] .ogl-type:after,
.ogl-targetItem.ogl-nextTarget:after
{
    background:#fff;
    border-radius:50%;
    bottom:2px;
    content:'';
    height:5px;
    position:absolute;
    right:2px;
    width:5px;
}

.sprite, .sprite:before, .sprite:after
{
    background-image:var(--quality);
}

.ogl-expeRatio
{
    position:relative;
}

.ogl-expeRatio > div:nth-child(1),
.ogl-expeRatio > div:nth-child(2)
{
    background:#222b33;
    box-shadow:-2px 0 3px rgba(0,0,0,.4);
    color:#fff;
    cursor:pointer;
    font-size:12px;
    font-weight:bold;
    height:16px;
    line-height:16px;
    margin-left:-12px;
    position:relative;
    text-align:center;
    user-select:none;
    width:16px;
    z-index:1;
}

.ogl-expeRatio > div:nth-child(1):hover,
.ogl-expeRatio > div:nth-child(2):hover
{
    background:var(--hover);
}

.ogl-expeRatio > div:nth-child(1)
{
    border-bottom:none;
    border-radius:0 4px 0 0;
}

.ogl-expeRatio > div:nth-child(2)
{
    border-radius:0 0 4px 0;
}

.ogl-expeRatio > div:nth-child(3)
{
    position:absolute;
    right:0;
    top:9px;
}

.ogl-shipPicker
{
    display:grid;
    grid-gap:5px;
    grid-template-columns:repeat(4, 1fr);
}

.ogl-shipPicker .ogl-shipIcon
{
    border-color:#3d4f63;
    border-radius:4px !important;
    cursor:pointer;
}

.ogl-shipIcon.ogl-0.ogl-active
{
    border-color:#3d4f63 !important;
}

.ogl-shipPicker .ogl-shipIcon:hover
{
    border-color:var(--hoverLight)  !important;
}

.ogl-emptyGrid
{
    color:#fff;
    display:grid;
    font-size:10px;
    font-weight:normal;
    float:right;
    grid-gap:5px;
    grid-template-columns:repeat(3, auto);
    margin:0 16px;
    overflow:hidden;
    width:fit-content;
}

.ogl-emptyShip
{
    background:#3c1414;
    border:1px solid #000;
    border-radius:3px;
    display:grid;
    grid-template-columns:15px auto;
    line-height:15px;
}

.ogl-emptyGrid .ogl-shipIcon
{
    border:none !important;
    border-right:1px solid #000 !important;
    border-radius:0 !important;
    height:15px;
    width:15px;
}

.ogl-emptyShip span
{
    display:inline-block;
    padding:0 8px;
}

#fleetdispatchcomponent #warning p
{
    margin:30px auto 18px auto;
}

.ogl-notEnough input
{
    background:#ff9797 !important;
    outline:2px solid #a23939;
}

#banner_skyscraper
{
    left:1020px !important;
}

.ogl-draggable
{
    box-shadow:0 0 20px 3px #000;
    position:relative;
    touch-action:none;
    user-select:none;
    z-index:100;
}

.smallplanet:not([data-multi])
{
    margin-top:5px !important;
}

.smallplanet[data-multi="0"]::before
{
    border:2px solid #ffdb2d;
}

.smallplanet[data-multi="1"]::before
{
    border:2px solid #8bc34a;
}

.smallplanet[data-multi="2"]::before
{
    border:2px solid #d24c9c;
}

.smallplanet[data-multi="3"]::before
{
    border:2px solid #03a9f4;
}

.smallplanet[data-multi="4"]::before
{
    border:2px solid #f57c00;
}

.smallplanet[data-multi="5"]::before
{
    border:2px solid #d2d2d2;
}

.smallplanet[data-multi="6"]::before
{
    border:2px solid #009688;
}

.smallplanet[data-multi="7"]::before
{
    border:2px solid #d41c1c;
}

.smallplanet[data-multi="8"]::before
{
    border:2px solid #3f51b5;
}

.smallplanet[data-multi]::before
{
    border-right:0;
    content:'';
    display:block;
    height:39px;
    left:-6px;
    position:absolute;
    top:-23px;
    width:3px;
}

.ogl-mainTitle
{
    padding-right:10px;
}

.ogl-mainTitle h1
{
    color:var(--hoverLight);
    font-size:20px;
}

.ogl-mainTitle h1 b
{
    color:#fff;
    font-size:14px;
}

.ogl-panelOptions
{
    display:grid;
    grid-gap:4px;
    grid-template-columns:repeat(7, 1fr);
    justify-items:center;
    margin-bottom:5px;
    padding:4px 5px 0 3px;
    position:absolute;
    text-align:center;
    top:37px;
    user-select:none;
    width:139px;
}

.ogl-panel
{
    color:#6f9fc8;
    cursor:pointer;
    font-size:14px;
    line-height:14px;
    opacity:.9;
    text-align:right;
    text-shadow:1px 1px #000;
    transition:color .2s, font .2s;
    width:100%;
}

.ogl-panel:nth-child(1)
{
    grid-column:-4;
}

.ogl-panel:hover
{
    color:var(--hoverLight);
}

.ogl-panel.ogl-active
{
    color:#fff;
}

.ogl-panelTotalRes,
.ogl-panelTotalProd
{
    background:#0d1014;
    border:1px solid #000;
    display:none;
    font-size:12px;
    padding:4px;
    text-align:right;
}

#rechts[data-panel="1"] .ogl-panelTotalRes,
#rechts[data-panel="2"] .ogl-panelTotalProd
{
    display:block;
}

.ogl-sumIcon
{
    float:left;
    font-size:20px;
    opacity:.5;
}
`);