var ie = document.all;

var fadeInterval = new Array();
var fadeStartValue = 1;
var fadeStopValue = 0;
var fadeStepDelay = 50;
var defaultFadeStep = 0.2;
var ieFadeCoef = 100;

function fadeStepFct(elementId, pFadeStep, fadeIntervalIndex, callbackFct, fadeStep)
{
	opacity = getOpacity(elementId);
	if (isNaN(opacity))
		opacity = fadeStartValue;
	opacity += pFadeStep;
	setOpacity(elementId, opacity);
	opacity = getOpacity(elementId);
	if ((pFadeStep < 0 && opacity <= fadeStopValue) ||
		(pFadeStep > 0 && opacity >= fadeStopValue) ||
		(pFadeStep == 0))
	{
		clearInterval(fadeInterval[fadeIntervalIndex]);
		eval(callbackFct);
	}
}

function fade(elementId, pFadeStopValue, callbackFct, fadeStep, fadeIntervalIndex)
{
	if (fadeStep == null || fadeStep <= 0)
		fadeStep = defaultFadeStep;
	if (fadeIntervalIndex == null || fadeStep < 0)
		fadeIntervalIndex = 0;

	clearInterval(fadeInterval[fadeIntervalIndex]);
	fadeStopValue = pFadeStopValue;
	opacity = getOpacity(elementId);
	if (isNaN(opacity))
		opacity = fadeStartValue;
	pFadeStep = Math.abs(fadeStep);
	if (opacity > fadeStopValue)
		pFadeStep = -pFadeStep;
	fadeInterval[fadeIntervalIndex] = setInterval('fadeStepFct("'+elementId+'", '+pFadeStep+', ' + fadeIntervalIndex + ', "'+callbackFct+'")', fadeStepDelay)
}

function getOpacity(element)
{
	if (ie)
	{
		return parseFloat(document.getElementById(element).filters[0].opacity) / ieFadeCoef;
	}
	else
		return parseFloat(document.getElementById(element).style.opacity);
}
function setOpacity(element, opacity)
{
	if (ie)
	{
		document.getElementById(element).filters[0].opacity = opacity * ieFadeCoef;
	}
	else
		document.getElementById(element).style.opacity = opacity;
}

function trim(str) 
{
    return str.replace(/^\s+/, '').replace(/\s+$/, '');
}
