var fadeObjectsCollection = [];
function fadeIt() {
	var fadeObject;
	if (arguments.length > 0) { 
		//being called for the 1st time... init everthing and start!
		var elem         = ((arguments[0])?document.getElementById(arguments[0]):false);
		var elemName     = arguments[0];
		var startOpacity = arguments[1]
		var endOpacity   = arguments[2];
		var ttlTime      = arguments[3];
		if (elem) {
			//steps by 100 ms...
			var fadeStep = new Number( (((endOpacity-startOpacity)*100)/(ttlTime*1000)).toFixed(2) );
			var ttlSteps = parseInt((ttlTime*1000)/100);
			//create the fadeObject and stuff it into the global collection to be referenced later by the interval...
			fadeObject = {};
			fadeObject.elem = elem;
			fadeObject.elemName = elemName;
			fadeObject.curOpacity = startOpacity;
			fadeObject.endOpacity = endOpacity;
			fadeObject.curStep = 0;
			fadeObject.ttlSteps = ttlSteps;
			fadeObject.fadeStep = fadeStep;
			fadeObject.isFading = true;
			fadeObjectsCollection[elemName] = fadeObject;
		}			
	} else {
		for (var key in fadeObjectsCollection) {
			if (fadeObjectsCollection[key].isFading) {
				fadeObject = fadeObjectsCollection[key];
				break;
			}
		}
	}
	var curOpacity = (fadeObject.curOpacity+fadeObject.fadeStep).toFixed(2);
	if (fadeObject.curStep == fadeObject.ttlSteps) {
		curOpacity = fadeObject.endOpacity;
		window.clearInterval(intervals[fadeObject.elemName]);
		intervals[fadeObject.elemName] = null;
	}
	fadeObject.curStep++;
	if (fadeObject.elem.filters) {
		try {
			//fadeObject.elem.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+parseInt(curOpacity*100).toString()+")";
			fadeObject.elem.style.filter = "alpha(opacity="+parseInt(curOpacity*100).toString()+")";
		} catch(ex) {
			//fadeObject.elem.filters[fadeObject.elem.filters.length] = "progid:DXImageTransform.Microsoft.Alpha(opacity="+parseInt(curOpacity*100).toString()+")";
			fadeObject.elem.filters[fadeObject.elem.filters.length] = "alpha(opacity="+parseInt(curOpacity*100).toString()+")";
		}
	} else {
		fadeObject.elem.style.opacity = curOpacity;
	}
	if (fadeObject.curStep == 1) {
		intervals[fadeObject.elemName] = window.setInterval("fadeIt()", 100);
	}
}
