var texts = new Array(
"<font size='0' color='{COLOR}' face='Verdana'>BATMAN, BLUE ONE, TWO SHIP, HEADING 110 CLIMBING</font>",
"<font size='0' color='{COLOR}' face='Courier'>BLUE ONE, BATMAN, ROGER, MISSION INTERCEPT FOR IDENTIFICATION</font>",
"<font size='0' color='{COLOR}' face='Courier'>SNAP RIGHT VECTOR 170, CLIMB FL 370.</font>",
"<font size='0' color='{COLOR}' face='Courier'>BLUE ONE ROGER, VECTOR 170 LEVEL 370</font>",
"<font size='0' color='{COLOR}' face='Courier'>BLUE ONE, BOGEY BEARING 030, 60 MILES, ANGELS 39, SOUTHBOUND, GROUND SPEED MACH .9</i></font>",
"<font size='0' color='{COLOR}' face='Courier'>BLUE ONE ROGER, ON THE VECTOR</font>",
"<font size='0' color='{COLOR}' face='Courier'>... TBC ...</font>"
);

var bgcolor = "#000099"; // background color, must be valid browserhex color (not color names)
var fcolor="#FFFFFF";  // foreground or font color
var steps = 30; // number of steps to fade
var show = 3000; // milliseconds to display message
var sleep = 2000; // milliseconds to pause inbetween messages
var loop = true; // true = continue to display messages, false = stop at last message
var colors = new Array(steps);
getFadeColors(bgcolor,fcolor,colors);
var color = 0;
var text = 0;
var step = 1;
function fade() { // insert fader color into message
var text_out = texts[text].replace("{COLOR}", colors[color]); // texts should be defined in user script, e.g.: var texts = new Array("<font color='{COLOR}' sized='+3' face='Arial'>howdy</font>");
// actually write message to document
if (document.all) fader.innerHTML = text_out; // document.all = IE only
if (document.layers) { document.fader.document.write(text_out);
document.fader.document.close(); } // document.layers = Netscape only
// select next fader color
color += step; 
// completely faded in?
if (color >= colors.length-1) {
step = -1; // traverse colors array backward to fade out
// stop at last message if loop=false
if (!loop && text >= texts.length-1) return; // loop should be defined in user script, e.g.: var loop=true;
}

// completely faded out?
if (color == 0) {
step = 1;
text += 1;
if (text == texts.length) text = 0; // loop back to first message
}
setTimeout("fade()", (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 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; // make sure we finish exactly at 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);
}
