//////////////////////////////
// Status Bar Animator
// By Nicholas Skapura
// Version 1.0
// October 12, 2000
// Copyright (c) 2000 Nicholas Skapura
//////////////////////////////

////////// Global Variables //////////
var
	StatusText,DefStatusText,StatusSpeed,ScrollDir,BlinkOn = false,AdderCount = 0,
	LetterPtr = 0,GoReverse = false;

////////// Status Bounce //////////
// Initialize bouncing animation.
// TextArg - Text to display.
// SpeedArg - Speed of animation.
///////////////////////////////////
function StatusBounce(TextArg,SpeedArg)
{
	StatusText = DefStatusText = TextArg;
	StatusSpeed = SpeedArg;
	window.setTimeout(BounceHandler,StatusSpeed);
}

////////// Bounce Handler //////////
// Called locally (do not call in main page)
// Handler for bouncing animation
////////////////////////////////////
function BounceHandler()
{
	if(GoReverse)
		StatusText = StatusText.substring(1,StatusText.length);
	else
		StatusText = ' ' + StatusText;
	if(StatusText.length == 127)
		GoReverse = true;
	else if(StatusText.length == DefStatusText.length)
		GoReverse = false
	window.defaultStatus = StatusText;
	window.setTimeout(BounceHandler,StatusSpeed);
}
////////// Status Letter //////////
// Initialize letter-by-letter animation.
// TextArg - Text to display.
// SpeedArg - Speed of animation.
///////////////////////////////////
function StatusLetter(TextArg,SpeedArg)
{
	StatusText = DefStatusText = TextArg;
	StatusSpeed = SpeedArg;
	window.setTimeout(LetterHandler,StatusSpeed);
}

////////// Letter Handler //////////
// Called locally (do not call in main page)
// Handler for letter-by-letter animation.
////////////////////////////////////
function LetterHandler()
{
	StatusText = DefStatusText.substring(0,LetterPtr);
	if(GoReverse)
		LetterPtr--;
	else
		LetterPtr++;
	if(LetterPtr == DefStatusText.length)
		GoReverse = true;
	else if(LetterPtr == 0)
		GoReverse = false;
	window.defaultStatus = StatusText;
	window.setTimeout(LetterHandler,StatusSpeed);
}

////////// Status Scroll //////////
// Initialize scrolling animation
// TextArg - Text to display
// SpeedArg - Speed of animation
// DirArg - Direction of scrolling
//   forward: scroll forward
//   back: scroll backward
///////////////////////////////////
function StatusScroll(TextArg,SpeedArg,DirArg)
{
	StatusText = DefStatusText = TextArg;
	StatusSpeed = SpeedArg;
	ScrollDir = DirArg;
	if(ScrollDir == "back")
		for(var i = 0;i < 128;i++)
			StatusText = DefStatusText = ' ' + StatusText;
	window.defaultStatus = StatusText;
	window.setTimeout(ScrollHandler,StatusSpeed);
}

////////// Scroll Handler //////////
// Called locally (do not call in main page)
// Scrolling animation handler.
////////////////////////////////////
function ScrollHandler()
{
	if(ScrollDir == "forward")
		StatusText = ' ' + StatusText;
	else if(ScrollDir == "back")
		StatusText = StatusText.substring(1,StatusText.length);
	AdderCount++;
	if(AdderCount > 127)
	{
		StatusText = DefStatusText;
		AdderCount = 0;
	}
	window.defaultStatus = StatusText;
	window.setTimeout(ScrollHandler,StatusSpeed);
}

////////// Status Blink //////////
// Initialize blinking animation.
// TextArg - Text to display
// SpeedArg - Speed of animation
//////////////////////////////////
function StatusBlink(TextArg,SpeedArg)
{
	StatusText = TextArg;
	StatusSpeed = SpeedArg;
	window.defaultStatus = StatusText;
	window.setTimeout(BlinkHandler,StatusSpeed);
}

////////// Blink Handler //////////
// Called locally (do not call in main page)
// Blinking animation handler.
//////////////////////////////////
function BlinkHandler()
{
	if(BlinkOn)
	{
		window.defaultStatus = '';
		BlinkOn = false;
	}
	else
	{
		window.defaultStatus = StatusText;
		BlinkOn = true;
	}
	window.setTimeout(BlinkHandler,StatusSpeed);
}