jQuery.preloadImages = function()
{
	preload = arguments[0];
	
	for(var i = 0; i<arguments[0].length; i++)
	{
		$(document.createElement('img')).bind('load', function() {
			if(preload[0]) this.src = preload.shift();
		}).trigger('load');
	}
}


$(document).ready(function() {

	offState = 1;
	overState = .6;
	onState = 1;
	var current = "hello";
	
	// Create an array of portfolio images, and preload them
	projectImages = new Array();
	
	$("#imageNav a").each(function() {
		projectImages[projectImages.length] = $(this).attr("href");
	});
	
	// set all our images to our offState instantly
	$("#imageNav a img").fadeTo(0, offState);
	
	// set our first image to on
	$("#imageNav a:first").addClass("selected").fadeTo(0, onState);
	
	// when we click an image, load it up
	$("#imageNav a").click(function() {
		$("img#portfolioImg").attr("src", $(this).attr("href"));
		$("p#portfolioCaption").text($(this).attr("title"));
		$("#imageNav a.selected").removeClass("selected").find("img").fadeTo(0, offState);
		$(this).addClass("selected").find("img").fadeTo(0, onState);
		return false;
	});
	
	// when we hover, switch to our over state if appropriate
	$("#imageNav a").hover(
		function() {
			if($(this).hasClass("selected") == false) {
				$(this).find("img").fadeTo(0, overState);
			}
		},
		function() {
			if($(this).hasClass("selected") == false) {
				$(this).find("img").fadeTo(0, offState);
			}
		}
	);
	
	// Insert our captions
	$("p#portfolioCaption").text($("#imageNav ul li:first a").attr("title"));
	$("img#portfolioImg").attr('src', $("ul#imageNav li:first a").attr("href"));
	
});

$(window).load(function(){
	$.preloadImages(projectImages);
}); 



<script type="text/javascript">

function theRotator() {
	//Set the opacity of all images to 0
	$('div.rotator ul li').css({opacity: 0.0});
	
	//Get the first image and display it (gets set to full opacity)
	$('div.rotator ul li:first').css({opacity: 1.0});
		
	//Call the rotator function to run the slideshow, 6000 = change to next image after 6 seconds
	
	setInterval('rotate()',6000);
	
}

function rotate() {	
	//Get the first image
	var current = ($('div.rotator ul li.show')?  $('div.rotator ul li.show') : $('div.rotator ul li:first'));

    if ( current.length == 0 ) current = $('div.rotator ul li:first');

	//Get next image, when it reaches the end, rotate it back to the first image
	var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div.rotator ul li:first') :current.next()) : $('div.rotator ul li:first'));
	
	//Un-comment the 3 lines below to get the images in random order
	
	//var sibs = current.siblings();
        //var rndNum = Math.floor(Math.random() * sibs.length );
        //var next = $( sibs[ rndNum ] );
			

	//Set the fade in effect for the next image, the show class has higher z-index
	next.css({opacity: 0.0})
	.addClass('show')
	.animate({opacity: 1.0}, 1000);

	//Hide the current image
	current.animate({opacity: 0.0}, 1000)
	.removeClass('show');
	
};



$(document).ready(function() {		
	//Load the slideshow
	theRotator();
	$('div.rotator').fadeIn(1000);
    $('div.rotator ul li').fadeIn(1000); // tweek for IE
});

</script>
