function ImageSwitch(images) {
	var imageTimeout = 500;
	var nextImage = 1;
	var fadeing = false;
	var previousEl = null;
	
	function setOpacity(el, opacity)
	{
		opacity /= 100;
	
		el.style.opacity = opacity;
		el.style.MozOpacity = opacity;
		el.style.filter = "alpha(opacity=" + (opacity*100) + ")";
	}
	
	function getOpacity( el )
	{
		var opacity;
		if( (opacity = el.style.opacity) != null )
			return opacity * 100;
		if( (opacity = el.style.MozOpacity) != null )
			return opacity * 100;
	
		return 100;
	}
	
	function startFading()
	{
		var el = document.getElementById('ChangingImage').childNodes[nextImage];
		fadeing = true;
		if( el.style.visibility == 'visible' )
			return;
		el.style.visibility = 'visible';
		el.style.zIndex = 2;
		var opacity = getOpacity( el );
		if( opacity >= 100 )
			setOpacity( el, opacity = 0 );
		fadeImage( el, opacity );
		
		//nextImage = (nextImage < images.length-1) ? nextImage + 1 : 0;
	}
	
	function fadeImage(el, currentOpacity)
	{
		currentOpacity += 10;
		
		if (currentOpacity > 100 || !fadeing )
		{
			setOpacity(el, 100);
			//var prevEl = el.previousSibling ? el.previousSibling : el.parentNode.lastChild;
			if( el != previousEl )
			{
				previousEl.style.visibility = 'hidden';
				el.style.zIndex = 1;
			}
			//window.setTimeout(startFading, imageTimeout);
			fadeing = false;
			previousEl = el;
		}
		else
		{
			setOpacity(el, currentOpacity);
			window.setTimeout(function() { fadeImage(el, currentOpacity); }, 50);
		}
	}
	
	function switchImagePart2()
	{
		if( fadeing ) // should never happen
		{
			fadeing = false;
			window.setTimeout( switchImagePart2, imageTimeout + 1 );
		}
		startFading();
	}
	
	function fadeAll()
	{
		window.setTimeout( function(){previousEl.style.visibility = 'hidden' }, imageTimeout + 20 );
	}
	
	/* Call on page load*/
	(function preloadImages()
	{
		var el = document.getElementById('ChangingImage');
		while (el.firstChild)
		{
			if( el.firstChild.nodeName == "IMG" )
			{
				imageHeight = el.firstChild.height;
				imageWidth = el.firstChild.width;
			}
			el.removeChild(el.firstChild);
		}
		
		el.style.width = imageWidth + "px";
		el.style.height = imageHeight + "px";
		
		for( var i = 0; i < images.length; ++i )
		{
			//images[i] = location + "/image" + (i + 1) + ".jpg";
			var t = document.createElement('IMG');
			t.setAttribute('src',images[i]);
			t.setAttribute('width',imageWidth);
			t.setAttribute('height',imageHeight);
			t.style.position = 'absolute';
			t.style.visibility = 'hidden';
			el.appendChild(t);	
		}
		
		//el.firstChild.style.visibility = 'visible';
		previousEl = el.firstChild;
		
		//window.setTimeout(startFading, imageTimeout);
	})();
	
	return function switchImage( imageNumber )
	{
		nextImage = imageNumber;
		if( fadeing )
		{
			fadeing = false;
			window.setTimeout( switchImagePart2, imageTimeout + 10 );
		}
		else
		{
			startFading();
		}
	}
}
