/*
*	Slideshow By Arunas P.
*	2010
*/

(function( $ ){	
	// funkcija neleidzianti objektuose pazymeti teksto
	$.fn.noSelect = function(){
		for( var i = 0; i < this.length; i++ ){
			var obj = this[i];
			if (typeof obj.onselectstart!="undefined") //IE route
				obj.onselectstart=function(){return false}
			else if (typeof obj.style.MozUserSelect!="undefined") //Firefox route
				obj.style.MozUserSelect="none"
			else //All other route (ie: Opera)
				obj.onmousedown=function(){return false}
			obj.style.cursor = "default"			
		}		
	}
	
	$.slideshow = function( settings ){
		settings = $.extend({
			// nustatymai		
			animation : 'none',
			showTitle : true,
			timeout : 0, // kas kiek sekundziu keisti skaidres
			// stiliaus klases
			currentClass : 'current', // rodomos skaidres klase
			loadingClass : 'slideshow-loading', // kai skaidre kraunas klase
			idPrefix : 'slideshow-slide-', // skaidriu ID prefixas prie jo pridedamas skaidrius eiles numeris
			nextClass : 'slideshow-next',
			prevClass : 'slideshow-prev',
			// informacija 
			slides : '' // skaidriu informacija
		}, settings );	
		var timeoutHandler;
		$( '.slideshow-title' ).noSelect();
		function _init(){			
			_loadImage( 1 );		
			if( settings.slides.length > 1 ){				
				_setNavigation();						
				$( ".slideshow-nav" ).show();	
				if( settings.timeout > 0 ){
					clearTimeout( timeoutHandler );
					timeoutHandler = setTimeout( _next, settings.timeout * 1000 );
				}						
			}			
				
		}
		function _timeout( nr, callback ){		
			return timeoutHandler = setTimeout( function(){
				callback( nr );						   
			}, settings.timeout * 1000 );
		}
		function _setNavigation(){
			$( '.' + settings.nextClass ).click(function(){
				_next( );															  					
			});	
			$( '.' + settings.prevClass ).click(function(){
				_prev( );															   
			});				
		}
		function _loadImage( nr ){
			var slide = $( '#' + settings.idPrefix + nr );
			if( !slide.hasClass( settings.loadingClass ))
				slide.addClass( settings.loadingClass );

			var image = new Image();
			image.onload = function() {				
				slide.removeClass( settings.loadingClass );
				slide.css({ 'background-image' : 'url(/' + settings.slides[ nr ].image + ')' });
			};
			image.src = '/' + settings.slides[ nr ].image;
		}
		
		function _getCurrent(){
			var current = $( '.' + settings.currentClass ).attr( 'id' );
			current = current.split( settings.idPrefix );
			return parseInt( current[1] );
		}
		function _next(  ){		
			_show( _getNext());								
		}
		function _prev(  ){

			_show( _getPrev());								
		}		
		function _getNext( ){
			var i = _getCurrent();
			return ( i + 1 > settings.slides.length ? 1 : i + 1);
		}
		function _getPrev(){
			var i = _getCurrent();	
			return ( i - 1 == 0 ? settings.slides.length : i - 1 );			
		}
		_init();
		function _show( nr ){
			if( settings.timeout > 0 ){
				clearTimeout( timeoutHandler );
				timeoutHandler = setTimeout( _next, settings.timeout * 1000 );
			}				
			_loadImage( nr );			
			switch( settings.animation ){
				case 'fade':
					$('#' + settings.idPrefix + nr ).show();				
		
					$('.' + settings.currentClass ).fadeOut( 'slow', function(){ 
						$( this ).removeClass( settings.currentClass );		
						$('#' + settings.idPrefix + nr ).addClass( settings.currentClass );
					});					
				break;
				case 'slide':
								
				break;
				case 'none':
					$('.' + settings.currentClass ).hide( 1, function(){ 																								   
						$( this ).removeClass( settings.currentClass );								
						$('#' + settings.idPrefix + nr ).addClass( settings.currentClass ).show();
					});						
				break;
			}								
		}
	}
})( jQuery );
