(function($){

	$.fn.extend({

		karmaslide: function(config){
			var defaults = {
				durationShow: 8000,
                durationFade: 1200
            };
            var options = $.extend(defaults, config);
            var o = this;
			return this.each(function(){
				var el = $(this);
				
				el.append('<ul class="slidenav"></ul>');
				var slidenav = el.find('.slidenav');
				var i = 1;
				el.find('ul.slideshow li').each(function(){
					slidenav.append('<li>'+i+'</li>');
					i++;
				});
				
				el.find('ul.slidenav li').click(function(){
					el.stopTime();
					var navindex = el.find('ul.slidenav li').index($(this));
					var active = el.find('ul.slideshow li.active');
					var next =  el.find('ul.slideshow li').eq(navindex);     
					active.addClass('last-active');
					next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, options.durationFade, function(){
						active.removeClass('active last-active');
					});
					el.find('ul.slidenav li').removeClass('active').eq(navindex).addClass('active');
					
					el.everyTime(options.durationShow, function(){           
						var active = el.find('ul.slideshow li.active');
						if(active.length == 0) active = el.find('ul.slideshow li:first');
						var next =  active.next().length ? active.next() : el.find('ul.slideshow li:first');     
						active.addClass('last-active');
						next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, options.durationFade, function(){
							active.removeClass('active last-active');
						});
						var slideindex = el.find('ul.slideshow li').index(next);
						el.find('ul.slidenav li').removeClass('active').eq(slideindex).addClass('active');
	                });
				});
				
				el.find('ul.slideshow li:first').addClass('active');
				el.find('ul.slidenav li:first').addClass('active');
					
				el.everyTime(options.durationShow, function(){           
					var active = el.find('ul.slideshow li.active');
					if(active.length == 0) active = el.find('ul.slideshow li:first');
					var next =  active.next().length ? active.next() : el.find('ul.slideshow li:first');     
					active.addClass('last-active');
					next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, options.durationFade, function(){
						active.removeClass('active last-active');
					});
					var slideindex = el.find('ul.slideshow li').index(next);
					el.find('ul.slidenav li').removeClass('active').eq(slideindex).addClass('active');
                });
			});
		}
		
	});

})(jQuery);
