﻿function registerNS(ns) {
    var nsParts = ns.split(".");
    var root = window;

    for (var i = 0; i < nsParts.length; i++) {
        if (typeof root[nsParts[i]] == "undefined") root[nsParts[i]] = new Object();
        root = root[nsParts[i]];
    }
}
registerNS("GenX.Animation.ImgFader");


function ImageFade(imageNumber, startValue, step, speed, startDelay) {
	this.imageNumber = imageNumber;
	this.image = document.getElementById('FaderImg' + imageNumber);
	this.value = startValue;
	this.step = step;
	this.speed = speed;
	this.startDelay = startDelay;
}

GenX.Animation.ImgFader.ImageNumber = 0;
GenX.Animation.ImgFader.IntervalTimer = null;

GenX.Animation.ImgFader.Start = function() {
	GenX.Animation.ImgFader.Fade(0);
}

GenX.Animation.ImgFader.Fade = function(imageNumber) {

	GenX.Animation.ImgFader.ImageNumber = imageNumber;
	GenX.Animation.ImgFader.IntervalTimer = setInterval('GenX.Animation.ImgFader.SetFadeValue()', images[imageNumber].speed);
}

GenX.Animation.ImgFader.SetFadeValue = function() {

	var startNext = false;
	var image = images[GenX.Animation.ImgFader.ImageNumber];

	// add/subtract step to fade amount;
	image.value += image.step;

	// stop when counter reaches limit
	if (image.value >= 100) {
		clearInterval(GenX.Animation.ImgFader.IntervalTimer);
		image.value = 100;
		startNext = true;
	}
	if (image.value <= 0) {
		clearInterval(GenX.Animation.ImgFader.IntervalTimer);
		image.value = 0;
		startNext = true;
	}

	// apply fade amount
	image.image.className = 'FaderImg' + image.imageNumber + ' Fade' + image.value;

	// start next animation
	if (startNext) {
		GenX.Animation.ImgFader.ImageNumber++;
		if (GenX.Animation.ImgFader.ImageNumber < images.length) {
			setTimeout('GenX.Animation.ImgFader.Fade(' + GenX.Animation.ImgFader.ImageNumber + ');', images[GenX.Animation.ImgFader.ImageNumber].startDelay);
		}
	}

}

