<<<<<<< HEAD function qs(s,r=document){return r.querySelector(s)}function qsa(s,r=document){return Array.from(r.querySelectorAll(s))}function safeValue(form,name){const el=form.elements[name];if(!el)return'';if(el.type==='file')return el.files&&el.files.length?el.files[0].name:'';if(el.type==='checkbox')return el.checked?'yes':'';return el.value||''}function collectCase(form){const type=form.dataset.type||safeValue(form,'applicationType')||'personal';const bankNames=['swedbank','seb','lhv','coop','luminor','citadele'];return{applicationType:type,firstName:safeValue(form,'firstName'),lastName:safeValue(form,'lastName'),companyName:safeValue(form,'companyName'),loanAmount:safeValue(form,'loanAmount'),loanPurpose:safeValue(form,'loanPurpose')||safeValue(form,'companyLoanPurpose'),submittedAt:new Date().toISOString(),banks:bankNames.map(name=>({name,account:!!form.elements[name+'Account']?.checked,iban:safeValue(form,name+'Iban'),statement:safeValue(form,name+'Statement')}))}}function setupForm(){const form=qs('#applicationForm');if(!form)return;qsa('[data-jump]').forEach(btn=>btn.addEventListener('click',()=>{const target=document.getElementById(btn.dataset.jump);if(target)target.scrollIntoView({behavior:'smooth',block:'start'});qsa('.sideNav button').forEach(b=>b.classList.remove('active'));btn.classList.add('active')}));form.addEventListener('submit',async event=>{event.preventDefault();const errorBox=qs('#formError');if(errorBox){errorBox.textContent='';errorBox.classList.remove('show')}if(!form.reportValidity()){if(errorBox){errorBox.textContent='Täida enne kohustuslikud väljad ja kinnita nõusolek.';errorBox.classList.add('show')}return}const data=collectCase(form);localStorage.setItem('aimoneyflowCase',JSON.stringify(data));const body=new FormData(form);if(!body.get('form-name'))body.set('form-name',form.getAttribute('name')||'aimoneyflow-intake');const submitButton=form.querySelector('button[type="submit"]');if(submitButton){submitButton.disabled=true;submitButton.textContent='Edastan...'}try{if(location.protocol!=='file:'){const response=await fetch('/',{method:'POST',body});if(!response.ok)throw new Error('submit failed')}window.location.href='/submitted.html?type='+encodeURIComponent(data.applicationType)}catch(err){if(errorBox){errorBox.textContent='Edastamine ei õnnestunud. Proovi uuesti või võta halduriga ühendust.';errorBox.classList.add('show')}if(submitButton){submitButton.disabled=false;submitButton.textContent='Edasta haldurile'}}})}function getCase(){try{return JSON.parse(localStorage.getItem('aimoneyflowCase')||'{}')}catch(e){return{}}}function setupSubmitted(){const box=qs('[data-submitted-summary]');if(!box)return;const data=getCase();const type=data.applicationType==='company'?'Ettevõtte taotlus':'Eraisiku taotlus';const name=data.applicationType==='company'?(data.companyName||'Ettevõte'):([data.firstName,data.lastName].filter(Boolean).join(' ')||'Klient');box.innerHTML=''+type+''+name+''+(data.loanAmount||'Summa täpsustamisel')+''}function setupDashboard(){const data=getCase();const isCompany=data.applicationType==='company';const title=qs('[data-case-title]');const type=qs('[data-case-type]');const task=qs('[data-dynamic-task]');const name=isCompany?(data.companyName||'Demo Ettevõte OÜ'):([data.firstName,data.lastName].filter(Boolean).join(' ')||'Demo Klient');if(title)title.textContent=name;qsa('[data-case-amount]').forEach(el=>el.textContent=data.loanAmount||'50 000 €');if(type)type.textContent=isCompany?'Ettevõtte taotlus':'Eraisiku taotlus';if(task&&data.loanPurpose)task.textContent='Eesmärk: '+data.loanPurpose;if(!isCompany){qsa('[data-company-only-label]').forEach(el=>el.textContent='Lisa sissetuleku tõend');qsa('[data-company-only-detail]').forEach(el=>el.textContent='Palgatõend või konto väljavõte on puudu.')}}document.addEventListener('DOMContentLoaded',()=>{setupForm();setupSubmitted();setupDashboard()}); ======= function qs(sel, root=document){ return root.querySelector(sel); } function qsa(sel, root=document){ return Array.from(root.querySelectorAll(sel)); } function setActiveButton(button){ qsa('.sideNav button').forEach(b => b.classList.remove('active')); if(button) button.classList.add('active'); } function jumpToSection(id, button){ const target = document.getElementById(id); if(target){ target.scrollIntoView({behavior:'smooth', block:'start'}); } setActiveButton(button); } function safeValue(form, name){ const el = form.elements[name]; if(!el) return ''; if(el.type === 'file') return el.files && el.files.length ? el.files[0].name : ''; if(el.type === 'checkbox') return el.checked ? 'yes' : ''; return el.value || ''; } function collectCase(form){ const type = form.dataset.type || safeValue(form, 'applicationType') || 'personal'; const bankNames = ['swedbank','seb','lhv','coop','luminor','citadele']; const banks = bankNames.map(name => ({ name, account: !!form.elements[name + 'Account']?.checked, iban: safeValue(form, name + 'Iban'), statement: safeValue(form, name + 'Statement') })); return { applicationType: type, firstName: safeValue(form, 'firstName'), lastName: safeValue(form, 'lastName'), companyName: safeValue(form, 'companyName'), companyRegCode: safeValue(form, 'companyRegCode'), vatNo: safeValue(form, 'vatNo'), businessActivity: safeValue(form, 'businessActivity'), companyTurnover: safeValue(form, 'companyTurnover'), companyProfit: safeValue(form, 'companyProfit'), employees: safeValue(form, 'employees'), companyMainBank: safeValue(form, 'companyMainBank'), loanAmount: safeValue(form, 'loanAmount'), loanProduct: safeValue(form, 'loanProduct'), loanPurpose: safeValue(form, 'loanPurpose') || safeValue(form, 'companyLoanPurpose'), netIncome: safeValue(form, 'netIncome'), submittedAt: new Date().toISOString(), banks }; } function setupApplicationForm(){ const form = qs('#applicationForm'); if(!form) return; qsa('[data-jump]').forEach(btn => btn.addEventListener('click', () => jumpToSection(btn.dataset.jump, btn))); form.addEventListener('submit', (event) => { const errorBox = qs('#formError'); if(!form.reportValidity()){ event.preventDefault(); if(errorBox){ errorBox.textContent = 'Täida enne kohustuslikud väljad ja kinnita nõusolek.'; errorBox.classList.add('show'); } return; } const data = collectCase(form); localStorage.setItem('aimoneyflowCase', JSON.stringify(data)); const isLocal = ['localhost', '127.0.0.1', ''].includes(window.location.hostname) || window.location.protocol === 'file:'; if(isLocal){ event.preventDefault(); window.location.href = 'submitted.html?type=' + encodeURIComponent(data.applicationType); } }); } function getCase(){ try { return JSON.parse(localStorage.getItem('aimoneyflowCase') || '{}'); } catch(e){ return {}; } } function setupSubmitted(){ const box = qs('[data-submitted-summary]'); if(!box) return; const data = getCase(); const type = data.applicationType === 'company' ? 'Ettevõtte taotlus' : 'Eraisiku taotlus'; const name = data.applicationType === 'company' ? (data.companyName || 'Ettevõte') : ([data.firstName, data.lastName].filter(Boolean).join(' ') || 'Klient'); box.innerHTML = `${type}${name}${data.loanAmount || 'Summa täpsustamisel'}`; } function setupDashboard(){ const data = getCase(); const title = qs('[data-case-title]'); const amount = qs('[data-case-amount]'); const type = qs('[data-case-type]'); const task = qs('[data-dynamic-task]'); const name = data.applicationType === 'company' ? (data.companyName || 'Demo Ettevõte OÜ') : ([data.firstName, data.lastName].filter(Boolean).join(' ') || 'Demo Klient'); if(title) title.textContent = name; if(amount) amount.textContent = data.loanAmount || '50 000 €'; if(type) type.textContent = data.applicationType === 'company' ? 'Ettevõtte taotlus' : 'Eraisiku taotlus'; if(task && data.loanPurpose) task.textContent = 'Eesmärk: ' + data.loanPurpose; const detail = qs('[data-case-detail]'); if(detail){ if(data.applicationType === 'company'){ const parts = [data.companyRegCode && `registrikood ${data.companyRegCode}`, data.companyTurnover && `12 kuu käive ${data.companyTurnover}`, data.companyMainBank && `põhipank ${data.companyMainBank}`].filter(Boolean); detail.textContent = parts.length ? parts.join(' · ') : 'Ettevõtte rahastuse case'; } else { const parts = [data.loanProduct, data.netIncome && `netosissetulek ${data.netIncome}`].filter(Boolean); detail.textContent = parts.length ? parts.join(' · ') : 'Eraisiku laenuteekond'; } } qsa('.bottom-nav button').forEach(btn => btn.addEventListener('click', () => { qsa('.bottom-nav button').forEach(b => b.classList.remove('active')); btn.classList.add('active'); })); } document.addEventListener('DOMContentLoaded', () => { setupApplicationForm(); setupSubmitted(); setupDashboard(); }); >>>>>>> a001834 (Finish AI Money Flow client portal flow)