✅ Messaggio inviato.
' }; HISTORY.push(botMsg); const last=loadLast(); last.push(botMsg); saveLast(last); renderPopup(); }catch(e){ hideTyping(); const err={role:'bot', html:"⚠️ Errore di connessione.
"}; HISTORY.push(err); const last=loadLast(); last.push(err); saveLast(last); renderPopup(); } } /* ========= HOME: Ask AI ========= */ function activateAskInput(){ askInput.style.display="block"; askCta.style.display="none"; askInput.focus(); } function closeHomePopover(){ askPop.classList.remove('open','dir-up'); askPop.setAttribute('aria-hidden','true'); askPlus.classList.remove('rotated'); askPop.style.transform=''; } function toggleHomePopover(){ if(askPop.classList.contains('open')) return closeHomePopover(); askPop.classList.add('open'); askPop.setAttribute('aria-hidden','false'); askPlus.classList.add('rotated'); const r=askBar.getBoundingClientRect(); const pop=askPop.getBoundingClientRect(); const below=window.innerHeight - r.bottom; const above=r.top; askPop.classList.toggle('dir-up', below pop.height + 16); const pad=10; const rec=askPop.getBoundingClientRect(); if(rec.right > window.innerWidth - pad){ askPop.style.transform=`translateX(-${ rec.right-(window.innerWidth-pad) }px)`; } else if(rec.left { e.stopPropagation(); toggleHomePopover(); }); document.addEventListener("click", e=>{ if(askPop.classList.contains('open') && !askPop.contains(e.target) && !askPlus.contains(e.target)) closeHomePopover(); }); document.addEventListener("keydown", e=>{ if(e.key==="Escape" && askPop.classList.contains('open')) closeHomePopover(); }); askPop.addEventListener("click", (e)=>{ const b=e.target.closest(".ask-item"); if(!b) return; closeHomePopover(); if(b.dataset.action==="chat_passata"){ const last=loadLast(); openPopup(last.length? last : []); return; } activateAskInput(); askInput.value = b.dataset.fill || ""; }); function homeSend(){ const txt=askInput.value.trim(); if(!txt) return; askInput.value=""; const user={role:'user', text:txt}; HISTORY.push(user); const last=loadLast(); last.push(user); saveLast(last); openPopup(); renderPopup(); sendToWebhook(txt); } askCta.addEventListener("click", activateAskInput); askSend.addEventListener("click", homeSend); askInput.addEventListener("keypress", e=>{ if(e.key==="Enter") homeSend(); }); /* ========= POPUP: Ask AI ========= */ aiAskPlus.addEventListener('click', (e)=>{ e.preventDefault(); e.stopPropagation(); const open = aiAskMini.style.display === 'block'; aiAskMini.style.display = open ? 'none' : 'block'; aiAskPlus.style.transform = open ? 'rotate(0deg)' : 'rotate(45deg)'; }); document.addEventListener('click', (e)=>{ const wrap = document.getElementById('aiAskWrap'); if(wrap && !wrap.contains(e.target)){ aiAskMini.style.display='none'; aiAskPlus.style.transform='rotate(0deg)'; } }); aiAskMini.querySelectorAll('.mini-item').forEach(btn=>{ btn.addEventListener('click', ()=>{ aiAskInput.value = btn.dataset.fill || btn.textContent.trim(); aiAskMini.style.display='none'; aiAskPlus.style.transform='rotate(0deg)'; aiAskInput.focus(); }); }); function popupSend(){ const txt = (aiAskInput.value||'').trim(); if(!txt) return; aiAskInput.value = ''; const user={role:'user', text:txt}; HISTORY.push(user); const last=loadLast(); last.push(user); saveLast(last); renderPopup(); sendToWebhook(txt); } aiAskSend.addEventListener('click', popupSend); aiAskInput.addEventListener('keypress', e=>{ if(e.key==='Enter') popupSend(); }); /* ========= CLOSE POPUP ========= */ aiClose.addEventListener("click", closePopup); aiMask.addEventListener("click", closePopup); /* ========= BOOT ========= */ ensureChatId();