/*  ******************************************************************
 **  Soubor  :  /ariadne/javascript/countdown.js
 **
 **  Modul   :  Ariadne - odpočty
 **  Verze   :  0.1.0
 **
 **  Autor   :  Michal Hromádko        michal.hromadko@lifeweb.cz
 **  Revize  :  Martin Jonáš           martin.jonas@lifeweb.cz
 **
 **  Popis   :  Funkce pro nastavení a spuštění odpočtu
 **
 **  TODO    :
 ** ***************************************************************** */

var _timersStartTimes = [];

function resetAllTimers() {
  for (i in _timersStartTimes) { 
    _timersStartTimes[i] = new Date(); 
  }
}

function resetTimer(id) {
  _timersStartTimes[id] = new Date();
}

/**
 * @deprecated Kvvůli starším šablonám... je potřeba překompilovat
 */
function getExpTime(time) {
  return time;
}

/**
 * Funkce provádí odpočet, po uplynutí provede akci
 * @expTime Timestamp - čas kdy se má porvést akce
 * @id Id prvku do kterého se bude vypisovat odpočet. Pokud se nemá vypisovat, stačí zadat třeba prázdný řetězec
 * @action Akce která se provede - javascriptový kód uložený v řetězci
 */
function countdown(expTime, id, action) {
//alert(_timersStartTimes[id]);
  if (!_timersStartTimes[id]) {
    _timersStartTimes[id] = new Date();
  }

  today = new Date();
  timeLeft = ((expTime * 1000) + _timersStartTimes[id].getTime() - today.getTime());

  // Pokud čas uplynul, provede se akce
  if(timeLeft <= 0) {
    eval(action);
    return;
  }

  // Zbývající čas
  hrsLeft = Math.floor(timeLeft / 3600000);
  timeLeft -= (hrsLeft * 3600000);
  minLeft = Math.floor(timeLeft / 60000);
  timeLeft -= (minLeft * 60000);
  secLeft = Math.floor(timeLeft / 1000);

  // Zbývající hodiny
  if(hrsLeft) {
    out = hrsLeft + ":";
  } else {
    out = "";
  }

  // Zbývající minuty
  if(minLeft < 10) {
    out += "0";
  }
  out += minLeft + ":";

  // Zbývající sekundy
  if(secLeft < 10) {
    out += "0";
  }
  out += secLeft;

  // Výpis zbývajícího času do prvku (pokud existuje)
  element = document.getElementById(id);
  if (element) {
    element.value = out;
  }

  // Nastavení timeoutu pro příští volání funkce
  timer = "countdown(" + expTime + ", \"" + id + "\", \"" + action + "\");";
  setTimeout(timer, 1000);
}
