var ImagePreload = Class.create();
ImagePreload.prototype = {
	initialize: function(imagenames, options) {
		this.imagenames = imagenames;
		this.images = [];
		this.setOptions(options);
		this.preloadImages();
	},
	setOptions: function(options) {
		this.options = {
			onFinish: Prototype.emptyFunction,
			pause: 30
		}
		Object.extend(this.options, options || {});
	},
	preloadImages: function() {
		var self = this;
		for(var n = 0; n < this.imagenames.length; n++) {
			this.images[n] = new Image();
			this.images[n].src = this.imagenames[n];
			setTimeout(new Function('this.checkImageLoad('+n+')').bind(this), n*this.options.pause);
		}
	},
	checkImageLoad: function(index) {
		if(this.images[index].complete) {
			this.imageLoaded();
		} else {
			setTimeout(new Function('this.checkImageLoad('+index+')').bind(this), this.options.pause);
		}
	},
	imageLoaded: function() {
		if(!this.loadedImages) {
			this.loadedImages = 0;
		}
		this.loadedImages++;
		if(this.loadedImages>=this.imagenames.length) {
			var callback = this.options.onFinish() || Prototype.emptyFunction;
			callback();
		}
	}
}