(function($){
	
	$.fn.skrslider = function(method) {
		var methods = {
			init: function(options) {
				
				var defaults = {
					duration: 2000
				}
				
				return this.each(function() {
					
					var settings = $.extend(defaults, options);
					
					var $this = $(this);
					
					var teller = 1;
					var current = 0;
					var $slides = $this.find('#slides'),
						$slidesUl = $slides.find('ul'),
						$slidesLi = $slides.find('li');
						
					if($slidesLi.length > 1) {
						function slide(togo) {
							current = teller;
							
							if(undefined !== togo && togo !== 0) {
								teller = togo;
								
								if(teller > $slidesLi.length)
								{
									teller = 1;
								}else if(teller < 1) {
									teller = $slidesLi.length;
								}else{
									if(!togo) { teller++; }
								}
							}else{
								if(teller == $slidesLi.length)
								{
									teller = 1;
								}else if(teller < 0) {
									teller = $slidesLi.length;
								}else{
									if(!togo) { teller++; }
								}
							}
							
							var $thisLi = $slidesUl.find('li:nth-child('+current+')');
							var $nextLi = $slidesUl.find('li:nth-child('+teller+')');
							
							$nextLi.find('.caption').hide();
							
							$thisLi.find('.caption').fadeOut(500);
							
							$this.find('.slider-nav ul li').removeClass('active');
							$this.find('.slider-nav ul li:nth-child('+teller+')').addClass('active');
							
							
								
							$slidesUl.delay(250).animate({
								marginLeft: -((teller - 1) * ( $slidesUl.find('li:first').outerWidth()) + 2)
							}, 600, function() {
								$thisLi.find('.caption').show();
								$nextLi.find('.caption').fadeIn(300);
								
							});
						}
						
						var interval = setInterval(slide, settings.duration);
						
						$linkNext = $this.find('a.next');
						
						$linkNext.click(function(event) {
							event.preventDefault();
							
							clearInterval(interval);
							slide(teller+1);
							
							interval = setInterval(slide, settings.duration);
						});
						
						$linkPrev = $this.find('a.prev');
						
						$linkPrev.click(function(event) {
							event.preventDefault();
							
							clearInterval(interval);
							slide(teller-1);
							
							interval = setInterval(slide, settings.duration);
						});
						
						$this.find('.slider-nav ul li a').click(function(event) {
							var $this = $(this);
							
							event.preventDefault();
							
							clearInterval(interval);
							slide($this.data('slide'));
							
							interval = setInterval(slide, settings.duration);
						});
					}
				});
			}
			
		};		
		
	    if ( methods[method] ) {
	      return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
	    } else if ( typeof method === 'object' || ! method ) {
	      return methods.init.apply( this, arguments );
	    } else {
	      $.error( 'Method ' +  method + ' does not exist on jQuery.skrslider' );
	    }   
	};
	
})(jQuery);
