/**
 * Zentrale Icon-Verwaltung – XXX The Game
 *
 * Typen:
 *   emoji    – Standard-Emoji oder Unicode-Zeichen (value: string)
 *   symbol   – Unicode-Symbol (value: string)
 *   image    – Pfad zu einer Bilddatei (value: string)
 *   compound – Doppel-Icon: base-Icon + kleines Overlay-Icon (bottom-right)
 *              Felder: base { type, value }, overlay { type, value }
 *              base kann emoji, symbol oder image sein.
 */
window.ICONS = {
    // ── Navigation / Sidebar ──────────────────────────────────────────────
    HOME:           { type: 'emoji', value: '🏠' },
    VANILLA:        { type: 'emoji', value: '⚪' },
    BDSM:           { type: 'emoji', value: '⛓️' },
    CHASTITY:       { type: 'emoji', value: '🔒' },

    // ── Aktionen ──────────────────────────────────────────────────────────
    PLAY_NEW:       { type: 'emoji',  value: '🆕' },
    PLAY_ACTIVE:    { type: 'emoji',  value: '▶️' },
    ACTIVE_LOCK:    { type: 'emoji',  value: '▶️' },
    WAITING:        { type: 'emoji',  value: '⏳' },
    CHECK:          { type: 'emoji',  value: '✅' },
    DISCOVER:       { type: 'emoji',  value: '🗺️' },
    ARROW:          { type: 'emoji',  value: '▶️' },
    REFRESH:        { type: 'emoji',  value: '🔄' },   // Erneuern / Neu laden
    START:          { type: 'emoji',  value: '🚀' },   // Starten / Los
    CELEBRATE:      { type: 'emoji',  value: '🎉' },   // Erfolg / Abschluss

    // ── UI-Symbole ────────────────────────────────────────────────────────
    CLOSE:          { type: 'symbol', value: '✕' },   // Schließen / Ablehnen / Löschen
    CONFIRM:        { type: 'symbol', value: '✓' },   // Bestätigen / Abschließen / Annehmen
    LIKE:           { type: 'symbol', value: '♥' },   // Like-Button
    AVATAR:         { type: 'symbol', value: '◉' },   // Avatar-Platzhalter (kein Bild)
    ERROR:          { type: 'emoji',  value: '❌' },   // Fehlerzustand
    TIMER:          { type: 'emoji',  value: '⏱️' },  // Zeitanzeige / Stoppuhr
    LIGHTNING:      { type: 'emoji',  value: '⚡' },  // Aktion (z. B. Zeit entfernen)
    EMOJI_PICKER:   { type: 'emoji',  value: '😊' },  // Emoji-Picker öffnen
    REMOVE:         { type: 'symbol', value: '⊗' },   // Eintrag/Spiel entfernen
    EDIT:           { type: 'symbol', value: '✎' },   // Bearbeiten-Button
    TRASH:          { type: 'emoji',  value: '🗑' },   // Löschen-Button
    WARNING:        { type: 'emoji',  value: '⚠️' },  // Warnung / Hinweis
    REPORT:         { type: 'symbol', value: '⚑' },   // Melden-Button (Flag)
    VISIBILITY:     { type: 'emoji',  value: '👁' },   // Sichtbar / Details sichtbar
    THUMBS_UP:      { type: 'emoji',  value: '👍' },   // Upvote / Zustimmung
    THUMBS_DOWN:    { type: 'emoji',  value: '👎' },   // Downvote / Ablehnung
    ARROW_UP:       { type: 'symbol', value: '⬆' },   // Sortierung aufsteigend
    ARROW_DOWN:     { type: 'symbol', value: '⬇' },   // Sortierung absteigend
    NAV_PREV:       { type: 'symbol', value: '←' },   // Zurück / Vorheriges Bild
    NAV_NEXT:       { type: 'symbol', value: '→' },   // Weiter / Nächstes Bild
    CAROUSEL_PREV:  { type: 'symbol', value: '‹' },   // Karussell zurück
    CAROUSEL_NEXT:  { type: 'symbol', value: '›' },   // Karussell weiter
    TIP:            { type: 'emoji',  value: '💡' },   // Hinweis / Tipp
    DOT_RED:        { type: 'emoji',  value: '🔴' },   // Status-Indikator rot
    COMING_SOON:    { type: 'emoji',  value: '🚧' },   // In Entwicklung / Demnächst

    // ── Chastity Game ─────────────────────────────────────────────────────
    NEW_LOCK:       { type: 'emoji',  value: '🆕' },
    LOCK:           { type: 'emoji',  value: '🔒' },
    UNLOCK:         { type: 'emoji',  value: '🔓' },   // Entsperren
    LOCKED_SECURE:  { type: 'emoji',  value: '🔐' },   // Sicher gesperrt (mit Schlüssel)
    KEY:            { type: 'emoji',  value: '🔑' },
    HISTORY:        { type: 'emoji',  value: '🔙' },
    VOTES:          { type: 'emoji',  value: '🗳️' },
    TRUST:          { type: 'emoji',  value: '🤝' },   // Trust-Lock
    EMERGENCY:      { type: 'emoji',  value: '🆘' },   // Notfall-Entsperrung
    HYGIENE:        { type: 'emoji',  value: '🚿' },   // Hygiene-Öffnung
    FROZEN:         { type: 'emoji',  value: '❄️' },   // Eingefroren (zeitlich)
    FROZEN_HARD:    { type: 'emoji',  value: '🧊' },   // Eingefroren (unlimitiert)
    UNFREEZE:       { type: 'emoji',  value: '🌊' },   // Aufgetaut / Unfreeze
    CODE_DIGITS:    { type: 'emoji',  value: '🔢' },   // Zahlenkombination / PIN-Länge

    // ── CardLock ──────────────────────────────────────────────────────────
    CARD:           { type: 'emoji',  value: '🃏' },   // Karte (standalone)
    DICE:           { type: 'emoji',  value: '🎲' },   // Zufällig / Würfeln

    // ── TimeLock / Spinning Wheel ──────────────────────────────────────────
    SPINNING_WHEEL: { type: 'emoji',  value: '🎡' },   // Glücksrad drehen
    TASK_ACTIVE:    { type: 'emoji',  value: '🎯' },   // Aktuelle Aufgabe
    CLOCK:          { type: 'emoji',  value: '🕐' },   // Uhr / Zeitpunkt

    // ── Social ────────────────────────────────────────────────────────────
    FEED:           { type: 'emoji',  value: '📰' },
    SEARCH:         { type: 'emoji',  value: '🔍' },
    FRIENDS:        { type: 'emoji',  value: '❤️' },
    MESSAGES:       { type: 'emoji',  value: '💬' },
    NOTIFICATIONS:  { type: 'emoji',  value: '🔔' },
    GROUPS:         { type: 'emoji',  value: '👥' },
    INVITATIONS:    { type: 'emoji',  value: '✨' },
    SETTINGS:       { type: 'emoji',  value: '⚙️' },
    LOGOUT:         { type: 'emoji',  value: '⏏️' },
    PROFILE:        { type: 'emoji',  value: '👤' },
    HELP:           { type: 'emoji',  value: '❓' },
    CONTACT:        { type: 'emoji',  value: '✉️' },   // Kontakt / E-Mail

    // ── Medien / Dateien ──────────────────────────────────────────────────
    PHOTO:          { type: 'emoji',  value: '📷' },   // Foto / Kamera
    FILE_UPLOAD:    { type: 'emoji',  value: '📁' },   // Datei auswählen / Upload
    TEMPLATE:       { type: 'emoji',  value: '📋' },   // Vorlage / Template
    DOCUMENT:       { type: 'emoji',  value: '📄' },   // Dokument / Impressum
    GUIDE:          { type: 'emoji',  value: '📖' },   // Anleitung / Hilfeseite
    STATS:          { type: 'emoji',  value: '📊' },   // Statistik / Umfrage-Ergebnis
    PACKAGE:        { type: 'emoji',  value: '📦' },   // Paket / Einladung
    MAILBOX:        { type: 'emoji',  value: '📬' },   // Posteingang (Admin)

    // ── Abo / Premium ─────────────────────────────────────────────────────
    PREMIUM:        { type: 'emoji',  value: '⭐' },   // Abonnement / Premium
    TROPHY:         { type: 'emoji',  value: '🏆' },   // Auszeichnung / Erfolg
    PAYMENT:        { type: 'emoji',  value: '💳' },   // Zahlung / Abonnement

    // ── TTLock / Technik ──────────────────────────────────────────────────
    MOBILE:         { type: 'emoji',  value: '📱' },   // TTLock-App / Mobilgerät
    CONNECTION:     { type: 'emoji',  value: '🔌' },   // Verbindung / Integration
    GAMEPAD:        { type: 'emoji',  value: '🕹️' },  // Spielsteuerung
    SHIELD:         { type: 'emoji',  value: '🛡️' },  // Sicherheit / Datenschutz
    ADMIN_TOOLS:    { type: 'emoji',  value: '🔧' },   // Admin / Werkzeuge

    // ── Aufgaben / Items ──────────────────────────────────────────────────
    TOYS:           { type: 'emoji', value: '➰' },

    // ── Spielhistorie – Spieltypen ────────────────────────────────────────
    GAME_BDSM:      { type: 'emoji',  value: '⛓️' },
    GAME_VANILLA:   { type: 'emoji',  value: '❤️' },

    // Doppel-Icons: großes Basis-Icon + kleines 🔒-Overlay
    GAME_CARDLOCK:  {
        type:    'compound',
        base:    { type: 'image', value: '/img/card.png' },
        overlay: { type: 'emoji', value: '🔒' }
    },
    GAME_TIMELOCK:  {
        type:    'compound',
        base:    { type: 'emoji', value: '⏰' },
        overlay: { type: 'emoji', value: '🔒' }
    },

    // ── Spielhistorie – Rollen-Badges ─────────────────────────────────────
    ROLE_KEYHOLDER: { type: 'emoji', value: '🔑' },
    ROLE_LOCKEE:    { type: 'emoji', value: '🔒' },
};

// ── Hilfsfunktionen ───────────────────────────────────────────────────────────

/** Gibt den rohen Wert-String zurück (nur für einfache Icons; '' für compound). */
window.IC = function(key) {
    const icon = window.ICONS[key];
    return (icon && icon.type !== 'compound') ? (icon.value || '') : '';
};

/**
 * Gibt ein fertiges HTML-Fragment zurück, das das Icon darstellt.
 *
 * @param {string} key    – Schlüssel aus window.ICONS
 * @param {number} [size] – Basisgröße in rem (Standard: 2.7)
 * @returns {string} HTML-String
 */
window.IChtml = function(key, size) {
    const icon = window.ICONS[key];
    if (!icon) return '';
    return _iconToHtml(icon, size != null ? size : 2.7);
};

function _iconToHtml(icon, size) {
    switch (icon.type) {
        case 'emoji':
        case 'symbol':
            return `<span style="font-size:${size}rem;line-height:1;">${icon.value}</span>`;
        case 'image':
            return `<img src="${icon.value}" style="width:${size}rem;height:${size}rem;object-fit:contain;display:block;" alt="">`;
        case 'compound': {
            const baseHtml    = _compoundBase(icon.base, size);
            const overlayHtml = _compoundOverlay(icon.overlay, size * 0.48);
            return `<span style="position:relative;display:inline-block;line-height:1;">${baseHtml}${overlayHtml}</span>`;
        }
        default:
            return '';
    }
}

function _compoundBase(base, size) {
    if (base.type === 'image') {
        return `<img src="${base.value}" style="width:${size}rem;height:${size}rem;object-fit:contain;display:block;" alt="">`;
    }
    return `<span style="font-size:${size}rem;line-height:1;">${base.value}</span>`;
}

function _compoundOverlay(overlay, size) {
    return `<span style="position:absolute;bottom:-2px;right:-4px;font-size:${size.toFixed(2)}rem;line-height:1;">${overlay.value}</span>`;
}
