/*! @file countdown.js
*	@brief Fonctions javascript pour compte a rebours
*	@date 2009-01-20
*/


function countdown (id, currentTime, targetDate, format, frequency, endMessage)
{
  if (!document.getElementById || !document.getElementById(id))
  {
    return;
  }
  this.container = document.getElementById(id);
  this.currentTime = new Date();
  this.currentTime.setTime (currentTime*1000);

  this.targetDate = new Date();
  this.targetDate.setTime (targetDate*1000);

  this.format = format;
  this.frequency = frequency;
  this.endMessage = endMessage;

  this.timerID = null;
  updateTime (this);
}

//countdown.prototype.updateTime = function (obj)
function updateTime (obj)
{
  obj.currentTime.setTime(obj.currentTime.getTime () + (obj.frequency*1000));
  setTimeout (function() {updateTime(obj)}, (obj.frequency*1000)); //update time every x seconds
}

countdown.prototype.displaycountdown = function ()
{
  var thisobj = this;

  var timediff = (this.targetDate - this.currentTime)/1000; //difference btw target date and current date, in seconds
  if (timediff <= 0)
  { //if time is up
    this.container.innerHTML = this.endMessage;
    clearTimeout (this.timerID);
    return;
  }

  var oneMinute = 60; //minute unit in seconds
  var oneHour = 60*60; //hour unit in seconds
  var oneDay = 60*60*24; //day unit in seconds

  var dayfield = Math.floor (timediff/oneDay);
  var hourfield = Math.floor ((timediff-dayfield*oneDay)/oneHour);
  var minutefield = Math.floor ((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute);
  var secondfield = Math.floor ((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute));

  var result = this.format;
  result = result.replace (/%d/, dayfield);
  result = result.replace (/%h/, hourfield);
  result = result.replace (/%m/, minutefield);
  result = result.replace (/%s/, secondfield);
  
  if (dayfield < 10) {
    dayfield = '0' + dayfield;
  }
  if (hourfield < 10) {
    hourfield = '0' + hourfield;
  }
  if (minutefield < 10) {
    minutefield = '0' + minutefield;
  }
  if (secondfield < 10) {
    secondfield = '0' + secondfield;
  }

  result = result.replace (/%D/, dayfield);
  result = result.replace (/%H/, hourfield);
  result = result.replace (/%M/, minutefield);
  result = result.replace (/%S/, secondfield);

  this.container.innerHTML = result;

  setTimeout (function() {thisobj.displaycountdown()}, (this.frequency*1000)); //update time every x seconds

}



