/**
 * Handles javascript calls for the 'media' page
 */ 
MediaManager = {
  data: [],

  buildTweetTable: function() {
    if (MediaManager.data != null) {
      var tweets = MediaManager.data.twitter;

      var table = MediaManager.buildTweetTableShell();
      jQuery('#tweets').html(table);

      if (tweets.length > 0) {
        jQuery(tweets).each(function() {
          var row = MediaManager.buildTweetRow(this)
          jQuery('#tweetTableBody').append(row);
        });
      }
    }
  },


  buildTweetRow: function(row) {
    var tweetTr = document.createElement('tr');

    var tweetDate = MediaManager.formatTweetDate(row.created_at);
    var tweetTime = MediaManager.formatTweetTime(row.created_at);
    var tweetDateTd = document.createElement('td');
    var tweetDateLine = document.createElement('span');
    var tweetDateSpan = document.createElement('span');
    var tweetTimeSpan = document.createElement('span');

    jQuery(tweetDateSpan)
            .addClass('date')
            .html(tweetDate)
            .appendTo(tweetDateLine);

    jQuery(tweetTimeSpan)
            .addClass('time')
            .html(tweetTime)
            .appendTo(tweetDateLine);

    jQuery(tweetDateLine)
            .addClass('dateLine')
            .appendTo(tweetDateTd);

    jQuery(tweetDateTd)
            .addClass('tweetDate tweetData')
            .appendTo(tweetTr);

    var tweetTextTd = document.createElement('td');
    jQuery(tweetTextTd)
            .addClass('tweetText tweetData')
            .html(row.text)
            .appendTo(tweetTr);

    return tweetTr;
  },

  buildTweetTableShell: function() {
    var html = '<table id="tweetTableShell">';
      html += '<thead id="tweetTableHeader">';
        html += '<tr class="tweetTableHeaderRow">';
          html += '<th colspan="2">@hocostriders <a target="_blank" href="http://twitter.com/#!/hocostriders"><img class="twitterLogo" src="/img/twitter/bird_32_blue.png"/></a></th>';
        html += '</tr>';
      html += '</thead>';
      html += '<tbody id="tweetTableBody">';
      html += '</tbody>';
    html += '</table>';

    return html;
  },

  formatTweetDate: function(createdAt) {
    var jsDate = new Date(createdAt.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/, "$1 $2 $4 $3 UTC"));

    // zero pad month
    var month = jsDate.getMonth() + 1;
    month = month + '';
    if (month.length == 1) {
      month = '0' + month;
    }

    // zero pad day
    var day = jsDate.getDate() + '';
    if (day.length == 1) {
      day = '0' + day;
    }

    var formattedDate = '';
    formattedDate += month;
    formattedDate += '/';
    formattedDate += day;
    formattedDate += '/';
    formattedDate += jsDate.getYear() - 100;
    formattedDate += ' ';
    return formattedDate;
  },

  formatTweetTime: function(createdAt) {
    var jsDate = new Date(createdAt.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/, "$1 $2 $4 $3 UTC"));

    var hours = jsDate.getHours();
    var meridian = ' AM';
    if (hours > 12) {
      hours = hours - 12;
      meridian = ' PM';
    }
    else if (hours == 12) {
      meridian = 'PM';
    }
    
    var minutes = jsDate.getMinutes() + '';
    if (minutes.length == 1) {
      minutes = '0' + minutes;
    }
    
    var formattedTime = '';
    formattedTime += hours;
    formattedTime += ':';
    formattedTime += minutes;
    formattedTime += meridian;


    return formattedTime; 
  },
 
  initialize: function() {

    // go fetch recent tweets for inclusion
    if (TwitterClient == null) {
      TwitterClient = new TwitterClient();
    }

    var successCallback = function(data) {
      MediaManager.data.twitter = data;
      MediaManager.buildTweetTable();
    }


    TwitterClient.getTweetsForUser({
      'successCallback': successCallback
    });
  }
}


jQuery(document).ready(function() {
  MediaManager.initialize();
});

