﻿function DecreasingCounter(endDate, interval,
                           daysNumberControlName, daysTextControlName,
                           hoursNumberControlName, hoursTextControlName,
                           minutesNumberControlName, minutesTextControlName,
                           secondsNumberControlName, secondsTextControlName)
{
  this.endDate = endDate;
  this.interval = interval;
  this.oneSecond=1000;
  this.oneMinute=(this.oneSecond * 60);
  this.oneHour=(this.oneMinute * 60);
  this.oneDay=(this.oneHour * 24);        
  
  this.daysNumberControlName = daysNumberControlName;
  this.daysTextControlName = daysTextControlName;
  this.hoursNumberControlName = hoursNumberControlName;
  this.hoursTextControlName = hoursTextControlName;
  this.minutesNumberControlName = minutesNumberControlName;
  this.minutesTextControlName = minutesTextControlName;
  this.secondsNumberControlName = secondsNumberControlName;
  this.secondsTextControlName = secondsTextControlName;
  
  this.loopId = -1;
}

DecreasingCounter.prototype.start = function()
{
  var this2 = this;
  this.updateCounter();
  setInterval(function() {this2.updateCounter();}, this.interval);
}

DecreasingCounter.prototype.stop = function()
{
  clearInterval(this.loopId);
}

DecreasingCounter.prototype.updateCounter = function()
{
  var currentDate = new Date();
  var difference = this.endDate.getTime() - currentDate.getTime();
  var days = Math.floor(difference / this.oneDay);
  var hours = Math.floor((difference - (days * this.oneDay)) / this.oneHour);
  var minutes = Math.floor((difference - (days * this.oneDay) - (hours * this.oneHour)) / this.oneMinute);
  var seconds = Math.floor((difference - (days * this.oneDay) - (hours * this.oneHour) - (minutes * this.oneMinute)) / this.oneSecond);
  
  if (this.daysNumberControlName != '') document.getElementById(this.daysNumberControlName).innerHTML = days;
  if (this.hoursNumberControlName != '') document.getElementById(this.hoursNumberControlName).innerHTML = hours;
  if (this.minutesNumberControlName != '') document.getElementById(this.minutesNumberControlName).innerHTML = minutes;
  if (this.secondsNumberControlName != '') document.getElementById(this.secondsNumberControlName).innerHTML = seconds;
  
  if (this.daysTextControlName != '') document.getElementById(this.daysTextControlName).innerHTML = (days==1)?'day':'days';
  if (this.hoursTextControlName != '') document.getElementById(this.hoursTextControlName).innerHTML = (hours==1)?'hour':'hours';
  if (this.minutesTextControlName != '') document.getElementById(this.minutesTextControlName).innerHTML = (minutes==1)?'minute':'minutes';
  if (this.secondsTextControlName != '') document.getElementById(this.secondsTextControlName).innerHTML = (seconds==1)?'second':'seconds';
}
