(function($){

 	$.fn.extend({ 
 		
 		jQTwitter: function(settings) {

			var defaults = {
				username : 'twitter',
                count : 5,
				show_image: true,
                image_size: 48
			}
				
			var settings =  $.extend(defaults, settings);

    		return this.each(function() {
				var set = settings;
                var $this = $(this);  
				//Grab the JSON feed of the user
			$.getJSON('http://twitter.com/status/user_timeline/' + set.username + '.json?count=' + set.count + '&callback=?', 
			
				function(data){ 

					$.each(data, function(i, item) {       
					//Create a <li> for each tweet
						var jQtweet = '<li class="tweetItem">';
							//split time into component parts, reassemble and twist into relative times - added 02/17/11 by Will Baer
							var r= item.created_at;
								var values = item.created_at.split(" ");
								var time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
								  var parsed_date = Date.parse(time_value);
								  var relative_to = ( parsed_date.length > 1) ? parsed_date[1] : new Date();
								  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
								  delta = delta + (relative_to.getTimezoneOffset() * 60);
								    var r = '';
									  if (delta < 60) {
											r = 'a minute ago';
									  } else if(delta < 120) {
											r = 'couple of minutes ago';
									  } else if(delta < (45*60)) {
											r = (parseInt(delta / 60)).toString() + ' minutes ago';
									  } else if(delta < (90*60)) {
											r = 'an hour ago';
									  } else if(delta < (24*60*60)) {
											r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';
									  } else if(delta < (48*60*60)) {
											r = '1 day ago';
									  } else {
											r = (parseInt(delta / 86400)).toString() + ' days ago';
									  }


						if (set.show_image){
							if (set.image_size != 0) {
								//jQtweet += '<div class="tweetpic">';
								jQtweet += '<a href="http://twitter.com/' + item.user['screen_name'] + '">'
								jQtweet += '<img class="tweetimg" width="' + set.image_size +'" height="' + set.image_size + '" src="' + item.user['profile_image_url'] + '" />';
								jQtweet += '</a> ';
								//jQtweet += '</div>';
							}
						}
						var tweetTxt = item.text;
						tweetTxt = tweetTxt.replace(/(http\:\/\/[A-Za-z0-9\/\.\?\=\-]*)/g,'<a href="$1">$1</a>'); //Screen Name Link
						tweetTxt = tweetTxt.replace(/@([A-Za-z0-9\/_]*)/g,'<a href="http://twitter.com/$1">@$1</a>'); //Mentions Link @
						tweetTxt = tweetTxt.replace(/#([A-Za-z0-9\/\.]*)/g,'<a href="http://twitter.com/search?q=$1">#$1</a>');// Hash Link #
						
						tweetTxt += " -- ";
						tweetTxt += r;
						jQtweet += tweetTxt;
						jQtweet += '<br />'
						jQtweet += '</li>';

						$this.append(jQtweet);
					});      			   
				});
    		});
    	}
	});	
})(jQuery);
