(function($){
 $.fn.pvSlider = function(options) {

	var defaults = {
			sliderTimeout: 500,
			timerTimeout: 4000
	};
	
	var options = $.extend(defaults, options);
	var sliderBusy = 0;
	var timer;
    
	return this.each(function() {
		options.container = $(this);
		options.slideCount = 0;
		options.activeSlide = 0;
		options.current = false;
		options.queue = false;
		options.sliderBusy = 0;
		
		options.container.find('div#slider-viewport div.items img').each( function() {
			options.slideCount++;
		});
				
		var i = 0;
		
		options.container.find( 'div#slider-nav div.item' ).each( function( ) {
		
			$(this).attr('name', i);
		
			if( options.current == false )
			{
				options.current = $(this);
				$(this).addClass( 'active' );
			}
			
			$(this).mouseenter(function() {
			
				$( options.current ).removeClass( 'active' );
				$(this).addClass( 'active' );
				
				options.current = $(this);
				
				if( options.sliderBusy == 0 )
				{
					doSlide( $(this) );
				} else {
					options.queue = $(this);
				}
			}).click(function() {
			
				$( options.current ).removeClass( 'active' );
				$(this).addClass( 'active' );
				
				options.current = $(this);
				
				if( options.sliderBusy == 0 )
				{
					doSlide( $(this) );
				} else {
					options.queue = $(this);
				}
			});
			
			i++;
		});
		
		i = 0;
		
		function doSlide( object )
		{
			setSlide( $(object).attr('name') );
		}
		
		function setSlide( id )
		{
			if( options.sliderBusy == 0 )
			{
				options.sliderBusy = 1;
				options.activeSlide = id;
				
				var leftPad = ( 1000 + 4 ) * id;
				
				$( 'div#slider-viewport div.items' ).animate({
					left: '-' + leftPad
				}, options.sliderTimeout, function() {
					options.sliderBusy = 0;
					
					if( options.queue != false )
					{
						var object = options.queue;
						options.queue = false;
						doSlide( object );
					}
				});
				
				$('div#slider-viewport div.overlay').fadeOut( options.sliderTimeout / 2, function(){
				
					var slide = options.container.find( 'div#slider-nav div.item' ).eq( id );
					var title = slide.find('h2').html();
					var description = slide.find('p.description').html();
				
					$('div#slider-viewport div.overlay').html( "<h2>" + title + "</h2><p>" + description + "</p>" );
				
					$('div#slider-viewport div.overlay').fadeIn( options.sliderTimeout / 2, function(){
						//something
					});
				});
			}
		}
	});
 };
})(jQuery);
