fadeObjects = new Object();
fadeTimers = new Object();
fadeLevels = new Array();

/* object - image to be faded (actual object, not name);
 * destop - destination transparency level (ie 80, for mostly solid)
 * rate   - time in milliseconds between trasparency changes (best under 100)
 * delta  - amount of change each time (ie 5, for 5% change in transparency)
 */

function fade(object, destOp, rate, delta,id)
{
	if(!document.all && !object.style.MozOpacity)
		return;
 	clearTimeout(fadeTimers[id]);
	/*if (object != "[object]"){  //do this so I can take a string too
		setTimeout("fade("+object+","+destOp+","+rate+","+delta+","+id+")",0);
		return;
	}*/
	if(!fadeLevels[id])
	{
		if(object.style.MozOpacity)
		{
			object.style.MozOpacity=destOp/100;
			return;
		}
		else if(object.filters.alpha.opacity)
			fadeLevels[id]=object.filters.alpha.opacity;
	}
	diff = destOp-fadeLevels[id];
	direction = 1;
	if (fadeLevels[id] > destOp){
		direction = -1;
	}
	delta=Math.min(direction*diff,delta);

	fadeLevels[id]=fadeLevels[id]+(direction*delta);

	if(object.style.MozOpacity)
		object.style.MozOpacity=fadeLevels[id]/100;
	else if(object.filters.alpha.opacity)
		object.filters.alpha.opacity=fadeLevels[id];

	if (fadeLevels[id] != destOp){
		fadeObjects[id]=object;
		fadeTimers[id]=setTimeout("fade(fadeObjects["+id+"],"+destOp+","+rate+","+delta+","+id+")",rate);
	}
}
