const rows = [
    { label: 'Basic', emojiId: 'emojiBasic', emoji: '❌' },
    { label: 'Summary', emojiId: 'emojiSummary', emoji: '❌' },
    { label: 'Training', emojiId: 'emojiTraining', emoji: '❌' },
    { label: 'Genetics', emojiId: 'emojiGenetics', emoji: '❌' },
    { label: 'Achievements', emojiId: 'emojiAchievements', emoji: '❌' },
    { label: 'Health', emojiId: 'emojiHealth', emoji: '❌' },
];
// Warten, bis das DOM vollständig geladen ist
document.addEventListener("DOMContentLoaded", function () {
    // Suche nach dem Element mit der Klasse 'horse_banner'
    const banner = document.querySelector('.horse_banner');
    if (banner) {
        // Erstelle das container div
        const div = document.createElement('div');
        div.className = 'collector_ui';
        Object.assign(div.style, {
            position: 'absolute',
            right: '-160px',
            top: '20px',
            zIndex: '1',
            padding: '10px',
            backgroundColor: '#FFFFFFD9',
            width: '120px',
            minHeight: '50px',
            display: 'flex',
            flexDirection: 'column',
            alignItems: 'flex-start',
            gap: '10px' // Abstand zwischen Button und Tabelle
        });

        // Erstelle den Button
        const updateHorseButton = document.createElement('updateHorseButton');
        updateHorseButton.textContent = 'Update Horse';
        Object.assign(updateHorseButton.style, {
            padding: '10px 15px',
            backgroundColor: '#ffa200',
            color: '#fff',
            border: 'none',
            borderRadius: '5px',
            cursor: 'pointer',
            alignSelf: 'stretch', // Button auf volle Breite dehnen
            transition: 'background-color 0.3s ease' // Übergang für den Hover-Effekt
        });
        updateHorseButton.addEventListener("click", function() {
            chrome.runtime.sendMessage({ action: "updateHorseData" });
        });

        // Hover-Effekt hinzufügen
        updateHorseButton.addEventListener('mouseenter', function () {
            updateHorseButton.style.backgroundColor = '#bf8700'; // Hover-Farbe
        });
        updateHorseButton.addEventListener('mouseleave', function () {
            updateHorseButton.style.backgroundColor = '#ffa200'; // Originalfarbe
        });

        // Flex-Container für die Tabelle
        const table = document.createElement('div');
        Object.assign(table.style, {
            display: 'flex',
            flexDirection: 'column',
            width: '100%',
            gap: '12px' // Abstand zwischen den Zeilen
        });
        // Erstelle Zeilen für jede Beschriftung
        rows.forEach(row => {
            const rowDiv = document.createElement('div');
            Object.assign(rowDiv.style, {
                display: 'flex',
                justifyContent: 'space-between', // Beschriftung links, Emoji rechts
                width: '100%'
            });

            // Linkes Element für die Beschriftung
            const labelCell = document.createElement('div');
            labelCell.textContent = row.label;
            labelCell.style.flex = '1'; // Beschriftung auf der linken Seite

            // Rechtes Element für das Emoji
            const emojiCell = document.createElement('div');
            const emojiSpan = document.createElement('span');
            emojiSpan.id = row.emojiId;
            emojiSpan.textContent = row.emoji;
            emojiCell.appendChild(emojiSpan);
            emojiCell.style.flex = '0'; // Emoji auf der rechten Seite

            // Zeile zur Tabelle hinzufügen
            rowDiv.appendChild(labelCell);
            rowDiv.appendChild(emojiCell);
            table.appendChild(rowDiv);
        });

        // Linie hinzufügen
        const line = document.createElement('hr');
        Object.assign(line.style, {
            width: '100%',
            border: '0',
            height: '1px',
            backgroundColor: '#ddd',
            margin: '10px 0'
        });

        // Legend-Titel hinzufügen
        const legendTitle = document.createElement('div');
        legendTitle.textContent = 'Legend:';
        Object.assign(legendTitle.style, {
            fontWeight: 'bold',
            fontSize: '14px',
            color: '#555'
        });

        // Info-Text für die Legende hinzufügen
        const legendTexts = [
            { emoji: '✅', text: 'Loaded' },
            { emoji: '☑️', text: 'Dynamic' },
            { emoji: '🔄', text: 'Needs Refresh' },
            { emoji: '❌', text: 'Not Loaded' },
        ];
        const legend = document.createElement('div');
        Object.assign(legend.style, {
            display: 'flex',
            flexDirection: 'column',
            gap: '5px',
            fontSize: '12px',
            color: '#333'
        });

        legendTexts.forEach(item => {
            const legendRow = document.createElement('div');
            Object.assign(legendRow.style, {
                display: 'flex',
                alignItems: 'center',
                gap: '5px'
            });

            const emoji = document.createElement('span');
            emoji.textContent = item.emoji;
            emoji.style.fontSize = '14px';

            const text = document.createElement('span');
            text.textContent = item.text;

            legendRow.appendChild(emoji);
            legendRow.appendChild(text);
            legend.appendChild(legendRow);
        });

        // Button oben hinzufügen, dann die Tabelle, Linie, und die Legende
        div.appendChild(updateHorseButton);
        div.appendChild(table);
        div.appendChild(line);
        div.appendChild(legendTitle);
        div.appendChild(legend);
        banner.appendChild(div);

        const horseId = document.querySelector('.right:nth-child(2)').innerText.replace('#', '');
        updateLoadStateUI(horseId);
    }
});
async function updateLoadStateUI(horseId) {
    const loadState = await getHorseLoadStateAPIAsync(horseId);
    if (!loadState) {
        console.error("Failed to retrieve load state.");
        return;
    }

    // Mappe die LoadState-Werte auf die UI-Emojis
    const loadStateMapping = {
        Basic: loadState.BasicInfoLoaded ? (loadState.BasicInfoNeedsRefresh ? '🔄' : '✅') : '❌',
        Summary: loadState.SummaryLoaded ? (loadState.SummaryNeedsRefresh ? '🔄' : '✅') : '❌',
        Training: loadState.TrainingLoaded ? (loadState.TrainingNeedsRefresh ? '🔄' : '✅') : '❌',
        Genetics: loadState.GeneticsLoaded ? (loadState.GeneticsNeedsRefresh ? '🔄' : '✅') : '❌',
        Achievements: loadState.AchievementsLoaded ? (loadState.AchievementsNeedsRefresh ? '🔄' : '☑️') : '❌',
        Health: loadState.HealthLoaded ? (loadState.HealthNeedsRefresh ? '🔄' : '✅') : '❌',
    };

    // Aktualisiere die Rows in der UI
    rows.forEach(row => {
        const emojiElement = document.getElementById(row.emojiId);
        if (emojiElement && loadStateMapping[row.label]) {
            emojiElement.textContent = loadStateMapping[row.label]; // Setze das Emoji basierend auf dem Ladezustand
        }
    });
}

function updateSingleLoadStateUI(loadStateKey, isLoaded, needsRefresh) {
    // Mappe das LoadState-Schlüssel auf das Emoji
    const loadStateMapping = {
        true: needsRefresh ? '✅' : '☑️', // Geladen, aber möglicherweise veraltet
        false: '❌'                     // Nicht geladen
    };

    // Suche die passende Row basierend auf dem Schlüssel
    const row = rows.find(row => row.label === loadStateKey);
    if (!row) {
        console.error(`Row for ${loadStateKey} not found.`);
        return;
    }

    // Aktualisiere das Emoji in der UI
    const emojiElement = document.getElementById(row.emojiId);
    if (emojiElement) {
        emojiElement.textContent = loadStateMapping[isLoaded]; // Setze das Emoji entsprechend des Status
    } else {
        console.error(`Emoji element for ${loadStateKey} not found.`);
    }
}
