(function() {
    var dataEl = document.getElementById('data-site-analytics');
    var data = dataEl ? JSON.parse(dataEl.textContent) : {};
    var analyticsData = data.analytics || [];
    var days = data.days || 7;
    var analyticsUrl = data.analyticsUrl || '';

    // Build a simple bar chart from the analytics data
    function renderChart(data, days) {
        const svg = document.getElementById('chart');
        if (!data || data.length === 0) {
            svg.innerHTML = '<text x="50%" y="50%" text-anchor="middle" fill="#999">No data yet</text>';
            return;
        }

        const container = document.getElementById('chartContainer');
        const width = container.clientWidth;
        const height = 200;
        const pad = { top: 20, right: 20, bottom: 40, left: 50 };
        const chartW = width - pad.left - pad.right;
        const chartH = height - pad.top - pad.bottom;

        const maxVal = Math.max(...data.map(d => d.submission_count), 1);
        const barW = Math.max(chartW / data.length - 4, 4);

        let html = '';

        // Y-axis gridlines
        for (let i = 0; i <= 4; i++) {
            const y = pad.top + (chartH / 4) * i;
            const val = Math.round(maxVal * (1 - i / 4));
            html += `<line x1="${pad.left}" y1="${y}" x2="${width - pad.right}" y2="${y}" class="chart-axis"/>`;
            html += `<text x="${pad.left - 8}" y="${y + 4}" text-anchor="end" class="chart-label">${val}</text>`;
        }

        // Bars
        data.forEach((d, i) => {
            const x = pad.left + (chartW / data.length) * i + 2;
            const h = (d.submission_count / maxVal) * chartH;
            const y = pad.top + chartH - h;

            // Clean submissions bar
            html += `<rect x="${x}" y="${y}" width="${barW}" height="${h}" class="chart-bar" rx="2"/>`;

            // Spam bar (stacked on top)
            if (d.spam_count > 0) {
                const sh = (d.spam_count / maxVal) * chartH;
                html += `<rect x="${x}" y="${y}" width="${barW}" height="${sh}" class="chart-bar-spam" rx="2" opacity="0.6"/>`;
            }

            // X-axis label (every nth label to avoid overlap)
            const step = Math.max(1, Math.floor(data.length / 10));
            if (i % step === 0 || i === data.length - 1) {
                html += `<text x="${x + barW / 2}" y="${height - 10}" text-anchor="middle" class="chart-label">${d.day.slice(5)}</text>`;
            }
        });

        svg.innerHTML = html;
    }

    renderChart(analyticsData, days);

    // Impressions vs submissions chart
    function renderImpChart(data) {
        const svg = document.getElementById('impChart');
        if (!data || data.length === 0) {
            svg.innerHTML = '<text x="50%" y="50%" text-anchor="middle" fill="#999">No impression data yet</text>';
            return;
        }

        const container = document.getElementById('impChartContainer');
        const width = container.clientWidth;
        const height = 200;
        const pad = { top: 20, right: 20, bottom: 40, left: 50 };
        const chartW = width - pad.left - pad.right;
        const chartH = height - pad.top - pad.bottom;

        const maxVal = Math.max(...data.map(d => Math.max(d.impressions, d.submissions)), 1);
        const barW = Math.max(chartW / data.length - 6, 4);

        let html = '';

        // Y-axis gridlines
        for (let i = 0; i <= 4; i++) {
            const y = pad.top + (chartH / 4) * i;
            const val = Math.round(maxVal * (1 - i / 4));
            html += `<line x1="${pad.left}" y1="${y}" x2="${width - pad.right}" y2="${y}" class="chart-axis"/>`;
            html += `<text x="${pad.left - 8}" y="${y + 4}" text-anchor="end" class="chart-label">${val}</text>`;
        }

        // Bars (grouped)
        data.forEach((d, i) => {
            const groupX = pad.left + (chartW / data.length) * i + 2;

            // Impressions bar
            const impH = (d.impressions / maxVal) * chartH;
            const impY = pad.top + chartH - impH;
            html += `<rect x="${groupX}" y="${impY}" width="${barW}" height="${impH}" class="chart-bar-imp" rx="2"/>`;

            // Submissions bar
            const subH = (d.submissions / maxVal) * chartH;
            const subY = pad.top + chartH - subH;
            html += `<rect x="${groupX + barW + 1}" y="${subY}" width="${barW}" height="${subH}" class="chart-bar" rx="2"/>`;

            // X-axis labels
            const step = Math.max(1, Math.floor(data.length / 10));
            if (i % step === 0 || i === data.length - 1) {
                html += `<text x="${groupX + barW}" y="${height - 10}" text-anchor="middle" class="chart-label">${d.day.slice(5)}</text>`;
            }
        });

        svg.innerHTML = html;
    }

    const impData = data.impData || [];
    if (impData.length > 0) {
        renderImpChart(impData);
    }

    window.loadAnalytics = function(days) {
        window.location.href = analyticsUrl + '?days=' + days;
    };
})();