(function($){
	$.fn.jqtwitter = function(username, options)	{
		if(username)	{
			var defaultSettings = {
				count: '5',
				idname: '#uname',
				idimg: 'img#profile',
				protocol: 'http'
			}
			
			var settings = $.extend(defaultSettings, options);
			var url = "http://twitter.com/status/user_timeline/"+username+".json?count="+settings.count+"&callback=?";
			if(settings.protocol == "https"){
				url = "https://twitter.com/status/user_timeline/"+username+".json?count="+settings.count+"&callback=?";
			}
			var holder = this;
			
			$(settings.idname).text('@'+username);
			
			
			$.getJSON(url, function(data){
				$.each(data, function(i, item){
					$(settings.idimg).attr("src", item.user["profile_image_url"]);
					//holder.append("<p>" + item.text.discoverLinks().discoverUsers().discoverTags() + " <span class='created_at'>created at " + relative_time(item.created_at) + " via " + item.source + "</span></p>");
					//holder.append("<p>" + item.text.discoverLinks().discoverUsers().discoverTags() + " <span class='created_at'>" + relative_time(item.created_at) + "</span></p>");
					if(i == 1){
						holder.append('<p class="last">' + item.text.discoverLinks().discoverUsers().discoverTags() + '</p>');
					}else{
						holder.append('<p>' + item.text.discoverLinks().discoverUsers().discoverTags() + '</p>');
					}
					
				});
			});
		} else {
			console.debug("jQuery jqtwitter requires a username");
		}
		
		// Take the relative time
		function relative_time(time_value) {
			  var values = time_value.split(" ");
			  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
			  var parsed_date = Date.parse(time_value);
			  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
			  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
			  delta = delta + (relative_to.getTimezoneOffset() * 60);
			  
			  var r = '';
			  if (delta < 60) {
				r = 'less than a minute ago';//um minuto atrs
			  } else if(delta < 120) {
				r = 'about a minute ago';//alguns minutos atrs
			  } else if(delta < (45*60)) {
				r = (parseInt(delta / 60)).toString() + ' minutes ago';//minutos atrs
			  } else if(delta < (90*60)) {
				r = ' uma hora atrs';
			  } else if(delta < (24*60*60)) {
				r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';//horas atrs
			  } else if(delta < (48*60*60)) {
				r = '1 dia atrs';
			  } else {
				r = (parseInt(delta / 86400)).toString() + ' days ago';//dias atrs
			  }
			  
			  return r;
		}
		
		// Discover users
		String.prototype.discoverUsers = function() {
			return this.replace(/@[\w]+/g, function(m) {
				return "<a href='http://www.twitter.com/"+m.replace('@','')+"' target='_blank'>"+m+"</a>";
			});
		}; 
		
		// Discover tags
		String.prototype.discoverTags = function()	{
			return this.replace(/ #[\w]+/g, function(t)	{
				return "<a href='http://search.twitter.com/search?q="+t.replace("#", "%23")+"' target='_blank'>"+t+"</a>";
			});
		};
		
		// Discover all links
		String.prototype.discoverLinks = function() {
			return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
				return m.link(m);
			});
		};
		return this;
	};
})(jQuery);
