function XSJSImageGalleryChooseFadeInOut(galleryName, timeStanding, timeFading, autoSliding) {

	this._galleryName = galleryName;
	this._timeoutStanding = timeStanding;
	this._timeoutFading = timeFading;
	this._autoSliding = autoSliding;
	
	this._ulThumbsElement = document.getElementById(this._galleryName+"Thumbs");
	this._imageDivElement = document.getElementById(this._galleryName+"ContentImage");
	this._textDivElement = document.getElementById(this._galleryName+"ContentText");
	this._liElementArray = this._ulThumbsElement.getElementsByTagName('li');
	this._imageIndex = 0;
	this._imageCount = this._liElementArray.length;
	this._fadeInProgress = false;
	
	this.init();
	if (this._autoSliding) {
		var thisObj = this;
		this.timer = setTimeout(this._galleryName+".run()",  this._timeoutStanding);
	}
}

XSJSImageGalleryChooseFadeInOut.prototype.init = function() {
	x=0;	
	for (x=0;x<this._liElementArray.length;x++) {
		var div = this.getContentDiv(x);
		if (x==0) {
			div.style.visibility = "visible";
			this.changeOpacity(100, div.id);
		}
		else {
			this.changeOpacity(0, div.id);
		}
	}
}

XSJSImageGalleryChooseFadeInOut.prototype.getContentDiv = function(index) {
	var divID = this._galleryName+"Content"+index;
	var divElement = document.getElementById(divID);
	return divElement;
}

XSJSImageGalleryChooseFadeInOut.prototype.changeOpacity = function(opacity, id) { 
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100); 
	object.MozOpacity = (opacity / 100); 
	object.KhtmlOpacity = (opacity / 100); 
	object.filter = "alpha(opacity=" + opacity + ")";
	if (opacity == 0)
		object.visibility = "hidden";
	else
		object.visibility = "visible";
}


XSJSImageGalleryChooseFadeInOut.prototype.run = function() {
	var _nextIndex = (this._imageIndex+1) % this._imageCount;
	this.changeTo(_nextIndex);
}


XSJSImageGalleryChooseFadeInOut.prototype.fadeTo = function(toIndex) {
	if (this._fadeInProgress || toIndex == this._imageIndex)
		return;
	var divElement = this.getContentDiv(toIndex); 
	var oldDivElement = this.getContentDiv(this._imageIndex); 
	oldDivElement.style.visibility = "visible";
	divElement.style.visibility = "visible";
	this.fadeOut(oldDivElement);
	this.fadeIn(divElement);
	this._imageIndex = toIndex;
	
	if (this._autoSliding) {
		var thisObj = this;
		this.timer = setTimeout(this._galleryName+".run()",  this._timeoutStanding);
	}
}

XSJSImageGalleryChooseFadeInOut.prototype.changeTo = function(toIndex) {
	clearTimeout(this.timer);
	if (!this._fadeInProgress)
		this.fadeTo(toIndex);
}

XSJSImageGalleryChooseFadeInOut.prototype.fadeOut = function(img) {
	this.fadeOpacity(img, 100, 0, this._timeoutFading);
}

XSJSImageGalleryChooseFadeInOut.prototype.fadeIn = function(img) {
	this.fadeOpacity(img, 0, 100, this._timeoutFading);
}

XSJSImageGalleryChooseFadeInOut.prototype.fadeEnd = function() {
	this._fadeInProgress = false;
}
	
XSJSImageGalleryChooseFadeInOut.prototype.fadeOpacity = function(elem, opacStart, opacEnd, sec) {
	
	var speed = Math.round(sec / 100); 
	var timer = 0; 
	this._fadeInProgress = true;
	if(opacStart > opacEnd) { 
		var thisObj = this;
		for(i = opacStart; i >= opacEnd; i--) { 
			setTimeout(this._galleryName+".changeOpacity("+i+", '"+elem.id+"')", (timer * speed));
			timer++; 
		} 
		setTimeout(this._galleryName+".fadeEnd()", (timer * speed));
	} 
	else if(opacStart < opacEnd) { 
		for(i = opacStart; i <= opacEnd; i++) { 
			setTimeout(this._galleryName+".changeOpacity("+i+", '"+elem.id+"')", (timer * speed));
			timer++; 
		 }
 		 setTimeout(this._galleryName+".fadeEnd()", (timer * speed));
	} 
} 








function XSJSImageGallerySlideShowFadeInOut(slideShowName, timeStanding, timeFading) {

	this._slideShowName = slideShowName;
	this._divElement = document.getElementById(this._slideShowName);
	this._timeoutStanding = timeStanding;
	this._timeoutFading = timeFading;
	this._imageIndex = 0;
	this._liArray = this._divElement.getElementsByTagName("li");
	this._imageCount = this._liArray.length;
	this.init();
	var thisObj = this;
	if (this._imageCount>1)
	   this.interval = setInterval(function() { thisObj.run(); }, this._timeoutStanding);
}


XSJSImageGallerySlideShowFadeInOut.prototype.init = function() {
	for (x=0;x<this._liArray.length;x++) {
		this._liArray[x].id = this._slideShowName+"Item"+x;
		this._liArray[x].style.zIndex = this._liArray.length-x;
		if (x==0) {
			this._liArray[x].style.visibility = "visible";
			this.changeOpacity(100, this._liArray[x].id);
		}
		else {
			this.changeOpacity(0, this._liArray[x].id);
		}
	}
}

XSJSImageGallerySlideShowFadeInOut.prototype.run = function() {

	var _nextIndex = (this._imageIndex+1) % this._imageCount;
	var imgElement = this._liArray[_nextIndex].getElementsByTagName('img')[0]; 
	
	if (!imgElement.complete)
		return;

	var oldLIElement = this._liArray[this._imageIndex];
	var newLIElement = this._liArray[_nextIndex];

	oldLIElement.style.visibility = "visible";
	newLIElement.style.visibility = "visible";

	this.fadeOut(oldLIElement);
	this.fadeIn(newLIElement);
	
	this._imageIndex = _nextIndex;
}

XSJSImageGallerySlideShowFadeInOut.prototype.fadeOut = function(img) {
	this.fadeOpacity(img, 100, 0, this._timeoutFading);
}

XSJSImageGallerySlideShowFadeInOut.prototype.fadeIn = function(img) {
	this.fadeOpacity(img, 0, 100, this._timeoutFading);
}

XSJSImageGallerySlideShowFadeInOut.prototype.fadeOpacity = function(elem, opacStart, opacEnd, sec) {
	var speed = Math.round(sec / 100); 
	var timer = 0; 
	if(opacStart > opacEnd) { 
		var thisObj = this;
		for(i = opacStart; i >= opacEnd; i--) { 
			setTimeout(this._slideShowName+".changeOpacity("+i+", '"+elem.id+"')", (timer * speed));
			timer++; 
		} 
	} 
	else if(opacStart < opacEnd) { 
		for(i = opacStart; i <= opacEnd; i++) { 
			setTimeout(this._slideShowName+".changeOpacity("+i+", '"+elem.id+"')", (timer * speed));
			timer++; 
		 }
	} 
} 


XSJSImageGallerySlideShowFadeInOut.prototype.changeOpacity = function(opacity, id) { 
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100); 
	object.MozOpacity = (opacity / 100); 
	object.KhtmlOpacity = (opacity / 100); 
	object.filter = "alpha(opacity=" + opacity + ")";
}