(function(){ function init(){ const fab = document.getElementById('paradiz-web-chat-fab'); const modal = document.getElementById('paradiz-web-chat-modal'); const closeBtn = document.getElementById('paradiz-web-chat-close'); const sendBtn = document.getElementById('paradiz-web-chat-send'); const input = document.getElementById('paradiz-web-chat-input'); const log = document.getElementById('paradiz-web-chat-log'); if(!fab || !modal || !closeBtn || !sendBtn || !input || !log) return; const addMsg = (text, type) => { const p = document.createElement('p'); p.className = 'paradiz-msg ' + (type === 'user' ? 'paradiz-user' : 'paradiz-bot'); p.textContent = text; log.appendChild(p); log.scrollTop = log.scrollHeight; }; fab.addEventListener('click', () => { modal.style.display = (modal.style.display === 'block') ? 'none' : 'block'; if(modal.style.display === 'block') input.focus(); }); closeBtn.addEventListener('click', () => { modal.style.display = 'none'; }); const sendQuestion = async () => { const q = input.value.trim(); if(!q){ addMsg('Введите вопрос.', 'bot'); return; } addMsg('Вы: ' + q, 'user'); input.value = ''; addMsg('Печатают…', 'bot'); try { const body = new URLSearchParams(); body.set('action', 'paradiz_web_chat'); body.set('nonce', (window.ParadizWebChatCfg && ParadizWebChatCfg.nonce) ? ParadizWebChatCfg.nonce : ''); body.set('question', q); const resp = await fetch((window.ParadizWebChatCfg && ParadizWebChatCfg.ajaxUrl) ? ParadizWebChatCfg.ajaxUrl : '/wp-admin/admin-ajax.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, body: body.toString(), credentials: 'same-origin' }); const data = await resp.json(); if(data && data.success){ addMsg((data.data && data.data.answer) ? data.data.answer : 'Нет ответа', 'bot'); } else { addMsg((data && data.data && data.data.message) ? data.data.message : 'Ошибка', 'bot'); } } catch (e) { addMsg('Сетевая ошибка: ' + (e && e.message ? e.message : 'unknown'), 'bot'); } }; sendBtn.addEventListener('click', sendQuestion); input.addEventListener('keydown', (e) => { if(e.key === 'Enter' && !e.shiftKey){ e.preventDefault(); sendQuestion(); } }); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); } })();