(function () { var scriptEl = document.currentScript; if (!scriptEl) return; var siteKey = scriptEl.getAttribute("data-key"); if (!siteKey) { console.error("[top-tickets widget] missing data-key attribute"); return; } var origin = new URL(scriptEl.src).origin; var open = false; var button = document.createElement("button"); button.setAttribute("aria-label", "Открыть чат поддержки"); button.style.cssText = [ "position:fixed", "right:20px", "bottom:20px", "z-index:2147483000", "width:56px", "height:56px", "border-radius:999px", "border:none", "background:#7c3aed", "color:#fff", "cursor:pointer", "box-shadow:0 6px 20px rgba(0,0,0,.25)", "display:flex", "align-items:center", "justify-content:center", "font-family:system-ui,sans-serif", ].join(";"); button.innerHTML = ''; var badge = document.createElement("span"); badge.style.cssText = [ "position:absolute", "top:-2px", "right:-2px", "width:12px", "height:12px", "border-radius:999px", "background:#dc2626", "border:2px solid #fff", "display:none", ].join(";"); button.style.position = "fixed"; button.appendChild(badge); var panel = document.createElement("div"); var isMobile = window.innerWidth < 480; panel.style.cssText = [ "position:fixed", isMobile ? "right:0" : "right:20px", isMobile ? "bottom:0" : "bottom:88px", isMobile ? "width:100vw" : "width:360px", isMobile ? "height:100vh" : "height:520px", "max-height:80vh", "border-radius:" + (isMobile ? "0" : "16px"), "overflow:hidden", "box-shadow:0 12px 40px rgba(0,0,0,.3)", "z-index:2147483000", "display:none", ].join(";"); var iframe = document.createElement("iframe"); iframe.src = origin + "/widget/chat?key=" + encodeURIComponent(siteKey); iframe.style.cssText = "width:100%;height:100%;border:none;"; panel.appendChild(iframe); function setOpen(next) { open = next; panel.style.display = open ? "block" : "none"; if (open) { badge.style.display = "none"; } } button.addEventListener("click", function () { setOpen(!open); }); window.addEventListener("message", function (event) { if (event.origin !== origin) return; if (event.data && event.data.type === "top-tickets:new-message" && !open) { badge.style.display = "block"; } }); document.body.appendChild(panel); document.body.appendChild(button); })();