/* Photo Show
*/

function ImageLoop(imageID, spf, frameURLs) {

	this.imageID = imageID;
	this.frameInterval = 1000 * spf;
	this.frames = new Array(frameURLs.length);
	
	this.image = null;
	this.loaded = false;
	this.loadedFrames = 0;
	this.startOnLoad = true;
	this.frameNumber = -1;
	this.timer = null;
	
	for (var i = 0; i < frameURLs.length; i++) {
		this.frames[i] = new Image();
		this.frames[i].onload = countLoadedFrames;
		this.frames[i].src = frameURLs[i];
	}
	
	var loop = this;
	
	function countLoadedFrames() {
		loop.loadedFrames++;
		if (loop.loadedFrames == loop.frames.length) {
			loop.loaded = true;
			if (loop.startOnLoad) loop.start();
		}
	}
	
	this._displayNextFrame = function() {
		
		loop.frameNumber = (loop.frameNumber+1)%loop.frames.length;
		loop.image.src = loop.frames[loop.frameNumber].src;
	};
	
	this._NextFrame = function() {
		
		if (!this.image) this.image = document.getElementById(this.imageID);
		
		if (loop.loaded) {
			
			loop.stop();
			
			loop.frameNumber = (loop.frameNumber+1)%loop.frames.length;
			loop.image.src = loop.frames[loop.frameNumber].src;
			
			loop.start();
		}
	};
	
	this._PrevFrame = function() {
		
		if (!this.image) this.image = document.getElementById(this.imageID);
		
		if (loop.loaded) {
			
			loop.stop();
			
			loop.frameNumber--;
			
			if (loop.frameNumber < 0) {
				loop.frameNumber = loop.frames.length - 1;
			}
			
			loop.image.src = loop.frames[loop.frameNumber].src;
			
			loop.start();
		}
	};
}

ImageLoop.prototype.start = function() {
	
	if (this.timer != null) return;
	if (!this.loaded) this.startOnLoad = true;
	else {
		if (!this.image) this.image = document.getElementById(this.imageID);
		/*this._displayNextFrame();*/
		this.timer = setInterval(this._displayNextFrame, this.frameInterval);
	}
	
};

ImageLoop.prototype.stop = function() {

	if(this.timer) clearInterval(this.timer);
	this.timer = null;
	
};
