var objImageFade =
{
	ndNavigation: null,
	aNavigation: [],

	bFading: false,
	nTimeout: null,
	bAutomatic: true,
	nForceNextImage: null,

	ndMainImage: null,
	aMainImage: [],

	nCurrentImage: null,
	nNextImage: null,
	nDefaultRate: nDuration,

	Load: function()
	{
		var nIndex;
		objImageFade.ndNavigation = document.getElementById('imagenavigation');
		if (objImageFade.ndNavigation)
		{
			objImageFade.ndNavigation.style.display = 'block';

			var aChildren = objImageFade.ndNavigation.childNodes;
			for (nIndex = 0; aChildren[nIndex]; ++nIndex)
			{
				if (aChildren[nIndex].nodeName == '#text') continue;
				objImageFade.aNavigation[objImageFade.aNavigation.length] = aChildren[nIndex];
			}
		}

		objImageFade.ndMainImage = document.getElementById('mainImage');
		if (objImageFade.ndMainImage)
		{
			var nImage, aChildren = objImageFade.ndMainImage.childNodes;
			for (nIndex = 0; aChildren[nIndex]; ++nIndex)
			{
				if ((aChildren[nIndex].nodeName == '#text') || (aChildren[nIndex].id == 'imagenavigation')) continue;

				nImage = objImageFade.aMainImage.length;
				objImageFade.aMainImage[nImage] = aChildren[nIndex];

				objImageFade.aMainImage[nImage].ndNavigation = objImageFade.aNavigation[nImage];
				objImageFade.aNavigation[nImage].onclick = objImageFade.ForceNextImage;
				objImageFade.aNavigation[nImage].nImage = nImage;
			}
		}

		if (objImageFade.aMainImage.length > 1) objImageFade.SwitchImages();

		return true;
	},

	ForceNextImage: function(e)
	{
		if (objImageFade.bFading) return false;

		e = e || window.event;
		var ndNode = e.target || e.srcElement;
		if (ndNode.nodeName.toLowerCase() == 'a') ndNode = ndNode.parentNode;

		if (objImageFade.nTimeout)
		{
			clearTimeout(objImageFade.nTimeout);
			objImageFade.nTimeout = null;
		}

		objImageFade.bAutomatic = false;

		objImageFade.nForceNextImage = ndNode.nImage;
		objImageFade.InitImageOrder();
		objImageFade.InitImages();
		objImageFade.FadeMainImages();

		return false;
	},

	InitImageOrder: function()
	{
		if (objImageFade.nForceNextImage !== null)
		{
			objImageFade.nNextImage = objImageFade.nForceNextImage;
			objImageFade.nForceNextImage = null;
		}
		else
		{
			objImageFade.nCurrentImage = (objImageFade.nNextImage === null) ? 0 : objImageFade.nNextImage;
			objImageFade.nNextImage = (objImageFade.nCurrentImage == (objImageFade.aMainImage.length - 1)) ? 0 : objImageFade.nCurrentImage + 1;
		}

		return true;
	},

	InitImages: function()
	{
		for (var nIndex = 0; nIndex < objImageFade.aMainImage.length; ++nIndex)
		{
			objImageFade.aMainImage[nIndex].style.position = 'absolute';
			objImageFade.aMainImage[nIndex].style.display = 'none';
			objImageFade.aMainImage[nIndex].ndNavigation.className = '';
		}

		objImageFade.aMainImage[objImageFade.nCurrentImage].style.opacity = 1;
		objImageFade.aMainImage[objImageFade.nCurrentImage].style.position = 'relative';
		objImageFade.aMainImage[objImageFade.nCurrentImage].style.filter = 'alpha(opacity = 100)';
		objImageFade.aMainImage[objImageFade.nCurrentImage].style.display = 'block';
		objImageFade.aMainImage[objImageFade.nCurrentImage].style.zIndex = 2;
		objImageFade.aMainImage[objImageFade.nCurrentImage].ndNavigation.className = 'active';

		objImageFade.aMainImage[objImageFade.nNextImage].style.opacity = 1;
		objImageFade.aMainImage[objImageFade.nNextImage].style.filter = 'alpha(opacity = 100)';
		objImageFade.aMainImage[objImageFade.nNextImage].style.display = 'block';
		objImageFade.aMainImage[objImageFade.nNextImage].style.zIndex = 1;

		return true;
	},

	SwitchImages: function()
	{
		objImageFade.InitImageOrder();
		objImageFade.InitImages();
		if (objImageFade.bAutomatic) objImageFade.nTimeout = setTimeout('objImageFade.FadeMainImages()', objImageFade.nDefaultRate);

		return true;
	},

	FadeMainImages: function()
	{
		objImageFade.bFading = true;

		if (objImageFade.nCurrentImage == objImageFade.nNextImage)
		{
			objImageFade.bFading = false;
			return objImageFade.SwitchImages();
		}

		var nOpacity = objImageFade.aMainImage[objImageFade.nCurrentImage].style.opacity - .03;
		if (nOpacity <= 0)
		{
			objImageFade.bFading = false;
			return objImageFade.bAutomatic ? objImageFade.SwitchImages() : objImageFade.SwitchImages();
		}

		objImageFade.aMainImage[objImageFade.nCurrentImage].style.opacity = nOpacity;
		objImageFade.aMainImage[objImageFade.nCurrentImage].style.filter = 'alpha(opacity = ' + (nOpacity * 100) + ')';

		setTimeout('objImageFade.FadeMainImages()', 20);

		return true;
	}
};

window.onload = objImageFade.Load;