(function($) {	
	$.fn.slideshow = function() {
		var speed = 800;
		
		function init(slideshow) {
			

			$('.slide', slideshow).hide();
			$('.slide h3', slideshow).hide();
			$('.slide p', slideshow).hide();

			var first_slide = $('.slide:eq(0)', slideshow);
			first_slide.show();
			var first_h3 = $('h3', first_slide);
			var first_p = $('p', first_slide);
			if($.trim(first_h3.html()) == '') {
				$('h3', first_slide).hide();
			} else {
				$('h3', first_slide).show();
			}
			if($.trim(first_p.html()) == '') {
				$('p', first_slide).hide();
			} else {
				$('p', first_slide).show();
			}

			slideshow.data('index', 0);
			slideshow.data('total', $('.slide', slideshow).size());
			slideshow.append('<div class="controls"><a class="prev" href="#prev" title="Previous Image"><img src="/images/slideshow_nav_prev.png" alt="&lt;" /></a>&nbsp;<span class="slide-current">1</span>&nbsp;of&nbsp;<span class="slide-total">' + slideshow.data('total') + '</span>&nbsp;<a class="next" href="#next" title="Next Image"><img src="/images/slideshow_nav_next.png" alt="&gt;" /></a></div>');
			
			$('.controls .prev', slideshow).bind('click', function(e) {
				e.preventDefault();
				var index = slideshow.data('index');
				if(index <= 0) {
					slideshow.data('index', 0);
				} else {
					slideshow.data('index', index - 1);
					slide(slideshow, 'prev');
				}
			});
			$('.controls .next', slideshow).bind('click', function(e) {
				e.preventDefault();
				var index = slideshow.data('index');
				var total = slideshow.data('total');
				if(index >= (total - 1)) {
					slideshow.data('index', total - 1);
				} else {
					slideshow.data('index', index + 1);
					slide(slideshow, 'next');
				}
			});
		}
		
		function slide(slideshow, action) {
			var index = slideshow.data('index');
			var inc = 1;
			if(action == 'prev') {
				inc = 1;
			} else {
				inc = -1;
			}
			
			$('.slide:eq(' + (index + inc) + ')', slideshow).fadeOut(speed, function() {
				var h3 = $('.slide:eq(' + (index + inc) + ') h3', slideshow);
				var p = $('.slide:eq(' + (index + inc) + ') p', slideshow);
				
				h3.hide();	

				p.hide();				
				
			});			
			
			$('.controls .slide-current', slideshow).html(index + 1);
			
			$('.slide:eq(' + index + ')', slideshow).fadeIn(speed, function() {
				var h3 = $('.slide:eq(' + index + ') h3', slideshow);
				var p = $('.slide:eq(' + index + ') p', slideshow);
				if($.trim(h3.html()) != '') {
					h3.show("slide",{direction:'left'}, speed * 0.5);
				} else {
					h3.hide();
				}
				if($.trim(p.html()) != '') {
					p.show("slide",{direction:'down'}, speed * 0.5);
				} else {
					p.hide();
				}
			});
		}
		
		return this.each(function() {			
            init($(this));
        });
    };
})(jQuery);
