(function($) {
	$.fn.getTwitter = function(options) {

		$.fn.getTwitter.defaults = {
			userName: null,
			numTweets: 5,
			loaderText: "Loading tweet, please wait ...",
			slideIn: true,
			slideDuration: 750,
			showHeading: true,
			headingText: "Latest Tweets",
			showProfileLink: true,
			showTimestamp: true
		};
		var o = $.extend({}, $.fn.getTwitter.defaults, options);
		return this.each(function() {
			var c = $(this);
			var numFollowers;
			c.hide().empty().addClass("twitted");
			var twitterListHTML = "<ul id=\"twitter_update_list\"><li></li></ul>";
			c.append(twitterListHTML);
			var tl = $("#twitter_update_list");
			tl.hide();
			var preLoaderHTML = $("<p class=\"preLoader\"><br />"+o.loaderText+"</p>");
			c.append(preLoaderHTML);
			if (o.showProfileLink) {
				var profileLinkHTML = "<p class=\"profileLink\"><a style=\"color:#663399;\" href=\"http://twitter.com/"+o.userName+"\">Follow me - @"+o.userName+"</a></p>";
				c.append(profileLinkHTML);
			}
			c.show();
			$.getScript("http://twitter.com/javascripts/blogger.js");
			$.getScript("http://twitter.com/statuses/user_timeline/"+o.userName+".json?callback=twitterCallback2&count="+o.numTweets, function() {
				$(preLoaderHTML).remove();
				if (!o.showTimestamp) {
					tl.find("li").each(function() {
						var timestampHTML = $(this).children("a");
						var timestamp = timestampHTML.html();
						timestampHTML.remove();
						$(this).attr("title", timestamp);
					});
				}
				if (o.slideIn) {
					var tlHeight = tl.data("originalHeight");
					if (!tlHeight) {
						tlHeight = tl.show().height();
						tl.data("originalHeight", tlHeight);
						tl.hide().css({height: 0});
					}

					tl.show().animate({height: tlHeight}, o.slideDuration);
				}
				else {
					tl.show();
				}
				tl.find("li:first").addClass("firstTweet");
				tl.find("li:last").addClass("lastTweet");
			});
		});
	};
})(jQuery);
