jQuery.fn.slideshow = function(options) {
	var settings = {
		timeout: '4000',
		type: 'sequence',
		itemsVisible: 1
	}
	if(options){
		jQuery.extend(settings, options);
	}
	this.css('position', 'relative');
	var slides = this.children().get();
	this.end();
	var height = 0;
	for ( var i = 0; i < slides.length; i++ ) {
		jQuery(slides[i]).css('zIndex', slides.length - i).css('position', 'absolute').css('top', '0').css('left', '0').hide();
		if(i == 0){
			jQuery(slides[i]).show();
		}
		height = Math.max(height, jQuery(slides[i]).height());
	}
	this.css('height', height + 'px');
	if ( settings.type == 'sequence' ) {
		setTimeout(function(){
			jQuery.slideshow.next(slides, settings, 1, 0);
		}, settings.timeout);
	}
	else if ( settings.type == 'random' ) {
		setTimeout(function(){
			do { current = Math.floor ( Math.random ( ) * ( slides.length ) ); } while ( current == 0 )
			jQuery.slideshow.next(slides, settings, current, 0);
		}, settings.timeout);
	}
	else {
		alert('type must either be \'sequence\' or \'random\'');
	}
};

jQuery.slideshow = function() {}

jQuery.slideshow.next = function (slides, settings, current, last) {
	for (var i = 0; i < slides.length; i++) {
		jQuery(slides[i]).css('display', 'none');
	}
	jQuery(slides[last]).css('display', 'block').css('zIndex', '0').fadeOut('fast');
	jQuery(slides[current]).css('zIndex', '1').fadeIn(2000);
	if ( settings.type == 'sequence' ) {
		if ( ( current + 1 ) < slides.length ) {
			current = current + 1;
			last = current - 1;
		}
		else {
			current = 0;
			last = slides.length - 1;
		}
	}
	else if ( settings.type == 'random' ) {
		last = current;
		while ( current == last ) {
			current = Math.floor ( Math.random ( ) * ( slides.length ) );
		}
	}
	else {
		alert('type must either be \'sequence\' or \'random\'');
	}
	setTimeout(function(){
		jQuery.slideshow.next(slides, settings, current, last);
	}, settings.timeout);
}