(function($) {
	
	// Start on 1 or there will be a double interval at page load
	var current = 1;
	var totale  = 0;
	
	$.fn.bannerSwitcher = function(options) {
		
        var defaults = {   
				interval: 5000,
				speed: 500
		  };

		var settings = $.extend({}, defaults, options);
		
		// Add the speed to the interval so the banner stays on one image for the whole interval
		settings.interval += settings.speed;
		
		var container = $(this);
		
		// Set first banner to visible, non-first banners to invisible
		container.find('div').filter(':eq(0)').show().end().not(':eq(0)').hide();
		
		totale = container.find("div").size();

		// Create the buttons
		var s = '<span class="buttons">';
		for (var i = 0; i < totale; i++)
		{
			s += '<a href="" class="button';
			if (i == 0) s += ' current';
			s += '"><span class="numeral">'+i+'</span></a>';
		}
		s += '</span>';
		container.append(s);

		// Now get moving!
		var interval = setInterval(function(){nextSlide(container, settings)}, settings.interval);
		
		$('.buttons .button').click(function(evt) {
				clearInterval(interval);
				
				evt.preventDefault();
				current = $(this).find('span').html();
				
				nextSlide(container, settings, true);
				
				interval = setInterval(function(){nextSlide(container, settings, false)}, settings.interval);
		});
		
		return container;
		
	};
	
	nextSlide = function(container, settings, fastSwitch) {
		
		// Wrap around if needs be
		if (current >= totale) current = 0;
		
		if (fastSwitch)
			var speed = settings.speed / 4;
		else
			var speed = settings.speed;
		
		// Do the switch
		container.find("div").filter(":eq("+current+")").fadeIn(speed).end().not(":eq("+current+")").fadeOut(speed);
		
		// Change the highlighted button
		container.find('.buttons .button.current').removeClass('current');
		container.find('.buttons .button').filter(':eq('+current+')').addClass('current');
		
		current++;
	};
	
})(jQuery);
