<?php

$this->registerJs(
<<<JS
const deadline = new Date(2023, 11, 31, 23, 59, 59);
  // id таймера
  let timerId = null;
  // склонение числительных
  function declensionNum(num, words) {
    return words[(num % 100 > 4 && num % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(num % 10 < 5) ? num % 10 : 5]];
  }
  // вычисляем разницу дат и устанавливаем оставшееся времени в качестве содержимого элементов
  function countdownTimer() {
    const diff = deadline - new Date();
    if (diff <= 0) {
      clearInterval(timerId);
    }
    const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
    const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0;
    const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0;
    const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0;
    _days.dataset.title = declensionNum(days, ['день', 'дня', 'дней']);
    _hours.dataset.title = declensionNum(hours, ['час', 'часа', 'часов']);
    _minutes.dataset.title = declensionNum(minutes, ['минута', 'минуты', 'минут']);
//    _seconds.dataset.title = declensionNum(seconds, ['секунда', 'секунды', 'секунд']);

	_days.textContent = days + ' ' + _days.dataset.title;
    _hours.textContent = hours + ' ' + _hours.dataset.title;
    _minutes.textContent = minutes + ' ' + _minutes.dataset.title;
//    _seconds.textContent = seconds < 10 ? '0' + seconds : seconds;
//	_seconds.textContent = _seconds.textContent + ' ' + _seconds.dataset.title;
}
  // получаем элементы, содержащие компоненты даты
  const _days = document.querySelector('.timer__days');
  const _hours = document.querySelector('.timer__hours');
  const _minutes = document.querySelector('.timer__minutes');
  const _seconds = document.querySelector('.timer__seconds');
  // вызываем функцию countdownTimer
  countdownTimer();
  // вызываем функцию countdownTimer каждую секунду
  timerId = setInterval(countdownTimer, 1000);
JS
    ,
    yii\web\View::POS_END,
    'counter'
);
