
/*

	SocialStream.js
	version 0.2.2
	MIT License
	First Created: 07/18/10
	Last Revised: 07/23/10
	edward@edwardhotchkiss.com
	http://edwardhotchkiss.com/
	http://www.edwardhotchkiss.com/post/123456/display-your-social-stream-with-jquery-plugin/

*/

(function($) {

	$.fn.SocialStream = function(options) {
    
    	var settings = {
      		twitterUsername : "edwardhotchkiss",
      		tumblrURL       : "edwardhotchkiss.com",
      		onBefore        : function(){},
      		onAfter         : function(){},
      		tweetCount      : 6,
      		tumbleCount     : 6,
      		avatarSize      : 36
    	};	

    	if (options) {
        	$.extend(settings, options);
   	 	};			
    	
    	settings.onBefore.apply(this);
	
		return this.each(function() {
			var list = $('<ul class="tweets">').appendTo(this);
			var URL = 'http://twitter.com/status/user_timeline/' + settings.twitterUsername + '.json?count=' + settings.tweetCount + '&callback=?';
			$.getJSON(URL, function(data) {
				
				$.each(data, function(i, item) {
					
					var userLink = item.from_user;
					var username = settings.twitterUsername;
					var avatarURL = item.profile_image_url || item.user.profile_image_url;
					var size = settings.avatarSize;
					var text = item.text;
					var source = item.source;
					
					var createdAt = new Date(item.created_at);
					var day = createdAt.getDate();
					var month = createdAt.getMonth() + 1;
					var year = createdAt.getFullYear().toString();
					var year = year.substring(2, 4);
					var createdAt = month + '.' + day + '.' + year;
						
					text = text.replace(/(http\:\/\/[A-Za-z0-9\/\.\?\=\-]*)/g,'<a target="_new" href="$1">$1</a>');
					text = text.replace(/@([A-Za-z0-9\/_]*)/g,'<a target="_new" href="http://twitter.com/$1">@$1</a>');
					text = text.replace(/#([A-Za-z0-9\/\.]*)/g,'<a target="_new" href="http://twitter.com/search?q=$1">#$1</a>');
					
					var avatarFormat = '<a class="tweetAvatar" title="Profile: ' + userLink + '" href="http://twitter.com/' + username + '"><img border="0" alt="Profile: ' + username + '" src="' + avatarURL + '" width=' + size + '" height=' + size + '" /></a>';
					var textFormat = '<p>' + text + '</p>';
          			var dateFormat = '<p class="tweetDate"><small><span class="source">Via ' + source + '</span> | on <a target="_new" href="http://twitter.com/' + username + '/statuses/' + item.id + '" title="Twitter Permalink">' + createdAt + '</a></small></p>';
					
          			list.append("<li>" + avatarFormat + textFormat + dateFormat + "</li>");
         		 	list.children("li:first").addClass("tweetFirst");
          			list.children("li:odd").addClass("tweetEven");
          			list.children("li:even").addClass("tweetOdd");
						
				});
					     			   
			});
    	});
    	
    	settings.onAfter.apply(this);
  	
  	};
  	
})(jQuery);

/*

EXAMPLE:
--------

$(document).ready(function() {
	$.SocialStream({
      	twitterUsername : "edwardhotchkiss",
      		tumblrURL   : "edwardhotchkiss.com",
      		onBefore    : function(){alert("executing before social stream!")},
      		onAfter     : function(){alert("executing after social stream!")},
      		tweetCount  : 6,
      		tumbleCount : 6,
      		avatarSize  : 36
    	};	
	});
});

*/
