/*
 Special  Slider V 1.6 BETA
 */
(function ($) {
	$.fn.spSlider = function (options) {
		var defaults = {
			spInterval: 4000,
			spFadeIn: 1000,
			spFadeOut: 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 spInterval = options.spInterval + options.spFadeOut + options.spFadeIn
			var playtime;
			var $spParent;
			$spParent = jQuery(this);
			$spChildren = $spParent.children();
			$firstChild = $spParent.children(':first');
			$type = jQuery('.' + options.counterClassDefault).parent().attr('type');
			var total = $spChildren.length;
			var spCurrentSlide = 1;
			var x = 1;
			$spParent.children().css({
				listStyle: 'none',
				position: 'absolute',
				top: 0,
				left: 0,
				zIndex: 98
			});
			$spParent.find('.' + options.spClass).each(function () {
				jQuery(this).attr('rel', x);
				x++
			});
			goToSlide(spCurrentSlide,$type);
			//next function

			function nextiTem() {
				spCurrentSlide = jQuery('.' + options.spClassActive).attr('rel');
				var nextindex = parseFloat(spCurrentSlide) + 1;
				$spChildren.removeClass(options.spClassActive);
				if (nextindex > total) {
					var nextindex = 1;
				}
				goToSlide(nextindex, $type);
			};
			//prev function

			function previTem() {
				spCurrentSlide = jQuery('.' + options.spClassActive).attr('rel');
				var previtem = parseFloat(spCurrentSlide) - 1;
				if (previtem < 1) {
					var previtem = jQuery('.' + options.spClass).last().attr('rel');
				}
				goToSlide(previtem, $type);
			};

			function goToSlide(slideIndex, $type) {
				if ($type) {
					if ($type == 1) {
						jQuery('.' + options.counterClassDefault).not('[rel=' + slideIndex + ']').removeClass(options.counterClassActive).find('img:first').show();
						jQuery('.' + options.counterClassDefault + '[rel=' + slideIndex + ']').find('img:first').hide();
						jQuery('.' + options.counterClassDefault + '[rel=' + slideIndex + ']').addClass(options.counterClassActive).find('img:last').show();
					}
					else if ($type == 2) {
						jQuery('.' + options.counterClassDefault).not('[rel=' + slideIndex + ']').removeClass(options.counterClassActive);
						jQuery('.' + options.counterClassDefault + '[rel=' + slideIndex + ']').addClass(options.counterClassActive).show();
					}
					else if ($type == 3) {
						jQuery('.' + options.counterClassDefault).not('[rel=' + slideIndex + ']').removeClass(options.counterClassActive).hide();
						jQuery('.' + options.counterClassDefault + '[rel=' + slideIndex + ']').addClass(options.counterClassActive).show();
					}
				}
				$spChildren.not('[rel=' + slideIndex + ']').animate({opacity: 0}, options.LrFadeOut).css('zIndex', 98).removeClass(options.spClassActive);
				// fade in the current slide
				jQuery('.' + options.spClass + '[rel=' + slideIndex + ']').css('zIndex', 99).animate({opacity: 1}, options.LrFadeIn, function () {
					// ie fade fix
					if (jQuery.browser.msie) {
						jQuery('.' + options.spClass + '[rel=' + slideIndex + ']').get(0).style.removeAttribute('filter');
					};
				});
				jQuery('.' + options.spClass + '[rel=' + slideIndex + ']').addClass(options.spClassActive);
			}
			// Play function

			function play() {
				playtime = setInterval(nextiTem, spInterval)
			};
			// Pause function

			function pause() {
				clearTimeout(playtime);
			};
			//Pagination
			jQuery('.' + options.counterClassDefault).bind('click', function (e) {
				var goto = jQuery(this).attr('rel');
				spCurrentSlide = jQuery('.' + options.spClassActive).attr('rel');
				if (spCurrentSlide != goto) {
					pause();
					goToSlide(goto, $type);
					playtime = setInterval(nextiTem, spInterval)
					e.preventDefault();
				}
				else {
					return false;
				}
			});
			// On click Next button
			jQuery('#' + options.NextButton).bind('click', function (e) {
				pause();
				nextiTem();
				playtime = setInterval(nextiTem, spInterval)
				e.preventDefault();
			});
			//On click Prev button
			jQuery('#' + options.PrevButton).bind('click', function (e) {
				pause();
				previTem();
				playtime = setInterval(nextiTem, spInterval)
				e.preventDefault();
			});
			//Run!
			play();
		});
	};
})(jQuery);
