(function($){

	//define the new for the plugin ans how to call it
	$.fn.dcSlider = 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 = $('li',this);
			var pos = defaults.start;
			var width = defaults.width;
			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>');
				var i = 0;
				$dcSlide.each(function(){
					$('.'+defaults.classControl+' ul').append('<li><a href="#" rel="'+i+'"></a></li>');
					i = i+1;
				});
				$('.'+defaults.classControl).prepend('<span class="'+defaults.classLeft+'">'+defaults.textLeft+'</span>');
				$('.'+defaults.classControl).append('<span class="'+defaults.classRight+'">'+defaults.textRight+'</span>');
				
				$('.'+defaults.classControl+' li a:first').addClass('active');
				
				var widthC = $('.'+defaults.classControl+' ul').width();
				widthC = widthC + 88;
				var margin = -widthC/2;
				$('.'+defaults.classControl).css({marginLeft: margin+'px'});
				
				// Create event listeners for .controls clicks
			$('.'+defaults.classControl+' li a').bind('click', function(){
				// Determine new position
				pos = parseInt($(this).attr('rel'));
				//alert(pos);
				// Hide / show controls
				setControls(pos);
				// Move slideInner using margin-left
				$('.'+defaults.classWrapper, $dcSliderObj).animate({'marginLeft' : -width*pos}, defaults.speed);
				return false;
			});
			$('.'+defaults.classControl+' span').bind('click', function(){
			
				if(!$(this).hasClass('disable')){
					// 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);
				}
			});
			
			// Hide left arrow control on first load
			setControls(pos);
		
			// manageControls: Hides and shows controls depending on pos
			function setControls(position){
				$('.'+defaults.classControl+' li a').removeClass('active');
				$('.'+defaults.classControl+' li a:eq('+pos+')').addClass('active');
				// Hide left arrow if position is first slide
				if(position==0){ 
					$('.'+defaults.classControl+' .'+defaults.classLeft).addClass('disable');
				//	$('.'+defaults.classControl+' ul').css({paddingLeft: '24px'});
				} else { 
					$('.'+defaults.classControl+' .'+defaults.classLeft).removeClass('disable');
				//	$('.'+defaults.classControl+' ul').css({paddingLeft: '0'});
				}
				if(position==numSlides-1){
					$('.'+defaults.classControl+' .'+defaults.classRight).addClass('disable');
				//	$('.'+defaults.classControl+' ul').css({paddingRight: '20px'});
				} else { 
					$('.'+defaults.classControl+' .'+defaults.classRight).removeClass('disable');
				//	$('.'+defaults.classControl+' ul').css({paddingRight: '0'});
				}
			}
		});
	};
})(jQuery);
