// Configuração const CONFIG = { apiEndpoint: 'api.php' }; // Frases impactantes const frasesImpactantes = [ "O tempo não volta. Cada segundo perdido é uma oportunidade que se foi.", "Enquanto você desperdiça tempo, outros estão construindo seus sonhos.", "A vida é feita de escolhas. Quantas horas você desperdiçou nas suas?", "Tempo é o único recurso que você nunca poderá recuperar.", "Você está vivendo ou apenas existindo? Descubra quanto tempo perdeu.", "Cada minuto conta. Você tem consciência de onde os seus foram?", "O arrependimento vem quando percebemos quanto tempo jogamos fora.", "Sua vida em números pode ser assustadora. Você tem coragem de ver?" ]; // Dados das calculadoras const calculatorData = { cigarro: { title: 'Cigarros', icon: '', questions: [ { id: 'years', label: 'Há quantos anos você fuma?', type: 'number', placeholder: 'Ex: 10' }, { id: 'perDay', label: 'Quantos cigarros você fuma por dia?', type: 'number', placeholder: 'Ex: 20' } ], calculate: (data) => { const minutesPerCigarette = 5; const totalMinutes = data.years * 365 * data.perDay * minutesPerCigarette; return totalMinutes; } }, transito: { title: 'Trânsito', icon: '', questions: [ { id: 'years', label: 'Há quantos anos você pega trânsito diariamente?', type: 'number', placeholder: 'Ex: 5' }, { id: 'hoursPerDay', label: 'Quantas horas por dia você passa no trânsito?', type: 'number', placeholder: 'Ex: 2', step: '0.5' } ], calculate: (data) => { const workDaysPerYear = 250; const totalHours = data.years * workDaysPerYear * data.hoursPerDay; return totalHours * 60; } }, internet: { title: 'Internet', icon: '', questions: [ { id: 'years', label: 'Há quantos anos você usa internet regularmente?', type: 'number', placeholder: 'Ex: 15' }, { id: 'hoursPerDay', label: 'Quantas horas por dia você passa na internet?', type: 'number', placeholder: 'Ex: 6', step: '0.5' } ], calculate: (data) => { const totalHours = data.years * 365 * data.hoursPerDay; return totalHours * 60; } }, dormindo: { title: 'Dormindo', icon: '', questions: [ { id: 'age', label: 'Qual é a sua idade?', type: 'number', placeholder: 'Ex: 30' }, { id: 'hoursPerDay', label: 'Quantas horas você dorme por dia em média?', type: 'number', placeholder: 'Ex: 7', step: '0.5' } ], calculate: (data) => { const totalHours = data.age * 365 * data.hoursPerDay; return totalHours * 60; } }, trabalhando: { title: 'Trabalhando', icon: '', questions: [ { id: 'years', label: 'Há quantos anos você trabalha?', type: 'number', placeholder: 'Ex: 10' }, { id: 'hoursPerDay', label: 'Quantas horas por dia você trabalha em média?', type: 'number', placeholder: 'Ex: 8', step: '0.5' } ], calculate: (data) => { const workDaysPerYear = 250; const totalHours = data.years * workDaysPerYear * data.hoursPerDay; return totalHours * 60; } } }; let currentCalculator = null; let currentAuthMode = 'login'; // Inicialização document.addEventListener('DOMContentLoaded', () => { // Mostra frase aleatória const frase = frasesImpactantes[Math.floor(Math.random() * frasesImpactantes.length)]; document.getElementById('impactPhrase').textContent = frase; // Verifica se usuário está logado checkUserSession(); }); // Verifica sessão do usuário async function checkUserSession() { try { const response = await fetch('api.php?action=check_session'); const data = await response.json(); if (data.logged_in) { updateUIForLoggedUser(data.user); } } catch (error) { console.error('Erro ao verificar sessão:', error); } } // Atualiza UI para usuário logado function updateUIForLoggedUser(user) { const authButtons = document.getElementById('authButtons'); authButtons.innerHTML = `
${user.name || user.email} Sair
`; } // Abre calculadora function openCalculator(type) { currentCalculator = type; const data = calculatorData[type]; document.getElementById('calculatorTitle').textContent = data.title; let formHTML = '
'; data.questions.forEach(q => { formHTML += `
`; }); formHTML += '
'; document.getElementById('calculatorForm').innerHTML = formHTML; document.getElementById('calculatorModal').classList.add('active'); } // Calcula tempo function calculateTime(event) { event.preventDefault(); const formData = new FormData(event.target); const data = {}; for (let [key, value] of formData.entries()) { data[key] = parseFloat(value); } closeModal('calculatorModal'); showLoading(); const calculatorInfo = calculatorData[currentCalculator]; const totalMinutes = calculatorInfo.calculate(data); setTimeout(() => { updateLoadingText('Conferindo detalhes...'); setTimeout(() => { updateLoadingText('Pronto!'); setTimeout(() => { hideLoading(); showResult(totalMinutes, calculatorInfo); }, 800); }, 1500); }, 2000); } // Mostra resultado function showResult(totalMinutes, calculatorInfo) { const days = Math.floor(totalMinutes / (60 * 24)); const hours = Math.floor((totalMinutes % (60 * 24)) / 60); document.getElementById('resultIcon').innerHTML = calculatorInfo.icon; document.getElementById('resultValue').textContent = `${days} dias e ${hours} horas`; let message = `Você perdeu aproximadamente esse tempo ${currentCalculator === 'dormindo' ? 'dormindo' : calculatorInfo.title.toLowerCase()}`; if (days > 60) { message += ', caramba é muito tempo em!'; } else { message += '.'; } document.getElementById('resultMessage').textContent = message; document.getElementById('mainContent').classList.add('hidden'); document.getElementById('resultScreen').classList.add('active'); } // Volta para home function backToHome() { document.getElementById('resultScreen').classList.remove('active'); document.getElementById('mainContent').classList.remove('hidden'); window.scrollTo({ top: 0, behavior: 'smooth' }); } // Loading function showLoading() { document.getElementById('loadingScreen').classList.add('active'); } function hideLoading() { document.getElementById('loadingScreen').classList.remove('active'); } function updateLoadingText(text) { document.getElementById('loadingText').textContent = text; } // Modal de autenticação function openAuthModal(type) { currentAuthMode = type; const title = type === 'login' ? 'Entrar' : 'Criar Conta'; const buttonText = type === 'login' ? 'Entrar' : 'Cadastrar'; document.getElementById('authTitle').textContent = title; document.getElementById('authSubmitBtn').textContent = buttonText; document.getElementById('authModal').classList.add('active'); } function closeModal(modalId) { document.getElementById(modalId).classList.remove('active'); } // Autenticação com email/senha async function handleAuth(event) { event.preventDefault(); const email = document.getElementById('email').value; const password = document.getElementById('password').value; const formData = new FormData(); formData.append('action', currentAuthMode); formData.append('email', email); formData.append('password', password); try { const response = await fetch('api.php', { method: 'POST', body: formData }); const data = await response.json(); if (data.success) { closeModal('authModal'); updateUIForLoggedUser(data.user); alert(currentAuthMode === 'login' ? 'Login realizado com sucesso!' : 'Conta criada com sucesso!'); } else { alert(data.message || 'Erro ao processar solicitação'); } } catch (error) { console.error('Erro:', error); alert('Erro ao conectar com o servidor'); } } // Fechar modal ao clicar fora window.onclick = function(event) { if (event.target.classList.contains('modal')) { event.target.classList.remove('active'); } }