<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Wheel of Fortune</title>
  <style>
    body {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      background-color: black;
      color: white;
      font-family: Arial, sans-serif;
    }

    .container {
      text-align: center;
    }

    #wheelOfFortune {
      border: 2px solid #f82; /* Оранжевая окантовка для колеса */
      border-radius: 10px;
      padding: 20px;
      margin-bottom: 20px;
    }

    #wheel {
      border: 2px solid #f82; /* Оранжевая окантовка для колеса */
      border-radius: 50%;
    }

    #spin {
      margin-top: 20px;
      padding: 10px 20px;
      border: 2px solid #f82; /* Оранжевая окантовка для кнопки Пуск */
      border-radius: 5px;
      background-color: black;
      color: white;
      cursor: pointer;
      transition: background-color 0.3s;
    }

    #spin:hover {
      background-color: #f82; /* Оранжевый фон при наведении на кнопку Пуск */
    }

    #registrationForm {
      display: none;
      background-color: black;
      padding: 30px; /* Увеличенный padding для формы */
      border: 2px solid #f82; /* Оранжевая окантовка для формы */
      border-radius: 10px;
      text-align: center;
      width: 90%;
      max-width: 400px;
    }

    #registrationForm h1 {
      color: #f82; /* Оранжевый цвет для заголовка */
      margin-bottom: 20px;
    }

    #registrationForm input[type="text"],
    #registrationForm input[type="email"],
    #registrationForm input[type="tel"] {
      width: calc(100% - 22px);
      padding: 10px;
      margin-bottom: 10px;
      border: 2px solid #f82; /* Оранжевая окантовка для полей ввода */
      border-radius: 5px;
      background-color: black;
      color: lightgray; /* Светло-серый цвет текста в полях ввода */
    }

    #registrationForm input[type="checkbox"] {
      margin-right: 5px;
    }

    #registrationForm button {
      width: 100%;
      padding: 15px; /* Увеличенная высота кнопки */
      border: none;
      border-radius: 5px;
      background-color: #f82; /* Оранжевая кнопка */
      color: black;
      font-weight: bold;
      cursor: pointer;
      transition: background-color 0.3s;
    }

    #registrationForm button:hover {
      background-color: #ff9900; /* Светло-оранжевый при наведении */
    }

    @media (max-width: 600px) {
      #registrationForm {
        width: 95%;
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <div id="wheelOfFortune">
      <h1>Ирина Дель Соль</h1>
      <canvas id="wheel" width="300" height="300"></canvas>
      <div id="spin">Пуск</div>
      <p>Текст под колесом</p>
      <a href="#">Ссылка под колесом</a>
    </div>

    <!-- Форма ввода данных -->
    <div id="registrationForm" style="display: none;">
      <h1>Ирина Дель Соль</h1>
      <form id="registration">
        <input type="text" id="name" name="name" placeholder="Ваше имя" required><br>
        <input type="email" id="email" name="email" placeholder="Ваш email" required><br>
        <input type="tel" id="phone" name="phone" placeholder="Ваш телефон" required><br>
        <label><input type="checkbox" id="newsletter" name="newsletter"> Согласен на рассылку</label><br>
        <label><input type="checkbox" id="privacyPolicy" name="privacyPolicy" required> Знаком с политикой конфиденциальности</label><br>
        <button type="submit">Зарегистрироваться</button>
      </form>
      <p>Текст под формой</p>
      <a href="#">Ссылка под формой</a>
    </div>
  </div>

  <script>
    const sectors = [
      { color: '#f82', label: 'VIP', probability: 94 },
      { color: '#0bf', label: '10', probability: 1 },
      { color: '#fb0', label: '200', probability: 1 },
      { color: '#0fb', label: '50', probability: 1 },
      { color: '#b0f', label: '100', probability: 1 },
      { color: '#f0b', label: '5', probability: 1 },
      { color: '#bf0', label: '500', probability: 1 }
    ];
    const rand = (m, M) => Math.random() * (M - m) + m;
    const tot = sectors.length;
    const spinEl = document.querySelector('#spin');
    const ctx = document.querySelector('#wheel').getContext('2d');
    const dia = ctx.canvas.width;
    const rad = dia / 2;
    const PI = Math.PI;
    const TAU = 2 * PI;
    const arc = TAU / sectors.length;
    const friction = 0.991; // 0.995=soft, 0.99=mid, 0.98=hard
    let angVel = 0; // Angular velocity
    let ang = 0; // Angle in radians
    const getIndex = () => Math.floor(tot - (ang / TAU) * tot) % tot;
    function drawSector(sector, i) {
      const ang = arc * i;
      ctx.save();
      // COLOR
      ctx.beginPath();
      ctx.fillStyle = sector.color;
      ctx.moveTo(rad, rad);
      ctx.arc(rad, rad, rad, ang, ang + arc);
      ctx.lineTo(rad, rad);
      ctx.fill();
      // TEXT
      ctx.translate(rad, rad);
      ctx.rotate(ang + arc / 2);
      ctx.textAlign = 'right';
      ctx.fillStyle = '#fff';
      ctx.font = 'bold 21px sans-serif'; // Уменьшенный размер шрифта на 30%
      ctx.fillText(sector.label, rad - 10, 10);
      //
      ctx.restore();
    }
    function rotate() {
      const sector = sectors[getIndex()];
      ctx.canvas.style.transform = `rotate(${ang - PI / 2}rad)`;
      spinEl.textContent = !angVel ? 'Удача!' : sector.label;
      spinEl.style.background = sector.color;
    }
    function frame() {
      if (!angVel) return;
      angVel *= friction; // Decrement velocity by friction
      if (angVel < 0.002) {
        angVel = 0; // Bring to stop
        const sector = sectors[getIndex()];
        localStorage.setItem('hasSpun', 'true');
        console.log('Result:', sector.label); // Вывод значения в консоль
        showRegistrationForm(); // Показать форму после остановки колеса
      }
      ang += angVel; // Update angle
      ang %= TAU; // Normalize angle
      rotate();
    }
    function engine() {
      frame();
      requestAnimationFrame(engine);
    }
    function init() {
      if (!localStorage.getItem('hasSpun')) {
        localStorage.setItem('hasSpun', 'false');
      }
      sectors.forEach(drawSector);
      rotate(); // Initial rotation
      engine(); // Start engine
      spinEl.addEventListener('click', () => {
        if (localStorage.getItem('hasSpun') === 'false') {
          localStorage.setItem('hasSpun', 'true');
          angVel = rand(0.25, 0.45);
          spinWheel();
        } else {
          console.log('You have already spun the wheel.');
        }
      });
    }
    function spinWheel() {
      const probabilities = sectors.map(sector => sector.probability);
      const totalProbability = probabilities.reduce((a, b) => a + b, 0);
      const random = Math.random() * totalProbability;
      let cumulativeProbability = 0;
      for (let i = 0; i < sectors.length; i++) {
        cumulativeProbability += sectors[i].probability;
        if (random < cumulativeProbability) {
          ang = (i + 0.5) * arc;
          break;
        }
      }
    }
    function showRegistrationForm() {
      const wheelOfFortune = document.getElementById('wheelOfFortune');
      const registrationForm = document.getElementById('registrationForm');
      wheelOfFortune.style.display = 'none'; // Скрыть колесо
      registrationForm.style.display = 'block'; // Показать форму
    }
    window.onload = init;
  </script>
</body>
</html>