fadeObjects = new Object(); 
fadeTimers = new Object();

function fade(object, destOp, rate, delta)
{
	if(!document.all) return;

	if(object != "[object]")
	{
		setTimeout("fade(" + object + "," + destOp + "," + rate + "," + delta + ")", 0);
		return;
	}

	clearTimeout(fadeTimers[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)
	{
		fadeObjects[object.sourceIndex]	= object;
		fadeTimers[object.sourceIndex]	= setTimeout("fade(fadeObjects[" + object.sourceIndex + "]," + destOp + "," + rate + "," + delta + ")", rate);
	}
}
