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)