// Functions to contol the fading of images
// The code that includes this file must define and se the variable fadeTargetId

var	fadeTarget;
var preInitTimer;
var fadeTimer;

fadeSetup();

function fadeSetup()
{
	if ((document.getElementById) &&
		(fadeTarget=document.getElementById(fadeTargetId)))
	{
		fadeTarget.style.visibility = "hidden";
		
		if (typeof preInitTimer != 'undefined')
		{
			window.clearTimeout(preInitTimer);
		}
	}
	else {
		preInitTimer = window.setTimeout("fadeSetup()",2);
	}
}

function fadeInit()
{
	if (document.getElementById)
	{
		/* get a handle on the fadeable object, to make code later more manageable */
		fadeSetup(); // shouldn't be necessary, but IE can sometimes get ahead of itself and trigger fadeInit first
		
		/* set the initial opacity in a (hopefully) cross browser way
		   notice that because of the way the image is in front, and not obfuscated
		   by another object we need to "fade out", i don't need a fallback mechanism
		   to show/hide the covering object...the image is just there, full stop */
		
		if (fadeTarget.style.MozOpacity!=null)
		{  
			// Mozilla's pre-CSS3 proprietary rule
			fadeTarget.style.MozOpacity = 0;
		}
		else if (fadeTarget.style.opacity!=null)
		{
			// CSS3 compatible
			fadeTarget.style.opacity = 0;
		}
		else if (fadeTarget.style.filter!=null)
		{
			// IE's proprietary filter
			fadeTarget.style.filter = "alpha(opacity=0)";
		}
		
		// make the object visible again
		fadeTarget.style.visibility = 'visible';
		fadeTimer = window.setTimeout("fadeIn(0)", 300);
	}
}

function fadeIn(opacity)
{
	if (fadeTarget)
	{
		if (opacity <= 100)
		{
			if (fadeTarget.style.MozOpacity!=null)
			{
				/* Mozilla's pre-CSS3 proprietary rule */
				fadeTarget.style.MozOpacity = (opacity/100)-.001;
				/* the .001 fixes a glitch in the opacity calculation which normally results in a flash when reaching 1 */
			}
			else if (fadeTarget.style.opacity!=null)
			{
				/* CSS3 compatible */
				fadeTarget.style.opacity = (opacity/100)-.001;
			}
			else if (fadeTarget.style.filter!=null)
			{
				/* IE's proprietary filter */
				fadeTarget.style.filter = "alpha(opacity="+opacity+")";
				/* worth noting: IE's opacity needs values in a range of 0-100, not 0.0 - 1.0 */ 
			}
			opacity += 10;
			fadeTimer = window.setTimeout("fadeIn("+opacity+")", 30);
		}
		else
		{
			if (fadeTarget.style.MozOpacity!=null)
			{
				fadeTarget.style.MozOpacity = 1;
			}
			else if (fadeTarget.style.opacity!=null)
			{
				fadeTarget.style.opacity = 1;
			}
			else if (fadeTarget.style.filter!=null)
			{
				fadeTarget.style.filter = 100;
			}
		}
	}
}

function fadeCancel()
{
	window.clearTimeout(fadeTimer);
}

