var twitter = {

  time_ago : function(time_str) {
    var delta = parseInt((new Date().getTime() - new Date(time_str)) / 1000, 10);
    var r = '';
    if(delta < 60)
      r = delta + ' seconds';
    else if(delta < 120)
      r = 'a minute';
    else if(delta < (45*60))
      r = (parseInt(delta / 60, 10)).toString() + ' minutes';
    else if(delta < (2*60*60))
      r = 'an hour';
    else if(delta < (24*60*60))
      r = '' + (parseInt(delta / 3600, 10)).toString() + ' hours';
    else if(delta < (48*60*60))
      r = 'a day';
    else
      r = (parseInt(delta / 86400, 10)).toString() + ' days';
    return 'about ' + r + ' ago';
  },

  url : function(username, count) {
    if(count === undefined) count = 10;
    return 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=' + username + '&count=' + count + '&include_rts=1&callback=?';
  },

  regexp : {
    link : /https?:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}[~\/a-zA-Z0-9\-\.]+/g,
    user : /@([a-zA-Z0-9_]+)/g,
    hash : /#([a-zA-Z0-9_]+)/g
  },

  get_timeline : function(id, username, count) {
    $.getJSON(this.url(username, count), function(data) {
      var html = '';
      for(var i = 0; i < data.length; i++) {
        var msg  = data[i].text.toString();
        var time = twitter.time_ago(data[i].created_at);
        msg = msg.replace(twitter.regexp.link, '<a href="$&" target="_blank">$&</a>');
        msg = msg.replace(twitter.regexp.user, '<a href="http://twitter.com/$1" target="_blank">$&</a>');
        msg = msg.replace(twitter.regexp.hash, '<span class="hash">$&</span>');
        html += '<li><span class="time">' + time + '</span> ' + msg + '</li>';
      }
      $('#' + id).html('<ul>' + html + '</ul>');
    });
  }

};


