{"id":659,"date":"2025-10-17T04:43:14","date_gmt":"2025-10-17T04:43:14","guid":{"rendered":"https:\/\/precident.shop\/?page_id=659"},"modified":"2025-11-12T07:37:39","modified_gmt":"2025-11-12T07:37:39","slug":"spin-wheel","status":"publish","type":"page","link":"https:\/\/precident.shop\/?page_id=659","title":{"rendered":"SPIN THE WHEEL"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"659\" class=\"elementor elementor-659\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d8f890b e-flex e-con-boxed e-con e-parent\" data-id=\"d8f890b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b668467 elementor-widget elementor-widget-html\" data-id=\"b668467\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>PreciDent Wheel Of Fortune<\/title>\r\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;700&display=swap\" rel=\"stylesheet\">\r\n  <style>\r\n    body { display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;margin:0;font-family:'Poppins',sans-serif;background-color:#f4f7f9;color:#333;padding:20px; }\r\n    h1 { font-weight:700;color:#264587;text-align:center;margin-bottom:0.5em; }\r\n    #preForm { text-align:center;margin-bottom:20px;padding:20px;border:1px solid #ccc;border-radius:8px;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,0.1);transition:opacity .5s ease-out; }\r\n    #preForm.hidden { display:none; }\r\n    #preForm input,#preForm button { padding:10px;margin:5px 0;border-radius:5px;border:1px solid #ddd;width:100%;max-width:300px;box-sizing:border-box;font-weight:500;font-family:'Poppins',sans-serif; }\r\n    #formSubmit { background:#4CAF50;color:#fff;border:none;cursor:pointer;font-weight:700;margin-top:15px;max-width:300px; }\r\n    #wheelOfFortune { display:inline-flex;position:relative;margin:30px auto;width:400px;height:400px;box-shadow:0 10px 30px rgba(0,0,0,0.2);border-radius:50%;opacity:0.4;pointer-events:none;transition:opacity .5s ease-out; }\r\n    #wheelOfFortune.unlocked { opacity:1;pointer-events:auto; }\r\n    @keyframes unlockGlow {0%,100%{box-shadow:0 0 10px 5px rgba(255,223,0,0.5);}50%{box-shadow:0 0 20px 10px rgba(255,223,0,0.8);} }\r\n    #spin.unlocked-glow { animation: unlockGlow 1.5s ease-in-out 3; }\r\n    #wheel { display:block;background:#264587;border-radius:50%;transition:transform .1s linear; }\r\n    #spin { font:1.5rem\/0 sans-serif;user-select:none;cursor:pointer;display:flex;justify-content:center;align-items:center;position:absolute;top:50%;left:50%;width:120px;height:120px;margin-left:-60px;margin-top:-60px;background:#fff;color:#264587;box-shadow:0 0 0 8px #264587,0 8px 15px rgba(0,0,0,0.4);border-radius:50%;transition:all .3s ease-in-out,box-shadow .1s;font-weight:700;z-index:2;transform:scale(1); }\r\n    #spin:active:not(.spinning){ transform:scale(0.98);box-shadow:0 0 0 8px #1a3364,0 4px 10px rgba(0,0,0,0.5)!important; }\r\n    @keyframes spinPulse {0%,100%{transform:scale(1);opacity:1;}50%{transform:scale(0.95);opacity:0.9;} }\r\n    #spin.spinning { cursor:not-allowed;color:#1a3364;background:#eee;animation:spinPulse 1s infinite alternate;box-shadow:0 0 0 8px #1a3364,0 8px 15px rgba(0,0,0,0.4)!important; }\r\n    #spin::after { content:\"\";position:absolute;top:-25px;left:50%;transform:translateX(-50%);border:18px solid transparent;border-bottom-color:var(--pointer-color,#264587);border-top:none;z-index:3;transition:border-bottom-color .1s; }\r\n    #result { margin-top:30px;font-size:1.4em;font-weight:700;color:#264587;min-height:2em;text-align:center;line-height:1.2; }\r\n    .prize-line { font-size:1.8em;font-weight:800;color:#264587;margin-top:15px;padding:10px 0; }\r\n    @keyframes prizePulseGlow { 0%,100%{text-shadow:0 0 5px rgba(255,223,0,0.5),0 0 10px rgba(255,140,0,0.5);transform:scale(1);}50%{text-shadow:0 0 10px rgba(255,255,0,1),0 0 20px rgba(255,140,0,1);transform:scale(1.05);} }\r\n    .prize-glow { animation:prizePulseGlow 1.5s infinite alternate ease-in-out; }\r\n    .prize-claim-instruction { font-size:1.05em;font-weight:500;color:#333;margin-top:12px; }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <h1>PreciDent Prize Wheel<\/h1>\r\n\r\n  <div id=\"preForm\">\r\n    <p style=\"font-weight:600;color:#1a3364;\">Fill in details to unlock your free spin:<\/p>\r\n    <div class=\"form-group\">\r\n      <input type=\"text\" id=\"name\" placeholder=\"Your Name\" required>\r\n      <input type=\"tel\" id=\"phone\" placeholder=\"Phone Number\" required>\r\n      <input type=\"email\" id=\"email\" placeholder=\"Email Address\" required>\r\n      <input type=\"text\" id=\"salesExec\" placeholder=\"Sales Executive Name (Optional)\">\r\n    <\/div>\r\n    <button id=\"formSubmit\">Submit and Unlock Spin<\/button>\r\n  <\/div>\r\n\r\n  <div id=\"wheelOfFortune\">\r\n    <canvas id=\"wheel\" width=\"400\" height=\"400\"><\/canvas>\r\n    <div id=\"spin\" style=\"--pointer-color:#264587;\">Spin Now<\/div>\r\n  <\/div>\r\n\r\n  <div id=\"result\"><\/div>\r\n\r\n<script>\r\nconst GOOGLE_SHEET_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbwj8ZZiUM6ciLtVmWFb--hZMmvSH4SSzp9sbDXtGqbYY6homZobM6tv2-e4FR5V0Z7MRw\/exec';\r\n\r\nlet rewards = [\r\n  { color: \"#264587\", label: \"ALEXA\" },\r\n  { color: \"#446abb\", label: \"YELLOW\\nBUR HOLDER\" },\r\n  { color: \"#264587\", label: \"FREE BUR\\nSTRIP SAMPLE\" },\r\n  { color: \"#446abb\", label: \"500 RS AMAZON\\nVOUCHER\" },\r\n  { color: \"#264587\", label: \"500 RS FOOD\\nVOUCHER\" },\r\n  { color: \"#264587\", label: \"ALEXA\" },\r\n  { color: \"#446abb\", label: \"YELLOW\\nBUR HOLDER\" },\r\n  { color: \"#264587\", label: \"FREE BUR\\nSTRIP SAMPLE\" },\r\n  { color: \"#446abb\", label: \"500 RS AMAZON\\nVOUCHER\" },\r\n  { color: \"#264587\", label: \"500 RS FOOD\\nVOUCHER\" }\r\n];\r\n\r\nconst wheelCanvas = document.getElementById(\"wheel\");\r\nconst ctx = wheelCanvas.getContext(\"2d\");\r\nconst spinButton = document.getElementById(\"spin\");\r\nconst wheelOfFortune = document.getElementById(\"wheelOfFortune\");\r\nconst resultDisplay = document.getElementById(\"result\");\r\nconst preForm = document.getElementById(\"preForm\");\r\nconst formSubmitButton = document.getElementById(\"formSubmit\");\r\n\r\nconst tot = rewards.length;\r\nconst rad = wheelCanvas.width \/ 2;\r\nconst PI = Math.PI;\r\nconst TAU = 2 * PI;\r\nconst arc = TAU \/ tot;\r\n\r\nlet ang = 0;\r\nlet angVel = 0;\r\nlet isSpinning = false;\r\nlet isUnlocked = false;\r\n\r\nfunction drawSector(sector, i) {\r\n  const start = arc * i;\r\n  ctx.save();\r\n  ctx.beginPath();\r\n  ctx.fillStyle = sector.color;\r\n  ctx.moveTo(rad, rad);\r\n  ctx.arc(rad, rad, rad, start, start + arc);\r\n  ctx.lineTo(rad, rad);\r\n  ctx.fill();\r\n  ctx.translate(rad, rad);\r\n  ctx.rotate(start + arc \/ 2);\r\n  ctx.textAlign = \"center\";\r\n  ctx.fillStyle = \"#fff\";\r\n  ctx.font = \"bold 14px 'Poppins', sans-serif\";\r\n  const lines = sector.label.split(\"\\n\");\r\n  const lineHeight = 18;\r\n  let yOffset = -((lines.length - 1) * lineHeight) \/ 2;\r\n  for (let j = 0; j < lines.length; j++) {\r\n    ctx.fillText(lines[j], rad * 0.65, yOffset + j * lineHeight);\r\n  }\r\n  ctx.restore();\r\n}\r\n\r\nfunction drawWheel() {\r\n  ctx.clearRect(0,0,wheelCanvas.width,wheelCanvas.height);\r\n  rewards.forEach(drawSector);\r\n  rotateVisual();\r\n}\r\ndrawWheel();\r\n\r\nfunction rotateVisual() {\r\n  wheelCanvas.style.transform = `rotate(${ang - PI\/2}rad)`;\r\n}\r\n\r\nfunction postToGoogleSheet(data) {\r\n  fetch(GOOGLE_SHEET_URL, {\r\n    method: 'POST',\r\n    mode: 'no-cors',\r\n    headers: { 'Content-Type': 'application\/json' },\r\n    body: JSON.stringify(data)\r\n  });\r\n}\r\n\r\nfunction frame() {\r\n  if (!isSpinning) return;\r\n  ang += angVel;\r\n  ang %= TAU;\r\n  rotateVisual();\r\n  angVel *= 0.985;\r\n  if (angVel < 0.002) isSpinning = false;\r\n  else requestAnimationFrame(frame);\r\n}\r\n\r\nfunction selectPrize() {\r\n  const available = rewards\r\n    .filter(r => !r.label.includes(\"ALEXA\"))\r\n    .sort((a,b) => {\r\n      const priority = {\r\n        \"YELLOW\\nBUR HOLDER\": 1,\r\n        \"FREE BUR\\nSTRIP SAMPLE\": 2,\r\n        \"500 RS AMAZON\\nVOUCHER\": 3,\r\n        \"500 RS FOOD\\nVOUCHER\": 3\r\n      };\r\n      return priority[a.label] - priority[b.label];\r\n    });\r\n  return available.length > 0 ? available[0].label : null;\r\n}\r\n\r\nfunction startSpinFlow() {\r\n  const name = document.getElementById(\"name\").value.trim();\r\n  const phone = document.getElementById(\"phone\").value.trim();\r\n  const email = document.getElementById(\"email\").value.trim();\r\n  const userKey = phone + \"_\" + email; \r\n  let storedUsers = JSON.parse(localStorage.getItem('wonUsers') || '[]');\r\n\r\n  if (storedUsers.includes(userKey)) {\r\n    alert(\"This user (phone\/email) has already spun!\");\r\n    return;\r\n  }\r\n\r\n  const prizeLabel = selectPrize();\r\n  if (!prizeLabel) {\r\n    alert(\"No more prizes available!\");\r\n    return;\r\n  }\r\n\r\n  showPrize(prizeLabel);\r\n  spinButton.classList.add('spinning');\r\n  spinButton.innerText = \"Spinning...\";\r\n  spinButton.disabled = true;\r\n  isSpinning = true;\r\n  angVel = Math.random() * (0.32 - 0.24) + 0.24;\r\n  requestAnimationFrame(frame);\r\n\r\n  setTimeout(() => {\r\n    isSpinning = false;\r\n    spinButton.classList.remove('spinning');\r\n    spinButton.innerText = \"Spin Now\";\r\n    wheelOfFortune.style.display = 'none';\r\n    spinButton.style.display = 'none';\r\n\r\n    storedUsers.push(userKey);\r\n    localStorage.setItem('wonUsers', JSON.stringify(storedUsers));\r\n\r\n    const payload = {\r\n      name: name,\r\n      phone: phone,\r\n      email: email,\r\n      salesExec: document.getElementById(\"salesExec\").value.trim(),\r\n      prize: prizeLabel\r\n    };\r\n    postToGoogleSheet(payload);\r\n  }, 3000);\r\n}\r\n\r\nfunction showPrize(rewardLabel) {\r\n  const labelText = rewardLabel.replace(\/\\n\/g,' ');\r\n  resultDisplay.innerHTML = `<div class=\"prize-line prize-glow\">Your prize is: ${labelText}<\/div>\r\n  <div class=\"prize-claim-instruction\">You can claim your reward at Delhi Expo Dent 2025. After verification, your prize coupon and stall number details will be sent on WhatsApp.<\/div>`;\r\n}\r\n\r\nformSubmitButton.addEventListener(\"click\", () => {\r\n  const name = document.getElementById(\"name\").value.trim();\r\n  const phone = document.getElementById(\"phone\").value.trim();\r\n  const email = document.getElementById(\"email\").value.trim();\r\n\r\n  if (!name || !phone || !email || !email.includes('@')) {\r\n    alert(\"Please fill valid details.\");\r\n    return;\r\n  }\r\n\r\n  formSubmitButton.disabled = true;\r\n  formSubmitButton.innerText = \"Spin Unlocked\";\r\n  preForm.style.opacity = '0';\r\n  setTimeout(()=> preForm.classList.add('hidden'), 500);\r\n  wheelOfFortune.classList.add('unlocked');\r\n  spinButton.classList.add('unlocked-glow');\r\n  setTimeout(()=> spinButton.classList.remove('unlocked-glow'), 4500);\r\n  resultDisplay.innerText = \"Click Spin Now to play!\";\r\n  isUnlocked = true;\r\n});\r\n\r\nspinButton.addEventListener(\"click\", () => {\r\n  if (!isUnlocked) { alert(\"Unlock spin first.\"); return; }\r\n  if (isSpinning) return;\r\n  startSpinFlow();\r\n});\r\n<\/script>\r\n\t\t\t\t<\/div>\n\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>PreciDent Wheel Of Fortune PreciDent Prize Wheel Fill in details to unlock your free spin: Submit and Unlock Spin Spin [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-659","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/precident.shop\/index.php?rest_route=\/wp\/v2\/pages\/659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/precident.shop\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/precident.shop\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/precident.shop\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/precident.shop\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=659"}],"version-history":[{"count":41,"href":"https:\/\/precident.shop\/index.php?rest_route=\/wp\/v2\/pages\/659\/revisions"}],"predecessor-version":[{"id":724,"href":"https:\/\/precident.shop\/index.php?rest_route=\/wp\/v2\/pages\/659\/revisions\/724"}],"wp:attachment":[{"href":"https:\/\/precident.shop\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}