var ImageRotator = Class.create({
	initialize: function(element, options){
		this.element = $(element);
		this.options = options || {};

		var imageLocations = this.options.images || new Array();
		var linkURLs = this.options.links || new Array();
		var summaries = this.options.summaries || new Array();
		var summary = $(this.options.summary) || null;
		var pauseLength = this.options.pauseLength || 5;
		var fadeLength = this.options.fadeLength || 1;

		var currentImage = 0;

		var images = new Array();
		//preload images
		if(imageLocations.length > 0){
			imageLocations.each(function(img, index){
				images[index] = new Image();
				images[index].src = img;
			});
		}

        	var px = new PeriodicalExecuter(function(){
			currentImage == (images.length - 1) ? currentImage = 0 : currentImage += 1;
			Effect.Fade(element, {
				duration: fadeLength,
				from: 1,
				to: 0,
				afterFinish: function(){
					$(element).src = images[currentImage].src;
					Effect.Appear(element, {
						duration: fadeLength,
						from: 0,
						to: 1
					});
					if(summary && summaries[currentImage]){
						$(summary).update(summaries[currentImage]);
					}
				}
			});

			if(linkURLs.length > 0 && $(element).ancestors()[0].nodeName == "A"){
				$(element).ancestors()[0].href = linkURLs[currentImage];	
			}
		}, pauseLength);
	}
})