document.addEventListener('DOMContentLoaded', () => { // Navigation Logic const navLinks = document.querySelectorAll('.nav-links li'); const sections = document.querySelectorAll('main section'); navLinks.forEach(link => { link.addEventListener('click', () => { // Remove active class from all navLinks.forEach(l => l.classList.remove('active')); sections.forEach(s => { s.classList.add('hidden-section'); s.classList.remove('active-section'); }); // Add active to clicked link.classList.add('active'); const targetId = link.getAttribute('data-tab'); const targetSection = document.getElementById(targetId); targetSection.classList.remove('hidden-section'); setTimeout(() => targetSection.classList.add('active-section'), 10); }); }); // --- CONTRACT GENERATOR --- const btnGenerate = document.getElementById('btn-generate-contract'); const contractInput = document.getElementById('contract-input'); const contractResult = document.getElementById('contract-result'); const contractText = document.getElementById('contract-text'); const contractTrivia = document.getElementById('contract-trivia'); const triviaContent = document.getElementById('trivia-content'); btnGenerate.addEventListener('click', async () => { const text = contractInput.value.trim(); if (!text) return showToast('Please describe the agreement first.', 'error'); setLoading(btnGenerate, true); try { const resp = await fetch('/api/v1/contracts/generate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ user_request: text }) }); const data = await resp.json(); if (data.success) { contractResult.classList.remove('hidden'); contractText.innerHTML = marked.parse(data.data.contract); // Render Trivia if (data.data.legal_trivia && data.data.legal_trivia.trivia) { contractTrivia.classList.remove('hidden'); triviaContent.innerHTML = data.data.legal_trivia.trivia.map(t => `
`).join(''); } else { contractTrivia.classList.add('hidden'); } showToast('Contract generated successfully!'); } else { showToast(data.message || 'Error generating contract', 'error'); } } catch (e) { showToast('Connection failed', 'error'); } finally { setLoading(btnGenerate, false); } }); // --- SCHEME FINDER --- const btnFindSchemes = document.getElementById('btn-find-schemes'); const schemeInput = document.getElementById('scheme-input'); const schemesList = document.getElementById('schemes-list'); const schemesLoader = document.getElementById('schemes-loader'); btnFindSchemes.addEventListener('click', async () => { const profile = schemeInput.value.trim(); if (!profile) return showToast('Please enter a profile.', 'error'); schemesList.innerHTML = ''; schemesLoader.classList.remove('hidden'); try { const resp = await fetch('/api/v1/schemes/find', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ user_profile: profile }) }); const data = await resp.json(); if (data.success && data.data.schemes) { schemesList.innerHTML = data.data.schemes.map(s => ` `).join(''); } else { schemesList.innerHTML = 'No schemes found. Try a different description.
'; } } catch (e) { showToast('Search failed', 'error'); } finally { schemesLoader.classList.add('hidden'); } }); // --- DEMYSTIFIER --- const dropZone = document.getElementById('drop-zone'); const fileInput = document.getElementById('pdf-upload'); const analysisView = document.getElementById('analysis-view'); let currentSessionId = null; dropZone.addEventListener('click', () => fileInput.click()); fileInput.addEventListener('change', handleFileUpload); // Drag and Drop dropZone.addEventListener('dragover', (e) => { e.preventDefault(); dropZone.style.borderColor = 'var(--primary)'; }); dropZone.addEventListener('dragleave', (e) => { e.preventDefault(); dropZone.style.borderColor = 'var(--border)'; }); dropZone.addEventListener('drop', (e) => { e.preventDefault(); dropZone.style.borderColor = 'var(--border)'; if (e.dataTransfer.files.length) { handleFileUpload({ target: { files: e.dataTransfer.files } }); } }); async function handleFileUpload(e) { const file = e.target.files[0]; if (!file || file.type !== 'application/pdf') return showToast('Please upload a PDF', 'error'); // Show simplified loading dropZone.innerHTML = 'Analyzing Document...
'; const formData = new FormData(); formData.append('file', file); try { const resp = await fetch('/api/v1/demystify/upload', { method: 'POST', body: formData }); const data = await resp.json(); if (data.success) { currentSessionId = data.data.session_id; dropZone.classList.add('hidden'); analysisView.classList.remove('hidden'); document.getElementById('doc-summary').innerHTML = `${data.data.report.summary}
`; document.getElementById('doc-terms').innerHTML = data.data.report.key_terms.map(t => `or click to browse
'; dropZone.classList.remove('hidden'); } });