(function(){ // ===================== CONFIGURAZIONE ===================== var CONFIG = { // Gate unico cockpit (2026-09-02): lista Brevo dal registry lead_magnets, slug = source. leadAction: "https://arcasafe-dashboard.thewiseguy.it/api/leadmagnets/lead", privacyUrl: "https://arcasafe.eu/privacy-policy/", ctaUrl: "https://arcasafe.eu/contatti/", source: "nis2-dora-navigator" }; // =========================================================
var root = document.getElementById('asf-navigator'); var steps = root.querySelectorAll('.step'); var bar = root.querySelector('#asf-bar'); var cur = 0, TOTAL = 5; var state = {sector:'', size:'', supply:'', fin:''};
root.querySelector('#asf-priv').href = CONFIG.privacyUrl; root.querySelector('#asf-cta2').href = CONFIG.ctaUrl;
function show(n){ cur = n; steps.forEach(function(s){ s.classList.toggle('on', +s.dataset.step === n); }); bar.style.width = Math.min(n, TOTAL) / TOTAL * 100 + '%'; root.scrollIntoView({behavior:'smooth', block:'start'}); } root.querySelectorAll('label.opt').forEach(function(l){ l.addEventListener('click', function(){ var grp = l.querySelector('input').name; root.querySelectorAll('input[name="'+grp+'"]').forEach(function(i){ i.closest('.opt').classList.remove('sel'); }); l.classList.add('sel'); }); }); root.querySelector('#asf-sector').addEventListener('change', function(){ state.sector = this.value; });
function readRadios(){ var s = root.querySelector('input[name=size]:checked'); state.size = s?s.value:''; var su = root.querySelector('input[name=supply]:checked'); state.supply = su?su.value:''; var f = root.querySelector('input[name=fin]:checked'); state.fin = f?f.value:''; }
root.querySelectorAll('[data-next]').forEach(function(b){ b.addEventListener('click', function(){ readRadios(); if(cur===0 && !state.sector){ shake(b); return; } if(cur===1 && !state.size){ shake(b); return; } if(cur===2 && !state.supply){ shake(b); return; } if(cur===3){ if(!state.fin){ shake(b); return; } compute(); show(4); return; } show(cur+1); }); }); root.querySelectorAll('[data-prev]').forEach(function(b){ b.addEventListener('click', function(){ show(cur-1); }); }); root.querySelectorAll('[data-restart]').forEach(function(b){ b.addEventListener('click', function(){ state={sector:'',size:'',supply:'',fin:''}; root.querySelector('#asf-sector').value=''; root.querySelectorAll('input[type=radio]').forEach(function(i){i.checked=false;i.closest('.opt').classList.remove('sel');}); show(0); }); }); function shake(b){ b.animate([{transform:'translateX(0)'},{transform:'translateX(-6px)'},{transform:'translateX(6px)'},{transform:'translateX(0)'}],{duration:220}); }
// ===================== LOGICA CLASSIFICAZIONE ===================== var result = {}; function compute(){ var sec = state.sector, size = state.size, supply = state.supply, fin = state.fin; var nis2 = 'out', nis2note = ''; if(sec === 'A1'){ if(size === 'large'){ nis2='ess'; } else if(size === 'medium'){ nis2='imp'; } else { nis2='out'; nis2note='Sotto la soglia dimensionale: in genere escluso, ma alcuni soggetti dei settori a criticità elevata (es. DNS/TLD, telco, trust service, PA) rientrano a prescindere dalla dimensione. Va verificato.'; } } else if(sec === 'A2'){ if(size === 'large' || size === 'medium'){ nis2='imp'; } else { nis2='out'; nis2note='Sotto la soglia dimensionale: in genere escluso dal perimetro NIS2 diretto.'; } } else { nis2='out'; nis2note='Il settore indicato non rientra direttamente negli Allegati I/II della NIS2.'; } var dora = 'no'; if(fin === 'yes'){ dora='direct'; } else if(sec === 'ICT_FIN' || (supply === 'yes')){ dora='ictchain'; } result = {nis2:nis2, nis2note:nis2note, dora:dora, supply:(supply==='yes'), state:JSON.parse(JSON.stringify(state))}; render(); }
function render(){ var el = root.querySelector('#asf-result'); var badge, title, desc; if(result.nis2==='ess'){ badge='Soggetto Essenziale'; title='Rientri nella NIS2 come Soggetto Essenziale'; desc='Sei nel regime più stringente: obblighi di gestione del rischio, notifica incidenti entro finestre rapide, supervisione proattiva delle autorità e sanzioni fino a 10 M€ o il 2% del fatturato mondiale, con responsabilità diretta del management.'; } else if(result.nis2==='imp'){ badge='Soggetto Importante'; title='Rientri nella NIS2 come Soggetto Importante'; desc='Hai gli obblighi di sicurezza e notifica previsti dalla NIS2, con vigilanza ex-post e sanzioni fino a 7 M€ o l\'1,4% del fatturato. Gli obblighi sostanziali di gestione del rischio restano.'; } else { badge='Probabilmente fuori dal perimetro diretto'; title='Verosimilmente non sei un soggetto NIS2 diretto'; desc='In base a settore e dimensione non risulti soggetto diretto. Attenzione però alla catena di fornitura: molti obblighi arrivano per contratto dai tuoi clienti regolati.'; } var doraCard=''; if(result.dora==='direct'){ doraCard='
DORA · Soggetto diretto
Come entità finanziaria sei tenuto ai requisiti DORA: gestione del rischio ICT, test di resilienza operativa digitale, gestione dei fornitori ICT critici e reporting degli incidenti.
'; } else if(result.dora==='ictchain'){ doraCard='
DORA · Coinvolto come fornitore ICT
Fornendo ICT al settore finanziario, i requisiti di resilienza DORA ricadono su di te per contratto: i tuoi clienti finance ti chiederanno garanzie, clausole e test.
'; } else { doraCard='
DORA · Non applicabile direttamente
Non risulti soggetto DORA né fornitore ICT del finance. Se questo dovesse cambiare, l\'esposizione cambierebbe di conseguenza.
'; } var supplyCard = result.supply ? '
Catena di fornitura
Sei fornitore di soggetti regolati: aspettati richieste di garanzie di sicurezza in gare e contratti. Non essere pronti a rispondere significa perdere opportunità.
' : ''; var noteCard = result.nis2note ? '
Nota
'+result.nis2note+'
' : ''; el.innerHTML = badge + '
'+title+'
'+desc+'
' + '
' + noteCard; }
// ===================== INVIO LEAD (Brevo) ===================== root.querySelector('#asf-form').addEventListener('submit', function(e){ e.preventDefault(); var err = root.querySelector('#asf-err'); err.style.display='none'; if(root.querySelector('#asf-hp').value){ return; } var name = root.querySelector('#asf-name').value.trim(); var company = root.querySelector('#asf-company').value.trim(); var email = root.querySelector('#asf-email').value.trim(); var role = root.querySelector('#asf-role').value.trim(); var consent = root.querySelector('#asf-consent').checked; if(!name || !company || !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email) || !consent){ err.textContent = 'Compila nome, azienda, un\'email valida e accetta l\'informativa privacy.'; err.style.display='block'; return; } var payload = {source:CONFIG.source, name:name, company:company, email:email, role:role, consent:true, ts:new Date().toISOString(), nis2:result.nis2, dora:result.dora, supply:result.supply, answers:result.state}; var btn = root.querySelector('#asf-submit'); btn.disabled=true; btn.textContent='Invio…'; function done(){ show(5); } console.log('[ArcaSafe Navigator] lead:', payload); fetch(CONFIG.leadAction,{method:'POST',mode:'cors',headers:{'Content-Type':'application/json'},body:JSON.stringify({slug:CONFIG.source,name:name,company:company,email:email,role:role,consent:true,hp:root.querySelector('#asf-hp').value})}) .then(function(r){ if(!r.ok) console.warn('[ArcaSafe Navigator] gate '+r.status, payload); done(); }) .catch(function(){ console.warn('[ArcaSafe Navigator] invio non riuscito', payload); done(); }); });
show(0); })();