// Dynamic Text Fader (1.20)
// Script created by Nicholas Poh Tze Siang aka Programatix Copyright (c) 1999-2000
// (hwinmain@yahoo.com)
//Modified and Featured on http://www.dynamicdrive.com


// Create a hex convertor array (Dex2Hex[])
var hexbase= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
var value=0;
var Dec2Hex=new Array();
for (x=0; x<16; x++){
	for (y=0; y<16; y++){
		Dec2Hex[value]= hexbase[x] + hexbase[y];
		value++;
	}
}

// Convert RGB colour to string base
function RGB2STR(rgbcolor)
{
	return Dec2Hex[rgbcolor>>16] + Dec2Hex[(rgbcolor>>8)&0xFF] + Dec2Hex[rgbcolor&0xFF];
}

// Check the following variables to see if they exist. If not use default value
if (String(TS_colorFG)=="undefined") var TS_colorFG = 0x0000FF;	// Text color
if (String(TS_colorBG)=="undefined") var TS_colorBG = 0xFFFFFF;	// Background color
if (String(TS_ymax)   =="undefined") var TS_ymax    = 100;		// How many pixel to move
if (String(TS_ystep)  =="undefined") var TS_ystep   = -1;		// 1 or -1 only (Scroll direction)
if (String(TS_speed)  =="undefined") var TS_speed   = 2;		// The smaller the faster
if (String(TS_pause)  =="undefined") var TS_pause   = 600;		// Pause time(milisecond) between messages
if (String(TS_fadestep)=="undefined") {
	var TS_fadestep = TS_ymax>>1;
} else {
	if (TS_fadestep > (TS_ymax>>1)) TS_fadestep = TS_ymax>>1;
}

// check if user defined messages exist
if (String(TS_message)=="undefined") {
	// use the default messages
	var TS_message = new Array();
	TS_message[0] = 'Dynamic Text Fader 1.20';
	TS_message[1] = 'Code by Nicholas Poh Tze Siang aka Programatix';
	TS_message[2] = 'You can insert any HTML tag into the messages';
	TS_message[3] = 'Code downloaded from <A HREF="http://dynamicdrive.com">dynamicdrive.com</A>';
}

var TS_ypos    = 0;
var TS_yposOrg = 0;
var TS_color   = TS_colorBG;
var TS_curMsg  = 0;

// Calculate the difference between background and foreground color
var half_TS_ymax = (TS_ymax)>>1

var dfRed   = -((TS_colorBG>>16) - (TS_colorFG>>16)) / TS_fadestep;
var dfGreen = -(((TS_colorBG>>8)&0xFF) - ((TS_colorFG>>8)&0xFF)) / TS_fadestep;
var dfBlue  = -((TS_colorBG&0xFF) - (TS_colorFG&0xFF)) / TS_fadestep;
var TS_opColor  = (dfRed<<16) + (dfGreen<<8) + (dfBlue);

var timer;
var TS;

function UnloadMe()
{
	clearTimeout(timer);
}

var isReadForNextText = 0;
var isChangeText = 0;

function ScrollText(currentstate)
{


	TS_ypos += TS_ystep;
	
	// Ready to change text?
	if (TS_ypos >= TS_ymax || TS_ypos <= 0)
		isChangeText = 1;
	else
		isChangeText = 0;

	// Need to set the timer first so that it will go smoothly
	if (isChangeText) {
		if (TS_pause < TS_speed)
			timer = setTimeout('ScrollText(0)', TS_speed);
		else
			timer = setTimeout('ScrollText(1)', TS_pause);
	} else
		timer = setTimeout('ScrollText(0)', TS_speed);

	// Change text
	if (isReadForNextText) {
		// For IE only
		TextScroll.innerHTML = TS_message[TS_curMsg];
		isReadForNextText = 0;
	}

	// Change the color of the text
	if (document.all) {
		// IE
		TS.paddingTop = TS_ypos;
		TS.color = TS_color;
	} else if (document.layers) {
		// Netscape
		TS.top = TS_ypos + TS_yposOrg;
		
		// Clip the text
		var calc = (TS.top-TS_yposOrg) + TS.document.height - 20
		if (calc > TS_ymax) {
			TS.clip.bottom=(TS.document.height) - (calc-TS_ymax);
		} else {
			TS.clip.bottom=TS.document.height;
		}

		// Display the text
		text  = '<SPAN CLASS="TextScrollStyle">' +
				'<FONT COLOR='+TS_colorFG+'>' +
				TS_message[TS_curMsg] +
				'</FONT></SPAN>';
		TS.backgroundColor = TS_colorBG;
		TS.backgroundColor = 'black';
             if (currentstate==1){
		TS.document.write(text);
		TS.document.close();
             }
	}
	if (TS_ypos < TS_fadestep || (TS_ymax - TS_ypos) < TS_fadestep) {
		TS_color += TS_opColor;
	}

	// Check to see if in the middle, if so, change colour direction
	if (TS_ypos == half_TS_ymax) TS_opColor *= -1;	
	
	// Prepare for next text please
	if (isChangeText) {
		TS_color = TS_colorBG;
		TS_opColor *= -1;

		if (TS_ystep > 0) {
			TS_ypos = 0;
		} else {
			TS_ypos = TS_ymax;
		}

		if (++TS_curMsg > TS_message.length-1) {
			TS_curMsg = 0;
		}

		// Change text
		if (document.all) {
			// IE
			TextScroll.innerHTML = " ";
			TS.paddingTop = TS_ypos;
			isReadForNextText = 1;
		} else if (document.layers) {
			TS.document.write('');
			TS.document.close();
			TS.top = TS_ypos + TS_yposOrg;
		}
	}
}

function startani(){
      if (document.layers)
      document.TextScroll.visibility="show"
      timer = setTimeout('ScrollText()', 3000)
}


function ScrollTextDisplay()
{
	var navName=navigator.appName;
	var navVer=parseInt(navigator.appVersion)
	var fNetscape = 0;
	
	if (! ((navName=="Netscape" && navVer>=4) || (navName=="Microsoft Internet Explorer" && navVer>=4)) ) {
		return;
	}
	if (navName=="Microsoft Internet Explorer") {
		TS_speed = 20 + TS_speed;
	} else if (navName=="Netscape") {
		fNetscape=1;
	}
	

	document.write('<ILAYER NAME="TextScroll" CLASS="TextScrollStyle" WIDTH="'+TS_scrollwidth+'" HEIGHT=' + (TS_ymax+20) + ' BGCOLOR=' + RGB2STR(TS_colorBG) + ' VISIBILITY="hide">');
	document.write('<LAYER NAME="Content" WIDTH="'+TS_scrollwidth+'">');
	document.write('<SPAN ID="TextScroll" CLASS="TextScrollStyle">');
	if (fNetscape) document.write('<FONT COLOR='+TS_colorFG+'>');
	document.write(TS_message[0]);
	if (fNetscape) document.write('</FONT>');
	document.write('</SPAN>');
	document.write('</LAYER>');
	document.write('</ILAYER>');
	
	if (TS_ystep > 0) {
		TS_ypos = 0;
	} else {
		TS_ypos = TS_ymax;
	}

	if (document.all) {
		// IE
		TS = TextScroll.style;
	} else if (document.layers) {
		// Netscape
		TS = document.TextScroll.document.Content;
		TS_yposOrg = TS.top;
	}
	TS.height = TS_ymax+20;
	TS.color = TS_color;
	TS.visibility = "visible";
	TS.backgroundColor = TS_colorBG;
	
	window.onload=startani
	window.onunload=UnloadMe;
}

ScrollTextDisplay()