/*
 * homePage.js
 *
 */

var HomePage = {

	// Attributes

	isOnSlideA: true,
	pauseTimeSecs: 5,
	preloadedSlides: new Array(),
	slideMaxNum: 17,
	slideMinNum: 1,
	slideNum: 1,
	timerId: null,
	transitionTimeSecs: 0.5,
	urlTemplate: "img/slides/slide_${slideNum}.jpg",

	// Methods

	getNextSlideNum: function(slideNum) {
		++slideNum
		if (slideNum > HomePage.slideMaxNum)
			slideNum = HomePage.slideMinNum;
		return slideNum;
	},

	init: function() {
		this.slideNum = this.slideMinNum;
		$("imageA").src = this.urlTemplate.replace("${slideNum}",this.slideNum);
		$("imageB").src = this.urlTemplate.replace("${slideNum}",this.getNextSlideNum(this.slideNum))
		$("slideA").setStyle({opacity:1});
		this.isOnSlideA = true;
		this.timerId = setTimeout('HomePage.nextSlide();', (this.pauseTimeSecs * 1000));
		this.preloadSlide(100);
		this.preloadSlide(101);
		this.preloadSlide(102);
		this.preloadSlide(103);
		this.preloadSlide(104);
	},

	nextSlide: function() {
		this.slideNum = this.getNextSlideNum(this.slideNum);
		this.showSlide(this.slideNum);
	},

	preloadSlide: function(slideNum) {
		if (this.preloadedSlides[slideNum])
			return;
		var img = new Image();
		img.src = this.urlTemplate.replace("${slideNum}",slideNum);
		this.preloadedSlides[slideNum] = img;
	},

	showSlide: function(slideNum) {
		if (this.timerId != null) {
			clearTimeout(this.timerId);
			this.timerId = null;
		}
		this.slideNum = slideNum;
		if (this.isOnSlideA) {
			$("imageB").src = this.urlTemplate.replace("${slideNum}",this.slideNum);
			$("slideA").fade({ duration: HomePage.transitionTimeSecs });
		} else {
			$("imageA").src = this.urlTemplate.replace("${slideNum}",this.slideNum);
			$("slideA").appear({ duration: HomePage.transitionTimeSecs });
		}
		this.isOnSlideA = !this.isOnSlideA;
		if ((slideNum >= this.slideMinNum) && (slideNum <= this.slideMaxNum)) {
			this.preloadSlide(this.getNextSlideNum(this.slideNum));
			this.timerId = setTimeout('HomePage.nextSlide();', (this.pauseTimeSecs * 1000));
		}
	}

}

document.observe("dom:loaded", function() {
	HomePage.init();
});
