{"id":4067,"date":"2026-08-19T02:42:52","date_gmt":"2026-08-18T23:12:52","guid":{"rendered":"https:\/\/bimebazar.com\/others\/?page_id=4067"},"modified":"2026-08-19T17:17:28","modified_gmt":"2026-08-19T13:47:28","slug":"lucky-wheel","status":"publish","type":"page","link":"https:\/\/bimebazar.com\/others\/lucky-wheel\/","title":{"rendered":"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4067\" class=\"elementor elementor-4067\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f6d3670 e-flex e-con-boxed e-con e-parent\" data-id=\"f6d3670\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7d3720e elementor-widget elementor-widget-html\" data-id=\"7d3720e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ===== Bimeh Bazar \u2014 Lucky Spin Wheel markup =====\r\n     Paste this into the Elementor HTML widget.\r\n     Load lucky-spin.css before it (Custom CSS field or <link>)\r\n     and lucky-spin.js after it (before <\/body> or in a Code widget below this one).\r\n     Also add the Vazirmatn font link once in your theme header \u2014 see note at\r\n     the bottom of lucky-spin.css -->\r\n\r\n<div class=\"bb-ls-root\">\r\n  <div class=\"bb-ls-page\">\r\n\r\n    <div class=\"bb-ls-brandbar\"><span class=\"bb-ls-dot\"><\/span>\u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631<\/div>\r\n\r\n    <div class=\"bb-ls-headline\">\r\n      <h1>\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631<\/h1>\r\n      <p>\u0628\u0686\u0631\u062e\u0648\u0646 \u0648 \u062a\u062e\u0641\u06cc\u0641 \u0641\u0648\u0631\u06cc \u0628\u06cc\u0645\u0647\u200c\u062a \u0631\u0648 \u0628\u06af\u06cc\u0631<\/p>\r\n    <\/div>\r\n\r\n    <!-- \u0648\u0636\u0639\u06cc\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc: \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc \/ \u062e\u0637\u0627 -->\r\n    <div class=\"bb-ls-gate\" id=\"bbLsGate\">\r\n      <div class=\"bb-ls-gate-status\" id=\"bbLsGateStatus\">\u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc...<\/div>\r\n    <\/div>\r\n\r\n    <!-- \u0627\u06af\u0647 ID \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c \u0628\u0647\u200c\u062c\u0627\u06cc \u067e\u06cc\u0627\u0645 \u0631\u062f\u060c \u0647\u0645\u06cc\u0646\u062c\u0627 \u062b\u0628\u062a\u200c\u0646\u0627\u0645\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.\r\n         \u0627\u06cc\u0646 \u0641\u0631\u0645 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0639\u0645\u0648\u0644\u06cc (\u0646\u0647 AJAX) \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0635\u0641\u062d\u0647 \u067e\u0633\u062a \u0645\u06cc\u200c\u0634\u0647 \u2014 PHP\r\n         (lucky-spin-cache.php) \u0628\u0627 \u0627\u067e\u0633\u200c\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062d\u0631\u0641 \u0645\u06cc\u200c\u0632\u0646\u0647 \u0648 \u0635\u0641\u062d\u0647 \u0631\u0648 \u0628\u0627\r\n         ?ref=ID-\u062c\u062f\u06cc\u062f \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. -->\r\n    <form class=\"bb-ls-register bb-ls-hidden\" id=\"bbLsRegisterForm\" method=\"POST\">\r\n      <label class=\"bb-ls-gate-label\" for=\"bbLsPhoneInput\">\u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062a\u0648\u06cc \u06af\u0631\u062f\u0648\u0646\u0647\u060c \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644\u062a \u0631\u0648 \u0648\u0627\u0631\u062f \u06a9\u0646<\/label>\r\n      <div class=\"bb-ls-gate-row\">\r\n        <input class=\"bb-ls-gate-input\" id=\"bbLsPhoneInput\" name=\"lucky_spin_phone\" type=\"tel\"\r\n               inputmode=\"numeric\" placeholder=\"\u06f0\u06f9xxxxxxxxx\" maxlength=\"11\"\r\n               pattern=\"0?9[0-9]{9}\" required>\r\n        <button class=\"bb-ls-gate-btn\" type=\"submit\" id=\"bbLsRegisterBtn\">\u062b\u0628\u062a\u200c\u0646\u0627\u0645<\/button>\r\n      <\/div>\r\n      <div class=\"bb-ls-gate-status\" id=\"bbLsRegisterStatus\"><\/div>\r\n    <\/form>\r\n\r\n    <div class=\"bb-ls-stage bb-ls-locked bb-ls-hidden\" id=\"bbLsStage\">\r\n      <div class=\"bb-ls-glow\"><\/div>\r\n\r\n      <svg class=\"bb-ls-pointer\" width=\"34\" height=\"40\" viewBox=\"0 0 34 40\">\r\n        <path d=\"M17 40 C10 28 4 22 4 13 A13 13 0 0 1 30 13 C30 22 24 28 17 40 Z\"\r\n              fill=\"url(#bbLsPointerGrad)\" stroke=\"rgba(0,0,0,.35)\" stroke-width=\"1\"\/>\r\n        <circle cx=\"17\" cy=\"13\" r=\"5\" fill=\"#1c1c1f\"\/>\r\n        <defs>\r\n          <linearGradient id=\"bbLsPointerGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\r\n            <stop offset=\"0%\" stop-color=\"#fbe9a3\"\/>\r\n            <stop offset=\"55%\" stop-color=\"#F2BF17\"\/>\r\n            <stop offset=\"100%\" stop-color=\"#b8890a\"\/>\r\n          <\/linearGradient>\r\n        <\/defs>\r\n      <\/svg>\r\n\r\n      <div class=\"bb-ls-wheel-wrap\">\r\n        <svg class=\"bb-ls-wheel\" id=\"bbLsWheelSvg\" viewBox=\"0 0 300 300\"><\/svg>\r\n        <div class=\"bb-ls-hub\"><span>\u0628\u06cc\u0645\u0647<br>\u0628\u0627\u0632\u0627\u0631<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <button class=\"bb-ls-spin-btn bb-ls-hidden\" id=\"bbLsSpinBtn\" disabled>\u0686\u0631\u062e\u0648\u0646\u062f\u0646 \u06af\u0631\u062f\u0648\u0646\u0647<\/button>\r\n    <div class=\"bb-ls-chances bb-ls-hidden\" id=\"bbLsChancesWrap\">\u0634\u0627\u0646\u0633 \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647: <b id=\"bbLsChancesLeft\">\u06f0<\/b><\/div>\r\n    <div class=\"bb-ls-result\" id=\"bbLsResultText\"><\/div>\r\n\r\n  <\/div>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f6b5177 elementor-widget elementor-widget-html\" data-id=\"f6b5177\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>\n    \/* ===== Bimeh Bazar \u2014 Lucky Spin Wheel logic =====\n   Paste this inside the Elementor HTML widget's <script> tag,\n   or enqueue as a separate .js file loaded after the HTML markup. *\/\n(function(){\n\n  \/\/ ===== prize table (matches campaign probability spec) =====\n  \/\/ NOTE: for production, chances \/ prize selection should be validated\n  \/\/ server-side (Apps Script) too \u2014 client-side pick is for the visual only,\n  \/\/ final prize + code should be confirmed against the backend response.\n  const prizes = [\n    { key:\"third_180\",   label:[\"\u06f1\u06f8\u06f0 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646\",\"\u062a\u062e\u0641\u06cc\u0641 \u062b\u0627\u0644\u062b\"],   prob:40 },\n    { key:\"body_350\",    label:[\"\u06f3\u06f5\u06f0 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646\",\"\u062a\u062e\u0641\u06cc\u0641 \u0628\u062f\u0646\u0647\"],   prob:30 },\n    { key:\"supp_12pct\",  label:[\"\u06f1\u06f2\u066a \u062a\u062e\u0641\u06cc\u0641\",\"\u0628\u06cc\u0645\u0647 \u062a\u06a9\u0645\u06cc\u0644\u06cc\"],       prob:10 },\n    { key:\"lottery\",     label:[\"\u0642\u0631\u0639\u0647\u200c\u06a9\u0634\u06cc\",\"\u067e\u0631\u062f\u0627\u062e\u062a \u06a9\u0627\u0645\u0644 \u0647\u0632\u06cc\u0646\u0647\"],  prob:5  },\n    { key:\"giftcard_100\",label:[\"\u06a9\u0627\u0631\u062a \u0647\u062f\u06cc\u0647\",\"\u06f1\u06f0\u06f0 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646\u06cc\"],    prob:10 },\n    { key:\"respin\",      label:[\"\u062f\u0648\u0628\u0627\u0631\u0647\",\"\u0628\u0686\u0631\u062e\u0648\u0646\"],                prob:5  },\n  ];\n\n  const N = prizes.length;\n  const SEG = 360 \/ N;\n  const persianDigits = ['\u06f0','\u06f1','\u06f2','\u06f3','\u06f4','\u06f5','\u06f6','\u06f7','\u06f8','\u06f9'];\n  const toPersianDigits = s => String(s).replace(\/[0-9]\/g, d => persianDigits[d]);\n\n  \/\/ ===== build wheel SVG =====\n  const cx = 150, cy = 150, r = 148, labelR = 96;\n  const svg = document.getElementById('bbLsWheelSvg');\n  const NS = 'http:\/\/www.w3.org\/2000\/svg';\n\n  function polar(angleDeg, radius){\n    const rad = angleDeg * Math.PI \/ 180;\n    return { x: cx + radius * Math.sin(rad), y: cy - radius * Math.cos(rad) };\n  }\n\n  prizes.forEach((p, i) => {\n    const start = i * SEG;\n    const end = start + SEG;\n    const mid = start + SEG \/ 2;\n    const isDark = i % 2 === 0;\n\n    const p1 = polar(start, r);\n    const p2 = polar(end, r);\n    const largeArc = SEG > 180 ? 1 : 0;\n\n    const path = document.createElementNS(NS, 'path');\n    path.setAttribute('d', `M ${cx} ${cy} L ${p1.x} ${p1.y} A ${r} ${r} 0 ${largeArc} 1 ${p2.x} ${p2.y} Z`);\n    path.setAttribute('fill', isDark ? 'url(#bbLsSegDark)' : 'url(#bbLsSegGold)');\n    path.setAttribute('stroke', 'rgba(0,0,0,.4)');\n    path.setAttribute('stroke-width', '1');\n    svg.appendChild(path);\n\n    const g = document.createElementNS(NS, 'g');\n    g.setAttribute('transform', `rotate(${mid} ${cx} ${cy})`);\n    const text = document.createElementNS(NS, 'text');\n    text.setAttribute('x', cx);\n    text.setAttribute('y', cy - labelR);\n    text.setAttribute('text-anchor', 'middle');\n    text.setAttribute('fill', isDark ? '#f7f2e3' : '#1c1500');\n    text.setAttribute('font-family', 'Vazirmatn, sans-serif');\n    text.setAttribute('font-weight', '800');\n    text.setAttribute('font-size', '12.5');\n    p.label.forEach((line, li) => {\n      const tspan = document.createElementNS(NS, 'tspan');\n      tspan.setAttribute('x', cx);\n      tspan.setAttribute('dy', li === 0 ? 0 : 15);\n      tspan.textContent = toPersianDigits(line);\n      text.appendChild(tspan);\n    });\n    g.appendChild(text);\n    svg.appendChild(g);\n  });\n\n  \/\/ gradient defs\n  const defs = document.createElementNS(NS, 'defs');\n  defs.innerHTML = `\n    <radialGradient id=\"bbLsSegDark\" cx=\"50%\" cy=\"50%\" r=\"75%\">\n      <stop offset=\"0%\" stop-color=\"#2a2a2e\"\/>\n      <stop offset=\"100%\" stop-color=\"#151517\"\/>\n    <\/radialGradient>\n    <radialGradient id=\"bbLsSegGold\" cx=\"50%\" cy=\"50%\" r=\"75%\">\n      <stop offset=\"0%\" stop-color=\"#f7d65a\"\/>\n      <stop offset=\"100%\" stop-color=\"#d9a80f\"\/>\n    <\/radialGradient>`;\n  svg.insertBefore(defs, svg.firstChild);\n\n  \/\/ rivets along rim\n  for(let i=0;i<N;i++){\n    const a = i * SEG;\n    const pt = polar(a, r - 10);\n    const rivet = document.createElementNS(NS,'circle');\n    rivet.setAttribute('cx', pt.x);\n    rivet.setAttribute('cy', pt.y);\n    rivet.setAttribute('r', 3.4);\n    rivet.setAttribute('fill', '#0d0d0e');\n    rivet.setAttribute('stroke', 'rgba(255,255,255,.25)');\n    rivet.setAttribute('stroke-width', '.6');\n    svg.appendChild(rivet);\n  }\n\n  \/\/ ===== spin mechanics =====\n  const stage = document.getElementById('bbLsStage');\n  const wheel = document.getElementById('bbLsWheelSvg');\n  const btn = document.getElementById('bbLsSpinBtn');\n  const resultEl = document.getElementById('bbLsResultText');\n  const chancesEl = document.getElementById('bbLsChancesLeft');\n\n  let currentRotation = 0;\n  let spinning = false;\n  let chances = 0;\n  let currentId = null;\n  let appsScriptUrl = null;\n\n  function pickWeightedPrize(){\n    const r = Math.random() * 100;\n    let acc = 0;\n    for(let i=0;i<prizes.length;i++){\n      acc += prizes[i].prob;\n      if(r <= acc) return i;\n    }\n    return prizes.length - 1;\n  }\n\n  wheel.style.transition = 'none';\n  wheel.style.transformOrigin = '50% 50%';\n\n  function spin(){\n    if(spinning || chances <= 0) return;\n    spinning = true;\n    stage.classList.add('bb-ls-spinning');\n    stage.classList.remove('bb-ls-landed');\n    resultEl.classList.remove('bb-ls-show');\n    btn.disabled = true;\n\n    const idx = pickWeightedPrize();\n    const mid = idx * SEG + SEG \/ 2;\n    const targetMod = (360 - mid + 360) % 360;\n    const extraSpins = 6 + Math.floor(Math.random() * 2); \/\/ 6\u20137 full turns\n    const currentMod = ((currentRotation % 360) + 360) % 360;\n    const delta = extraSpins * 360 + ((targetMod - currentMod + 360) % 360);\n    currentRotation += delta;\n\n    wheel.style.transition = 'transform 4.3s cubic-bezier(.14,.68,.14,1)';\n    wheel.style.transform = `rotate(${currentRotation}deg)`;\n\n    \/\/ subtle tick on the pointer as segments cross the marker\n    const tickCount = Math.round(delta \/ SEG);\n    let ticks = 0;\n    const tickInterval = setInterval(() => {\n      if(ticks >= tickCount){ clearInterval(tickInterval); return; }\n      stage.classList.add('bb-ls-tick');\n      setTimeout(()=>stage.classList.remove('bb-ls-tick'), 90);\n      ticks++;\n    }, 4300 \/ tickCount);\n\n    wheel.addEventListener('transitionend', function onEnd(){\n      wheel.removeEventListener('transitionend', onEnd);\n      clearInterval(tickInterval);\n      spinning = false;\n      stage.classList.remove('bb-ls-spinning');\n      stage.classList.add('bb-ls-landed');\n      chances--;\n      chancesEl.textContent = toPersianDigits(chances);\n      const prize = prizes[idx];\n\n      \/\/ TODO (next phase): replace this line with opening the correct\n      \/\/ one of the 4 result popups (win+respin \/ win+no-respin \/ lose+respin \/ lose+no-respin)\n      resultEl.textContent = `\u0646\u062a\u06cc\u062c\u0647: ${prize.label.join(' - ')}`;\n      resultEl.classList.add('bb-ls-show');\n\n      btn.disabled = chances <= 0;\n      if(chances <= 0){\n        btn.textContent = '\u0634\u0627\u0646\u0633 \u0634\u0645\u0627 \u062a\u0645\u0627\u0645 \u0634\u062f';\n      }\n\n      recordSpin_(currentId, prize.key);\n    }, { once:true });\n  }\n\n  btn.addEventListener('click', spin);\n\n  \/\/ ===== backend integration (Google Apps Script) =====\n\n  const gate = document.getElementById('bbLsGate');\n  const gateStatus = document.getElementById('bbLsGateStatus');\n  const chancesWrap = document.getElementById('bbLsChancesWrap');\n  const registerForm = document.getElementById('bbLsRegisterForm');\n  const phoneInput = document.getElementById('bbLsPhoneInput');\n  const registerBtn = document.getElementById('bbLsRegisterBtn');\n  const registerStatus = document.getElementById('bbLsRegisterStatus');\n\n  function setGateStatus(msg, kind){\n    gateStatus.textContent = msg;\n    gateStatus.classList.remove('bb-ls-error','bb-ls-ok');\n    if(kind) gateStatus.classList.add(kind === 'error' ? 'bb-ls-error' : 'bb-ls-ok');\n  }\n\n  function showRegisterForm(){\n    gate.classList.add('bb-ls-hidden');\n    registerForm.classList.remove('bb-ls-hidden');\n  }\n\n  function unlockWheel(chancesFromServer){\n    chances = chancesFromServer;\n    chancesEl.textContent = toPersianDigits(chances);\n    gate.classList.add('bb-ls-hidden');\n    stage.classList.remove('bb-ls-hidden', 'bb-ls-locked');\n    btn.classList.remove('bb-ls-hidden');\n    chancesWrap.classList.remove('bb-ls-hidden');\n    if(chances > 0){\n      btn.disabled = false;\n    } else {\n      btn.disabled = true;\n      btn.textContent = '\u0634\u0627\u0646\u0633 \u0634\u0645\u0627 \u062a\u0645\u0627\u0645 \u0634\u062f\u0647';\n    }\n  }\n\n  \/\/ \u0686\u06a9\u200c\u06a9\u0631\u062f\u0646 ID \u062f\u06cc\u06af\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0686 \u0632\u0646\u062f\u0647 \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u0634\u0647 (\u0628\u0647\u200c\u062e\u0627\u0637\u0631 CSP \u0633\u0627\u06cc\u062a) \u2014\n  \/\/ \u0628\u0647\u200c\u062c\u0627\u0634 PHP (lucky-spin-cache.php) \u0646\u062a\u06cc\u062c\u0647 \u0631\u0648 \u0645\u0648\u0642\u0639 \u0644\u0648\u062f \u0635\u0641\u062d\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062a\u0648\u06cc\n  \/\/ window.BB_LUCKY_SPIN_DATA \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u062b\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0631\u06cc\u0641\u0631\u0627\u0644 \u0642\u0628\u0644\u06cc.\n  function readInjectedData_(){\n    const data = window.BB_LUCKY_SPIN_DATA;\n    if(!data){\n      setGateStatus('\u062f\u06cc\u062a\u0627\u06cc \u06a9\u0645\u067e\u06cc\u0646 \u0644\u0648\u062f \u0646\u0634\u062f. \u0635\u0641\u062d\u0647 \u0631\u0648 \u0631\u0641\u0631\u0634 \u06a9\u0646.', 'error');\n      return;\n    }\n    if(!data.eligible){\n      showRegisterForm();\n      if(data.registerError){\n        showRegisterError_(data.registerError);\n      }\n      return;\n    }\n    currentId = data.id;\n    appsScriptUrl = data.appsScriptUrl;\n    unlockWheel(data.chances);\n  }\n\n  \/\/ \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f: \u0641\u0631\u0645 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0639\u0645\u0648\u0644\u06cc (\u0646\u0647 fetch) \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0635\u0641\u062d\u0647 \u067e\u0633\u062a \u0645\u06cc\u200c\u0634\u0647 \u2014\n  \/\/ PHP (template_redirect \u062f\u0631 lucky-spin-cache.php) \u067e\u0631\u062f\u0627\u0632\u0634\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\n  \/\/ \u0628\u0627 ?ref=ID-\u062c\u062f\u06cc\u062f \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646\u062c\u0627 \u0641\u0642\u0637 \u06cc\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0633\u0628\u06a9 \u0642\u0628\u0644 \u0627\u0632\n  \/\/ \u0633\u0627\u0628\u200c\u0645\u06cc\u062a \u0648\u0627\u0642\u0639\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u0638\u0627\u0647\u0631 \u062f\u06a9\u0645\u0647 \u0631\u0648 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u062f\u06cc\u0645.\n  function showRegisterError_(code){\n    const messages = {\n      phone:   '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a.',\n      network: '\u0627\u062a\u0635\u0627\u0644 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u0634\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u06a9\u0646.',\n      server:  '\u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u06a9\u0646.'\n    };\n    registerStatus.textContent = messages[code] || '\u062e\u0637\u0627\u06cc\u06cc \u067e\u06cc\u0634 \u0627\u0648\u0645\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u06a9\u0646.';\n    registerStatus.classList.add('bb-ls-error');\n  }\n\n  registerForm.addEventListener('submit', function(e){\n    const raw = (phoneInput.value || '').trim();\n    const normalized = raw.replace(\/^0098|^98\/, '0');\n    if(!\/^0?9\\d{9}$\/.test(normalized)){\n      e.preventDefault();\n      showRegisterError_('phone');\n      return;\n    }\n    registerBtn.disabled = true;\n    registerStatus.classList.remove('bb-ls-error','bb-ls-ok');\n    registerStatus.textContent = '\u062f\u0631 \u062d\u0627\u0644 \u062b\u0628\u062a\u200c\u0646\u0627\u0645...';\n    \/\/ preventDefault \u0646\u0645\u06cc\u200c\u0632\u0646\u06cc\u0645 \u2014 \u0641\u0631\u0645 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0637\u0628\u06cc\u0639\u06cc \u0633\u0627\u0628\u200c\u0645\u06cc\u062a \u0648 \u0635\u0641\u062d\u0647 \u0631\u0641\u0631\u0634 \u0645\u06cc\u200c\u0634\u0647\n  });\n\n  \/\/ \u062b\u0628\u062a \u0686\u0631\u062e\u0634: \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627 mode:'no-cors' \u2014 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0648\u0646 \u0631\u0648\u0634\u06cc \u06a9\u0647\n  \/\/ \u062a\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0631\u06cc\u0641\u0631\u0627\u0644 \u062c\u0648\u0627\u0628 \u062f\u0627\u062f\u0647. \u0641\u0642\u0637 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u06cc\u0645\u060c \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062c\u0648\u0627\u0628 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645.\n  function recordSpin_(id, prizeKey){\n    if(!id || !appsScriptUrl) return;\n    fetch(appsScriptUrl, {\n      method: 'POST',\n      mode: 'no-cors',\n      headers: { 'Content-Type': 'application\/json' },\n      body: JSON.stringify({ action:'recordSpin', id, prize: prizeKey })\n    }).catch(() => {\n      \/\/ \u0644\u0627\u06af \u0633\u0645\u062a \u06a9\u0644\u0627\u06cc\u0646\u062a \u06a9\u0627\u0641\u06cc\u0647 \u2014 \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062b\u0628\u062a \u0646\u0628\u0627\u06cc\u062f \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u062e\u0631\u0627\u0628 \u06a9\u0646\u0647\n      console.warn('\u062b\u0628\u062a \u0644\u06cc\u062f \u06af\u0631\u062f\u0648\u0646\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f');\n    });\n  }\n\n  \/\/ wp_footer \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0639\u062f \u0627\u0632 \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u0635\u0644\u06cc \u0635\u0641\u062d\u0647 (\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0648\u06cc\u062c\u062a \u06af\u0631\u062f\u0648\u0646\u0647\u200c\u0633\u062a) \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0647\u060c\n  \/\/ \u067e\u0633 \u0635\u0628\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06a9\u0644 \u0635\u0641\u062d\u0647 \u067e\u0627\u0631\u0633 \u0628\u0634\u0647 \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0628\u0634\u06cc\u0645 window.BB_LUCKY_SPIN_DATA\n  \/\/ \u0642\u0628\u0644 \u0627\u0632 \u062e\u0648\u0646\u062f\u0646\u0634 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647.\n  function boot(){\n    readInjectedData_();\n  }\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', boot);\n  } else {\n    boot();\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631 \u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631 \u0628\u0686\u0631\u062e\u0648\u0646 \u0648 \u062a\u062e\u0641\u06cc\u0641 \u0641\u0648\u0631\u06cc \u0628\u06cc\u0645\u0647\u200c\u062a \u0631\u0648 \u0628\u06af\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc&#8230; \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062a\u0648\u06cc \u06af\u0631\u062f\u0648\u0646\u0647\u060c \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644\u062a \u0631\u0648 \u0648\u0627\u0631\u062f \u06a9\u0646 \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0628\u06cc\u0645\u0647\u0628\u0627\u0632\u0627\u0631 \u0686\u0631\u062e\u0648\u0646\u062f\u0646 \u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647: \u06f0<\/p>\n","protected":false},"author":8,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-4067","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 - \u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"fa_IR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 - \u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631\" \/>\n<meta property=\"og:description\" content=\"\u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631 \u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631 \u0628\u0686\u0631\u062e\u0648\u0646 \u0648 \u062a\u062e\u0641\u06cc\u0641 \u0641\u0648\u0631\u06cc \u0628\u06cc\u0645\u0647\u200c\u062a \u0631\u0648 \u0628\u06af\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc&#8230; \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062a\u0648\u06cc \u06af\u0631\u062f\u0648\u0646\u0647\u060c \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644\u062a \u0631\u0648 \u0648\u0627\u0631\u062f \u06a9\u0646 \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0628\u06cc\u0645\u0647\u0628\u0627\u0632\u0627\u0631 \u0686\u0631\u062e\u0648\u0646\u062f\u0646 \u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647: \u06f0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bimebazar.com\/others\/lucky-wheel\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-19T13:47:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 \u062f\u0642\u06cc\u0642\u0647\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/lucky-wheel\\\/\",\"url\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/lucky-wheel\\\/\",\"name\":\"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 - \u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/#website\"},\"datePublished\":\"2026-08-18T23:12:52+00:00\",\"dateModified\":\"2026-08-19T13:47:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/lucky-wheel\\\/#breadcrumb\"},\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bimebazar.com\\\/others\\\/lucky-wheel\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/lucky-wheel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/#website\",\"url\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/\",\"name\":\"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fa-IR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/#organization\",\"name\":\"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631\",\"url\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo.png\",\"width\":145,\"height\":24,\"caption\":\"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631\"},\"image\":{\"@id\":\"https:\\\/\\\/bimebazar.com\\\/others\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 - \u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"fa_IR","og_type":"article","og_title":"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 - \u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631","og_description":"\u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631 \u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u06cc\u0645\u0647\u200c\u0628\u0627\u0632\u0627\u0631 \u0628\u0686\u0631\u062e\u0648\u0646 \u0648 \u062a\u062e\u0641\u06cc\u0641 \u0641\u0648\u0631\u06cc \u0628\u06cc\u0645\u0647\u200c\u062a \u0631\u0648 \u0628\u06af\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc&#8230; \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062a\u0648\u06cc \u06af\u0631\u062f\u0648\u0646\u0647\u060c \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644\u062a \u0631\u0648 \u0648\u0627\u0631\u062f \u06a9\u0646 \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0628\u06cc\u0645\u0647\u0628\u0627\u0632\u0627\u0631 \u0686\u0631\u062e\u0648\u0646\u062f\u0646 \u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647: \u06f0","og_url":"https:\/\/bimebazar.com\/others\/lucky-wheel\/","og_site_name":"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631","article_modified_time":"2026-08-19T13:47:28+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646":"1 \u062f\u0642\u06cc\u0642\u0647"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bimebazar.com\/others\/lucky-wheel\/","url":"https:\/\/bimebazar.com\/others\/lucky-wheel\/","name":"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633 - \u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631","isPartOf":{"@id":"https:\/\/bimebazar.com\/others\/#website"},"datePublished":"2026-08-18T23:12:52+00:00","dateModified":"2026-08-19T13:47:28+00:00","breadcrumb":{"@id":"https:\/\/bimebazar.com\/others\/lucky-wheel\/#breadcrumb"},"inLanguage":"fa-IR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bimebazar.com\/others\/lucky-wheel\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bimebazar.com\/others\/lucky-wheel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bimebazar.com\/others\/"},{"@type":"ListItem","position":2,"name":"\u06af\u0631\u062f\u0648\u0646\u0647 \u0634\u0627\u0646\u0633"}]},{"@type":"WebSite","@id":"https:\/\/bimebazar.com\/others\/#website","url":"https:\/\/bimebazar.com\/others\/","name":"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631","description":"","publisher":{"@id":"https:\/\/bimebazar.com\/others\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bimebazar.com\/others\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fa-IR"},{"@type":"Organization","@id":"https:\/\/bimebazar.com\/others\/#organization","name":"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631","url":"https:\/\/bimebazar.com\/others\/","logo":{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/bimebazar.com\/others\/#\/schema\/logo\/image\/","url":"https:\/\/bimebazar.com\/others\/wp-content\/uploads\/2025\/08\/logo.png","contentUrl":"https:\/\/bimebazar.com\/others\/wp-content\/uploads\/2025\/08\/logo.png","width":145,"height":24,"caption":"\u0628\u06cc\u0645\u0647 \u0628\u0627\u0632\u0627\u0631"},"image":{"@id":"https:\/\/bimebazar.com\/others\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/pages\/4067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/comments?post=4067"}],"version-history":[{"count":19,"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/pages\/4067\/revisions"}],"predecessor-version":[{"id":4093,"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/pages\/4067\/revisions\/4093"}],"wp:attachment":[{"href":"https:\/\/bimebazar.com\/others\/wp-json\/wp\/v2\/media?parent=4067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}