var months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'];
var granularity = new Hash({'yr': 31536000,
 'wk': 604800,
 'day': 86400,
 'hr': 3600,
 'min': 60,
 'sec': 1});

function pluralize(count, word){
  if(count == 1 || count == -1){
    return count + ' ' + word;
  }
  else{
    return count + ' ' + word + 's';
  }
}

//debug
function get_year_as_string(actevent){
  return months[actevent.getMonth()] + ' ' + actevent.getDate() + ' ' + actevent.getFullYear();
}

function updatecount(actevent, element) {
  var now = new Date();
  var now_timestamp = now.getTime() / 1000;
  var event_timestamp = actevent.getTime() / 1000;

  var timestamp = Math.floor(event_timestamp - now_timestamp);
  var string = '';
  granularity.each(function(pair) {
      string += ' ' + pluralize(Math.floor(timestamp / pair.value), pair.key);
      timestamp %= pair.value;
  });
  
  $(element).update(string);
}


function monocount(when, element){
  var event_date = new Date(when);
  updatecount(event_date, element);

  new PeriodicalExecuter(function(pe) {
    updatecount(event_date, element);
  }, 1);
}