$.fn.twitter = function (options)
{
	var isLoaded = false;
	var divLoading = $(options.loading);
	var divContent = $(options.content);
	
	this.listParse = function (data)
	{
		var relative_time = function (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);
			
			if (delta < 60)
			{
				return 'less than a minute ago';
			}
			else if(delta < 120)
			{
				return 'about a minute ago';
			}
			else if(delta < (60*60))
			{
				return (parseInt(delta / 60)).toString() + ' minutes ago';
			}
			else if(delta < (120*60))
			{
				return 'about an hour ago';
			}
			else if(delta < (24*60*60))
			{
				return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
			}
			else if(delta < (48*60*60))
			{
				return '1 day ago';
			}
			else
			{
				return (parseInt(delta / 86400)).toString() + ' days ago';
			}
		}
		
		for (var i=0; i < data.length; ++i)
		{
			var listItem = data [i];
			var divItem = $(document.createElement ('li')).appendTo (divContent);
			
			var username = data [i].user.screen_name;
			var status = 
				data [i].text.replace (
					/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, 
					function(url)
					{
						return '<a href="../../js/'+url+'">'+url+'</a>';
					}
				).replace(
					/\B@([_a-z0-9]+)/ig, 
					function (reply)
					{
						return reply.charAt(0) + '<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
					}
				);
			
			$(document.createElement ("div")).appendTo (divItem).addClass ('status').html (status);
			$(document.createElement ("a")).appendTo (divItem).addClass ('link').attr ('href', 'http://twitter.com/'+username+'/statuses/'+data [i].id).html (relative_time (data [i].created_at)).externalPopup ();
			
			if (i % 2 == 1)	divItem.addClass ('odd');
			if (i % 2 == 0)	divItem.addClass ('even');
		}		
		
		divLoading.hide ();
		divContent.show ();
	}
	
	this.listLoad = function (listItems)
	{
		if (isLoaded)
		{
			return;
		}
		
		isLoaded = true;
		
		divLoading.show ();
		divContent.hide ();
		
		$.getJSON (
			"http://twitter.com/statuses/user_timeline/bashaus.json?count=5&callback=?",
			this.listParse
		);
	}
	
	return this;
}

var twitterList1;

$(document).ready (
	function ()
	{
		twitterList1 = $('#Twitter').twitter (
			{
				'loading'	:	'#Twitter-Loading',
				'content'	:	'#Twitter-Content'
			}
		);
	}
);