{"id":15,"date":"2026-09-03T06:24:49","date_gmt":"2026-09-03T06:24:49","guid":{"rendered":"https:\/\/angels-devils.adilbannar.my\/index.php\/support\/"},"modified":"2026-09-03T06:24:49","modified_gmt":"2026-09-03T06:24:49","slug":"support","status":"publish","type":"page","link":"https:\/\/angels-devils.adilbannar.my\/index.php\/support\/","title":{"rendered":"Support"},"content":{"rendered":"<style>\n.srp-sup-section { padding: 60px 32px; max-width: 1400px; margin: 0 auto; }\n@media(max-width:768px){ .srp-sup-section{ padding:40px 16px; } }\n<\/style>\n\n<div class=\"srp-sup-section\">\n    <h1 class=\"srp-section-title\">SUPPORT <span class=\"accent\">CENTER<\/span><\/h1>\n    <p class=\"srp-section-subtitle\" id=\"srpSupSub\">Submit a ticket and chat with our team in real time<\/p>\n\n    <!-- Not logged in -->\n    <div id=\"srpSupNotLogged\" style=\"display:none;\">\n        <div class=\"srp-card\" style=\"text-align:center;padding:64px 32px;max-width:500px;\">\n            <div style=\"width:72px;height:72px;background:rgba(168, 85, 247, 0.08);border-radius:20px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;color:#a855f7;\">\n                <svg width=\"36\" height=\"36\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>\n            <\/div>\n            <h3 style=\"margin-bottom:12px;color:#a855f7;font-size:20px;\">Login Required<\/h3>\n            <p style=\"color:#7a7a9a;margin-bottom:24px;line-height:1.7;\">Please login with Discord to submit and manage support tickets.<\/p>\n            <a href=\"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/srp\/v1\/auth\/discord\" class=\"srp-btn srp-btn-discord\" style=\"justify-content:center;width:100%;\">\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z\"\/><\/svg>\n                Login with Discord\n            <\/a>\n        <\/div>\n    <\/div>\n\n    <!-- Main ticket interface (logged in) -->\n    <div id=\"srpSupMain\" style=\"display:none;\">\n        <div class=\"srp-tickets-layout\">\n\n            <!-- SIDEBAR -->\n            <div class=\"srp-tickets-sidebar\">\n                <div class=\"srp-tickets-sidebar-header\">\n                    <h3 id=\"srpSideTitle\">\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#a855f7\" stroke-width=\"2\" style=\"display:inline;margin-right:6px;vertical-align:middle\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>\n                        My Tickets\n                    <\/h3>\n                    <span id=\"srpTicketCount\" style=\"font-size:11px;color:#7a7a9a;background:rgba(168, 85, 247, 0.08);padding:3px 10px;border-radius:20px;\">0<\/span>\n                <\/div>\n                <div class=\"srp-tickets-list\" id=\"srpTicketsList\">\n                    <div style=\"padding:32px;text-align:center;color:#7a7a9a;font-size:13px;\">\n                        <span class=\"srp-loading\"><\/span>\n                    <\/div>\n                <\/div>\n                <button class=\"srp-new-ticket-btn\" id=\"srpNewTicketBtn\" onclick=\"srpShowNewTicketForm()\">\n                    <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n                    <span id=\"srpNewTicketLabel\">New Ticket<\/span>\n                <\/button>\n            <\/div>\n\n            <!-- CHAT PANEL -->\n            <div class=\"srp-ticket-chat\" id=\"srpChatPanel\">\n\n                <!-- Empty state -->\n                <div class=\"srp-chat-empty\" id=\"srpChatEmpty\">\n                    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>\n                    <p id=\"srpChatEmptyText\">Select a ticket to view the conversation<\/p>\n                <\/div>\n\n                <!-- New ticket form -->\n                <div id=\"srpNewTicketForm\" style=\"display:none;flex-direction:column;height:100%;\">\n                    <div class=\"srp-ticket-chat-header\">\n                        <div>\n                            <div class=\"srp-ticket-chat-title\" id=\"srpNewFormTitle\">New Support Ticket<\/div>\n                            <div class=\"srp-ticket-chat-sub\" id=\"srpNewFormSub\">Describe your issue and we'll get back to you<\/div>\n                        <\/div>\n                        <button onclick=\"srpCancelNewTicket()\" style=\"background:none;border:none;color:#7a7a9a;cursor:pointer;padding:4px;\">\n                            <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\n                        <\/button>\n                    <\/div>\n                    <div style=\"padding:24px;overflow-y:auto;flex:1;\">\n                        <form id=\"srpTicketFormEl\" onsubmit=\"srpSubmitNewTicket(event)\">\n                            <div class=\"srp-form-group\">\n                                <label class=\"srp-form-label\" id=\"srpFormSubjectLabel\">Subject *<\/label>\n                                <input class=\"srp-form-input\" name=\"subject\" id=\"srpFormSubjectInput\" required placeholder=\"Brief description of your issue\">\n                            <\/div>\n                            <div class=\"srp-form-group\">\n                                <label class=\"srp-form-label\" id=\"srpFormCatLabel\">Category *<\/label>\n                                <select class=\"srp-form-select\" name=\"category\" id=\"srpFormCatSelect\" required>\n                                    <option value=\"general\">General<\/option>\n                                    <option value=\"whitelist\">Whitelist<\/option>\n                                    <option value=\"bug\">Bug Report<\/option>\n                                    <option value=\"complaint\">Complaint<\/option>\n                                    <option value=\"other\">Other<\/option>\n                                <\/select>\n                            <\/div>\n                            <div class=\"srp-form-group\">\n                                <label class=\"srp-form-label\" id=\"srpFormMsgLabel\">Message *<\/label>\n                                <textarea class=\"srp-form-textarea\" name=\"message\" id=\"srpFormMsgInput\" required placeholder=\"Describe your issue in detail...\" style=\"min-height:150px;\"><\/textarea>\n                            <\/div>\n                            <div id=\"srpFormError\" class=\"srp-form-error\"><\/div>\n                            <button type=\"submit\" class=\"srp-btn srp-btn-cyan\" style=\"width:100%;justify-content:center;\" id=\"srpFormSubmitBtn\">\n                                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"\/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"\/><\/svg>\n                                <span id=\"srpFormSubmitLabel\">Submit Ticket<\/span>\n                            <\/button>\n                        <\/form>\n                    <\/div>\n                <\/div>\n\n                <!-- Active ticket view -->\n                <div id=\"srpActiveTicket\" style=\"display:none;flex-direction:column;height:100%;\">\n                    <div class=\"srp-ticket-chat-header\">\n                        <div>\n                            <div class=\"srp-ticket-chat-title\" id=\"srpActiveSubject\"><\/div>\n                            <div class=\"srp-ticket-chat-sub\" id=\"srpActiveMeta\"><\/div>\n                        <\/div>\n                        <div class=\"srp-ticket-chat-actions\">\n                            <span id=\"srpActiveStatus\" class=\"srp-badge\"><\/span>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Closed banner -->\n                    <div class=\"srp-ticket-closed-banner\" id=\"srpClosedBanner\" style=\"display:none;\">\n                        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg>\n                        <div class=\"srp-ticket-closed-text\" id=\"srpClosedText\">This ticket has been closed.<\/div>\n                    <\/div>\n\n                    <!-- Messages -->\n                    <div class=\"srp-ticket-messages\" id=\"srpTicketMessages\"><\/div>\n\n                    <!-- Reply input (only when open\/in-progress) -->\n                    <div class=\"srp-ticket-reply\" id=\"srpReplyArea\">\n                        <textarea id=\"srpReplyInput\" rows=\"1\" placeholder=\"Type your message...\" onkeydown=\"if(event.key==='Enter'&&!event.shiftKey){event.preventDefault();srpSendReply();}\"><\/textarea>\n                        <button class=\"srp-ticket-reply-btn\" onclick=\"srpSendReply()\" id=\"srpReplyBtn\" title=\"Send\">\n                            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"\/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"\/><\/svg>\n                        <\/button>\n                    <\/div>\n                <\/div>\n\n            <\/div><!-- end chat panel -->\n        <\/div><!-- end layout -->\n    <\/div><!-- end main -->\n<\/div>\n\n<script>\nvar srpCurrentUser = null;\nvar srpCurrentTicketId = null;\nvar srpTickets = [];\n\ndocument.addEventListener('DOMContentLoaded', function(){\n    srpCheckAuth(function(user){\n        if (!user || !user.id) {\n            document.getElementById('srpSupNotLogged').style.display = 'block';\n            return;\n        }\n        srpCurrentUser = user;\n        document.getElementById('srpSupMain').style.display = 'block';\n        srpLoadMyTickets();\n    });\n    \/\/ language\n    var lang = (document.cookie.split(';').find(function(c){return c.trim().startsWith('srp_lang=');})||'').split('=')[1]||'en';\n    if (lang === 'ar') {\n        document.getElementById('srpSupSub').textContent = '\u0623\u0631\u0633\u0644 \u062a\u0630\u0643\u0631\u0629 \u0648\u062a\u062d\u062f\u062b \u0645\u0639 \u0641\u0631\u064a\u0642\u0646\u0627 \u0641\u064a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a';\n        document.getElementById('srpSideTitle').innerHTML = '<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#a855f7\" stroke-width=\"2\" style=\"display:inline;margin-left:6px;vertical-align:middle\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>\u062a\u0630\u0627\u0643\u0631\u064a';\n        document.getElementById('srpNewTicketLabel').textContent = '\u062a\u0630\u0643\u0631\u0629 \u062c\u062f\u064a\u062f\u0629';\n        document.getElementById('srpChatEmptyText').textContent = '\u0627\u062e\u062a\u0631 \u062a\u0630\u0643\u0631\u0629 \u0644\u0639\u0631\u0636 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629';\n        document.getElementById('srpNewFormTitle').textContent = '\u062a\u0630\u0643\u0631\u0629 \u062f\u0639\u0645 \u062c\u062f\u064a\u062f\u0629';\n        document.getElementById('srpNewFormSub').textContent = '\u0635\u0641 \u0645\u0634\u0643\u0644\u062a\u0643 \u0648\u0633\u0646\u0631\u062f \u0639\u0644\u064a\u0643';\n        document.getElementById('srpFormSubjectLabel').textContent = '\u0627\u0644\u0645\u0648\u0636\u0648\u0639 *';\n        document.getElementById('srpFormCatLabel').textContent = '\u0627\u0644\u0641\u0626\u0629 *';\n        document.getElementById('srpFormMsgLabel').textContent = '\u0627\u0644\u0631\u0633\u0627\u0644\u0629 *';\n        document.getElementById('srpFormSubmitLabel').textContent = '\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u062a\u0630\u0643\u0631\u0629';\n    }\n});\n\nvar srpMessagePollingTimer = null;\nvar srpTicketListPollingTimer = null;\nvar srpLastLoadedMsgCount = 0;\n\nfunction srpLoadMyTickets(callback, silent) {\n    var list = document.getElementById('srpTicketsList');\n    if (!silent && list && (!srpTickets || !srpTickets.length)) {\n        list.innerHTML = '<div style=\"padding:32px;text-align:center;color:#7a7a9a;font-size:13px;\"><span class=\"srp-loading\"><\/span><\/div>';\n    }\n    fetch(srpAjax.url + 'tickets\/my', {credentials:'same-origin'})\n        .then(function(r){ return r.json(); })\n        .then(function(tickets){\n            srpTickets = tickets || [];\n            var countEl = document.getElementById('srpTicketCount');\n            if (countEl) countEl.textContent = srpTickets.length;\n            if (list) {\n                if (!srpTickets.length) {\n                    list.innerHTML = '<div style=\"padding:32px;text-align:center;color:#7a7a9a;font-size:13px;\">No tickets yet.<br>Click + New Ticket to get started.<\/div>';\n                } else {\n                    list.innerHTML = '';\n                    srpTickets.forEach(function(t){\n                        var item = document.createElement('div');\n                        item.className = 'srp-ticket-item' + (srpCurrentTicketId == t.id ? ' active' : '');\n                        item.setAttribute('data-id', t.id);\n                        item.onclick = function(){ srpOpenTicket(t); };\n                        var avatarUrl = t.user_avatar || (srpCurrentUser ? srpCurrentUser.avatar : '');\n                        var avatarEl = avatarUrl \n                            ? '<img decoding=\"async\" src=\"' + srpEsc(avatarUrl) + '\" alt=\"' + srpEsc(t.username || 'User') + '\" style=\"width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0;border:1px solid rgba(168, 85, 247, 0.3);\">'\n                            : '<div style=\"width:28px;height:28px;border-radius:50%;background:rgba(168, 85, 247, 0.1);color:#a855f7;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;\">' + (t.username ? t.username.charAt(0).toUpperCase() : '?') + '<\/div>';\n\n                        item.innerHTML = '<div style=\"display:flex;align-items:center;gap:10px;margin-bottom:6px;\">' +\n                            avatarEl +\n                            '<div style=\"min-width:0;flex:1;\"><div class=\"srp-ticket-item-subject\" style=\"margin-bottom:0;\">' + srpEsc(t.subject) + '<\/div><\/div>' +\n                            '<\/div>' +\n                            '<div class=\"srp-ticket-item-meta\">' +\n                            '<span class=\"srp-badge srp-badge-' + t.status + '\">' + t.status + '<\/span>' +\n                            '<span class=\"srp-ticket-item-date\">' + srpRelTime(t.created_at) + '<\/span>' +\n                            '<\/div>';\n                        list.appendChild(item);\n                    });\n                }\n            }\n            if (typeof callback === 'function') callback(srpTickets);\n        })\n        .catch(function(){ \n            if (!silent && list) {\n                list.innerHTML = '<div style=\"padding:20px;color:#fc8181;font-size:13px;\">Failed to load tickets<\/div>';\n            }\n            if (typeof callback === 'function') callback([]);\n        });\n}\n\nfunction srpOpenTicket(ticket) {\n    srpCurrentTicketId = ticket.id;\n    \/\/ Mark active\n    document.querySelectorAll('.srp-ticket-item').forEach(function(el){ el.classList.remove('active'); });\n    var el = document.querySelector('.srp-ticket-item[data-id=\"' + ticket.id + '\"]');\n    if (el) el.classList.add('active');\n\n    \/\/ Hide forms, show active ticket\n    document.getElementById('srpNewTicketForm').style.display = 'none';\n    document.getElementById('srpChatEmpty').style.display = 'none';\n    var activeDiv = document.getElementById('srpActiveTicket');\n    activeDiv.style.display = 'flex';\n\n    \/\/ Header\n    document.getElementById('srpActiveSubject').textContent = ticket.subject;\n    document.getElementById('srpActiveMeta').textContent = '#' + ticket.id + ' \u00b7 ' + ticket.category + ' \u00b7 ' + srpRelTime(ticket.created_at);\n    var statusEl = document.getElementById('srpActiveStatus');\n    statusEl.className = 'srp-badge srp-badge-' + ticket.status;\n    statusEl.textContent = ticket.status.replace('-',' ');\n\n    \/\/ Closed banner\n    var banner = document.getElementById('srpClosedBanner');\n    var reply = document.getElementById('srpReplyArea');\n    if (ticket.status === 'closed') {\n        var closedBy = ticket.closed_by ? ticket.closed_by : '';\n        var closedText = closedBy\n            ? 'This ticket was closed by <strong>' + srpEsc(closedBy) + '<\/strong>.'\n            : 'This ticket has been closed.';\n        document.getElementById('srpClosedText').innerHTML = closedText;\n        banner.style.display = 'flex';\n        reply.style.display = 'none';\n    } else {\n        banner.style.display = 'none';\n        reply.style.display = 'flex';\n    }\n\n    \/\/ Load messages\n    srpLastLoadedMsgCount = 0;\n    srpLoadMessages(ticket.id, false);\n}\n\nfunction srpLoadMessages(ticketId, silent) {\n    var container = document.getElementById('srpTicketMessages');\n    if (!silent) {\n        container.innerHTML = '<div style=\"display:flex;align-items:center;justify-content:center;height:100px;\"><span class=\"srp-loading\"><\/span><\/div>';\n    }\n\n    fetch(srpAjax.url + 'tickets\/messages?ticket_id=' + ticketId, {credentials:'same-origin'})\n        .then(function(r){ return r.json(); })\n        .then(function(messages){\n            if (!messages) messages = [];\n            if (!silent || messages.length !== srpLastLoadedMsgCount) {\n                srpLastLoadedMsgCount = messages.length;\n                var wasNearBottom = (container.scrollHeight - container.clientHeight <= container.scrollTop + 50);\n                container.innerHTML = '';\n                if (!messages.length) {\n                    container.innerHTML = '<div style=\"text-align:center;color:#7a7a9a;padding:32px;font-size:13px;\">No messages yet.<\/div>';\n                    return;\n                }\n                messages.forEach(function(msg){\n                    srpRenderMessage(container, msg);\n                });\n                if (!silent || wasNearBottom) {\n                    container.scrollTop = container.scrollHeight;\n                }\n            }\n        })\n        .catch(function(){\n            if (!silent) {\n                container.innerHTML = '<div style=\"color:#fc8181;padding:16px;font-size:13px;\">Failed to load messages.<\/div>';\n            }\n        });\n}\n\nfunction srpRenderMessage(container, msg) {\n    var isUser = srpCurrentUser && (msg.sender_id == srpCurrentUser.id);\n    var div = document.createElement('div');\n    div.className = 'srp-msg ' + (isUser ? 'srp-msg-user' : 'srp-msg-admin');\n\n    var initial = msg.sender_name ? msg.sender_name.charAt(0).toUpperCase() : '?';\n    var avatarUrl = msg.sender_avatar || (isUser && srpCurrentUser ? srpCurrentUser.avatar : '');\n    var avatarClass = isUser ? 'srp-msg-avatar' : 'srp-msg-avatar admin-av';\n\n    var avatarContent;\n    if (avatarUrl) {\n        avatarContent = '<img decoding=\"async\" src=\"' + srpEsc(avatarUrl) + '\" alt=\"' + srpEsc(msg.sender_name) + '\" class=\"' + avatarClass + '\" style=\"object-fit:cover;\">';\n    } else {\n        avatarContent = '<div class=\"' + avatarClass + '\">' + initial + '<\/div>';\n    }\n\n    div.innerHTML = avatarContent +\n        '<div>' +\n        '<div class=\"srp-msg-name\">' + srpEsc(msg.sender_name) + (isUser ? '' : ' <span style=\"font-size:9px;color:#7a7a9a;font-weight:500;\">(Staff)<\/span>') + '<\/div>' +\n        '<div class=\"srp-msg-bubble\">' + srpEsc(msg.message).replace(\/\\n\/g,'<br>') + '<\/div>' +\n        '<div class=\"srp-msg-time\">' + srpRelTime(msg.created_at) + '<\/div>' +\n        '<\/div>';\n    container.appendChild(div);\n}\n\nfunction srpSendReply() {\n    if (!srpCurrentTicketId) return;\n    var input = document.getElementById('srpReplyInput');\n    var msg = input.value.trim();\n    if (!msg) return;\n\n    var btn = document.getElementById('srpReplyBtn');\n    btn.disabled = true;\n    btn.innerHTML = '<span class=\"srp-loading\" style=\"width:16px;height:16px;border-width:2px;\"><\/span>';\n\n    fetch(srpAjax.url + 'tickets\/user-reply', {\n        method: 'POST',\n        headers: {'Content-Type': 'application\/json'},\n        credentials: 'same-origin',\n        body: JSON.stringify({ticket_id: srpCurrentTicketId, message: msg})\n    })\n    .then(function(r){ return r.json(); })\n    .then(function(res){\n        if (res.ok) {\n            input.value = '';\n            input.style.height = 'auto';\n            var container = document.getElementById('srpTicketMessages');\n            srpRenderMessage(container, {\n                sender_id: srpCurrentUser.id,\n                sender_name: srpCurrentUser.username,\n                sender_avatar: srpCurrentUser.avatar || '',\n                message: msg,\n                created_at: new Date().toISOString()\n            });\n            container.scrollTop = container.scrollHeight;\n            srpLastLoadedMsgCount++;\n            srpLoadMyTickets(null, true);\n        } else {\n            srpToast(res.error || 'Failed to send', 'error');\n        }\n    })\n    .catch(function(){\n        srpToast('Network error', 'error');\n    })\n    .finally(function(){\n        btn.disabled = false;\n        btn.innerHTML = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"\/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"\/><\/svg>';\n    });\n}\n\nfunction srpShowNewTicketForm() {\n    srpCurrentTicketId = null;\n    document.querySelectorAll('.srp-ticket-item').forEach(function(el){ el.classList.remove('active'); });\n    document.getElementById('srpChatEmpty').style.display = 'none';\n    document.getElementById('srpActiveTicket').style.display = 'none';\n    var form = document.getElementById('srpNewTicketForm');\n    form.style.display = 'flex';\n}\n\nfunction srpCancelNewTicket() {\n    document.getElementById('srpNewTicketForm').style.display = 'none';\n    document.getElementById('srpChatEmpty').style.display = 'flex';\n}\n\nfunction srpSubmitNewTicket(e) {\n    e.preventDefault();\n    var btn = document.getElementById('srpFormSubmitBtn');\n    var lbl = document.getElementById('srpFormSubmitLabel');\n    btn.disabled = true;\n    lbl.textContent = 'Submitting...';\n    var errEl = document.getElementById('srpFormError');\n    errEl.style.display = 'none';\n\n    var subject = document.getElementById('srpFormSubjectInput').value.trim();\n    var category = document.getElementById('srpFormCatSelect').value;\n    var message = document.getElementById('srpFormMsgInput').value.trim();\n\n    fetch(srpAjax.url + 'tickets\/submit', {\n        method: 'POST',\n        headers: {'Content-Type': 'application\/json'},\n        credentials: 'same-origin',\n        body: JSON.stringify({subject: subject, category: category, message: message})\n    })\n    .then(function(r){ return r.json().then(function(b){ return {ok:r.ok,body:b}; }); })\n    .then(function(res){\n        if (res.ok) {\n            srpToast('Ticket submitted!', 'success');\n            document.getElementById('srpTicketFormEl').reset();\n            document.getElementById('srpNewTicketForm').style.display = 'none';\n            var newId = res.body.ticket_id;\n            srpLoadMyTickets(function(tickets){\n                if (newId && tickets && tickets.length) {\n                    var found = tickets.find(function(t){ return t.id == newId; });\n                    if (found) {\n                        srpOpenTicket(found);\n                        return;\n                    }\n                }\n                if (tickets && tickets.length) {\n                    srpOpenTicket(tickets[0]);\n                } else {\n                    document.getElementById('srpChatEmpty').style.display = 'flex';\n                }\n            });\n        } else {\n            errEl.textContent = res.body.error || 'Failed to submit';\n            errEl.style.display = 'block';\n        }\n    })\n    .catch(function(){\n        errEl.textContent = 'Network error';\n        errEl.style.display = 'block';\n    })\n    .finally(function(){\n        btn.disabled = false;\n        lbl.textContent = 'Submit Ticket';\n    });\n}\n\n\/\/ Live background polling for active ticket & ticket list\nif (srpMessagePollingTimer) clearInterval(srpMessagePollingTimer);\nsrpMessagePollingTimer = setInterval(function(){\n    if (srpCurrentTicketId) {\n        srpLoadMessages(srpCurrentTicketId, true);\n    }\n}, 3000);\n\nif (srpTicketListPollingTimer) clearInterval(srpTicketListPollingTimer);\nsrpTicketListPollingTimer = setInterval(function(){\n    if (srpCurrentUser && srpCurrentUser.id) {\n        srpLoadMyTickets(null, true);\n    }\n}, 6000);\n\n\/\/ Auto-resize textarea\ndocument.addEventListener('DOMContentLoaded', function(){\n    var ta = document.getElementById('srpReplyInput');\n    if (ta) {\n        ta.addEventListener('input', function(){\n            this.style.height = 'auto';\n            this.style.height = Math.min(this.scrollHeight, 120) + 'px';\n        });\n    }\n});\n\nfunction srpEsc(str) {\n    if (!str) return '';\n    return String(str).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');\n}\n\nfunction srpRelTime(dateStr) {\n    if (!dateStr) return '';\n    var d = new Date(dateStr);\n    var now = new Date();\n    var diff = Math.floor((now - d) \/ 1000);\n    if (diff < 60) return 'Just now';\n    if (diff < 3600) return Math.floor(diff\/60) + 'm ago';\n    if (diff < 86400) return Math.floor(diff\/3600) + 'h ago';\n    return Math.floor(diff\/86400) + 'd ago';\n}\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":0,"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"wp:attachment":[{"href":"https:\/\/angels-devils.adilbannar.my\/index.php\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}