///////////////////////
// Fade Control script
// AliveStudio.com
// v1.0 July 2007

var aAction = new Array();
var aQueue = new Array();

function fadeOut(id) {
	fFadeInit(id, 100, 0, 5);
}

function fadeIn(id) {
	fFadeInit(id, 0, 100, 10);
}

function fadeBlink(id) {
	fFadeInit(id, 100, 0, 1);
	fFadeInit(id, 0, 100, 10);
}

function fFadeInit(iID, iFrom, iTo, iSteps) {
	if (aAction[iID] >0) {
	// ID is in action - queue the command
		aQueue[iID] = new Array(iID, iFrom, iTo, iSteps);
	} else {
		aAction[iID] = setInterval("fFade('" + iID + "', 0, " + (iFrom - iTo) / iSteps + ", " + iSteps + ")", 20);
	}
}

function fFade(iID, iCurrent, iIncrement, iSteps) {
	if (iCurrent == iSteps) {
	// action done - reset
		clearInterval(aAction[iID]);
		aAction[iID] = 0;
		if (aQueue[iID] && aQueue[iID] != false) {
		// queue is not empty - use it now 
			fFadeInit(aQueue[iID][0], aQueue[iID][1], aQueue[iID][2], aQueue[iID][3]);
			aQueue[iID] = false;
		}
	} else {
		iCurrent++;
		if (iIncrement < 0) {
		// fade in
			fOpacity(iID, Math.abs(iCurrent * iIncrement));
		} else {
		// fade out
			fOpacity(iID, 100 - (iCurrent * iIncrement));
		};
		// do the next step
		clearInterval(aAction[iID]);
		aAction[iID] = setInterval("fFade('" + iID + "', " + iCurrent + ", " + iIncrement + ", " + iSteps + ")", 20);
	}
}

function fOpacity(iID, iOpacity) {
	var obj = document.getElementById(iID).style;
	obj.filter = "alpha(opacity=" + iOpacity + ")";
	obj.opacity = (iOpacity / 100);
}
