an/**
 * Dynamic SEO Loader
 * Loads website configuration from localStorage and injects SEO meta tags
 * This allows changing site name and domain from admin panel
 */

(function() {
    'use strict';

    // Keys for localStorage
    const DOMAIN_KEY = 'rgp_domain_config_v1';
    const SEO_KEY = 'rgp_seo_config_v1';

    // Default values
    const DEFAULT_DOMAIN = 'randomgrouppro.com';
    const DEFAULT_SITE_NAME = 'RandomGroup Pro';

    /**
     * Get configuration from localStorage
     */
    function getConfig() {
        try {
            const domainRaw = localStorage.getItem(DOMAIN_KEY);
            const seoRaw = localStorage.getItem(SEO_KEY);

            const domain = domainRaw ? JSON.parse(domainRaw) : {};
            const seo = seoRaw ? JSON.parse(seoRaw) : {};

            return {
                domain: domain.domainUrl || 'https://' + DEFAULT_DOMAIN,
                siteName: domain.siteName || DEFAULT_SITE_NAME,
                description: seo.description || '',
                keywords: seo.keywords || '',
                ogImage: seo.ogImage || 'https://' + DEFAULT_DOMAIN + '/images/og-image.png'
            };
        } catch(e) {
            console.error('SEO Config Error:', e);
            return {
                domain: 'https://' + DEFAULT_DOMAIN,
                siteName: DEFAULT_SITE_NAME,
                description: '',
                keywords: '',
                ogImage: 'https://' + DEFAULT_DOMAIN + '/images/og-image.png'
            };
        }
    }

/**
     * Get current page URL - fixed for clean URLs
     */
    function getCurrentPageUrl() {
        // Get the base URL without query params
        let url = window.location.href.split('?')[0];

        // Remove /index.html from the end if present
        // This ensures homepage returns just the domain
        url = url.replace(/\/index\.html$/, '');

        // If it's still ending with /index, remove it too
        url = url.replace(/\/index$/, '');

        // Don't add trailing slash - keep it clean
        return url;
    }

    /**
     * Get page-specific data
     */
    function getPageData() {
        const path = window.location.pathname;
        const page = path.split('/').pop() || 'index.html';

        const pageConfigs = {
            'index.html': {
                title: 'Random Group Generator - Acak Kelompok Gratis 2024',
                description: 'Random Group Generator adalah tools gratis mengacak dan membagi kelompok otomatis untuk kelas, komunitas, workshop, dan event. 100% gratis, tanpa login, cepat, akurat, dan adil.',
                keywords: 'random group generator, acak kelompok, bagi kelompok, undian nama, randomizer, group maker, classroom grouping, team generator, acak nama, random name picker, wheel spinner, pair generator, buat grup, bagi grup, undian grup, randomizer gratis, tools acak nama'
            },
            'generator.html': {
                title: 'Generator - Random Group Generator',
                description: 'Generator utama untuk mengacak dan membagi kelompok. Masukkan nama, atur pengaturan jumlah grup atau orang per grup, dan hasilkan kelompok secara otomatis dengan adil.',
                keywords: 'group generator, acak kelompok, bagi grup, random generator, buat kelompok, generator grup, acak nama online, bagi kelompok otomatis'
            },
            'howto.html': {
                title: 'Cara Penggunaan - Panduan Random Group Generator',
                description: 'Panduan lengkap cara menggunakan Random Group Generator untuk mengacak nama dan membagi kelompok. Tutorial langkah demi langkah mudah dipahami.',
                keywords: 'cara menggunakan random group generator, panduan acak nama, how to use randomizer, cara bagi kelompok, tutorial group generator, cara pakai random group generator'
            },
            'tools.html': {
                title: 'Tools - Kumpulan Randomizer Gratis',
                description: 'Kumpulan tools randomizer gratis lengkap: Name Picker, Pair Generator, Wheel Spinner, Number Generator, Password Generator, dan masih banyak lagi.',
                keywords: 'tools randomizer, name picker, wheel spinner, pair generator, number generator, password generator, tools gratis, randomizer online, acak nama gratis, berbagai tools random'
            },
            'all-tools.html': {
                title: 'Semua Tools - Kumpulan Lengkap Randomizer',
                description: 'Lihat semua tools randomizer yang tersedia. Name Picker, Pair Generator, Wheel Spinner, Number Generator, Color Generator, dan lainnya.',
                keywords: 'all tools, semua tools randomizer, kumpulan randomizer, semua tools gratis, lengkap randomizer'
            },
            'about.html': {
                title: 'Tentang Kami - RandomGroup Pro',
                description: 'Tentang RandomGroup Pro - Tools gratis dan terbaik untuk mengacak dan membagi kelompok secara otomatis. Tanpa login, 100% gratis, data lokal.',
                keywords: 'about, tentang kami, random group generator, tentang tool ini, tentang kita'
            },
            'copyright.html': {
                title: 'Hak Cipta & Kebijakan Privasi - RandomGroup Pro',
                description: 'Informasi hak cipta, kebijakan privasi, dan syarat penggunaan RandomGroup Pro. Semua data disimpan lokal di browser pengguna.',
                keywords: 'copyright, hak cipta, kebijakan privasi, privacy policy, terms of service, syarat penggunaan'
            },
            'tool-picker.html': {
                title: 'Random Name Picker - Acak Nama Undian Gratis',
                description: 'Tools mengundi satu nama secara acak dari daftar. Cocok untuk undian hadiah, pemilihan peserta, games, dan giveaway. Gratis tanpa login.',
                keywords: 'random name picker, acak nama, undian nama, name picker, undian hadiah, pick random name, choose random name, acak nama undian, tools undian, spin the name'
            },
            'tool-pairs.html': {
                title: 'Random Pair Generator - Buat Pasangan Acak Gratis',
                description: 'Tools membuat pasangan acak dari daftar nama. Cocok untuk buddy system, diskusi duo, paired activities, dan teamwork. Gratis dan mudah.',
                keywords: 'random pair generator, buat pasangan, duo, pair generator, buddy system, paired activities, buat duo, acak pasangan, bagi pasangan, buat tim duo'
            },
            'tool-spinner.html': {
                title: 'Wheel Spinner - Roda Undian Interaktif Gratis',
                description: 'Roda undian visual interaktif dengan animasi spin yang menarik. Cocok untuk undian hadiah, games, dan memilih secara visual.',
                keywords: 'wheel spinner, roda undian, spin the wheel, spin wheel, roda roulette, undian roda, wheel of fortune, virtual spinner, interactive wheel, spin the wheel online'
            },
            'tool-bracket.html': {
                title: 'Tournament Bracket Generator - Pasangan Kompetisi',
                description: 'Buat pasangan pertandingan untuk kompetisi olahraga, tournament games, dan liga. Generator bracket otomatis gratis.',
                keywords: 'tournament bracket, bracket generator, pairing kompetisi, buat bracket, tournament generator, buat pasangan pertandingan, liga biasa, knockout bracket, seeding'
            },
            'tool-duplicate-remover.html': {
                title: 'Duplicate Remover - Hapus Nama Duplikat Gratis',
                description: 'Hapus data nama duplikat secara otomatis. Bersihkan daftar dari data yang sama dengan mudah dan cepat.',
                keywords: 'duplicate remover, hapus duplikat, bersihkan data, remove duplicate, clean list, hapus data sama, deduplicate, remove duplicate names'
            },
            'tool-list-shuffler.html': {
                title: 'List Shuffler - Acak Daftar Nama Gratis',
                description: 'Acak urutan daftar item atau nama secara cepat dan fair. Cocok untuk mengurutkan ulang peserta atau anggota.',
                keywords: 'list shuffler, acak daftar, shuffle list, acak urutan, shuffle names, randomize list, acak list, urutkan ulang, random shuffle'
            },
            'tool-leader.html': {
                title: 'Random Leader Picker - Pilih Ketua Gratis',
                description: 'Pilih chairman, leader, atau penanggung jawab tim secara acak, cepat, adil, dan transparan. Gratis tanpa login.',
                keywords: 'random leader picker, pilih ketua, pick leader, choose leader, chairman picker, random leader, pilih pemimpin, acak pemimpin, leader election'
            },
            'tool-number.html': {
                title: 'Random Number Generator - Angka Acak Gratis',
                description: 'Generate angka acak dalam rentang yang Anda tentukan. Cocok untuk undian angka, lotre, dan pemilihan nomor.',
                keywords: 'random number generator, angka acak, generate angka, number randomizer, acak angka, lottery number, pick number, random integer, random digit'
            },
            'tool-password.html': {
                title: 'Password Generator - Buat Password Acak Gratis',
                description: 'Buat password acak yang kuat untuk meningkatkan keamanan akun Anda. Supports uppercase, lowercase, numbers, dan symbols.',
                keywords: 'password generator, buat password, password acak, random password, generate password, secure password, strong password, password maker, create password'
            },
            'tool-seat-generator.html': {
                title: 'Seat Generator - Acak Posisi Duduk Gratis',
                description: 'Acak posisi duduk berdasarkan baris dan kolom. Cocok untuk ujian, kelas, acara, dan seminar.',
                keywords: 'seat generator, acak kursi, posisi duduk, seat arrangement, acak tempat duduk, seating plan, arrange seats, random seating, bagi kursi'
            },
            'tool-team-balancer.html': {
                title: 'Team Balancer - Bagi Tim Seimbang Gratis',
                description: 'Bagi anggota ke beberapa tim dengan keseimbangan yang merata. Berdasarkan skill level untuk tim yang adil.',
                keywords: 'team balancer, bagi tim, balance team, buat tim otomatis, bagi kelompok adil, team maker, group balancer, equal teams, tim seimbang'
            },
            'tool-color.html': {
                title: 'Random Color Generator - Warna Acak Gratis',
                description: 'Generate warna acak untuk inspirasi desain, branding, dan Palet warna. Supports HEX, RGB, dan HSL.',
                keywords: 'random color generator, warna acak, color generator, generate color, pick color, random colour, color picker, hex color, color palette, warna random'
            }
        };

        return pageConfigs[page] || {
            title: page.replace('.html', '').replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase()),
            description: '',
            keywords: ''
        };
    }

    /**
     * Inject dynamic SEO tags into the page
     */
    function injectSEO() {
        const config = getConfig();
        const pageData = getPageData();
        const currentUrl = getCurrentPageUrl();

        // Update document title
        if (pageData.title && pageData.title !== config.siteName) {
            document.title = pageData.title + ' | ' + config.siteName;
        } else {
            document.title = config.siteName;
        }

        // Helper function to update or create meta tag
        function updateMeta(name, content, isProperty) {
            if (!content) return;

            let meta;
            if (isProperty) {
                meta = document.querySelector('meta[property="' + name + '"]');
            } else {
                meta = document.querySelector('meta[name="' + name + '"]');
            }

            if (!meta) {
                meta = document.createElement('meta');
                if (isProperty) {
                    meta.setAttribute('property', name);
                } else {
                    meta.setAttribute('name', name);
                }
                document.head.appendChild(meta);
            }
            meta.setAttribute('content', content);
        }

        // Helper function to update or create link tag
        function updateLink(rel, href, attribute) {
            attribute = attribute || 'href';
            let link = document.querySelector('link[rel="' + rel + '"]');

            if (!link) {
                link = document.createElement('link');
                link.setAttribute('rel', rel);
                document.head.appendChild(link);
            }
            link.setAttribute(attribute, href);
        }

        // Update description meta
        if (pageData.description) {
            updateMeta('description', pageData.description, false);
        }

        // Update keywords meta
        if (pageData.keywords) {
            updateMeta('keywords', pageData.keywords, false);
        }

        // Update Open Graph tags
        updateMeta('og:url', currentUrl, true);
        updateMeta('og:title', document.title, true);
        updateMeta('og:description', pageData.description, true);
        updateMeta('og:image', config.ogImage, true);
        updateMeta('og:site_name', config.siteName, true);
        updateMeta('og:locale', 'id_ID', true);

        // Update Twitter Card
        updateMeta('twitter:url', currentUrl, false);
        updateMeta('twitter:title', document.title, false);
        updateMeta('twitter:description', pageData.description, false);
        updateMeta('twitter:image', config.ogImage, false);

        // Update canonical URL only for non-homepage pages
        // Skip for homepage to avoid redirect issues
        if (!currentUrl.endsWith('/') && !currentUrl.endsWith('/index.html')) {
            updateLink('canonical', currentUrl);
        }

        // Update theme-color
        updateMeta('theme-color', '#020617', false);

        console.log('Dynamic SEO loaded for:', config.siteName, '- Domain:', config.domain);
    }

    // Run when DOM is ready
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', injectSEO);
    } else {
        injectSEO();
    }

    // Expose global function to update SEO (can be called after config change)
    window.updateDynamicSEO = injectSEO;

})();

