myFadeObjects = new Object();
myFadeTimers = new Object();
function myFade(object, destOp, rate, delta){
if (!document.all)
return
if (object != "[object]"){ //do this so I can take a string too
setTimeout("myFade("+object+","+destOp+","+rate+","+delta+")",0);
return;
}

clearTimeout(myFadeTimers[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){
myFadeObjects[object.sourceIndex]=object;
myFadeTimers[object.sourceIndex]=setTimeout("myFade(myFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
}
}