(function($) {
	$.fn.gosiTwitter = function(options) {
		var opts = $.extend({}, $.fn.gosiTwitter.defaults, options);
		return this.each(function() {
			var $this = jQuery(this);
			$this.opts = $.extend({}, opts);
			$this.find('.loader').append('<ul id="twitter_update_list"><li></li></ul>');
			jQuery("ul#twitter_update_list").hide();
	
			// add preLoader to container element
			var pl = jQuery('<div class="preloader">'+opts.loaderText+'</div>');
			$this.find('.loader').append(pl);
			$this.find('.loader').css('height',$this.find('.loader').outerHeight()+'px');
		
			$.getScript("http://twitter.com/javascripts/blogger.js");
			$.getScript("http://twitter.com/statuses/user_timeline/"+opts.userName+".json?callback=twitterCallback2&count="+opts.numTweets, function() {		
				$this.find('.preloader').remove();
				var tweet = jQuery('<div class="tweet"></div>');
				$this.find('.loader').append(tweet);
				$.fn.gosiTwitter.showTweet($this, 0);	
				// jQuery("ul#twitter_update_list").show();
				jQuery("ul#twitter_update_list a").attr('target','_blank');
				setInterval(function(){ $.fn.gosiTwitter.showTweet($this) },6000);
			});
		});
		
	};
	$.fn.gosiTwitter.showTweet = function($this, tweetIndex){
		if(typeof(tweetIndex) == 'undefined'){
			$this.opts.currentTweet++;
		}else{
			$this.opts.currentTweet = tweetIndex;	
		}
		if(jQuery("ul#twitter_update_list li:eq("+$this.opts.currentTweet+")").length == 0){
			$this.opts.currentTweet = 0;
		}
		$this.find('.tweet').fadeOut(200, function(){
			$this.find('.tweet').html(jQuery("ul#twitter_update_list li:eq("+$this.opts.currentTweet+")").html());
			$this.find('.loader').animate({height:$this.find('.tweet').outerHeight()+'px'},200, function(){
				$this.find('.tweet').fadeIn(200);
			});
		});
	};
	
	// plugin defaults
	$.fn.gosiTwitter.defaults = {
		userName: 		null,
		numTweets: 		5,
		currentTweet: 	0,
		loaderText: 	"Loading tweets..."
	};
})(jQuery);