

	// the id of the slideshow container element
	var slideshowContainerId = 'slideshow';
	// the tagname of the elements to slide
	var slideshowItemsTagName = 'a';
	// the time to display a slide, in miliseconds
	var slideshowSpeed = 6500;

	// start onload
	window.addEventListener ? window.addEventListener("load", initializeSlideshow, false) : window.attachEvent("onload", initializeSlideshow);


	// prepare fade swap partner
	function initializeSlideshow()
	{
		var
			slideshowContainer = document.getElementById(slideshowContainerId),
			slideshowItem, slideshowItems = ((preloadImages = (window.slideshowItems && window.slideshowItems.length > 0)) ? window.slideshowItems : slideshowContainer.getElementsByTagName(slideshowItemsTagName)),
			slideshowItemsCount = slideshowItems.length - 1,
			centerer, image, tempNode;

		// preload and inject images
		if (preloadImages)
		{
			for (var i = 0; slideshowItem = slideshowItems[i]; i++)
			{
				centerer = document.createElement('table');
				centerer.insertRow(0);
				centerer.getElementsByTagName('tr')[0].insertCell(0);
				centerer.setAttribute('cellspacing', 0);
				centerer.setAttribute('cellpadding', 0);
				centerer.style.width = '100%';
				centerer.style.height = slideshowContainer.offsetHeight + 'px';
				centerer.style.position = 'absolute';
				centerer.getElementsByTagName('td')[0].style.textAlign = 'center';
				centerer.getElementsByTagName('td')[0].style.verticalAlign = 'middle';
				setOpacity(centerer, 0);

				image = document.createElement('img');
				image.src = slideshowItem;
				image.style.margin = 'auto';

				centerer.getElementsByTagName('td')[0].appendChild(image);
				slideshowItems[i] = slideshowContainer.appendChild(centerer);
			}
		}
		// make sure the items are hidden
		else
		{
			for (var i = 0; slideshowItem = slideshowItems[i]; i++)
			{
				setOpacity(slideshowItem, 0);
				slideshowItem.style.display = 'none';
			}
		}

		// display first image
		slideshowContainer.currentSlide = 0;
		setOpacity(slideshowItems[0], 1);
		slideshowItems[0].style.display = 'block';

		// start the slideshow
		setInterval((function (slideshowContainer, slideshowItems) {
			return function()
			{
				var previousSlide = slideshowContainer.currentSlide;
				slideshowContainer.currentSlide++;
				if (slideshowContainer.currentSlide == slideshowItems.length) slideshowContainer.currentSlide = 0;

				slideshowItems[slideshowContainer.currentSlide].style.display = 'block';

				fadeSlide(slideshowItems[previousSlide], slideshowItems[slideshowContainer.currentSlide], 1);
			}
		})(slideshowContainer, slideshowItems), window.slideshowSpeed);
	}


	// fade one element into another
	function fadeSlide(elementFrom, elementTo, fadeValue)
	{
		setOpacity(elementFrom, fadeValue - 0.05);
		setOpacity(elementTo, 1 - fadeValue);

		if (fadeValue >= 0)
		{
			setTimeout((function (elementFrom, elementTo, fadeValue) {
				return function()
				{
					fadeSlide(elementFrom, elementTo, fadeValue);
				}
			})(elementFrom, elementTo, fadeValue - 0.05), 50);
		}
		else
		{
			isFading = false;
			elementFrom.style.display = 'none';
		}
	}


	// set opacity of an element
	function setOpacity(element, opacity)
	{
		element.style.opacity = opacity;
		element.style.MozOpacity = opacity;
		element.style.filter = "alpha(opacity=" + (opacity * 100) + ")";
	}

