$.fn.slideshow = function(options) {
	var settings = {
		timeout: '2000',
		type: 'sequence'
	}

	if(options)
		$.extend(settings, options);
		this.css('position', 'relative');
		var slides = this.find('img').get();

		// JOLLY Added for instances of only one slide
		if (slides.length <= 1) {
			return;
		}

		for ( var i = 0; i < slides.length; i++ ) {
			// JOLLY: Changed 'top' and 'left' attributes
			$(slides[i]).css('zIndex', slides.length - i).css('position', 'absolute').css('top', '5').css('left', '5');
		}

		if ( settings.type == 'sequence' ) {
			setTimeout(function(){
				$.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 )
					$.slideshow.next(slides, settings, current, 0);
			}, settings.timeout);
		}

		else {
			alert('type must either be \'SEQUENCE\' or \'RANDOM\'');
		}
};

$.slideshow = function() {}

$.slideshow.next = function (slides, settings, current, last) {
	for (var i = 0; i < slides.length; i++) {
		$(slides[i]).css('display', 'none');
	}
	
	// JOLLY: Added crossfade effect fadeOut('slow'); 
	$(slides[last]).fadeOut('slow').css('display', 'block').css('zIndex', '0');
	$(slides[current]).css('zIndex', '1').fadeIn('slow');

	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(){$.slideshow.next(slides, settings, current, last);}), settings.timeout);
}

$(document).ready(function() {
	$('#topSlideshow').slideshow({
		timeout: 5000,
		type: 'sequence'
		
	});
});