/*
 Special  Slider V 1.5 BETA
 Fix: IE Filters:
 */
(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 interval = options.interval + options.fadeOuttime + options.fadeIntime
			var playtime;
			var $parent;
			$parent = jQuery(this);
			$children = $parent.children();
			$firstChild = $parent.children(':first');
			$type = jQuery('.' + options.counterClassDefault).parent().attr('type');
			var total = $children.length;
			var currentSlide = 1;
			var x = 1;
			$parent.children().css({
				listStyle: 'none',
				position: 'absolute',
				top: 0,
				left: 0,
				zIndex: 98
			});
			$parent.find('.' + options.spClass).each(function () {
				jQuery(this).attr('rel', x);
				x++
			});
			goToSlide(currentSlide,$type);
			//next function

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

			function previTem() {
				currentSlide = jQuery('.' + options.spClassActive).attr('rel');
				var previtem = parseFloat(currentSlide) - 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();
					}
				}
				$children.not('[rel=' + slideIndex + ']').fadeTo(options.fadeOuttime, 0).css('zIndex', 98).removeClass(options.spClassActive);
				// fade in the current slide
				jQuery('.' + options.spClass + '[rel=' + slideIndex + ']').css('zIndex', 99).fadeTo(options.fadeIntime, 1, 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, interval)
			};
			// Pause function

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