(function($) {
var twitterify = (function() {
  var r = [
    [/(^|[\n ])([\w]+?:\/\/[\w]+[^ \"\n\r\t< ]*)/g, '$1<a href="$2">$2</a>'],
    [/(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)/g, '$1<a href="http://$2">$2</a>'],
    [/@(\w+)/g, '<a class="tweet-mention" href="http://twitter.com/$1">@$1</a>'],
    [/#(\w+)/g, '<a class="tweet-hash" href="http://search.twitter.com/search?q=$1">#$1</a>']
  ];
  var le = r.length;
  return function(text) {
    var i, current;
    for (i=0; i<le; i++) {
      current = r[i];
      text = text.replace(current[0], current[1]);
    }
    return text;
  };
})();

var secondsToHuman = function(seconds) {
  var time;
  if (seconds < 60) {
    return 'just now';
  } else if (seconds < 60*60) {
    time = Math.round(seconds/60);
    return (time>1) ? time + ' minutes ago' : ' 1 minute ago';
  } else if (seconds < 60*60*24) {
    time = Math.round(seconds/(60*60));
    return (time>1) ? time + ' hours ago' : ' 1 hour ago';
  } else if (seconds < 60*60*24*7) {
    time = Math.round(seconds/(60*60*24));
    return (time>1) ? time + ' days ago' : ' yesterday';
  } else if (seconds < 60*60*24*7*4) {
    time = Math.round(seconds/(60*60*24*7));
    return (time>1) ? time + ' weeks ago' : ' last week';
  } else {
    time = Math.round(seconds/(60*60*24*30));
    return (time>1) ? time + ' months ago' : ' last month';
  }
};

var createStatusUpdatesFetcher = function(obj, callback) {
  var url = 'http://twitter.com/statuses/user_timeline.json';
  var queryString = '?screen_name=chromashare&count=2&page=1&include_rts=true&trim_user=true&callback=?';
  var tweetsDiv = $('<div>').appendTo(obj);
  var isLoading = false;

  return function() {
    if(isLoading) {
      return;
    }

    isLoading = true;
    tweetsDiv.html('<div class="tweets-loading">Loading tweets...</div>');

    $.getJSON(url + queryString, function(data) {
      var le, current, i, now = new Date(), time, tweetHtml = '';
	if(!data) {
        tweetsDiv.html('<div class="error">Error fetching tweets!</div>');
        return false;
      }

      le = data.length; // cache length for faster iteration
      for(i=0; i<le; i++) {
        current = data[i];
        parts = current.created_at.split(' ');
        time = secondsToHuman((now - new Date([parts[1],parts[2]+',',parts[5],parts[3],parts[4]].join(' ')))/1000);
        tweetHtml += '<div class="tweet-text">' + twitterify(current.text) + '<\/div><div class="tweet-created_at"><a href="http://www.twitter.com/chromashare/status/' + current.id_str + '">' + time + '<\/a><\/div>';
      }
      isLoading = false;
      tweetsDiv.html(tweetHtml);
      if(callback) callback()
    });
  };
};

$.fn.fetchTweets = function(callback) {
  var obj = $(this);
  var fetchStatusUpdates;

  $.ajaxSetup({ cache: true });
  fetchStatusUpdates = createStatusUpdatesFetcher(obj, callback);
  fetchStatusUpdates();
};
})(jQuery);

jQuery(function($){
	var twitter = $("#twitter")
	if(twitter.length == 0) return
	var res=$("<div></div>")
	function callback()
	{
		var len = res.find(".tweet-text").length;
		if(len > 0)
		{
			if(len > 1) twitter.children("p:eq(1)").html(res.find(".tweet-text")[1]);
			twitter.children("p:eq(0)").html(res.find(".tweet-text")[0]).end().find("span").html(res.find(".tweet-created_at")[0]);
		}
	}
	res.fetchTweets(callback);
});
