(function($) {
	$.fn.slideShow = function(options) {
		settings = jQuery.extend({
			playTime: 5000,
			pauseTime: 10000,
			slideWidth: 630,
			global: true
			}, options);
		var playTime = settings.playTime;
		//var pauseTime = (settings.pauseTime - settings.playTime);
		var pauseTime = settings.pauseTime;
		var currentPosition = 0;
		var slideWidth = settings.slideWidth;
		var slides = $('.slide');
		var numberOfSlides = slides.length;
		var playTimer = ""
		var controlSelectItems = buildControlSelect(numberOfSlides);
		var marginLeft = (slideWidth - (numberOfSlides * 20))/2;
		if (numberOfSlides > 1) {
		// Setup The DOM and Element Style
			$('#slidesContainer').css('overflow', 'hidden');
			slides.wrapAll('<div id="slideInner"></div>').css({'float' : 'left','width' : slideWidth});
			$('#slideInner').css('width', slideWidth * numberOfSlides);
			$('#slideshow').prepend('<span class="control" id="leftControl">Clicking moves left</span>').append('<span class="control" id="rightControl">Clicking moves right</span>');
			$('#slideshow').append('<div class="controlSelect"><ul style="margin-left: '+marginLeft+'px;">'+controlSelectItems+'</ul></div>');
		// Load Object for Use
			manageControls(currentPosition);
			autoPlay();
		// Create event listeners for Controls
			$('.control').bind('click', function(){ moveSlider(this); offsetPlay(); });
			$('.controlSelect span').bind('click', function(){ moveSlider(this); offsetPlay(); });
			return this;			
			}
		// Functions or Malfunctions?
		function manageControls(position){
			$('.controlSelect span').each( function(){ if ($(this).text() == (position + 1)) { $(this).addClass("active"); } else { $(this).removeClass("active"); }});
			if(position==0){ $('#leftControl').hide() } else{ $('#leftControl').show() }
			if(position==numberOfSlides-1){ $('#rightControl').hide() } else{ $('#rightControl').show() }
			}	
		function moveSlider(controlVar) {
			//alert(controlVar);
			if (controlVar == 'right') {currentPosition = currentPosition+1;}
			else if (controlVar == 'reset') {currentPosition = 0;}
			else if ($(controlVar).parent().get(0).tagName == 'LI'){ currentPosition = ($(controlVar).text() - 1); }
			else { currentPosition = ($(controlVar).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1; }
			$('#slideInner')
				.animate({opacity: 0}, 500)
				.animate({'marginLeft' : slideWidth*(-currentPosition)},0,null,manageControls(currentPosition))
				.animate({opacity: 1}, 500);							
			autoPlay();
			}
		function buildControlSelect(buildVar){
			var buildReturn = '';
			var i=0;
			for (i = 0; i<= (buildVar - 1); i++){ buildReturn += '<li><span>'+(i+1)+'</span></li>'; }
			return buildReturn;
			}
		function autoPlay(){
			clearTimeout(playTimer);
			playTimer = setTimeout( function () { moveSliderLogic(); },playTime);
			}
		function offsetPlay(){
			clearTimeout(playTimer);
			playTimer = setTimeout( function () { moveSliderLogic(); },pauseTime);		
			}
		function moveSliderLogic() {
			if (currentPosition == numberOfSlides-1) {moveSlider('reset');}
			else { moveSlider('right'); }			
			}
	};
})(jQuery);