(function($){

	//define the new for the plugin ans how to call it
	$.fn.dcLiveSlider = function(options) {

		//set default options
		var defaults = {
			classWrapper: 'slideInner',
			classControl: 'control',
			classLeft: 'controlLeft',
			classRight: 'controlRight',
			textLeft: '',
			textRight: '',
			width: 400,
			control: 'numeric',
			start: 0,
			speed: 'slow'
		};

		//call in the default otions
		var options = $.extend(defaults, options);
		var $dcSliderObj = this;
		
		//act upon the element that is passed into the design
		return $dcSliderObj.each(function(options){
		
			var $dcSlide = $('.live-slide',this);
			var pos = defaults.start;
			var width = defaults.width;
			var mw = 30;
			var numSlides = $dcSlide.length;
			
			// Wrap all .slides with slideInner div
			$dcSlide.wrapAll('<div class="'+defaults.classWrapper+'"></div>')
			// Float left to display horizontally, readjust .slides width
			.css({'float' : 'left', 'width' : width});
			
			// Set slideInner width equal to total width of all slides
			$('.'+defaults.classWrapper, $dcSliderObj).css('width', width * numSlides);
			
				// Insert controls in the DOM
				$(this).after('<div class="'+defaults.classControl+'"><ul></ul></div>');
				$('.'+defaults.classControl).prepend('<span class="'+defaults.classLeft+'">'+defaults.textLeft+'</span>');
				$('.'+defaults.classControl).append('<span class="'+defaults.classRight+'">'+defaults.textRight+'</span>');
				
			$('.'+defaults.classControl+' span').bind('click', function(){
			
				// Determine new position
				pos = ($(this).hasClass(defaults.classRight)) ? pos+1 : pos-1;
				//alert(pos);
				// Hide / show controls
				setControls(pos);
				// Move slideInner using margin-left
				$('.'+defaults.classWrapper, $dcSliderObj).animate({'marginLeft' : -width*pos}, defaults.speed);
				$('#marker').animate({'marginLeft' : mw*pos}, defaults.speed);
			});
			
			// Hide left arrow control on first load
			setControls(pos);
		
			// manageControls: Hides and shows controls depending on pos
			function setControls(position){
				// Hide left arrow if position is first slide
				if(position==0){ 
					$('.'+defaults.classControl+' .'+defaults.classLeft).hide();
				} else { 
					$('.'+defaults.classControl+' .'+defaults.classLeft).show();
				}
				if(position==numSlides-1){
					$('.'+defaults.classControl+' .'+defaults.classRight).hide();
				} else { 
					$('.'+defaults.classControl+' .'+defaults.classRight).show();
				}
			}
		});
	};
})(jQuery);
