let selectedFile = null; document.addEventListener('DOMContentLoaded', () => { const form = document.getElementById('analysisForm'); const fileInput = document.getElementById('fileInput'); const textInput = document.getElementById('textInput'); const textClaim = document.getElementById('textClaim'); const dropZone = document.getElementById('dropZone'); const fileLabel = document.getElementById('fileLabel'); if (!form) return; const resetFileState = () => { selectedFile = null; fileInput.value = ''; fileLabel.textContent = 'Drop media here or click to upload'; dropZone.classList.remove('upload-active'); }; fileInput.addEventListener('change', () => { if (fileInput.files.length > 0) { selectedFile = fileInput.files[0]; fileLabel.innerHTML = `Ready: ${selectedFile.name}`; dropZone.classList.add('upload-active'); textInput.value = ''; } else { resetFileState(); } }); textInput.addEventListener('input', () => { if (textInput.value.trim().length > 0) { resetFileState(); } }); form.addEventListener('submit', async (event) => { event.preventDefault(); const resultBox = document.getElementById('resultBox'); const loader = document.getElementById('loader'); if (!textInput.value.trim() && !selectedFile && !textClaim.value.trim()) { resultBox.innerHTML = '
Please provide a media file, a URL, or a text claim.
'; return; } resultBox.innerHTML = ''; loader.classList.remove('hidden'); const formData = new FormData(); if (selectedFile) formData.append('file', selectedFile); if (textInput.value.trim()) formData.append('input', textInput.value.trim()); if (textClaim.value.trim()) formData.append('text_claim', textClaim.value.trim()); try { const response = await fetch('/analyze', { method: 'POST', body: formData, headers: { 'X-Requested-With': 'XMLHttpRequest' } }); const data = await response.json(); loader.classList.add('hidden'); if (response.status === 401) { window.location.href = '/login'; return; } if (!response.ok || data.error) { resultBox.innerHTML = `
Error: ${data.error || 'Analysis failed.'}
`; return; } const sourcesHtml = (data.context_sources || []).length ? `
Context sources
` : ''; const score = Number(data.confidence || 0); const verdict = String(data.verdict || 'Unknown'); const verdictClass = verdict.toLowerCase().includes('fake') ? 'text-danger' : verdict.toLowerCase().includes('authentic') ? 'text-success' : 'text-warning'; resultBox.innerHTML = `
Analysis complete

${verdict}

${data.reasoning || ''}

${score}%
${sourcesHtml}
Open saved report
`; const anotherBtn = document.getElementById('startAnotherBtn'); if (anotherBtn) { anotherBtn.addEventListener('click', () => { form.reset(); resetFileState(); resultBox.innerHTML = ''; }); } } catch (err) { loader.classList.add('hidden'); resultBox.innerHTML = `
Server error: ${err}
`; } }); });