function Fader(aHost,aOffset,aFadeTimeout,aTransitionTimeout,aContent)
{
	this.host       = aHost;
	this.host.fader = this;
	this.offset     = aOffset;
	this.current    = 0;
	this.timeout    = { fader:aFadeTimeout, transition:aTransitionTimeout };
	this.content    = aContent;
	this.host.innerHTML = this.content[this.current];
}

Fader.prototype.getMaxColor = function(aObject)
{
	var
	  lCount,
	  lMax = 0,
	  lTemp;
	  
	if(aObject)
	{
		if (aObject.children.length!=0)
		{
			for(lCount=0;lCount<aObject.children.length;lCount++) 
			{ 
				lTemp = parseInt(this.getMaxColor(aObject.children[lCount]).substr(1,6),16);
				lMax = (lTemp>lMax)?lTemp:lMax;
			}
		}

		lTemp = 0;
		if(aObject.style.color!='') { lTemp = parseInt(aObject.style.color.substr(1,6),16); }
		else
		{
			if(aObject.className!='') { lTemp = parseInt(aObject.currentStyle.color.substr(1,6),16); }
		}
		lMax = (lTemp>lMax)?lTemp:lMax;
	}
	
	return '#'+lMax.toString(16);
}

Fader.prototype.fadeColor = function(aColor)
{
	var
		lTemp = aColor.charAt(0)!='#'?'#'+aColor:aColor,
		lCount,
		lColor,
		lResult='#';
	
	for (lCount=1;lCount<6;lCount+=2)
	{
		lColor=new Number(parseInt(lTemp.substr(lCount,2),16));
		lColor+=(lColor+this.offset)>=0?((lColor+this.offset)<=255?this.offset:255-lColor):0;
		lResult += lColor.toString(16);
	}

	return lResult;
}

Fader.prototype.fadeObject = function(aObject)
{
	var
		lCount;

	if(aObject.children.length!=0)
	{
		for(lCount=0;lCount<aObject.children.length;lCount++) { this.fadeObject(aObject.children(lCount)); }
	}
	if(aObject)
	{
		if(aObject.style.color!='') { aObject.style.color = this.fadeColor(aObject.style.color); }
		else
		{
			if(aObject.className!='') { aObject.style.color = this.fadeColor(aObject.currentStyle.color); }
		}
	}
}

Fader.prototype.callback = function()
{
	var lMax;

	this.fadeObject(this.host);	
	lMax = this.getMaxColor(this.host);

	if(lMax.toUpperCase()!='#FFFFFF') { setTimeout('document.getElementById(\''+this.host.id+'\').fader.callback()',this.timeout.fader); }
	else
	{
		this.current=(this.current<this.content.length-1)?this.current+1:0;
		this.host.innerHTML = this.content[this.current];
		setTimeout('document.getElementById(\''+this.host.id+'\').fader.callback()',this.timeout.transition);
	}
}

Fader.prototype.run = function()
{
	this.host.innerHTML = this.content[this.current];
	setTimeout('document.getElementById(\''+this.host.id+'\').fader.callback()',this.timeout.transition);
}