//******************************************
// jQuery Slideshow For aedilis.lt
//
//******************************************
(function( $ ) 
{			 
	$.fn.slideshow = function( settings ) 
	{
		// pagrindinis blokas
		var slideshow = $( this ),
			animated  = false,
			timeout;
		
		// setingus uzstatom
		settings = $.extend({
			slideCl    	  : 'slide',
			curSlideCl 	  : 'cur-slide',
			curButtonCl 	  : 'cur-button',
			navigationCl  : 'navigation',
			navNextCl	  : 'next',
			navPrevCl	  : 'previous',
			navSlideCl	  : 'slide-button',
			slideIdPrefix : 'slide-',		
			slideButtonIdPrefix : 'slide-button-',
			animate		  : true,			
			animSpeed	  : 600,
			delay		  : 4,
			__slideCount  : 0
		}, settings );
		
				
		// iniciavimo funkcija
		function __init()
		{
			if( settings.slideCount = $( '.' + settings.slideCl ).length ) {
				var curSlide = $( '#' + settings.slideIdPrefix + '1' ).addClass( settings.curSlideCl );
				var curButton = $( '#' + settings.slideButtonIdPrefix + '1' ).addClass( settings.curButtonCl );
				__show( curSlide, false );
				$( '.' + settings.navNextCl ).click( __showNextSlide );
				$( '.' + settings.navPrevCl ).click( __showPrevSlide );
				$( '.' + settings.navSlideCl ).click( __showSlide );
				
				// kai uzsikrauna visos skaidres nuimamas veiksmas nuo pradines skaidres mygtuko
				curButton.unbind('click');
				
				if( settings.delay ) {
					if( timeout )
						clearTimeout( timeout );
					timeout = setTimeout( __showNextSlide, settings.delay * 1000 );
				}												
			}			
		}
		
		// sekanti skaidre
		function __showNextSlide()
		{			
			if( slideshow.find( ':animated' ).length )
				return;
			
			if( settings.delay ) {
				if( timeout )
					clearTimeout( timeout );
				timeout = setTimeout( __showNextSlide, settings.delay * 1000 );
			}
			
			// parenkamos skaidres
			var currentSlide = $( '.' + settings.curSlideCl ); 			
			var nextSlide = $( '#' + settings.slideIdPrefix + '1' );
			if( currentSlide.next().length )
				nextSlide = currentSlide.next();
				
			// parenkami mygtukai
			var currentButton = $( '.' + settings.curButtonCl );
			var nextButton = $( '#' + settings.slideButtonIdPrefix + '1' );
			if( currentButton.next().length )
				nextButton = currentButton.next();
			
			__hide( currentSlide, settings.animate, 'fade', currentButton ); // left
			__show( nextSlide, settings.animate, 'fade', nextButton ); // left
		}
		
		// praeita skaidre
		function __showPrevSlide()
		{						
			if( slideshow.find( ':animated' ).length )
				return;
			
			if( settings.delay ) {
				if( timeout )
					clearTimeout( timeout );
				timeout = setTimeout( __showNextSlide, settings.delay * 1000 );
			}			
			
			// parenkamos skaidres
			var currentSlide = $( '.' + settings.curSlideCl ); 						
			var prevSlide = $( '#' + settings.slideIdPrefix + settings.slideCount );
			if( currentSlide.prev().length )
				prevSlide = currentSlide.prev();
				
			// parenkami mygtukai
			var currentButton = $( '.' + settings.curButtonCl );
			var prevButton = $( '#' + settings.slideButtonIdPrefix + settings.slideCount );
			if( currentButton.prev().length )
				prevButton = currentButton.prev();
				
			__hide( currentSlide, settings.animate, 'fade', currentButton ); // right
			__show( prevSlide, settings.animate, 'fade', prevButton ); // right
		}
		
		// pasirinkta skaidre
		function __showSlide( slide )
		{			
			if( slideshow.find( ':animated' ).length )
				return;
			
			if( settings.delay ) {
				if( timeout )
					clearTimeout( timeout );
				timeout = setTimeout( __showNextSlide, settings.delay * 1000 );
			}
			
			// parenkamos skaidres
			var currentButton = $( '.' + settings.curButtonCl );
			var nextButton = $(this);
			var slide = nextButton.attr('nr');
			
			// parenkami mygtukai
			var currentSlide = $( '.' + settings.curSlideCl ); 			
			var nextSlide = $( '#' + settings.slideIdPrefix + slide );
			
			__hide( currentSlide, settings.animate, 'fade', currentButton );
			__show( nextSlide, settings.animate, 'fade', nextButton );
		}
		
		// funkcija parodo slide'a
		// perduodamas slide'o bloko jQuery objektas
		// animate - gali buti TRUE arba FALSE, 
		// tai nurododa ar animuoti skaidres pasirodyma
		// animation - animacijos tipas (left, right, fade)
		// button - slide'o bloko navigacijos mygtuko jQuery objektas
		function __show( slide, animate, animation, button ) 
		{					
			if( animate ) {	
				switch( animation ) {
					case 'left':
						slide.css({ 'left' : '100%', 'z-index'	: 50 });
					break;
					case 'right':
						slide.css({ 'left' : '-100%', 'z-index'	: 50 });
					break;
					case 'fade':	
						slide.css({ 'left' : '0%', 'opacity' : 0, 'z-index'	: 50 });		
					break;
				}
				button.unbind('click');
				button.addClass( settings.curButtonCl );
				animated = true;
				slide.animate({
					'left' : '0%',
					'opacity' : 1
				}, settings.animSpeed, function(){ 
					slide.addClass( settings.curSlideCl ) 
				});
			} else {
				slide.css({ 'left' : '0%' })
			}
		}
		
		// funkcija parodo slide'a
		// perduodamas slide'o bloko jQuery objektas
		// animate - gali buti TRUE arba FALSE, 
		// tai nurododa ar animuoti skaidres pasislepima
		// animation - animacijos tipas (left, right, fade)
		// button - slide'o bloko navigacijos mygtuko jQuery objektas
		function __hide( slide, animate, animation, button )
		{				
			if( animate ) {
				var vall;
				var valo;
				switch( animation ) {
					case 'left':
						vall = '-100%';
						valo = 1;		
					break;
					case 'right':
						vall = '100%';
						valo = 1;							
					break;
					case 'fade':
						vall = '0%';
						valo = 0;					
					break;
				}
				slide.css({ 'z-index'	: 0 });
				button.bind('click', __showSlide);
				button.removeClass( settings.curButtonCl );
				animated = true;
				slide.animate({
					'left' : vall,
					'opacity' : valo
				}, settings.animSpeed + 35, function(){ 
					slide.removeClass( settings.curSlideCl ) 
				});
			} else {
				slide.css({ 'left' : '-100%' })
			}		
		}
		__init();
	}
}( jQuery ))

$(function() {
	$( '#slideshow' ).slideshow({ delay : 4 });		   
});
