CrossFadingOptions = {
	
	outputElementId: '',
	currentIndex: 0,
	transitionTime: 5000,
	animationSpeed: 40,
	crossPercentage: 70,
	listImages: [],
	minOpacity: 0,
	maxOpacity: 100
	
}

CrossFading = {
	
	setOpacity: function(sElementId, iValue)
	{
		var oElement = document.getElementById(sElementId);
		
		if(this.isBrowserIE())
		{
			oElement.style.filter  = 'alpha(opacity='+iValue+')';
		}
		else
		{
			oElement.style.opacity = iValue / 100;
		}
	},

	setDisplay: function(sElementId, iStatus)
	{
		var oElement = document.getElementById(sElementId);
		
		oElement.style.display = (iStatus == 1) ? 'inline' : 'none';
	},

	isBrowserIE: function()
	{
		var sBrowserName = navigator.appName;
		
		if(sBrowserName == 'Microsoft Internet Explorer')
		{
			 return true;
		}
		else
		{
			 return false;
		}
	},

	fadeIn: function(sElementId)
	{
		var obj = this;
		CrossFadingOptions.maxOpacity = 100;
		
		this.setOpacity(sElementId, CrossFadingOptions.maxOpacity);
		this.bTimerIn = setInterval(function() { obj.animateFadeIn(sElementId); }, CrossFadingOptions.animationSpeed);
	},

	fadeOut: function fadeOut(sElementId)
	{				
	 var obj = this;
	 CrossFadingOptions.minOpacity = 0;

	 this.setDisplay(sElementId, 1);
	 this.setOpacity(sElementId, CrossFadingOptions.minOpacity);
	 this.bTimerOut = setInterval(function() { obj.animateFadeOut(sElementId); }, CrossFadingOptions.animationSpeed);
	},

	animateFadeIn: function(sElementId)
    {
	   if(CrossFadingOptions.maxOpacity > 0)
	    {
		   CrossFadingOptions.maxOpacity = CrossFadingOptions.maxOpacity - 5;
		   this.setOpacity(sElementId, CrossFadingOptions.maxOpacity);
		   
		   if(CrossFadingOptions.maxOpacity == CrossFadingOptions.crossPercentage)
		    {
			   if(CrossFadingOptions.currentIndex + 1 != CrossFadingOptions.listImages.length)
			    {
				   CrossFadingOptions.currentIndex++;
			    }
			   else
			    {
				   CrossFadingOptions.currentIndex = 0;
			    }
			   this.fadeOut('crossfading_image'+CrossFadingOptions.currentIndex, CrossFadingOptions.animationSpeed);
		    }
	    }
	   else
	    {
		   clearInterval(this.bTimerIn);
		   this.setDisplay(sElementId, 0);
	    }
    },

	animateFadeOut: function(sElementId)
	{
		if(CrossFadingOptions.minOpacity < 100)
		{
			CrossFadingOptions.minOpacity = CrossFadingOptions.minOpacity + 5;
			this.setOpacity(sElementId, CrossFadingOptions.minOpacity);
		}
		else
		{
			var obj = this;

			clearInterval(this.bTimerOut);
			setTimeout(function() { obj.fadeIn('crossfading_image'+CrossFadingOptions.currentIndex); }, CrossFadingOptions.transitionTime);
		}
	},
					
	init: function()
	{
		var obj 			= this;
		var numImages 	= CrossFadingOptions.listImages.length;
		var outputElement = document.getElementById(CrossFadingOptions.outputElementId);

		for(var i = 0; i < numImages; i++)
		{
			var createImage = document.createElement('img');
			createImage.setAttribute('src', CrossFadingOptions.listImages[i]);
			createImage.setAttribute('id', 'crossfading_image'+i);
			outputElement.appendChild(createImage);
		}

		this.setDisplay('crossfading_image0', 1);
		setTimeout(function() { obj.fadeIn('crossfading_image0'); }, CrossFadingOptions.transitionTime);
	}
}