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);
  }
}

