nereidFadeObjects = new Object();
	nereidFadeTimers = new Object();
	
	function nereidFade(object, destOp, rate, delta){
	if (!document.all)//se for diferente de qualquer elemento ele retorna
	return
	    if (object != "[object]"){  // Acho que faz isso so pra poder funcionar com strings tb//do this so I can take a string too
	        setTimeout("nereidFade("+object+","+destOp+","+rate+","+delta+")",0);
	        return;
	    }
			        
	    clearTimeout(nereidFadeTimers[object.sourceIndex]);
			    
	    diff = destOp-object.filters.alpha.opacity;//destOp=opacidade de destino
	    direction = 1;				//diff o quanto ele vai modificar
	    if (object.filters.alpha.opacity > destOp){
	        direction = -1;
	    }
	    delta=Math.min(direction*diff,delta);//delta o minimo entre direcao*diferenca e o delta...
	    object.filters.alpha.opacity+=direction*delta;
	
	    if (object.filters.alpha.opacity != destOp){
	        nereidFadeObjects[object.sourceIndex]=object;//utiliza recursividade 
        nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
	    }
	}
