<?php
// admin/inc/footer.php

// Verifica se há tentativa de acesso direto
if (!defined('BASE_PATH')) {
    exit('Acesso direto não permitido');
}
?>

    </div> <!-- Fechamento da div.content -->
</div> <!-- Fechamento da div.main-container -->

<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

<!-- Custom JS para funcionalidades do painel administrativo -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // Elementos
    const sidebar = document.getElementById('sidebar');
    const mainContainer = document.getElementById('mainContainer');
    const sidebarCollapseToggle = document.getElementById('sidebarCollapseToggle');
    const mobileMenuToggle = document.getElementById('mobileMenuToggle');
    const userDropdownToggle = document.getElementById('userDropdownToggle');
    const userDropdownMenu = document.getElementById('userDropdownMenu');
    
    // Verifica se há preferência do usuário salva
    const isSidebarCollapsed = localStorage.getItem('sidebarCollapsed') === 'true';
    
    // Aplica estado inicial do sidebar com base na preferência
    if (isSidebarCollapsed) {
        sidebar.classList.add('sidebar-collapsed');
        mainContainer.classList.add('sidebar-collapsed-main');
        if (sidebarCollapseToggle) {
            sidebarCollapseToggle.innerHTML = '<i class="fas fa-chevron-right"></i>';
        }
    }
    
    // Toggle do sidebar (desktop)
    if (sidebarCollapseToggle) {
        sidebarCollapseToggle.addEventListener('click', function() {
            sidebar.classList.toggle('sidebar-collapsed');
            mainContainer.classList.toggle('sidebar-collapsed-main');
            
            // Muda o ícone do botão
            const isCollapsed = sidebar.classList.contains('sidebar-collapsed');
            sidebarCollapseToggle.innerHTML = isCollapsed ? 
                '<i class="fas fa-chevron-right"></i>' : 
                '<i class="fas fa-chevron-left"></i>';
            
            // Salva a preferência do usuário
            localStorage.setItem('sidebarCollapsed', isCollapsed);
        });
    }
    
    // Toggle do menu mobile
    if (mobileMenuToggle) {
        mobileMenuToggle.addEventListener('click', function() {
            sidebar.classList.toggle('show');
            
            // Adiciona/remove overlay quando o menu está aberto no mobile
            toggleOverlay(sidebar.classList.contains('show'));
        });
    }
    
    // Função para gerenciar overlay no mobile
    function toggleOverlay(show) {
        const overlay = document.getElementById('sidebarOverlay');
        
        if (!overlay && show) {
            // Cria overlay se não existir
            const newOverlay = document.createElement('div');
            newOverlay.id = 'sidebarOverlay';
            newOverlay.className = 'sidebar-overlay';
            newOverlay.style.position = 'fixed';
            newOverlay.style.top = '0';
            newOverlay.style.left = '0';
            newOverlay.style.width = '100%';
            newOverlay.style.height = '100%';
            newOverlay.style.background = 'rgba(0,0,0,0.5)';
            newOverlay.style.zIndex = '999';
            newOverlay.style.opacity = '0';
            newOverlay.style.transition = 'opacity 0.3s';
            
            // Fecha sidebar ao clicar no overlay
            newOverlay.addEventListener('click', function() {
                sidebar.classList.remove('show');
                toggleOverlay(false);
            });
            
            document.body.appendChild(newOverlay);
            
            // Força reflow para animação
            setTimeout(() => {
                newOverlay.style.opacity = '1';
            }, 10);
            
        } else if (overlay && !show) {
            // Remove overlay com animação
            overlay.style.opacity = '0';
            setTimeout(() => {
                if (overlay.parentNode) {
                    overlay.parentNode.removeChild(overlay);
                }
            }, 300);
        }
    }
    
    // Dropdown do usuário
    if (userDropdownToggle && userDropdownMenu) {
        userDropdownToggle.addEventListener('click', function(e) {
            e.stopPropagation();
            userDropdownMenu.classList.toggle('show');
        });
        
        // Fecha dropdown ao clicar fora
        document.addEventListener('click', function() {
            userDropdownMenu.classList.remove('show');
        });
        
        // Previne fechamento ao clicar dentro do dropdown
        userDropdownMenu.addEventListener('click', function(e) {
            e.stopPropagation();
        });
    }
    
    // Fecha alertas
    document.querySelectorAll('.btn-close').forEach(button => {
        button.addEventListener('click', function() {
            const alert = this.closest('.alert');
            if (alert) {
                alert.remove();
            }
        });
    });
    
    // Adiciona responsividade adicional
    function handleResize() {
        if (window.innerWidth < 992) {
            sidebar.classList.remove('sidebar-collapsed');
            mainContainer.classList.remove('sidebar-collapsed-main');
        }
    }
    
    // Checa ao carregar e ao redimensionar
    handleResize();
    window.addEventListener('resize', handleResize);
});
</script>

<!-- Pixel IntegraOn -->
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
    // Função para salvar parâmetros UTM na sessão
    function saveUtmParamsToSession() {
        const urlParams = new URLSearchParams(window.location.search);
        const utmParams = {};
        let hasUtmParams = false;
        
        // Coleta todos os parâmetros UTM
        ['utm_campaign', 'utm_source', 'utm_medium', 'utm_term', 'utm_content'].forEach(param => {
            if (urlParams.has(param)) {
                utmParams[param] = urlParams.get(param);
                hasUtmParams = true;
            }
        });
        
        // Se tem parâmetros UTM, salva na sessão via AJAX
        if (hasUtmParams && utmParams.utm_campaign) {
            fetch('<?php echo SITE_URL; ?>/save-utm.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-Requested-With': 'XMLHttpRequest'
                },
                body: JSON.stringify(utmParams)
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    console.log('Parâmetros UTM salvos na sessão:', utmParams);
                } else {
                    console.warn('Erro ao salvar UTM na sessão:', data.error);
                }
            })
            .catch(error => {
                console.error('Erro ao salvar UTM na sessão:', error);
            });
        }
    }
    
    // Função principal do pixel
    function initPixelIntegraOn() {
        const urlParams = new URLSearchParams(window.location.search);
        
        // Verifica se tem utm_campaign na URL
        if (urlParams.has('utm_campaign')) {
            console.log('Pixel IntegraOn: utm_campaign detectado ->', urlParams.get('utm_campaign'));
            
            const endpoint = '<?php echo SITE_URL; ?>/pixel-endpoint.php';
            
            // Aguarda 2 segundos antes de enviar (conforme o plugin original)
            setTimeout(function() {
                fetch(endpoint, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'X-Requested-With': 'XMLHttpRequest'
                    },
                    body: JSON.stringify({
                        url: window.location.search,
                        page_url: window.location.href,
                        referrer: document.referrer,
                        timestamp: Date.now(),
                        user_agent: navigator.userAgent,
                        page_title: document.title
                    })
                })
                .then(function(response) {
                    return response.json();
                })
                .then(function(data) {
                    if (data.success) {
                        console.log('Pixel IntegraOn enviado com sucesso:', data);
                        
                        // Armazena dados no localStorage para uso posterior
                        if (typeof(Storage) !== "undefined") {
                            const pixelData = {
                                campaign: urlParams.get('utm_campaign'),
                                source: urlParams.get('utm_source'),
                                medium: urlParams.get('utm_medium'),
                                term: urlParams.get('utm_term'),
                                content: urlParams.get('utm_content'),
                                timestamp: Date.now(),
                                event_id: data.event_id,
                                page_url: window.location.href
                            };
                            localStorage.setItem('integraon_pixel_data', JSON.stringify(pixelData));
                            
                            // Remove dados antigos (mais de 24h)
                            const lastCleanup = localStorage.getItem('integraon_last_cleanup');
                            const now = Date.now();
                            if (!lastCleanup || (now - parseInt(lastCleanup)) > 86400000) { // 24h
                                localStorage.setItem('integraon_last_cleanup', now.toString());
                            }
                        }
                        
                        // Dispara evento customizado para outras integrações
                        const pixelEvent = new CustomEvent('integraonPixelSent', {
                            detail: {
                                campaign: urlParams.get('utm_campaign'),
                                eventId: data.event_id,
                                apiResponse: data.api_response
                            }
                        });
                        document.dispatchEvent(pixelEvent);
                        
                    } else {
                        console.warn('Erro no Pixel IntegraOn:', data.message);
                    }
                })
                .catch(function(error) {
                    console.error('Erro ao enviar Pixel IntegraOn:', error);
                });
            }, 2000);
        }
    }
    
    // Funções auxiliares para uso em outras páginas
    window.getPixelData = function() {
        if (typeof(Storage) !== "undefined") {
            const pixelData = localStorage.getItem('integraon_pixel_data');
            return pixelData ? JSON.parse(pixelData) : null;
        }
        return null;
    };
    
    window.clearPixelData = function() {
        if (typeof(Storage) !== "undefined") {
            localStorage.removeItem('integraon_pixel_data');
        }
    };
    
    window.sendCustomPixelEvent = function(eventType, value, additionalData) {
        const pixelData = window.getPixelData();
        if (!pixelData) return false;
        
        const endpoint = '<?php echo SITE_URL; ?>/pixel-endpoint.php';
        
        return fetch(endpoint, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
            },
            body: JSON.stringify({
                url: '?utm_campaign=' + pixelData.campaign + '&event_type=' + eventType,
                page_url: window.location.href,
                custom_event: {
                    type: eventType,
                    value: value || 1,
                    data: additionalData || {},
                    original_campaign: pixelData.campaign
                }
            })
        })
        .then(response => response.json())
        .then(data => {
            console.log('Evento customizado enviado:', eventType, data);
            return data;
        })
        .catch(error => {
            console.error('Erro ao enviar evento customizado:', error);
            return false;
        });
    };
    
    // Executa as funções
    saveUtmParamsToSession();
    initPixelIntegraOn();
    
    // Debug info no console (apenas se estiver em modo debug)
    <?php if (defined('DEBUG') && DEBUG): ?>
    console.group('Pixel IntegraOn Debug');
    console.log('URL atual:', window.location.href);
    console.log('Parâmetros URL:', new URLSearchParams(window.location.search).toString());
    console.log('Dados do pixel armazenados:', window.getPixelData());
    console.groupEnd();
    <?php endif; ?>
});

// Event listener para eventos customizados do pixel
document.addEventListener('integraonPixelSent', function(e) {
    // Aqui você pode adicionar lógica adicional quando o pixel é enviado
    console.log('Pixel IntegraOn enviado - Campanha:', e.detail.campaign);
});
</script>
<!-- /Pixel IntegraOn -->

<?php if (isset($useRichEditor) && $useRichEditor): ?>
<!-- CKEditor JS -->
<script src="https://cdn.ckeditor.com/ckeditor5/35.1.0/classic/ckeditor.js"></script>
<?php endif; ?>

<?php if (isset($useCharts) && $useCharts): ?>
<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<?php endif; ?>

<?php if (isset($additionalScripts)): ?>
<?php echo $additionalScripts; ?>
<?php endif; ?>

<!-- Scripts específicos para páginas que usam o pixel -->
<script>
// Funções auxiliares para integração com formulários
function trackFormSubmission(formType, formData) {
    if (window.sendCustomPixelEvent) {
        return window.sendCustomPixelEvent('form_submission', 1, {
            form_type: formType,
            form_data: formData,
            page: window.location.pathname
        });
    }
    return false;
}

function trackButtonClick(buttonId, buttonText) {
    if (window.sendCustomPixelEvent) {
        return window.sendCustomPixelEvent('button_click', 1, {
            button_id: buttonId,
            button_text: buttonText,
            page: window.location.pathname
        });
    }
    return false;
}

function trackPageView(pageType) {
    if (window.sendCustomPixelEvent) {
        return window.sendCustomPixelEvent('page_view', 1, {
            page_type: pageType,
            page_title: document.title,
            page: window.location.pathname
        });
    }
    return false;
}

// Auto-track para botões com classe especial
document.addEventListener('click', function(e) {
    if (e.target.classList.contains('track-pixel-click')) {
        const buttonId = e.target.id || 'unknown';
        const buttonText = e.target.textContent || e.target.value || 'unknown';
        trackButtonClick(buttonId, buttonText);
    }
});

// Auto-track para formulários com classe especial
document.addEventListener('submit', function(e) {
    if (e.target.classList.contains('track-pixel-form')) {
        const formType = e.target.dataset.formType || 'generic';
        const formData = new FormData(e.target);
        const formObj = {};
        formData.forEach((value, key) => {
            // Não inclui senhas ou dados sensíveis
            if (!key.toLowerCase().includes('password') && !key.toLowerCase().includes('senha')) {
                formObj[key] = value;
            }
        });
        trackFormSubmission(formType, formObj);
    }
});
</script>

</body>
</html>