// jquery.rian.slideshow v.0.7 by Acid Beast
(function($) {
	//Функция для создания слайдшоу
	$.fn.mmSlideShow = function(options) {
		
		
		// Обявляем дефолтные настройки
        var options = $.extend({
			element: 'IMG',							// string
			autostart: true,						// Bool
			delay: '5000',							// string
			buttons: '.buttons',					// Selector 
			next: '.next',							// Selector
			prev: '.prev',							// Selector
			play: '.play',							// Selector
			stop: '.stop',							// Selector
			position: '.position',					// Selector
			positionCurrent: '.current',			// Selector
			positionTotal: '.total',				// Selector
			copyright: '.copyright',				// ID
			copyrightAttr: 'title',					// String
			copyrightElement: 'div'					// Selector
        }, options || {});	

		
		// Объявляем переменные и присваиваем им значения
		var box = $(this);
		var elements = box.find(options.element);
		var lenght = elements.length;
		var lastImage = lenght - 1;
		var copyright = $(options.copyright);
		var copyrightElements = $('#'+options.copyright+' '+options.copyrightElement);		
		

		// Включаем первый кадр
		$(options.element+':eq(0)', box).removeClass("visible");
		$(options.element+':eq(0)', box).show();
		$(options.buttons).show();
		$(options.position).show();



		// Функции



		// Функция обновляющая номер текущго кадра
		function updateCurrentNum(num){
			$(options.positionCurrent, box).empty().append(num);
		}



		// Функция переключения картинки
		function switchImage(direction){
			
			if(!direction){direction == 'next';}
			
			elements.queue("fx", []);
			elements.stop(true, true);
			
			
			var currentImage = $(options.element+':visible', box);
			var currentImageNum = $(options.element, box).index($(options.element+':visible', box));

			var nextImage;
			var nextImageNum;


			// Next
			if(direction == 'next'){
				
				
				if (currentImageNum == lastImage) {nextImageNum = 0;}
				else {nextImageNum = currentImageNum + 1;}
				
				
				// Callback для других скриптов
				if(typeof(rianSlideShowNext) == 'function'){
					rianSlideShowNext(currentImageNum,nextImageNum);
				}
			}


			// Previous
			if(direction == 'prev'){
				
				
				if (currentImageNum == 0) {nextImageNum = lastImage;}
				else {nextImageNum = currentImageNum - 1;}
				
				
				// Callback для других скриптов
				if(typeof(rianSlideShowPrev) == 'function'){
					rianSlideShowPrev(currentImageNum,nextImageNum);
				}
			}
			
			nextImage = $(options.element+':eq('+nextImageNum+')', box);
			nextImageCopyright = $(options.copyrightElement+':eq('+nextImageNum+')', copyright);


			currentImage.css('opacity','1');
			elements.fadeOut('slow');
			copyrightElements.hide();


			updateCurrentNum(nextImageNum+1);


			nextImage.fadeIn('slow');
			nextImageCopyright.show();			
		}



		// Слайдшоу
		function slideShow(){			
			box.animate({borderTopWidth: '0'}, parseFloat(options.delay), function () {
				switchImage('next');
				slideShow();
			});
		}



		// Events



		// Показать навигацию при наведении мыши
		$(this).mouseover(function(){
			$(options.buttons, box).show();
			$(options.position, box).show();
		});



		// Скрыть навигацию когда мышь ушла с объекта
		$(this).mouseout(function(){
			$(options.buttons, box).hide();
			$(options.position, box).hide();
		});



		// Кнопка вперед
		$(options.next, box).click(function(){
			switchImage('next');
		});


		// Кнопка назад
		$(options.prev, box).click(function(){
			switchImage('prev');
		});



		// Кнопка запуска слайдшоу
		$(options.play, box).click(function(){			
			slideShow();
			$(this).css('display', 'none');
			$(options.stop, box).css('display', 'block');
			if(typeof(rianSlideShowPlay) == 'function'){
				rianSlideShowPlay();
			}
		});



		// Кнопка остановки слайдшоу
		$(options.stop, box).click(function(){
			box.queue("fx", []);
			box.stop(true, false);
			$(this).css('display', 'none');
			$(options.play, box).css('display', 'block');
			if(typeof(rianSlideShowPlay) == 'function'){
				rianSlideShowStop();
			}			
		});	
		

		
		// Автостарт
		if(options.autostart == true){
			slideShow();
			$(options.play, box).css('display', 'none');
			$(options.stop, box).css('display', 'block');
		}		
	}
})(jQuery);
