function ImageShuffler(pauseSc, fadeSc, step){
	this.pauseSeconds = pauseSc;
	this.fadeSeconds = fadeSc;
	this.fadeStep = step;

	this.images = new Array();
	this.index = 0;
	this.img1 = undefined;
	this.img2 = undefined;
	this.container = undefined;
	this.opacity = 100;
	this.state = undefined;
	this.timeout = undefined;

	this.addPhoto = addPhoto;
	this.init = init;
	this.launch = launch;
	this.setImageSize = setImageSize;
	this.fade = fade;


function addPhoto(path){
	this.images.push(path);
}

function init(cntId){
	this.container = document.getElementById(cntId);
	if (!this.container || this.images.length < 1){
		this.state = 'error';
		return false;
	}

	this.img1 = document.createElement("img");
	this.img1.src = this.images[0];
	this.img1.style.position = "absolute";
	this.img1.style.top = 0;
	this.img1.style.left = 0;
	this.img1.style.zIndex = 100;
	setOpacity(this.img1, 100);
	this.container.appendChild(this.img1);
	if (this.images.length == 1){
		this.state = 'single';
		return true;
	}
	this.img2 = document.createElement("img");
	this.img2.src = this.images[1];
	this.img2.style.position = "absolute";
	this.img2.style.top = 0;
	this.img2.style.left = 0;
	this.img2.style.zIndex = 99;
	setOpacity(this.img2, 0);
	this.container.appendChild(this.img2);
	this.state = "ok";
	return true;
}

function setImageSize(width, height){
	if (this.state == 'error'){
		return;
	}
	this.img1.width = this.container.width = width;
	this.img1.height = this.container.height = height;
	if (this.state == 'ok'){
		this.img2.width = width;
		this.img2.height = height;
	}
}

function fade(){
	this.opacity -= this.fadeStep;
	var _self = this;
	if (this.opacity < this.fadeStep){
		this.img1.style.zIndex = "99";
		this.img2.style.zIndex = "100";
		setOpacity(this.img1, 0);
		setOpacity(this.img2, 100);
		tmpimg = this.img1;
		this.img1 = this.img2;
		this.img2 = tmpimg;
		this.index = getNextIndex(this.index, this.images.length);
		this.img2.src = this.images[getNextIndex(this.index, this.images.length)];
		this.opacity = 100;
		this.timeout = setTimeout(function() {
			_self.fade();
		}, this.pauseSeconds * 1000);
	} else {
		setOpacity(this.img1, this.opacity);
		setOpacity(this.img2, 100-this.opacity);
		this.timeout = setTimeout(function() {
			_self.fade();
		}, this.fadeSeconds/(100/this.fadeStep)*1000);
	}
}

function launch(){
	if (this.state == 'ok') {
		var _self = this;
		this.timeout = setTimeout(function() {
			_self.fade();
		}, this.pauseSeconds * 1000);
	}
}

}
function getNextIndex(idx, length){
	return (idx+1)%length;
}

function setOpacity(obj, opacity) {
	// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";

	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;

	// Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;

	// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}

