nereidFadeObjects = new Object();
nereidFadeTimers = new Object();
window.onload=function() {
	var e=document.getElementsByTagName('*')
	for (var i=0,l=e.length;i<l;i++) e[i].sourceIndex=i
}
function nereidFade(object, destOp, rate, delta){
		if (!document.all && !document.getElementsByTagName('*'))
		return
		if (object.toString().indexOf("object") == -1){
			setTimeout("nereidFade("+object+","+destOp+","+rate+","+delta+")",0);
			return;
		}
			try
			{
				//Internet Explorer
				clearTimeout(nereidFadeTimers[object.sourceIndex]);
			diff = destOp-object.filters.alpha.opacity;
			direction = 1;
			if (object.filters.alpha.opacity > destOp){
				direction = -1;
			}
			delta=Math.min(direction*diff,delta);

			object.filters.alpha.opacity+=direction*delta;
			if (object.filters.alpha.opacity != destOp)
			{
							nereidFadeObjects[object.sourceIndex]=object;nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
	        }
		}
		catch(e)
		{
				//FireFox
	 			if(destOp>1)
				{
					destOp/=100;
				}
				if(delta>1)
				{
					delta/=100;
				}
				var currOpacity = parseFloat(object.style.MozOpacity);
				clearTimeout(nereidFadeTimers[object.sourceIndex]);
	        diff = destOp-currOpacity;
	        direction = 1;
	        if (currOpacity > destOp){
	                direction = -1;
	        }
	        delta=Math.min(direction*diff,delta);
			
	 			object.style.MozOpacity=currOpacity+direction*delta;
				if (object.style.MozOpacity != destOp)
				{
					nereidFadeObjects[object.sourceIndex]=object;nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
				}
		}
}