var chatbox=document.getElementById("chatbox"),botchat=document.getElementById("botchat"),chatheader=document.getElementById("chatheader"),expandButton=chatheader.querySelector(".expand");function aichat_init(){connectWebSocket(),sessionStorage.setItem("chatOpened","true"),document.getElementById("botchat").classList.add("hide"),document.getElementById("chatbox").classList.remove("hide")}function aichat_minimize(){document.body.classList.contains("fullscreenchat")&&document.body.classList.remove("fullscreenchat"),document.getElementById("chatbox").classList.add("hide"),document.getElementById("botchat").classList.remove("hide"),sessionStorage.removeItem("chatOpened")}function chatTyping(){var e=document.createElement("div");e.id="typingDiv",e.className="message-cont assistant",e.innerHTML='Chloe is typing',document.getElementById("messages").appendChild(e),e.scrollIntoView()}function sendMessage(){var e=document.getElementById("userInput").value;if(e.length<=0)return;const t={role:"user",content:e};addMessage(t.role,JSON.stringify(t)),ws.send(e),chatTyping()}function addMessage(e,t){const n=JSON.parse(t),{role:s,buttons:c,choices:o}=n;let a=n.content;const d=document.getElementById("messages"),i=document.getElementById("typingDiv");i&&d.removeChild(i),a=a.replace(/\n/g,"
"),a=a.replace(/\[([^\]]+)\]\((https?:\/\/[^\s]+)\)/g,'$1'),a=a.replace(/【\d+:\d+†source】/g,"");const l=document.createElement("div");if(l.innerHTML=""+a+"",l.classList.add(s.toLowerCase()),l.classList.add("message-cont"),d.appendChild(l),document.getElementById("userInput").value="",c&&c.length>0){const e=document.createElement("div");e.style.display="flex",e.style.gap="10px",e.style.alignItems="center",e.innerHTML=c.map(e=>`
${e}
`).join(""),d.appendChild(e)}if(o&&o.length>0){const e=document.createElement("div");e.classList.add("multiple-choice"),o.forEach(t=>{const n=document.createElement("div");n.classList.add("choice"),n.textContent=t,n.addEventListener("click",()=>choiceClick(t)),e.appendChild(n)}),d.appendChild(e)}l.scrollIntoView()}function choiceClick(e){const t=document.getElementById("messages").getElementsByClassName("multiple-choice");for(;t.length>0;)t[0].remove();const n={role:"user",content:e};addMessage(n.role,JSON.stringify(n)),ws.send(e),chatTyping()}let ws;function connectWebSocket(){if(ws&&(ws.readyState===WebSocket.OPEN||ws.readyState===WebSocket.CONNECTING))return;const e=`${"https:"===window.location.protocol?"wss":"ws"}://${window.location.host}/ws-aichat-retell`;ws=new WebSocket(e),ws.onopen=function(){console.log("Connected to WebSocket!")},ws.onmessage=function(e){addMessage("Agent",e.data)},ws.onerror=function(e){console.log("WebSocket error:",e)},ws.onclose=function(e){const t=e.wasClean?`Closed cleanly, code=${e.code}, reason=${e.reason}`:"Connection died";console.log(t),ws=null,setTimeout(connectWebSocket,5e3)}}document.getElementById("userInput").addEventListener("keypress",function(e){13===(e.which||e.keyCode)&&(e.preventDefault(),sendMessage())}),expandButton.addEventListener("click",function(){document.body.classList.contains("fullscreenchat")?document.body.classList.remove("fullscreenchat"):document.body.classList.add("fullscreenchat")}),"true"===sessionStorage.getItem("chatOpened")&&aichat_init();