(function( $ ){
	
	function collect( els, attr ){
		var l=els.length, arr = new Array( l );
		for( var i=0; i < l; i++ )
			arr[i] = els[i][attr];
		return arr;
	};
	
	var defaults = {
		elements:'li',
		degradeClass:'nojs',
		selectedClass:'selected',
		prev:'.prev',
		next:'.next',
		images:'img',
		selectedIndex:0,
		onchange:null,
		keep: null
	};
	
	$.fn.simpleSlide = function( settings ){
		settings = $.extend( {}, defaults, settings );
		
		return this.removeClass(settings.degradeClass).each(function(){
			var $elements = $( settings.elements, this ),
				selected  = settings.selectedIndex,
				len		  = $elements.length,
				$images	  = settings.images ? $( settings.images, $elements ) : $elements,
				srcs	  = settings.srcs || collect( $images, 'src' ),
				titles	  = settings.titles || collect( $images, 'title' ),
				$focused;
				
			/*$elements.click(function(){
				return select( this );
			});	*/		
			
			
			$( settings.prev, this ).bind( 'click', { dir : -1 }, move );
			$( settings.next, this ).bind( 'click', { dir : +1 }, move );			
			
			/*if( settings.keep ){
				$elements = $elements.not( $elements.filter(':gt('+(settings.keep-1)+')').remove() );
				$images	  = settings.images ? $( settings.images, $elements ) : $elements;
			}*/
			
			$focused = $elements.eq( settings.selectedIndex ).addClass( settings.selectedClass );
			function move( event ){
				this.blur();
				if( event.data.dir == -1 ){
					srcs.unshift( srcs.pop() );
					titles.unshift( titles.pop() );
				}else{
					srcs.push( srcs.shift() );
					titles.push( titles.shift() );
				}
				return select();
			};			
			function select(){
				$images.each(function( i ){
					this.src = srcs[i];
					this.title = titles[i];
				});
				if( settings.onchange )
					settings.onchange( $focused, srcs[settings.selectedIndex], titles[settings.selectedIndex] );					
			};
			window.SRCS = "['"+ srcs.join("','") + "']";
			window.TITLES = "['"+ titles.join("','") + "']";
		});
	};
		  
})( jQuery );