/**
 * assets/js/distribution.js
 * Script principal para o Módulo de Distribuição 1MZ/WeOne.
 * Gere: Dashboard, Wizard de Criação, Validações e AJAX.
 */

document.addEventListener('DOMContentLoaded', function() {

    // HOTFIX MOBILE FINAL: marca a página e liberta containers do tema no telemóvel.
    const distroRoot = document.querySelector('.distro-dashboard, .distro-analytics-container, .distro-wizard-container, .distro-single-view, .distro-list-container, .distro-paywall-container, .rmbz-wizard-v2, .rmbz-fullbleed');
    if (distroRoot) {
        document.body.classList.add('rmbz-distro-mobile');
        if (window.matchMedia && window.matchMedia('(max-width: 768px)').matches) {
            let el = distroRoot.parentElement;
            let guard = 0;
            while (el && el !== document.body && guard < 8) {
                el.classList.add('rmbz-distro-mobile-parent');
                el = el.parentElement;
                guard++;
            }
        }
    }

    // ==========================================================================
    // 1. DASHBOARD & ANIMAÇÕES
    // ==========================================================================

    // Animação de entrada suave para os cards de lançamento
    const cards = document.querySelectorAll('.release-card');
    if (cards.length > 0) {
        cards.forEach((card, index) => {
            card.style.opacity = '0';
            card.style.transform = 'translateY(20px)';
            // Delay progressivo
            setTimeout(() => {
                card.style.transition = 'all 0.4s ease';
                card.style.opacity = '1';
                card.style.transform = 'translateY(0)';
            }, index * 50); // 50ms entre cada card
        });
    }

    // ==========================================================================
    // 2. WIZARD DE CRIAÇÃO (MULTISTEP)
    // ==========================================================================

    const wizardForm = document.getElementById('distro-wizard-form');
    
    if (wizardForm) {
        
        // --- A. Lógica de "Salvar e Continuar" do Passo 1 ---
        const btnSaveStep1 = document.getElementById('btn-save-step-1');
        
        if (btnSaveStep1) {
            btnSaveStep1.addEventListener('click', function(e) {
                e.preventDefault();
                
                // Validação Simples
                const titleInput = document.getElementById('release_title');
                if (!titleInput.value.trim()) {
                    alert('Por favor, preencha o Título do Lançamento.');
                    titleInput.focus();
                    return;
                }

                // Feedback Visual
                const originalText = btnSaveStep1.innerText;
                btnSaveStep1.innerText = 'A guardar...';
                btnSaveStep1.style.opacity = '0.7';
                btnSaveStep1.disabled = true;

                // Preparar Dados para AJAX
                const formData = new FormData(wizardForm);
                // Adicionar ação e nonce se não estiverem no form
                if (!formData.has('action')) formData.append('action', 'onemz_save_release_draft');
                if (typeof rmbz_distro_vars !== 'undefined') {
                    formData.append('nonce', rmbz_distro_vars.nonce);
                }

                // Enviar via AJAX (Fetch API)
                const ajaxUrl = (typeof rmbz_distro_vars !== 'undefined') ? rmbz_distro_vars.ajax_url : '/wp-admin/admin-ajax.php';

                fetch(ajaxUrl, {
                    method: 'POST',
                    body: formData
                })
                .then(response => response.json())
                .then(data => {
                    if (data.success) {
                        // Sucesso!
                        btnSaveStep1.innerText = 'SALVO ✓';
                        
                        // Atualizar o ID oculto caso seja um novo rascunho
                        if (data.data.release_id) {
                            const hiddenId = document.getElementById('release_id_hidden');
                            if (hiddenId) hiddenId.value = data.data.release_id;
                        }

                        // Avançar para o Passo 2
                        setTimeout(() => {
                            btnSaveStep1.innerText = originalText;
                            btnSaveStep1.disabled = false;
                            btnSaveStep1.style.opacity = '1';
                            
                            goToStep(2);
                        }, 500);

                    } else {
                        // Erro do PHP
                        alert('Erro ao salvar: ' + (data.data || 'Tente novamente.'));
                        btnSaveStep1.innerText = originalText;
                        btnSaveStep1.disabled = false;
                        btnSaveStep1.style.opacity = '1';
                    }
                })
                .catch(error => {
                    console.error('Erro:', error);
                    alert('Erro de conexão. Verifique sua internet.');
                    btnSaveStep1.innerText = originalText;
                    btnSaveStep1.disabled = false;
                    btnSaveStep1.style.opacity = '1';
                });
            });
        }

        // --- B. Navegação Manual (Acordeão) ---
        // Permite clicar no cabeçalho para abrir/fechar se o passo estiver desbloqueado
        const stepHeaders = document.querySelectorAll('.step-header');
        stepHeaders.forEach(header => {
            header.addEventListener('click', function() {
                const parentStep = this.parentElement;
                
                // Só abre se tiver a classe 'step-unlocked' OU for o primeiro passo
                if (parentStep.classList.contains('step-unlocked') || parentStep.id === 'step-1') {
                    // Fecha todos os outros
                    document.querySelectorAll('.wizard-step').forEach(s => s.classList.remove('active'));
                    // Abre este
                    parentStep.classList.add('active');
                }
            });
        });

    } // Fim if(wizardForm)

});

// ==========================================================================
// 3. FUNÇÕES GLOBAIS DE NAVEGAÇÃO
// ==========================================================================

/**
 * Avança para um passo específico do Wizard.
 * @param {number} stepNumber - O número do passo (1, 2, 3 ou 4).
 */
function nextStep(stepNumber) {
    goToStep(stepNumber);
}

function goToStep(stepNumber) {
    // 1. Fechar todos os passos abertos
    document.querySelectorAll('.wizard-step').forEach(s => s.classList.remove('active'));
    
    // 2. Selecionar o próximo passo
    const nextStepEl = document.getElementById('step-' + stepNumber);
    
    if (nextStepEl) {
        // 3. Desbloquear visualmente e abrir
        nextStepEl.classList.remove('step-locked');
        nextStepEl.classList.add('step-unlocked', 'active');
        
        // 4. Scroll suave até o topo do novo passo
        nextStepEl.scrollIntoView({ behavior: 'smooth', block: 'center' });
        
        // 5. Atualizar o contador no topo (ex: "2 / 4")
        const counter = document.querySelector('.progress-indicator .pill');
        if (counter) {
            counter.innerText = (stepNumber - 1) + ' / 4';
        }
    }
}