// Month is zero-based :P
var TOURNEY_START = new Date(Date.UTC(2009, 7, 1));
var TOURNEY_END = new Date(Date.UTC(2009,8,1));
var START_TEXT = 'midnight Aug 1, 2009';
var END_TEXT = 'midnight Sep 1, 2009';

function timeLeftMillis(from) {
  var now = new Date();
  return from.getTime() - now.getTime();
}

function timeToStart() {
  return timeLeftMillis(TOURNEY_START);
}

function timeToEnd() {
  return timeLeftMillis(TOURNEY_END);
}

function banner() {
  return document.getElementById('tourney_banner');
}

function pad(width, num) {
  var text = "" + num;
  while (width > text.length) {
    text = '0' + text;
  }
  return text;
}

function countdown(delta) {
  var time = Math.floor(delta / 1000);
  var seconds = time % 60;
  time = Math.floor(time / 60);
  var minutes = time % 60;
  time = Math.floor(time / 60);
  var hours = time % 24;
  var days = Math.floor(time / 24);
  var timeText = pad(2, hours) + ":" + pad(2, minutes) + ":" +
    pad(2, seconds);
  if (days > 0) {
    var sday = days + " day";
    if (days > 1)
      sday += 's';
    timeText = sday + ", " + timeText;
  }
  return timeText;
}

function populateTourneyTime() {
  if (!banner())
    return;

  var startDelta = timeToStart();
  var endDelta = timeToEnd();

  var text = '';
  '<p>The tournament is from ' + START_TEXT +' to ' + END_TEXT + ' UTC (' +
    TOURNEY_START.toString() + ' to ' + TOURNEY_END.toString() + ')</p>';

  if (startDelta >= 0) {
    text += '<p><b>Tournament start:</b> ' + START_TEXT + ' UTC (' +
      TOURNEY_START.toString() + ')';
    text += '<p><b>Countdown:</b> ' + countdown(startDelta) + '</p>';
  } else if (endDelta >= 0) {
    text += '<p><b>Tournament end:</b> ' + END_TEXT + ' UTC (' +
      TOURNEY_END.toString() + ')';
    text += '<p><b>Time left:</b> ' + countdown(endDelta) + '</p>';
  } else {
    text = '<p>The August 2008 tournament is complete!</p>';
  }
  banner().innerHTML = text;

  setTimeout(populateTourneyTime, 1000);
}
