////////////////////////////////////////////////////////////
//
//	STATUS_BAR.JS
//	6 May 2003
//	Kulisics, Joseph D.
//
////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////
//
//	The user of this module can create a list of
//	messages to alternate with the main status message,
//	the page greeting, by populating the status_messages
//	array. The script file uses global variables to
//	accomodate IE4 compatible browsers which do not
//	allow setInterval in JavaScript to pass arguments
//	to the function to be called.
//
////////////////////////////////////////////////////////////

var GLOBAL_MESSAGE_INDEX=0;

var GLOBAL_STATUS_INTERVAL_ID;
var GLOBAL_REPEAT_INTERVAL_ID;

var GLOBAL_STATUS_LIFE=3000;
var SMALL_MESSAGE_SIZE=41;

var WRITE_SPEED_SHORT=20;
var WRITE_SPEED_LONG=5;

var CURSOR_CHARACTER='_';
var CURSOR_BLINK_INTERVAL=500;
var CURRENT_CURSOR='_';

var STATUS_MESSAGE_COUNTER=0;
var STATUS_MESSAGE_TURN=false;

var STATUS_MESSAGES_ARRAY=false;

var MAINMESSAGE="";
var NEWMESSAGE="";
var MESSAGE_LENGTH=0;

var status_messages=new Array();

function plain_status(){

	if(arguments[0]){
		window.defaultStatus=arguments[0];
	}else{
		window.defaultStatus=window.document.title;
	}
	return true;

}

function blink_cursor(){

	if(CURRENT_CURSOR==" "){
		CURRENT_CURSOR=CURSOR_CHARACTER;
		window.defaultStatus=NEWMESSAGE+CURRENT_CURSOR;
	}else{
		CURRENT_CURSOR=" ";
		window.defaultStatus=NEWMESSAGE+CURRENT_CURSOR;
	}

}

function animated_status(){

	window.defaultStatus=NEWMESSAGE.substring(0,GLOBAL_MESSAGE_INDEX)+CURSOR_CHARACTER;
	if(GLOBAL_MESSAGE_INDEX<MESSAGE_LENGTH){
		++GLOBAL_MESSAGE_INDEX;
	}else{
		CURRENT_CURSOR=CURSOR_CHARACTER;
		if(GLOBAL_STATUS_INTERVAL_ID){
			clearInterval(GLOBAL_STATUS_INTERVAL_ID);
		}
		GLOBAL_STATUS_INTERVAL_ID=setInterval("blink_cursor()",CURSOR_BLINK_INTERVAL);
	}

	return true;

}

function repeat(){

	if(status_messages.length>0){
		if(STATUS_MESSAGE_TURN){
			if(STATUS_MESSAGE_COUNTER<status_messages.length){
				NEWMESSAGE=status_messages[STATUS_MESSAGE_COUNTER];
				++STATUS_MESSAGE_COUNTER;
			}else{
				NEWMESSAGE=status_messages[0];
				STATUS_MESSAGE_COUNTER=1;
			}
		}else{
			NEWMESSAGE=MAINMESSAGE;
		}
		STATUS_MESSAGE_TURN=!STATUS_MESSAGE_TURN;
	}else{
		NEWMESSAGE=MAINMESSAGE;
	}

	GLOBAL_MESSAGE_INDEX=0;
	MESSAGE_LENGTH=NEWMESSAGE.length;

	if(GLOBAL_STATUS_INTERVAL_ID){
		clearInterval(GLOBAL_STATUS_INTERVAL_ID);
	}
	animated_status();
	if(MESSAGE_LENGTH<SMALL_MESSAGE_SIZE){
		GLOBAL_STATUS_INTERVAL_ID=setInterval("animated_status()",WRITE_SPEED_SHORT);
	}else{
		GLOBAL_STATUS_INTERVAL_ID=setInterval("animated_status()",WRITE_SPEED_LONG);
	}
	return true;

}

function status_driver(){

		if(arguments[0]){
			MAINMESSAGE=arguments[0];
		}else{
			MAINMESSAGE=window.document.title;
		}
		repeat();
		if(GLOBAL_REPEAT_INTERVAL_ID){
			clearInterval(GLOBAL_REPEAT_INTERVAL_ID);
		}
		GLOBAL_REPEAT_INTERVAL_ID=setInterval("repeat()",GLOBAL_STATUS_LIFE);

}

function status_exit(){

	STATUS_MESSAGE_TURN=false;
	STATUS_MESSAGE_COUNTER=0;
	if(GLOBAL_STATUS_INTERVAL_ID){
		clearInterval(GLOBAL_STATUS_INTERVAL_ID);
	}
	if(GLOBAL_REPEAT_INTERVAL_ID){
		clearInterval(GLOBAL_REPEAT_INTERVAL_ID);
	}
	window.defaultStatus=NEWMESSAGE;
	return true;

}
