(function( $ ){
	var twitterslider = function() {
		var settings = {speed: 400, easing: 'swing', scrollAmmount: 1, loop: true};
		var element, slider, itemwidth;
		var items = new Array();
		var animating = false;
		var index = 0;
		var nav = {next: '', previous: ''};

	  	this.init = function( options ) {
			$.extend(true, settings, options);
			//Set element variables
			element = this;
			slider = $(element).find('ul');
			items = $(slider).find('li');
			itemwidth = $(items).first().outerWidth(true);
			
			//Adjust slider width to hold all li's
			var totalwidth = 0;
			$(items).each(function() { totalwidth += $(this).outerWidth(true); });
			$(slider).width(totalwidth);
			
			//Set nav functions
			nav.previous = $('#twitter_container .button-previous');
			nav.next = $('#twitter_container .button-next');
			enable(nav.next, next, true);
			enable(nav.previous, previous, true)
			if (!settings.loop) disable(nav.previous);
		}
	  	
	  	var next = function() {
			index++;
			if (settings.loop && index == items.length - 2) index = 0;
			else if (!settings.loop && index == items.length - 3) disable(nav.next);
			
			animate();
			enable(nav.previous, previous);
	  	}
	  	
	  	var previous = function() {
			index--;
			if (settings.loop && index == -1) index = items.length - 3;
			else if (!settings.loop && index == 0) disable(nav.previous);
			
			animate();
			enable(nav.next, next);
	  	}
	  	
	  	var animate = function() {
			var toLeft = index * (itemwidth * settings.scrollAmmount) / -1;
			if (animating) return false;
			animating = true;
			$(slider).stop(true, true).animate({left: toLeft}, settings.speed, settings.easing, function() { animating = false; });
	  	}
		
		
		var disable = function(element) {
			$(element).unbind('click');
			$(element).addClass('disabled');
		}
		
		var enable = function(element, callback, init) {
			if (typeof init != "undefined") $(element).bind('click', callback);
			if ($(element).hasClass('disabled')) {
				$(element).bind('click', callback);
				$(element).removeClass('disabled')
			}
		}
	}
	
	$.fn.twitterslider = function( options ) {
		return this.each(function() {
			var element = $(this);
			if (element.data('twitterslider')) return;
			var mytwitterslider = new twitterslider();
			mytwitterslider.init.call(this, options);
			element.data('twitterslider', mytwitterslider);
		});
	  };

})( jQuery );
