/**
 * @version		1.0.1 - 18 juli 2008
 * 
 *
 * @copyright	1.0.1,	18 juli 2008,		Jan Niemantsverdriet,	Geoptimaliseerd voor snelheid
 * @copyright	1.0.0,	17 juli 2008,		Rob Ruigrok,			Gemaakt
 * 
 * @copyright	afhankelijkheid:	BB/JSDivers/DOM.js, BB/JSDivers/check.js
 */


/**
 * Fade een object slechts van zichtbaar naar onzichtbaar. 
 * 
 * @param string a_sId							het id van het object
 * @param integer a_iMilliSec					het aantal milliseconden die de fade moet duren
 * @param integer|void a_iSteps					het aantal stappen waarin plaatje gefaded wordt
 * @param integer|void a_fadeToOpacity			de opacity die het uiteindelijk moet worden
 * @param integer|void a_fadeFromOpacity		de opacity waarop begonnen wordt. 
 */
function vFade(a_sId, a_iMilliSec, a_iSteps, a_iFadeToOpacity, a_iFadeFromOpacity) {
	if (!bIsDefined(a_iFadeFromOpacity)) a_iFadeFromOpacity = iGetOpacity(a_sId);
	if (!bIsDefined(a_iFadeToOpacity)) a_iFadeToOpacity = 100;
	if (!bIsDefined(a_iSteps)) a_iSteps = (Math.abs(a_iFadeToOpacity - a_iFadeFromOpacity));
	if (a_iSteps == 0) return;
	if (a_iSteps > (a_iMilliSec / 5)) a_iSteps = a_iMilliSec / 5;
	
	var iStepTime = Math.round(a_iMilliSec / a_iSteps);
	if (iStepTime < 50) {
		a_iSteps *= (iStepTime / 50);
		iStepTime = 50;
	}
	var iStepSize = Math.round((a_iFadeToOpacity - a_iFadeFromOpacity) / a_iSteps);
	var iTimer = 0;

	vPerformFade(a_sId, a_iFadeFromOpacity, iStepSize, iStepTime, a_iSteps);
}

/**
 * Recursieve functie om een afbeelding in te laten faden
 * 
 * @param string a_sId					het id van de afbeelding
 * @param integer a_iOpac				de huidige opacity waarde
 * @param integer a_iStepSize			de verandering in de opacity
 * @param integer a_iStepTime			het aantal miliseconden tot de volgende verandering
 * @param integer a_iTimes				Het aantal keer dat de wijziging nog doorgevoerd moet worden
 */
function vPerformFade(a_sId, a_iOpac, a_iStepSize, a_iStepTime, a_iTimes) {
	vChangeOpac(a_iOpac, a_sId);
	if (a_iTimes <= 0) return;
	setTimeout("vPerformFade('" + a_sId + "'," + (a_iOpac + a_iStepSize) + "," + a_iStepSize + "," + a_iStepTime + "," + (a_iTimes - 1) + ")", a_iStepTime);
}	