
var colors = new Array(steps);
getFadeColors(bgcolor,fcolor,colors);
var color = 0;
var text = 0;
var step = 1;

function textfade()
{
	var text_out = pre.replace("{COLOR}", colors[color]) + texts[text] + post; // texts should be defined in user script, e.g.: var texts = new Array("<font color='{COLOR}' sized='+3' face='Arial'>howdy</font>");

   	htmlWrite(text_out, "textfader");
	
	color += step; 
	
	if (color >= colors.length-1) 
	{ 
		step = -1; 
		
		if (!loop && text >= texts.length-1) return; 
	}
	
	if (color == 0)
	{
		step = 1;
		
		text += 1;
		if (text == texts.length) text = 0;
	}
	
		setTimeout("textfade()", (color == colors.length-2 && step == -1) ? show : ((color == 1 && step == 1) ? sleep : 50)); // sleep and show should be defined in user script, e.g.: var sleep=30; var show=500;
}

function htmlWrite(html,id)
{
	var obj;
	if (document.getElementById)
	{
		obj = document.getElementById(id);
		obj.innerHTML = html;
	}
	else if (document.all)
	{
		obj = document.all[id];
		obj.innerHTML = html;
	}
	else if (document.layers)
	{
		obj = document.layers[id];
		obj.document.open();
		obj.document.write(html);
		obj.document.close();
	}
}

function getFadeColors(ColorA, ColorB, Colors)
{
	len = Colors.length; 
	
	if (ColorA.charAt(0)=='#') ColorA = ColorA.substring(1);
	if (ColorB.charAt(0)=='#') ColorB = ColorB.substring(1);

	var r = HexToInt(ColorA.substring(0,2));
	var g = HexToInt(ColorA.substring(2,4));
	var b = HexToInt(ColorA.substring(4,6));
	var r2 = HexToInt(ColorB.substring(0,2));
	var g2 = HexToInt(ColorB.substring(2,4));
	var b2 = HexToInt(ColorB.substring(4,6));

	var rStep = Math.round((r2 - r) / len);
	var gStep = Math.round((g2 - g) / len);
	var bStep = Math.round((b2 - b) / len);
	
	for (i = 0; i < len-1; i++)
	{
		Colors[i] = "#" + IntToHex(r) + IntToHex(g) + IntToHex(b);
		r += rStep;
		g += gStep;
		b += bStep;
	}
	Colors[len-1] = "#" + ColorB;
}

function IntToHex(n) 
{
	var result = n.toString(16);
	if (result.length==1) result = "0"+result;
	return result;
}

function HexToInt(hex) 
{
	return parseInt(hex, 16); 
}

