(function($){
	$.fn.extend({ 
		twitterize: function(options) {
		
		var defaults = {
			tweets: 3
		};

		var twtSettings =  $.extend(defaults, options);

		return this.each(function() {
								  
			var o = twtSettings;	
			var returnTxt = '';
			var count = 0;
		
			$.getJSON("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=cdnbaseball&callback=?", function(data)
			{
				  var twitterText = '';
				  $.each((data.results || data), function(i, item){
			  
					  if(count == o.tweets){return;}
					  var from_user = item.user.screen_name;
					  var tText = item.text;
					  
					  tText = parseTweet(tText);		
				  
					  if(count == o.tweets-1){twitterText += "<li class='last'>"; }else{	twitterText += "<li>"; }
				  
					  twitterText += '<p>' + tText + '</p>';
					  twitterText += '<div class="date">' + relative_time(item.created_at) + ' via ' + item.source+'</div>';
					  twitterText += '</li>';
					  count++;
				  });
			
				  returnTxt += twitterText;
				  $('#twts').html(twitterText);
			});
		
			parseTweet = function(tText) {
			
				var arr = tText.split(" ");
			
				for ( var i = 0, length = arr.length; i < length; i++ ) {
					if (arr[i].indexOf('http') != -1) {
						arr[i] = arr[i].replace(':http', "http");
						arr.splice(i,1,  "<a target='_blank' href='"+arr[i]+"'>" + arr[i] + "</a>");
					}
				
					if (arr[i].indexOf('#') != -1) {
						arr.splice(i,1,  "<a target='_blank' href='http://www.twitter.com/search?q="+arr[i].replace("#", "")+"'>" + arr[i] + "</a>");
					}
				
					if (arr[i].indexOf('@') != -1) {
						var user = arr[i].replace('"', "");
						userLink = user.replace("@", "");
						
						arr.splice(i,1,  "<a target='_blank' href='http://www.twitter.com/"+userLink.replace(":", "")+"'>" + user + "</a>");
					}	
				}
				
				return arr.join(" ");
			};
		});
	}
});

})(jQuery);


parse_date = function(date_str) {
	return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i, '$1,$2$4$3'));
};

relative_time = function(time_value) {		
	var parsed_date = parse_date(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	var pluralize = function (singular, n) {return '' + n + ' ' + singular + (n == 1 ? '' : 's'); };

	if(delta < 60) {
			return 'less than a minute ago';
		} else if(delta < (60*60)) {
			return 'about ' + pluralize("minute", parseInt(delta / 60)) + ' ago';
		} else if(delta < (24*60*60)) {
			return 'about ' + pluralize("hour", parseInt(delta / 3600)) + ' ago';
		} else {
			return 'about ' + pluralize("day", parseInt(delta / 86400)) + ' ago';
		}
	};

pluralize = function(singular, n){
	return '' + n + ' ' + singular + (n == 1 ? '' : 's');
};
