{"id":233,"date":"2026-01-18T09:33:08","date_gmt":"2026-01-18T09:33:08","guid":{"rendered":"https:\/\/radiohy.eu\/?page_id=233"},"modified":"2026-03-02T18:52:17","modified_gmt":"2026-03-02T18:52:17","slug":"livechat","status":"publish","type":"page","link":"https:\/\/radiohy.eu\/hu\/livechat\/","title":{"rendered":"LiveChat"},"content":{"rendered":"\n<!-- AVATAR POPUP \u2013 RADIOHY ST\u00daDI\u00d3 ST\u00cdLUS -->\n<div id=\"avatar-popup\" style=\"\n    position:fixed; top:0; left:0; width:100%; height:100%;\n    background:radial-gradient(circle at top, #333 0, #000 55%);\n    display:flex; align-items:center; justify-content:center;\n    z-index:99999; font-family:Arial, sans-serif; color:#fff;\n\">\n  <div style=\"\n      background:rgba(5,5,5,0.95);\n      border-radius:16px;\n      border:2px solid #d4af37;\n      box-shadow:0 0 25px rgba(212,175,55,0.6);\n      width:95%; max-width:420px;\n      padding:24px;\n  \">\n    <h2 style=\"margin:0 0 10px 0; color:#d4af37; text-align:center;\">\n      RadioHy LiveChat\n    <\/h2>\n    <p style=\"margin:0 0 15px 0; text-align:center; color:#ccc; font-size:14px;\">\n      V\u00e1laszd ki a neved \u00e9s az avatarod, miel\u0151tt bel\u00e9psz a chatbe.\n    <\/p>\n\n    <!-- N\u00c9V MEZ\u0150 -->\n    <div style=\"margin-bottom:15px;\">\n      <label for=\"popup-username\" style=\"font-size:13px; color:#aaa;\">Felhaszn\u00e1l\u00f3n\u00e9v<\/label>\n      <input id=\"popup-username\" type=\"text\" placeholder=\"\u00cdrd be a neved...\"\n             style=\"width:100%; margin-top:5px; padding:10px; border-radius:8px;\n                    border:1px solid #444; background:#000; color:#fff; font-size:14px;\">\n    <\/div>\n\n    <!-- AVATAR KATEG\u00d3RI\u00c1K -->\n    <div style=\"margin-bottom:10px; font-size:13px; color:#aaa;\">\n      V\u00e1lassz avatar kateg\u00f3ri\u00e1t:\n    <\/div>\n    <div style=\"display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap;\">\n      <button type=\"button\" onclick=\"selectAvatarCategory('basic')\"\n              style=\"flex:1; min-width:90px; padding:6px 8px; border-radius:999px;\n                     border:1px solid #d4af37; background:#111; color:#d4af37;\n                     font-size:12px; cursor:pointer;\">\n        Alap ikonok\n      <\/button>\n      <button type=\"button\" onclick=\"selectAvatarCategory('radio')\"\n              style=\"flex:1; min-width:90px; padding:6px 8px; border-radius:999px;\n                     border:1px solid #444; background:#050505; color:#ccc;\n                     font-size:12px; cursor:pointer;\">\n        R\u00e1di\u00f3s ikonok\n      <\/button>\n      <button type=\"button\" onclick=\"selectAvatarCategory('premium')\"\n              style=\"flex:1; min-width:90px; padding:6px 8px; border-radius:999px;\n                     border:1px solid #444; background:#050505; color:#ccc;\n                     font-size:12px; cursor:pointer;\">\n        Pr\u00e9mium arany\n      <\/button>\n    <\/div>\n\n    <!-- AVATAR GRID -->\n    <div id=\"avatar-grid\" style=\"\n        display:grid;\n        grid-template-columns:repeat(4, 1fr);\n        gap:10px;\n        margin-bottom:15px;\n        justify-items:center;\n    \">\n      <!-- Ide gener\u00e1l\u00f3dnak az avatarok JS-b\u0151l -->\n    <\/div>\n\n    <div style=\"font-size:11px; color:#777; text-align:center; margin-bottom:10px;\">\n      K\u00e9s\u0151bb saj\u00e1t k\u00e9pes avatar is el\u00e9rhet\u0151 lesz.\n    <\/div>\n\n    <!-- BEL\u00c9P\u00c9S GOMB -->\n    <button type=\"button\" onclick=\"confirmAvatarAndEnter()\"\n            style=\"width:100%; padding:10px; border-radius:10px;\n                   border:none; background:#d4af37; color:#000;\n                   font-weight:bold; font-size:14px; cursor:pointer;\">\n      Bel\u00e9p\u00e9s a chatbe\n    <\/button>\n  <\/div>\n<\/div>\n\n<!-- PR\u00c9MIUM CHAT UI \u2013 RADIOHY ST\u00daDI\u00d3 ST\u00cdLUS -->\n<div id=\"radiohy-chat-wrapper\" style=\"\n    width:100%; height:100vh;\n    background:#000; color:#fff;\n    display:flex; flex-direction:column;\n    font-family:Arial, sans-serif;\n\">\n\n  <!-- FEJL\u00c9C -->\n  <div style=\"\n      padding:12px 16px;\n      background:linear-gradient(90deg,#050505,#151515);\n      border-bottom:2px solid #d4af37;\n      display:flex; align-items:center; justify-content:space-between;\n  \">\n    <div style=\"display:flex; align-items:center; gap:10px;\">\n      <div style=\"\n          width:26px; height:26px; border-radius:50%;\n          border:2px solid #d4af37;\n          display:flex; align-items:center; justify-content:center;\n          font-size:14px;\n      \">\n        \ud83c\udfa7\n      <\/div>\n      <div>\n        <div style=\"font-size:15px; color:#d4af37; font-weight:bold;\">\n          RadioHy LiveChat\n        <\/div>\n        <div style=\"font-size:11px; color:#aaa;\">\n          Radio Hy Chat \u2022 \u00e9l\u0151 \u00fczenetek\n        <\/div>\n      <\/div>\n    <\/div>\n    <div style=\"font-size:11px; color:#888;\">\n      Moder\u00e1tor: <span style=\"color:#d4af37;\">Csaba\u2b50<\/span>\n    <\/div>\n  <\/div>\n\n  <!-- \u00dcZENETLISTA -->\n  <div id=\"radiohy-messages\" style=\"\n      flex:1; overflow-y:auto;\n      padding:12px;\n      background:radial-gradient(circle at top, #222 0, #000 55%);\n  \">\n    <div style=\"text-align:center; font-size:12px; color:#888; margin-top:10px;\">\n      Csatlakozt\u00e1l a RadioHy LiveChathez. L\u00e9gy kedves, maradj r\u00e1di\u00f3bar\u00e1t. \ud83c\udf99\ufe0f\n    <\/div>\n  <\/div>\n\n  <!-- \u00dcZENETK\u00dcLD\u0150 S\u00c1V -->\n  <div style=\"\n      padding:8px;\n      background:#050505;\n      border-top:2px solid #d4af37;\n      display:flex; align-items:center; gap:8px;\n  \">\n    <!-- Emoji gomb -->\n    <button type=\"button\" onclick=\"toggleEmojiPanel()\"\n            style=\"width:34px; height:34px; border-radius:8px;\n                   border:1px solid #444; background:#111; color:#fff;\n                   font-size:18px; cursor:pointer;\">\n      \ud83d\ude00\n    <\/button>\n\n    <!-- \u00dczenetmez\u0151 -->\n    <input id=\"radiohy-message-input\" type=\"text\" placeholder=\"\u00cdrj \u00fczenetet...\"\n           style=\"flex:1; padding:9px 10px; border-radius:8px;\n                  border:1px solid #444; background:#111; color:#fff;\n                  font-size:14px;\">\n\n    <!-- K\u00fcld\u00e9s gomb -->\n    <button type=\"button\" onclick=\"radiohySendMessage()\"\n            style=\"padding:9px 14px; border-radius:8px;\n                   border:none; background:#d4af37; color:#000;\n                   font-weight:bold; font-size:14px; cursor:pointer;\">\n      K\u00fcld\u00e9s\n    <\/button>\n  <\/div>\n\n  <!-- EMOJI PANEL -->\n  <div id=\"radiohy-emoji-panel\" style=\"\n  display:none;\n  flex-direction:column;\n  background:#111;\n  border:1px solid #333;\n  padding:10px;\n  border-radius:8px;\n  max-height:200px;\n  overflow-y:auto;\n\"><\/div>\n    <!-- Emoji gombok JS-b\u0151l -->\n  <\/div>\n<\/div>\n\n\n\n<button id=\"radiohy-logout-btn\" style=\"\n  background:#222;\n  color:#d4af37;\n  border:1px solid #444;\n  padding:5px 10px;\n  font-size:12px;\n  cursor:pointer;\n  margin-top:5px;\n  border-radius:4px;\n\">\n  Kijelentkez\u00e9s\n<\/button>\n\n\n\n<div id=\"radiohy-online-box\" style=\"\n  padding:8px 12px;\n  background:#111;\n  border-bottom:1px solid #333;\n  color:#d4af37;\n  font-size:13px;\n\">\n  Online: bet\u00f6lt\u00e9s&#8230;\n<\/div>\n\n\n\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/8.10.1\/firebase-app.js\"><\/script>\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/8.10.1\/firebase-firestore.js\"><\/script>\n\n\n\n<script>\n\/\/ ------------------------------\n\/\/ RADIOHY CHAT \u2013 TELJES JAVASCRIPT MOTOR\n\/\/ ------------------------------\n\n\/\/ AVATAR ADATOK\nconst AVATARS = {\n  basic: [\n    { id: 'B1', label: 'T', bg: '#444', color: '#fff' },\n    { id: 'B2', label: 'H', bg: '#555', color: '#fff' },\n    { id: 'B3', label: 'R', bg: '#666', color: '#fff' },\n    { id: 'B4', label: 'Y', bg: '#777', color: '#fff' },\n    { id: 'B5', label: 'C', bg: '#333', color: '#fff' },\n    { id: 'B6', label: 'X', bg: '#222', color: '#fff' },\n    { id: 'B7', label: 'M', bg: '#555', color: '#fff' },\n    { id: 'B8', label: 'L', bg: '#666', color: '#fff' }\n  ],\n  radio: [\n    { id: 'R1', label: '\ud83c\udf99\ufe0f', bg: '#111', color: '#d4af37' },\n    { id: 'R2', label: '\ud83c\udfa7', bg: '#111', color: '#d4af37' },\n    { id: 'R3', label: '\ud83d\udcfb', bg: '#111', color: '#d4af37' },\n    { id: 'R4', label: '\ud83d\udce1', bg: '#111', color: '#d4af37' },\n    { id: 'R5', label: '\ud83c\udfb5', bg: '#111', color: '#d4af37' },\n    { id: 'R6', label: '\ud83c\udf9a\ufe0f', bg: '#111', color: '#d4af37' },\n    { id: 'R7', label: '\ud83c\udf9b\ufe0f', bg: '#111', color: '#d4af37' },\n    { id: 'R8', label: '\ud83d\udd0a', bg: '#111', color: '#d4af37' }\n  ],\n  premium: [\n    { id: 'P1', label: 'HY', bg: 'linear-gradient(135deg,#000,#333)', color: '#ffd700' },\n    { id: 'P2', label: '\u2605', bg: 'linear-gradient(135deg,#111,#444)', color: '#ffd700' },\n    { id: 'P3', label: 'VIP', bg: 'linear-gradient(135deg,#000,#222)', color: '#ffdd55' },\n    { id: 'P4', label: 'ON', bg: 'linear-gradient(135deg,#000,#333)', color: '#d4af37' },\n    { id: 'P5', label: 'DJ', bg: 'linear-gradient(135deg,#000,#333)', color: '#d4af37' },\n    { id: 'P6', label: 'RX', bg: 'linear-gradient(135deg,#000,#333)', color: '#ff5555' },\n    { id: 'P7', label: 'LIVE', bg: 'linear-gradient(135deg,#000,#333)', color: '#d4af37' },\n    { id: 'P8', label: 'PRO', bg: 'linear-gradient(135deg,#000,#333)', color: '#d4af37' }\n  ]\n};\n\nlet currentCategory = 'basic';\nlet selectedAvatarId = null;\n\n\/\/ AVATAR POPUP\nfunction selectAvatarCategory(cat) {\n  currentCategory = cat;\n  renderAvatarGrid();\n}\n\nfunction renderAvatarGrid() {\n  const grid = document.getElementById('avatar-grid');\n  if (!grid) return;\n  grid.innerHTML = '';\n\n  AVATARS[currentCategory].forEach(avatar => {\n    const div = document.createElement('div');\n    div.style.width = '60px';\n    div.style.height = '60px';\n    div.style.borderRadius = '50%';\n    div.style.display = 'flex';\n    div.style.alignItems = 'center';\n    div.style.justifyContent = 'center';\n    div.style.cursor = 'pointer';\n    div.style.border = (selectedAvatarId === avatar.id)\n      ? '3px solid #d4af37'\n      : '2px solid #444';\n    div.style.background = avatar.bg;\n    div.style.color = avatar.color;\n    div.style.fontSize = avatar.label.length > 2 ? '11px' : '18px';\n    div.style.fontWeight = 'bold';\n    div.innerText = avatar.label;\n\n    div.onclick = () => {\n      selectedAvatarId = avatar.id;\n      renderAvatarGrid();\n    };\n\n    grid.appendChild(div);\n  });\n}\n\nfunction confirmAvatarAndEnter() {\n  const nameInput = document.getElementById('popup-username');\n  const name = (nameInput?.value || '').trim();\n\n  if (name.length < 2) {\n    alert('K\u00e9rlek adj meg egy \u00e9rv\u00e9nyes nevet (min. 2 karakter)!');\n    return;\n  }\n  if (!selectedAvatarId) {\n    alert('K\u00e9rlek v\u00e1lassz egy avatart!');\n    return;\n  }\n\n  \/\/ ------------------------------\n  \/\/ MODER\u00c1TOR JELSZ\u00d3V\u00c9DELEM\n  \/\/ ------------------------------\n  if (name === \"Csaba\") {\n      const pw = prompt(\"Add meg a moder\u00e1tor jelsz\u00f3t:\");\n      if (pw !== \"Qazokm1982!\") {   \/\/ <-- IDE \u00cdRD A SAJ\u00c1T TITKOS JELSZ\u00d3DAT\n          alert(\"Hib\u00e1s jelsz\u00f3! A Csaba n\u00e9v v\u00e9dett.\");\n          return;\n      }\n      localStorage.setItem(\"radiohy_modkey\", \"OK\");\n  } else {\n      localStorage.removeItem(\"radiohy_modkey\");\n  }\n\n  localStorage.setItem('radiohy_username', name);\n  localStorage.setItem('radiohy_avatar', selectedAvatarId);\n\n  const popup = document.getElementById('avatar-popup');\n  if (popup) popup.style.display = 'none';\n}\n\ndocument.addEventListener('DOMContentLoaded', renderAvatarGrid);\n\n\/\/ AUTOMATIKUS BEL\u00c9P\u00c9S (ha m\u00e1r van n\u00e9v + avatar)\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const savedName = localStorage.getItem('radiohy_username');\n  const savedAvatar = localStorage.getItem('radiohy_avatar');\n\n  if (savedName && savedAvatar) {\n    const popup = document.getElementById('avatar-popup');\n    if (popup) popup.style.display = 'none';\n  }\n});\n\n\/\/ EMOJI PANEL\nconst RADIOHY_EMOJI_CATEGORIES = {\n  hangulat: [\"\ud83d\ude00\",\"\ud83d\ude01\",\"\ud83d\ude02\",\"\ud83e\udd23\",\"\ud83d\ude0a\",\"\ud83d\ude0d\",\"\ud83d\ude0e\",\"\ud83e\udd29\",\"\ud83d\ude21\",\"\ud83d\ude31\",\"\ud83d\ude2d\"],\n  radio: [\"\ud83c\udfa7\",\"\ud83c\udf99\ufe0f\",\"\ud83d\udcfb\",\"\ud83d\udce1\",\"\ud83c\udfb5\",\"\ud83c\udfb6\",\"\ud83d\udd0a\",\"\ud83c\udf9a\ufe0f\",\"\ud83c\udf9b\ufe0f\"],\n  szivek: [\"\u2764\ufe0f\",\"\ud83d\udc9b\",\"\ud83d\udc9a\",\"\ud83d\udc99\",\"\ud83d\udc9c\",\"\ud83e\udd0d\",\"\ud83d\udda4\",\"\ud83d\udc96\",\"\ud83d\udc98\",\"\ud83d\udc9d\"],\n  reakcio: [\"\ud83d\udd25\",\"\u2b50\",\"\u2728\",\"\ud83d\udca5\",\"\ud83d\udc4f\",\"\ud83d\ude4c\",\"\ud83d\udc4d\",\"\ud83d\udc4e\"],\n  allatok: [\"\ud83d\udc36\",\"\ud83d\udc31\",\"\ud83d\udc2d\",\"\ud83d\udc30\",\"\ud83d\udc3b\",\"\ud83d\udc3c\",\"\ud83d\udc28\",\"\ud83d\udc2f\"],\n  egyeb: [\"\u2600\ufe0f\",\"\ud83c\udf19\",\"\u2b50\",\"\u26a1\",\"\u2744\ufe0f\",\"\ud83c\udf27\ufe0f\",\"\ud83c\udf08\"]\n};\n\nfunction toggleEmojiPanel() {\n  const panel = document.getElementById('radiohy-emoji-panel');\n  if (!panel) return;\n\n  const visible = panel.style.display === 'flex';\n  panel.style.display = visible ? 'none' : 'flex';\n\n  if (!visible) renderEmojiPanel();\n}\n\nfunction renderEmojiPanel() {\n  const panel = document.getElementById('radiohy-emoji-panel');\n  if (!panel) return;\n\n  panel.innerHTML = \"\";\n  panel.style.display = \"flex\";\n  panel.style.flexDirection = \"column\";\n\n  \/\/ Kateg\u00f3ria gombok\n  const catBar = document.createElement(\"div\");\n  catBar.style.display = \"flex\";\n  catBar.style.gap = \"6px\";\n  catBar.style.flexWrap = \"wrap\";\n  catBar.style.marginBottom = \"10px\";\n\n  Object.keys(RADIOHY_EMOJI_CATEGORIES).forEach(cat => {\n    const btn = document.createElement(\"button\");\n    btn.textContent = cat.toUpperCase();\n    btn.style.background = \"#222\";\n    btn.style.color = \"#d4af37\";\n    btn.style.border = \"1px solid #444\";\n    btn.style.padding = \"4px 6px\";\n    btn.style.cursor = \"pointer\";\n    btn.style.borderRadius = \"4px\";\n    btn.onclick = () => loadEmojiCategory(cat);\n    catBar.appendChild(btn);\n  });\nfunction loadEmojiCategory(cat) {\n  const panel = document.getElementById('radiohy-emoji-panel');\n  if (!panel) return;\n\n  \/\/ r\u00e9gi grid t\u00f6rl\u00e9se\n  const old = document.getElementById(\"emoji-grid\");\n  if (old) old.remove();\n\n  \/\/ \u00faj grid l\u00e9trehoz\u00e1sa\n  const grid = document.createElement(\"div\");\n  grid.id = \"emoji-grid\";\n  grid.style.display = \"flex\";\n  grid.style.flexWrap = \"wrap\";\n  grid.style.gap = \"6px\";\n\n  \/\/ emojik hozz\u00e1ad\u00e1sa\n  RADIOHY_EMOJI_CATEGORIES[cat].forEach(e => {\n    const btn = document.createElement(\"button\");\n    btn.textContent = e;\n    btn.style.fontSize = \"22px\";\n    btn.style.background = \"#111\";\n    btn.style.border = \"1px solid #333\";\n    btn.style.color = \"#fff\";\n    btn.style.cursor = \"pointer\";\n    btn.style.padding = \"6px\";\n    btn.style.borderRadius = \"6px\";\n    btn.onclick = () => {\n      const input = document.getElementById('radiohy-message-input');\n      if (input) input.value += e;\n    };\n    grid.appendChild(btn);\n  });\n\n  panel.appendChild(grid);\n}\n\n  panel.appendChild(catBar);\n\n  \/\/ Alap\u00e9rtelmezett kateg\u00f3ria\n  loadEmojiCategory(\"hangulat\");\n}\n\/\/ AVATAR MEGJELEN\u00cdT\u00c9S\nfunction getAvatarVisual(avatarId) {\n  const all = [...AVATARS.basic, ...AVATARS.radio, ...AVATARS.premium];\n  return all.find(a => a.id === avatarId) || { label: '?', bg: '#333', color: '#fff' };\n}\n\n\/\/ \u00dcZENET KIRAJZOL\u00c1SA\nfunction renderSingleMessageLocal(msg, isOwn) {\n  const box = document.getElementById('radiohy-messages');\n  if (!box) return;\n\n  const wrapper = document.createElement('div');\n  wrapper.style.display = 'flex';\n  wrapper.style.marginBottom = '8px';\n  wrapper.style.justifyContent = isOwn ? 'flex-end' : 'flex-start';\n\n  const inner = document.createElement('div');\n  inner.style.display = 'flex';\n  inner.style.flexDirection = isOwn ? 'row-reverse' : 'row';\n  inner.style.alignItems = 'flex-end';\n  inner.style.gap = '6px';\n  inner.style.maxWidth = '80%';\n\n  const avatarData = getAvatarVisual(msg.avatarId);\n  const avatar = document.createElement('div');\n  avatar.style.width = '32px';\n  avatar.style.height = '32px';\n  avatar.style.borderRadius = '50%';\n  avatar.style.display = 'flex';\n  avatar.style.alignItems = 'center';\n  avatar.style.justifyContent = 'center';\n  avatar.style.fontSize = avatarData.label.length > 2 ? '10px' : '16px';\n  avatar.style.fontWeight = 'bold';\n  avatar.style.border = '2px solid #d4af37';\n  avatar.style.background = avatarData.bg;\n  avatar.style.color = avatarData.color;\n  avatar.textContent = avatarData.label;\n\n  const bubble = document.createElement('div');\n  bubble.style.padding = '8px 10px';\n  bubble.style.borderRadius = '10px';\n  bubble.style.fontSize = '13px';\n  bubble.style.lineHeight = '1.3';\n  bubble.style.background = isOwn\n    ? 'linear-gradient(135deg,#d4af37,#b8902f)'\n    : 'rgba(20,20,20,0.95)';\n  bubble.style.color = isOwn ? '#000' : '#fff';\n  bubble.style.border = isOwn ? '1px solid #e5c76b' : '1px solid #333';\n\n  const nameRow = document.createElement('div');\n  nameRow.style.fontSize = '11px';\n  nameRow.style.marginBottom = '2px';\n  nameRow.style.color = isOwn ? '#000' : '#d4af37';\n\n  const nameSpan = document.createElement('span');\nnameSpan.textContent = msg.user;\n\n\/\/ Minden hallgat\u00f3 kap egy f\u00fclhallgat\u00f3 ikont\nif (msg.user !== \"Csaba\") {\n    const ear = document.createElement('span');\n    ear.textContent = \" \ud83c\udfa7\";\n    ear.style.color = \"#d4af37\";\n    nameSpan.appendChild(ear);\n}\n\n  \/\/ ------------------------------\n  \/\/ MODER\u00c1TOR CSILLAG (v\u00e9dett)\n  \/\/ ------------------------------\n  if (msg.user === 'Csaba' && localStorage.getItem(\"radiohy_modkey\") === \"OK\") {\n      const star = document.createElement('span');\n      star.textContent = ' \u2b50';\n      star.style.color = isOwn ? '#000' : '#ffd700';\n      nameSpan.appendChild(star);\n  }\n\n  nameRow.appendChild(nameSpan);\n\n  const textRow = document.createElement('div');\n  textRow.textContent = msg.text;\n\n  bubble.appendChild(nameRow);\n  bubble.appendChild(textRow);\n\n  inner.appendChild(avatar);\n  inner.appendChild(bubble);\n  wrapper.appendChild(inner);\n  box.appendChild(wrapper);\n\n  box.scrollTop = box.scrollHeight;\n}\n\n\/\/ FIREBASE + FIRESTORE\nconst firebaseConfig = {\n  apiKey: \"AIzaSyDPhtT07G5XB8NPsLS71M9_JixXJyP5n8k\",\n  authDomain: \"radiohychat.firebaseapp.com\",\n  projectId: \"radiohychat\",\n  storageBucket: \"radiohychat.firebasestorage.app\",\n  messagingSenderId: \"934416880905\",\n  appId: \"1:934416880905:web:b58f4b1585070c28ec6fd8\",\n  measurementId: \"G-9FDK85PB8Q\"\n};\n\nfirebase.initializeApp(firebaseConfig);\nconst db = firebase.firestore();\n\n\/\/ FIRESTORE \u00dcZENETK\u00dcLD\u00c9S\nasync function radiohySendMessage() {\n  const input = document.getElementById('radiohy-message-input');\n  if (!input) return;\n\n  const text = (input.value || '').trim();\n  if (!text) return;\n\n  const user = localStorage.getItem('radiohy_username') || 'Ismeretlen';\n  const avatarId = localStorage.getItem('radiohy_avatar') || null;\n\n  await db.collection(\"messages\").add({\n    user,\n    text,\n    avatarId,\n    time: Date.now()\n  });\n\n  input.value = \"\";\n}\n\n\/\/ FIRESTORE \u00c9L\u0150 FIGYEL\u00c9S\ndb.collection(\"messages\")\n  .orderBy(\"time\")\n  .onSnapshot(snapshot => {\n    const box = document.getElementById('radiohy-messages');\n    if (!box) return;\n\n    box.innerHTML = `\n      <div style=\"text-align:center; font-size:12px; color:#888; margin-top:10px;\">\n        Csatlakozt\u00e1l a RadioHy LiveChathez. L\u00e9gy kedves, maradj r\u00e1di\u00f3bar\u00e1t. \ud83c\udf99\ufe0f\n      <\/div>\n    `;\n\n    const currentUser = localStorage.getItem('radiohy_username') || '';\n\n    snapshot.forEach(doc => {\n      const msg = doc.data();\n      const isOwn = msg.user === currentUser;\n      renderSingleMessageLocal(msg, isOwn);\n    });\n\n    box.scrollTop = box.scrollHeight;\n  });\n\n\n\/\/ ------------------------------\n\/\/ ONLINE FELHASZN\u00c1L\u00d3K KEZEL\u00c9SE\n\/\/ ------------------------------\n\nconst onlineRef = db.collection(\"onlineUsers\");\nlet onlineDocId = null;\n\n\/\/ Bel\u00e9p\u00e9skor felvessz\u00fck a felhaszn\u00e1l\u00f3t\nasync function radiohySetOnline() {\n  const user = localStorage.getItem('radiohy_username');\n  const avatarId = localStorage.getItem('radiohy_avatar');\n\n  if (!user || !avatarId) return;\n\n  const doc = await onlineRef.add({\n    user,\n    avatarId,\n    lastActive: Date.now()\n  });\n\n  onlineDocId = doc.id;\n}\n\n\/\/ Kil\u00e9p\u00e9skor t\u00f6r\u00f6lj\u00fck\nwindow.addEventListener(\"beforeunload\", () => {\n  if (onlineDocId) {\n    onlineRef.doc(onlineDocId).delete();\n  }\n});\n\n\/\/ 10 m\u00e1sodpercenk\u00e9nt friss\u00edtj\u00fck az aktivit\u00e1st\nsetInterval(() => {\n  if (onlineDocId) {\n    onlineRef.doc(onlineDocId).update({\n      lastActive: Date.now()\n    });\n  }\n}, 10000);\n\n\/\/ Online lista figyel\u00e9se\nonlineRef.onSnapshot(snapshot => {\n  const box = document.getElementById(\"radiohy-online-box\");\n  if (!box) return;\n\n  const now = Date.now();\n  const users = [];\n\n  snapshot.forEach(doc => {\n    const data = doc.data();\n    if (now - data.lastActive < 20000) {\n      users.push(data);\n    }\n  });\n\n  let html = `Online: ${users.length}<br>`;\n\n users.forEach(u => {\n    const diff = now - u.lastActive;\n    let color = \"green\";\n\n    if (diff > 60000) color = \"red\";        \/\/ 60+ mp = r\u00e9gen akt\u00edv\n    else if (diff > 20000) color = \"yellow\"; \/\/ 20\u201360 mp = f\u00e9lakt\u00edv\n\n    html += `\n      <span style=\"color:#fff; display:flex; align-items:center; gap:5px; margin-bottom:3px;\">\n        <span style=\"\n          width:10px;\n          height:10px;\n          border-radius:50%;\n          background:${color};\n          display:inline-block;\n        \"><\/span>\n        <span>${u.user} \ud83c\udfa7<\/span>\n      <\/span>\n    `;\n});\n\n  box.innerHTML = html;\n});\n\n\/\/ Bel\u00e9p\u00e9s ut\u00e1n h\u00edvjuk meg\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  setTimeout(radiohySetOnline, 1500);\n});\n\/\/ ------------------------------\n\/\/ KIJELENTKEZ\u00c9S FUNKCI\u00d3\n\/\/ ------------------------------\n\nfunction radiohyLogout() {\n    \/\/ Online st\u00e1tusz t\u00f6rl\u00e9se\n    if (onlineDocId) {\n        onlineRef.doc(onlineDocId).delete();\n    }\n\n    \/\/ Minden bel\u00e9p\u00e9si adat t\u00f6rl\u00e9se\n    localStorage.removeItem(\"radiohy_username\");\n    localStorage.removeItem(\"radiohy_avatar\");\n    localStorage.removeItem(\"radiohy_modkey\");\n\n    \/\/ Oldal \u00fajrat\u00f6lt\u00e9se\n    location.reload();\n}\n\n\/\/ Gomb esem\u00e9ny\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    const btn = document.getElementById(\"radiohy-logout-btn\");\n    if (btn) btn.onclick = radiohyLogout;\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>RadioHy LiveChat V\u00e1laszd ki a neved \u00e9s az avatarod, miel\u0151tt bel\u00e9psz a chatbe. Felhaszn\u00e1l\u00f3n\u00e9v V\u00e1lassz avatar kateg\u00f3ri\u00e1t: Alap ikonok R\u00e1di\u00f3s ikonok Pr\u00e9mium arany K\u00e9s\u0151bb saj\u00e1t k\u00e9pes avatar is el\u00e9rhet\u0151 lesz. Bel\u00e9p\u00e9s a chatbe \ud83c\udfa7 RadioHy LiveChat Radio Hy Chat \u2022 \u00e9l\u0151 \u00fczenetek Moder\u00e1tor: Csaba\u2b50 Csatlakozt\u00e1l a RadioHy LiveChathez. L\u00e9gy kedves, maradj r\u00e1di\u00f3bar\u00e1t. \ud83c\udf99\ufe0f \ud83d\ude00 K\u00fcld\u00e9s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-233","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/pages\/233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/comments?post=233"}],"version-history":[{"count":46,"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/pages\/233\/revisions"}],"predecessor-version":[{"id":326,"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/pages\/233\/revisions\/326"}],"wp:attachment":[{"href":"https:\/\/radiohy.eu\/hu\/wp-json\/wp\/v2\/media?parent=233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}