Sign up
Login
Language
HOT
keyboard_arrow_down
Slot
keyboard_arrow_down
Casino
keyboard_arrow_down
Crash
keyboard_arrow_down
Game Providers
Show more
✖
🎁
Lucky Spin
BDT
English
Sign up
Login
Free Spin
clear
clear
clear
Currency and Language
clear
৳ BDT
বাংলা
English
₹ INR
हिन्दी
English
$ USD
Marshallese
English
RM MYR
Malay
English
Rs NPR
नेपाली
English
₱ PHP
Filipino
English
₫ VND
Tiếng Việt
English
Login OR Register
clear
Sign up
Login
BCW270 এ স্বাগতম
ব্যবহারকারীর নাম
*
person_outline
গোপন নম্বর
*
lock_outline
পাসওয়ার্ড ভুলে গেছেন
প্রবেশ করুন
অ্যাকাউন্ট নেই?
নিবন্ধন
✉
function bindChatEvents(){ if(typeof chatToggle === 'undefined') var chatToggle = document.getElementById('chatToggle'); if(typeof chatPanel === 'undefined') var chatPanel = document.getElementById('chatPanel'); if(typeof chatBody === 'undefined') var chatBody = document.getElementById('chatBody'); if(typeof chatForm === 'undefined') var chatForm = document.getElementById('chatForm'); if(typeof uname === 'undefined') var uname = document.getElementById('uname'); if(typeof umsg === 'undefined') var umsg = document.getElementById('umsg'); if(typeof replyHint === 'undefined') var replyHint = document.getElementById('replyHint'); let replyToId = null; if(typeof messages === 'undefined') var messages=[]; let guestId = localStorage.getItem("guest_id"); if (!guestId) { guestId = "guest_" + Date.now() + "_" + Math.floor(Math.random()*9999); localStorage.setItem("guest_id", guestId); } // async function loadChat() { // const res = await fetch("get_chat_data.php?guest_id=" + guestId); // const data = await res.json(); // chatBody.innerHTML = ""; // messages = data; // messages.forEach(msg => bubble(msg)); // } // async function loadChat() { // const res = await fetch("get_chat_data.php?guest_id=" + guestId); // const data = await res.json(); // chatBody.innerHTML = ""; // messages = data; // messages.forEach(msg => bubble(msg)); // } let lastMessageId = 0; let isFirstLoad = true; async function loadChat() { const res = await fetch("get_chat_data.php?guest_id=" + guestId + "&last_id=" + lastMessageId); const data = await res.json(); if (isFirstLoad) { chatBody.innerHTML = ""; } data.forEach(msg => { bubble(msg); lastMessageId = Math.max(lastMessageId, msg.id); }); isFirstLoad = false; // requestAnimationFrame(() => { // chatBody.scrollTop = chatBody.scrollHeight; // }); } setInterval(loadChat, 3000); loadChat(); chatToggle.addEventListener('click', ()=>{ chatPanel.style.display='block'; chatPanel.setAttribute('aria-hidden','false'); umsg.focus(); scrollTop(); }); document.getElementById('closeChat').addEventListener('click', ()=>{ chatPanel.style.display='none'; chatPanel.setAttribute('aria-hidden','true'); }); function showTyping(){ if(document.getElementById("typing")) return; const typing = document.createElement("div"); typing.className = "bubble admin typing"; typing.id = "typing"; typing.innerHTML = `
`; chatBody.appendChild(typing); requestAnimationFrame(()=>{ chatBody.scrollTop = chatBody.scrollHeight; }); } function removeTyping(){ const t = document.getElementById("typing"); if(t) t.remove(); } var openChat = function(){ chatPanel.style.display='block'; chatPanel.setAttribute('aria-hidden','false'); umsg.focus(); }; var closeChat = function(){ chatPanel.style.display='none'; chatPanel.setAttribute('aria-hidden','true'); }; function scrollTop(){ requestAnimationFrame(() => { chatBody.scrollTop = chatBody.scrollHeight; }); } function bubble({id,user,text,time,me=false,replyTo=null}){ var wrap = document.createElement('div'); wrap.className='bubble'+(me?' me':''); wrap.dataset.id=id; var head = document.createElement('div'); head.style.lineHeight= '1'; head.innerHTML=`
${user}
${time}
`; var body = document.createElement('div'); body.style.lineHeight= '1'; body.innerHTML=`
${text}
`; if (replyTo && replyTo.text) { var quote = document.createElement('div'); quote.className = 'small'; quote.style.borderLeft = '3px solid #334155'; quote.style.paddingLeft = '8px'; quote.style.marginBottom = '6px'; quote.textContent = `↪ ${replyTo.user}: ${replyTo.text.slice(0,70)}${replyTo.text.length>70?'…':''}`; wrap.appendChild(quote); } var actions = document.createElement('div'); actions.className='small'; actions.style.marginTop='3px'; var replyBtn = document.createElement('button'); replyBtn.className='btn'; replyBtn.style.padding='6px 10px';replyBtn.style.marginLeft = 'auto'; replyBtn.textContent='রিপ্লাই'; replyBtn.addEventListener('click', ()=>{ replyToId=id; replyHint.style.display='block'; replyHint.textContent=`রিপ্লাই: ${user} "${text.slice(0,80)}${text.length>80?'…':''}"`; umsg.focus(); }); actions.appendChild(replyBtn); wrap.append(head, body, actions); chatBody.appendChild(wrap); } umsg.addEventListener("keydown", function(e){ if(e.key === "Enter"){ if(e.shiftKey){ return; // new line } else { e.preventDefault(); document.querySelector("#chatForm button[type='submit']").click(); } } }); chatForm.addEventListener("submit", async e => { e.preventDefault(); const user = uname.value.trim(); const text = umsg.value.trim(); if (!text) return; // 1️⃣ user message send await fetch("chat_send.php", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ guest_id: guestId, user: user, text: text, reply_to: replyToId }) }); // reset UI umsg.value = ""; replyToId = null; replyHint.style.display = "none"; // 2️⃣ user message append await loadChat(); scrollTop(); // 3️⃣ admin typing show setTimeout(async ()=>{ showTyping(); }, 500); // 4️⃣ delay → admin auto reply setTimeout(async () => { // 👉 auto reply insert (NEW API) await fetch("auto_reply.php", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ guest_id: guestId, text: text }) }); // 5️⃣ typing hide removeTyping(); // 6️⃣ admin reply append await loadChat(); scrollTop(); }, 2000); // ⏳ typing delay }); document.getElementById('clearChat').addEventListener('click', ()=>{ replyToId = null; replyHint.style.display = "none"; }); async function loadAutoQuestions(){ const res = await fetch("auto_chat.php"); const html = await res.text(); chatBodyAuto.innerHTML = html; document.querySelectorAll('.auto-question').forEach(q=>{ q.addEventListener('click', async ()=>{ const user = uname.value.trim(); const text = q.dataset.question; // user message send await fetch("chat_send.php", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ guest_id: guestId, user: uname.value.trim(), text: text, reply_to: null }) }); // 1️⃣ user message show await loadChat(); scrollTop(); // 2️⃣ typing show setTimeout(async ()=>{ showTyping(); }, 500); // 3️⃣ delay → auto reply insert setTimeout(async ()=>{ await fetch("auto_reply.php", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ guest_id: guestId, text: text }) }); // 4️⃣ typing hide + admin msg show removeTyping(); await loadChat(); scrollTop(); }, 2000); scrollTop(); }); }); const buttons = document.getElementsByClassName("autoQuestion"); for(let btn of buttons){ btn.addEventListener("click", ()=>{ const autoDiv = document.getElementById("chatBodyAuto"); const autobtn = document.getElementById("autoQuestion"); if(autoDiv){ autoDiv.classList.toggle("hide"); autobtn.classList.toggle("hide"); } }); } } loadAutoQuestions(); } // bindChatEvents();