MediaWiki:Gadget-bwtimer.js

Материал из Абсурдопедии
Перейти к навигацииПерейти к поиску

Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
  • Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
  • Opera: Перейдите в Menu → Настройки (Opera → Настройки на Mac), а затем Безопасность → Очистить историю посещений → Кэшированные изображения и файлы
/**
   Backward timer -- 13 May 2012.
   Автор: [[Участник:Edward Chernenko]].

   Ведёт таймер обратного отсчёта ({{обратный отсчёт}}).
*/

/* Функция plural() может пригодиться где-то ещё.
   Внимание: гаджет, её использующий, обязан затребовать ext.gadget.main
   (иначе эта функция может не успеть загрузиться до его выполнения)
*/
window.plural = function(num, one, two_three_four, many)
{
  if(num > 10 && num < 19) return many;
  
  var re = num % 10;
  if(re == 1) return one;
  if(re >= 2 && re <= 4) return two_three_four;
  return many;
}

window.bwtimer = {
  update: function() {
    var LEFT = Math.round($('#bw_timer_end').html().match('[0-9]{8,}') - ((new Date()).getTime() / 1000));
    if(LEFT <= 0)
    {
      $('#backward-counter').html('');
      $('#backward-counter-hide').hide();
      return;
    }

    var LEFT_sec = LEFT % 60;
    var LEFT_min = Math.floor(LEFT / 60) % 60;
    var LEFT_hour = Math.floor(LEFT / 3600);

    $('#bw_timer_left').html(LEFT_hour + " " + plural(LEFT_hour, "час", "часа", "часов") + ", " + LEFT_min + " " + plural(LEFT_min, "минута", "минуты", "минут") + ", " + LEFT_sec + " " + plural(LEFT_sec, "секунда", "секунды", "секунд"));
    setTimeout('bwtimer.update()', 1000);
  }
};

$(function(){
  var BOX = $('#backward-counter')[0];
  if(!BOX) return;

  var END = BOX.innerHTML.match('[0-9]{8,}');
  if(!END)
  {
    BOX.innerHTML = "<span style='color: red;'>Ошибка: внутри backward-counter должно быть число секунд</span>";
    return;
  }
  var NOW = (new Date()).getTime() / 1000;
  if(END < NOW)
  {
    BOX.innerHTML = "";

    $('#backward-counter-hide').hide();
    return;
  }

  BOX.innerHTML = "<span id='bw_timer_end' style='display: none;'>" + END + "</span><span id='bw_timer_left'></span>";
  BOX.style.display = "inline";
  bwtimer.update();
});