(function($){
    $.fn.spSlider = function(options){
        var defaults = {
             interval: 8000
            ,fadeIntime: 1000
            ,fadeOuttime: 1000
			,counterClassDefault: 'spCounter'
			,counterClassActive: 'spCounterActive'
			,spClass: 'sp'
			,spClassActive: 'spActive'
			,spLastActive:'spLastActive'
			,NextButton: 'spArrowHolder_next'
			,PrevButton: 'spArrowHolder_prev'
        };
		
        var options = $.extend(defaults, options);
        return this.each(function(){

          //General Variables
		   
		   
		   
            var x = 1;
			var interval = options.interval + options.fadeOuttime + options.fadeIntime
            var playtime;
            var _this;
            _this = this;
            var total = $(_this).find('.'+options.spClass).length;
			
			$('.'+options.counterClassDefault).find('img:last').hide();
			$(_this).find('.'+options.spClass).fadeOut();
			
			$(_this).css("visibility","visible");
            $(_this).find('.'+options.spClass+':eq(0)').fadeIn(options.fadeIntime).addClass(options.spClassActive);
			$(_this).find('.'+options.counterClassDefault+':eq(0)').addClass(options.counterClassActive).find('img:first').hide();
			$('.'+options.counterClassActive).find('img:last').show();
            $(_this).find('.'+options.spClass).each(function(){
                $(this).attr('rel', x);
                x++
            });
		
            //next function
            function next(){
                var current = $(_this).find('.'+options.spClassActive).attr('rel');
                var next = parseFloat(current) + 1;
                if (next > total) {
/*						$('.'+options.spClassActive).animate({opacity : 0 }, 1000,function(){
							$(this).css("display","none");
							$(this).removeClass(options.spClassActive);
							$('.'+options.spClass).removeClass(options.spLastActive);
						});
						
					$('.'+options.spClassActive).fadeOut(options.fadeOuttime).removeClass(options.spClassActive);
					$('.'+options.spClass).removeClass(options.spLastActive);
					$('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
					$('.'+options.counterClassDefault).find('img:last').hide();
					$('.'+options.counterClassDefault).find('img:first').show();
					
                    $('.'+options.spClass+':eq(0)').css("display","block").animate({opacity : 1 }, 1000,function(){
						$(this).addClass(options.spClassActive);	
						$('.'+options.spClassActive+':last').addClass(options.spLastActive);
					});
                    $('.'+options.counterClassDefault+':eq(0)').removeClass(options.counterClassDefault).addClass(options.counterClassActive);
					$('.'+options.counterClassActive).find('img').hide();
					$('.'+options.counterClassActive).find('img:last').show()*/
						
                   $(_this).find('.'+options.spClassActive).fadeOut(options.fadeOuttime).removeClass(options.spClassActive);
				   $(_this).find('.'+options.spClass).removeClass(options.spLastActive);
                	$('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
					$('.'+options.counterClassDefault).find('img:eq(0)').show();
					$('.'+options.counterClassDefault).find('img:last').hide();
                    $(_this).find('.'+options.spClass+':eq(0)').fadeIn(options.fadeIntime).addClass(options.spClassActive);
					$('.'+options.spClassActive).prev().addClass(options.spLastActive);
                    $('.'+options.counterClassDefault+':eq(0)').removeClass(options.counterClassDefault).addClass(options.counterClassActive);
					$('.'+options.counterClassActive).find('img').hide();
					$('.'+options.counterClassActive).find('img:last').show();
			return false;
                }
                else 
                    if (next <= total) {
/*						$('.'+options.spClassActive).animate({opacity : 0 }, 1000,function(){
							$(this).css("display","none");
							$(this).removeClass(options.spClassActive);
							$('.'+options.spClass).removeClass(options.spLastActive);
						});
						$('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
						$('.'+options.counterClassDefault).find('img:last').hide();
						$('.'+options.counterClassDefault).find('img:first').show();
						$('.'+options.spClass+'[rel=' + next + ']').css("display","block").animate({opacity : 1 }, 1000,function(){
							$(this).addClass(options.spClassActive);
							$(this).prev().addClass(options.spLastActive);
						});
						$('.'+options.counterClassDefault+'[rel=' + next + ']').removeClass(options.counterClassDefault).addClass(options.counterClassActive);
						$('.'+options.counterClassActive).find('img').hide();
						$('.'+options.counterClassActive).find('img:last').show();*/
                        $(_this).find('.'+options.spClassActive).fadeOut(options.fadeOuttime).removeClass(options.spClassActive);
						$(_this).find('.'+options.spClass).removeClass(options.spLastActive)
                        $('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
						$('.'+options.counterClassDefault).find('img:last').hide();
						$('.'+options.counterClassDefault).find('img:first').show();
                        $('.'+options.spClass+'[rel=' + next + ']').fadeIn(options.fadeIntime).addClass(options.spClassActive);
						$('.'+options.spClassActive).prev().addClass(options.spLastActive);
						$('.'+options.counterClassDefault+'[rel=' + next + ']').removeClass(options.counterClassDefault).addClass(options.counterClassActive);
						$('.'+options.counterClassActive).find('img').hide();
						$('.'+options.counterClassActive).find('img:last').show();
                        return false;
                    };
            };
			
			//prev function
            function prev(){
                var current = $(_this).find('.'+options.spClassActive).attr('rel');
                var prev = parseFloat(current) - 1;
                if (prev < 1) {
                    $(_this).find('.'+options.spClass).fadeOut(options.fadeOuttime).removeClass(options.spClassActive);
					$(_this).find('.'+options.spClass).removeClass(options.spLastActive);
                    $('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
					$('.'+options.counterClassDefault).find('img:eq(0)').show();
					$('.'+options.counterClassDefault).find('img:last').hide();
                    $(_this).find('.'+options.spClass+':last').fadeIn(options.fadeIntime).addClass(options.spClassActive);
					$('.'+options.spClassActive).next().addClass(options.spLastActive);
					$('.'+options.counterClassDefault+':last').removeClass(options.counterClassDefault).addClass(options.counterClassActive);
					$('.'+options.counterClassActive).find('img').hide();
					$('.'+options.counterClassActive).find('img:last').show();
                    return false;
                }
                else {
                    $(_this).find('.'+options.spClass).fadeOut(options.fadeOuttime).removeClass(options.spClassActive);
					$(_this).find('.'+options.spClass).removeClass(options.spLastActive);
                    $('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
						$('.'+options.counterClassDefault).find('img:last').hide();
						$('.'+options.counterClassDefault).find('img:first').show();
                    $('.'+options.spClass+'[rel=' + prev + ']').fadeIn(options.fadeIntime).addClass(options.spClassActive);
					$('.'+options.spClassActive).next().addClass(options.spLastActive);
                    $('.'+options.counterClassDefault+'[rel=' + prev + ']').removeClass(options.counterClassDefault).addClass(options.counterClassActive);
						$('.'+options.counterClassActive).find('img').hide();
						$('.'+options.counterClassActive).find('img:last').show();
                    return false;
                };
  			};
			
			// Play function
            function play(){
                playtime = setInterval(next, interval)
            };
			
			// Pause function
            function pause(){
                clearTimeout(playtime);
            };
			
			//Pagination
            $('#specialsHolder_counter span').bind('click', function(e){
                pause();
                var goto = $(this).attr('rel');
                $('.'+options.counterClassActive).removeClass(options.counterClassActive).addClass(options.counterClassDefault);
						$('.'+options.counterClassDefault).find('img:last').hide();
						$('.'+options.counterClassDefault).find('img:first').show();
						$(this).removeClass(options.counterClassDefault).addClass(options.counterClassActive);
						$('.'+options.counterClassActive).find('img').hide();
						$('.'+options.counterClassActive).find('img:last').show();
				
                $(_this).find('.'+options.spClass).fadeOut(options.fadeOuttime).removeClass(options.spClassActive);
				$(_this).find('.'+options.spClass).removeClass(options.spLastActive);
                $(_this).find('.'+options.spClass+'[rel=' + goto + ']').fadeIn(options.fadeIntime).addClass(options.spClassActive);
				$('.'+options.spClassActive).prev().addClass(options.spLastActive);				
                playtime = setInterval(next, interval)
                e.preventDefault();
            });
			
            // On click Next button
            $('#'+options.NextButton).bind('click', function(e){
                pause();
                next();
                playtime = setInterval(next, interval)
                e.preventDefault();
            });
			
            //On click Prev button
            $('#'+options.PrevButton).bind('click', function(e){
                pause();
                prev();
                playtime = setInterval(next, interval)
                e.preventDefault();
            });
			
			//Run!
            play();
			
        });
    };
})(jQuery);

