jQuery.fn.slideshow = function(speed, random, displayPlay, displayNav, displaySpeed, displayOrder) {
	return this.each(function() {
		var controls = '<div class="diaporama-controls">';
		if(displaySpeed) {
			controls = controls + '<a href="javascript:;" class="diaporama-controls-fast">&equiv;</a>';
			controls = controls + '<a href="javascript:;" class="diaporama-controls-normal">=</a>';
			controls = controls + '<a href="javascript:;" class="diaporama-controls-slow">&minus;</a>';
		}
		if(displayOrder) {
			controls = controls + '<a href="javascript:;" class="diaporama-controls-random">2431</a>';
			controls = controls + '<a href="javascript:;" class="diaporama-controls-ordered">1234</a>';
		}
		if(displayNav)
			controls = controls + '<a href="javascript:;" class="diaporama-controls-next">&gt;&gt;</a>';
		if(displayPlay) {
			controls = controls + '<a href="javascript:;" class="diaporama-controls-pause">||</a>';
			controls = controls + '<a href="javascript:;" class="diaporama-controls-play">&gt;</a>';
		}
		if(displayNav)
			controls = controls + '<a href="javascript:;" class="diaporama-controls-previous">&lt;&lt;</a>';
		controls = controls + '</div>';
		jQuery(this).find('.diaporama-items').before(controls);
		
		jQuery(this).find(".diaporama-controls-slow").click(function(){
			jQuery(this).parents('.diaporama-container').data('speed', 5*speed/3);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideAppear();
		});	
		jQuery(this).find(".diaporama-controls-normal").click(function(){
			jQuery(this).parents('.diaporama-container').data('speed', speed);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideAppear();
		});
		jQuery(this).find(".diaporama-controls-fast").click(function(){
			jQuery(this).parents('.diaporama-container').data('speed', speed/3);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideAppear();
		});
		jQuery(this).find(".diaporama-controls-previous").click(function(){
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slidePrevious().fadeOut();
		});
		jQuery(this).find(".diaporama-controls-next").click(function(){
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideNext().fadeOut();
		});
		jQuery(this).find(".diaporama-controls-play").click(function(){
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideAppear();
		});
		jQuery(this).find(".diaporama-controls-pause").click(function(){
			jQuery(this).hide();
			jQuery(this).parent().find('.diaporama-controls-play').show();
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
		});
		jQuery(this).find(".diaporama-controls-random").click(function(){
			jQuery(this).parents('.diaporama-container').data('random', true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideAppear();
		});
		jQuery(this).find(".diaporama-controls-ordered").click(function(){
			jQuery(this).parents('.diaporama-container').data('random', false);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item').stop(true);
			jQuery(this).parents('.diaporama-container').find('.diaporama-item-current').slideAppear();
		});

		jQuery(this).data('speed', speed);
		jQuery(this).data('random', random);
		jQuery(this).addClass('diaporama-container');
		jQuery(this).find('.diaporama-item').hide();
		jQuery(this).find('.diaporama-item:first').slideAppear();
	});
};
jQuery.fn.slideAppear = function() {
	return this.each(function() {
		jQuery(this).parents('.diaporama-container').find('.diaporama-controls-play').hide();
		jQuery(this).parents('.diaporama-container').find('.diaporama-controls-pause').show();
		jQuery(this).parent().find('.diaporama-item').removeClass('diaporama-item-current');
		jQuery(this).addClass('diaporama-item-current');
		jQuery(this).fadeIn().animate({opacity : 1}, jQuery(this).parents('.diaporama-container').data('speed'), function() {
			if(jQuery(this).parents('.diaporama-container').data('random')) {
				var current = jQuery(this).parent().find('.diaporama-item').index(this);
				var size = jQuery(this).parent().find('.diaporama-item').size();
				var random = current;
				while(random==current)
					random = Math.floor(Math.random() * size);
				jQuery(this).parent().find('.diaporama-item').eq(random).slideAppear();
			} else {
				jQuery(this).slideNext();
			}
		}).fadeOut();
	});
};
jQuery.fn.slideNext = function() {
	return this.each(function() {
		if (jQuery(this).next('.diaporama-item').size() > 0) {
			jQuery(this).next('.diaporama-item').slideAppear();
		} else {
			jQuery(this).prevAll('.diaporama-item:last').slideAppear();
		}
	});
};
jQuery.fn.slidePrevious = function() {
	return this.each(function() {
		if (jQuery(this).prev('.diaporama-item').size() > 0) {
			jQuery(this).prev('.diaporama-item').slideAppear();
		} else {
			jQuery(this).nextAll('.diaporama-item:last').slideAppear();
		}
	});
};