/*
 * tweetable 1.2 - jQuery twitter feed generator plugin
 *
 * Copyright (c) 2009 Philip Beel (http://www.theodin.co.uk/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Revision: $Id: jquery.tweetable.js 2009-08-20 $ 
 *
 */


/*

	Matt Brewer
	www.macfanatic.net
	2009-09-12

	Made changes:
	 	* Support "prettyTime" option for creating a nicer timestamp than the raw XML version of time
		* Proper HTML, list items use id instead of class for uniqueness. All have class 'tweet_content' now
		* Links inside tweets open in new window

*/

(function($) { 
	
	$.fn.tweetable = function(options, callback) {
		
		var defaults = { 
			limit:5, 
			username:'philipbeel', 
			time:false, 
			prettyTime:false,
			hidden:false
		};
		
		var options = $.extend(defaults, options);
				
		return this.each(function() { 
		
			var act = $(this);
			var api = "http://twitter.com/statuses/user_timeline/";
			var count = "?count=";
			var content = $('<ul class="tweetList"></ul>').hide().prependTo(act);
			
			$.getJSON(api+options.username+".json"+count+options.limit+"&callback=?", act, function(data) { 
				
				$.each(data, function(i,item) { 
									
					if ( item.in_reply_to_screen_name != null && item.in_reply_to_screen_name != "" ) {

					} else {
					
						var li = $('<li id="tweet_content_'+i+'" class="tweet_content"></li>').appendTo(content);
						$('<span class="tweet_link_'+i+'">'+item.text.replace(/#(.*?)(\s|$)/g,'<span class="hash">#$1 </span>').replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,'<a href="$&" target="_blank">$&</a> ').replace(/@(.*?)(\s|\(|\)|$)/g,'<a href="http://twitter.com/$1" target="_blank">@$1 </a>$2')).appendTo(li);
					
						if ( options.time ) {
						
							var timestamp = item.created_at.substr(0,20);
							if ( options.prettyTime ) {
						
								var date = timestamp.substring(0,timestamp.length-10);
								var time = timestamp.substring(timestamp.length-9,timestamp.length-4);
								if ( time.substr(0,2) < 12 ) { 
									if ( time.substr(0,2) < 10 ) {
										time = time.substr(1);
									}
									time += ' AM';
								} else {
									if ( time.substr(0,2) > 12 ) {
										time = time.substr(0,2)-12+time.substr(2);
									}
									time += ' PM';
								}
							
								timestamp = date+' @'+time;
							
							}  
						
							$('<small> '+timestamp+'</small>').appendTo(li);
							
						}
						
					}
					
				});
				
				
				if ( !options.hidden ) {
					content.show();
				}
				
				if ( $.isFunction(callback) ) {
					callback.apply(act, new Array(options));
				}
				
			});
			
		});
		
	}
	
})(jQuery);