
jQuery.fn.ddslide = function(options){
	
	// настройки по умолчанию
	var options = jQuery.extend({
		speedAnimation: 'fast',
		delay: 3000,
		autoplay: true,
		slideElement: 'div.slide'
	},options);
	var $elements;
	var $cont = this;
	var current_slide = 0;
	var next_slide = 1;
	var count_slides = 0;
	
	return this.each(function() {
		// переменные
		$cont = this;																// ссылка на текущий элемент-контейнер
		$elements = $(this).find(options.slideElement);	// набор слайдов
		count_slides = $elements.size();						// количество слайдов
		addElements (this);													// Добавляем служебную разметку
		// Навешиваем обработчики
		$(this).find('.ddControl').click(						// обработчик кнопок Play \ Stop
			function(){
				if ($(this).hasClass('ddPause')) {
					StopSlides(this);
				} else {
					PlaySlides(this);
				}
				return false;
			}
		);
		$(this).find('.ddNext').click(function(){		// обработчик кнопки Next 
			$($cont).stopTime('timer1');
			$($cont).find('.ddControl').removeClass('ddPause').addClass('ddPlay');
			ChangeSlide();
			return false;
		});
		$(this).find('.ddPrev').click(function(){		// обработчик кнопки Prev
			$($cont).stopTime('timer1');
			$($cont).find('.ddControl').removeClass('ddPause').addClass('ddPlay');
			next_slide = current_slide - 1;
			if (next_slide < 0) next_slide = count_slides-1;
			ChangeSlide();
			return false;
		});
		$(this).find('.ddPage').click(function(){		// обработчик кнопок постраничного перехода
			next_slide = $(this).attr('rel');
			$($cont).stopTime('timer1');
			ChangeSlide();
			//$($cont).everyTime(options.delay, 'timer1', function(i) {ChangeSlide();});
			return false;
		});
		
		prepareSlide();
		
		// если включен автоплей то запускаем таймер
		if (options.autoplay == true) {
			$(this).find('.ddControl').addClass('ddPause');
			// меняем слайды по таймеру			
			$(this).everyTime(options.delay, 'timer1', function(){ChangeSlide();});
		} else {
			$(this).find('.ddControl').addClass('ddPlay');
		}
	});
	
	function StopSlides(el) {
		$(el).removeClass('ddPause').addClass('ddPlay');
		$($cont).stopTime('timer1');
		return false;
	}
	
	function PlaySlides(el) {
		$(el).removeClass('ddPlay').addClass('ddPause');
		ChangeSlide();
		$($cont).everyTime(options.delay, 'timer1', function(i) {ChangeSlide();});
		return false;
	}
	
	function ChangeSlide() {
		$elements.eq(next_slide).fadeIn(options.speedAnimation, function(){
			$elements.eq(current_slide).fadeOut(options.speedAnimation, function(){
				current_slide = next_slide;
				next_slide = next_slide + 1;
				$($cont).find(".Pages").find("a").removeClass("current_slide_number")
				if (next_slide >= count_slides) next_slide = 0;
				prepareSlide();
				//$('#debug').html('current_slide='+current_slide+'<br>next_slide='+next_slide+'<br>count_slides='+count_slides);
			});
		});
	}
	
	function addElements(el) {
		$(el).append('<a class="ddButtons Pause">&nbsp;</a>');
		$(el).append('<div class="Pages"></div>');
		$(el).find('.Pages').append('<a href="#" class="ddPrev"><span>&nbsp;</span></a>');
		for (i=1;i<=count_slides;i++){
			$(el).find('.Pages').append('<a href="#" class="ddPage" rel="'+(i-1)+'">'+i+'</a>');
		}
		$(el).find('.Pages').append('<a href="#" class="ddNext"><span>&nbsp;</span></a>');
		$(el).find('.Pages').append('<a href="#" class="ddControl">&nbsp;</a>');

		//alert(count_slides);
	}
	
	function prepareSlide() {
		// помечаем текущий слайд в списке номеров
		var cs = current_slide;
		cs++;
		$($cont).find(".Pages a").eq(cs).addClass("current_slide_number");
		// ставим текущий слайд выше остальных
		$elements.removeClass('current_slide').eq(current_slide).addClass('current_slide');
		$elements.removeClass('next_slide').eq(next_slide).addClass('next_slide');
	}

};


