$.fn.slider = function(settings) {
	
	settings = settings || {};
	
	_.defaults(settings, {
		slideSelector: ".slide",
		positionSelector: ".position",
		duration: 1000,
		autoplay: true,
		positionActiveClass: "active"
	});
	
	var $slides = $(this).find(settings.slideSelector);
	var $positions = $(settings.positionSelector);
	
	var currentEq = 0;
	var nextEq =  next(currentEq);
	
	// Calculate the next logical EQ
	function next(currentEq) {
		if (currentEq < $slides.length-1) {
			return currentEq+1;
		} else {
			return 0;
		}
	}
	
	// Do the actual transition between slides
	function transition($new, $old) {
		$slides.eq(currentEq).fadeOut();
		$slides.eq(nextEq).fadeIn();
		$positions.eq(currentEq).removeClass(settings.positionActiveClass);
		$positions.eq(nextEq).addClass(settings.positionActiveClass);
	}
	
	function cycle() {
		transition();
		currentEq = nextEq;
		nextEq = next(nextEq);
		setTimeout(cycle, settings.duration);
	}
	
	if (settings.autoplay) cycle();
	$slides.filter("!:first").hide();	
};
