function show_dates_as_local_time()
{
  var spans = document.getElementsByTagName('span')
  
  for (var i=0; i<spans.length; i++)
  {
    if (spans[i].className.match(/\blocal_date\b/i)) 
    {
      spans[i].innerHTML = get_local_time_for_date(spans[i].title)
    }
  }
}

function get_local_time_for_date(time)
{
  system_date = new Date(time)
  user_date = new Date()
  delta_minutes = Math.floor((user_date - system_date) / (60 * 1000))
  
  if (Math.abs(delta_minutes) <= (8*7*24*60))
  {
    distance = distance_of_time_in_words(delta_minutes)
    if (delta_minutes < 0) 
    {
      return distance + ' from now'
    } 
    else
    {
      return distance + ' ago'
    }
  }
  else
  {
    return 'on ' + system_date.toLocaleDateString()
  }
}

function distance_of_time_in_words(minutes)
{
  if (minutes.isNaN) return ""
  minutes = Math.abs(minutes)
  
  if (minutes < 1) return ('less than a minute')
  if (minutes < 50) return (minutes + ' minute' + (minutes == 1 ? '' : 's'))
  if (minutes < 90) return ('about one hour')
  if (minutes < 1080) return (Math.round(minutes / 60) + ' hours')
  if (minutes < 1440) return ('one day')
  if (minutes < 2880) return ('about one day')
  else return (Math.round(minutes / 1440) + ' days')
}

function remove_tag_controls()
{
  $$('a.remove_tag').each(function(tag)
  {
    var tag_id = parseInt(tag.id.replace(/.*_(\d+)$/, '$1'))
    var screenshot_id = parseInt(tag.id.replace(/.*_(\d+)_(\d+)$/, '$1'))

    Event.observe(tag, 'click', function(e) { remove_tag_event(e, screenshot_id, tag_id) })
  })
}

function remove_tag_event(e, screenshot_id, tag_id)
{
  var confirmation = confirm('Are you sure you want to remove that tag?')
  if (confirmation)
  {
    new Ajax.Updater('Tags', '/screenshot/' + screenshot_id + '/tag/' + tag_id + '/remove', { onComplete: function() { remove_tag_controls() } })
    $('Tag_' + tag_id).remove()
  }
  
  Event.stop(e)
  return false
}

function add_tag_controls()
{
  $$('form.add_tag').each(function(add_tag)
  {
    Event.observe(add_tag, 'submit', function(e)
    {
      var screenshot_id = parseInt(add_tag.id.replace(/.*_(\d+)$/, '$1'))
      new Ajax.Updater('Tags', '/screenshot/' + screenshot_id + '/tag/add', { method: 'post', postBody: 'tag=' + add_tag.getInputs('text').first().value, onComplete: function() { remove_tag_controls() } } )
      Event.stop(e)
      return false
    })
  })
}

Event.observe(window, 'load', function()
{
  remove_tag_controls()
  add_tag_controls()
})
