
var numberOfBars;
var initialDelayTime;
var finalOpacity;
var progressBarLoaded = false;

numberOfBars = 10; 
initialDelayTime = 500; //milliseconds;
finalOpacity = 50; // percent;
	
var delayChangeConstant = 3;
var latestBar = numberOfBars;
var delayTime = initialDelayTime;
var firstRun = true;
var directionArrow = "right";
var objInterval;
var objTimeout;
var stepNumber = 0;

var WaitMessage_OriginalKeyPressFunction;
var WaitMessage_OriginalResizeFunction;


function startProgressBar() {
	var newOpacity;
	(directionArrow == "right") ? --latestBar : ++latestBar ;
	++stepNumber;
	if (latestBar >= 0 && latestBar <= (numberOfBars-1)) {
		if (firstRun) {
			newOpacity = parseInt( ( (100 * stepNumber/numberOfBars)*(finalOpacity/100) ), 10 );
			document.all.FullPageFilter.style.filter = "Alpha(Opacity=" + newOpacity + ", FinishOpacity=" + newOpacity + ", Style=1)";
		}
		eval("document.all.pb" + latestBar + ".style.backgroundColor='#0070C8'");
		if (directionArrow == "right" && latestBar < (numberOfBars-1)) {
			eval("document.all.pb" + (latestBar+1) + ".style.backgroundColor='#ddeeff'");
		}
		if (directionArrow == "left" && latestBar > 0) {
			eval("document.all.pb" + (latestBar-1) + ".style.backgroundColor='#ddeeff'");
		}
		if (directionArrow == "right" && latestBar < (numberOfBars-2)) {
			eval("document.all.pb" + (latestBar+2) + ".style.backgroundColor='#efefef'");
		}
		if (directionArrow == "left" && latestBar > 1) {
			eval("document.all.pb" + (latestBar-2) + ".style.backgroundColor='#efefef'");
		}
	} else {
		if (directionArrow == "right") {
			directionArrow = "left";
			firstRun = false;
		} else {
			directionArrow = "right";
			firstRun = false;		
		}
	}
	if (latestBar == (numberOfBars-1) || latestBar == 0) {
		delayTime = 50;
	} else {
		if (latestBar == (numberOfBars-2) || latestBar == 1) {
			delayTime = initialDelayTime;
		}
	}
	objTimeout = window.setTimeout("startProgressBar()", delayTime);
//	delayTime += delayTime/delayChangeConstant;
}

function SizeWaitMessage()
{
	var theGel = document.getElementById("FullPageFilter");
	var theBox = document.getElementById("WaitMessageBox");

	theGel.style.width = document.body.clientWidth;
	theGel.style.height= document.documentElement.clientHeight;

	var theBox = document.getElementById("WaitMessageBox");
	var theGel = document.getElementById("FullPageFilter");

	var subtractLeft = findPosX(theBox);
	var subtractTop  = findPosY(theBox);
	var pageWidth    = document.body.clientWidth;
	var pageHeight   = document.documentElement.clientHeight;
	var newLeft = ((pageWidth/2) - (theBox.clientWidth/2)) - subtractLeft + document.body.scrollLeft;
	var newTop = ((pageHeight/2) - (theBox.clientHeight/2)) - subtractTop - 35 + document.body.scrollTop;

//alert("pageHeight = " + pageHeight + "\nsubtractTop = " + subtractTop + "\ndocument.body.scrollTop = " + document.body.scrollTop + "\ntheBox.clientHeight = " + theBox.clientHeight);
//alert("body.clientWidth = " + document.body.clientWidth + "\nbody.offsetWidth = " + document.body.offsetWidth + "\nnewLeft = " + newLeft + "\nnewTop = " + newTop + "\npageWidth = " + pageWidth + "\ntheBox.clientWidth = " + theBox.clientWidth + "\nsubtractLeft = " + subtractLeft + "\nscrollLeft = " + document.body.scrollLeft);

	theGel.style.width = pageWidth;
	theGel.style.height= pageHeight;
	theGel.style.top = document.body.scrollTop;
	theGel.style.left= document.body.scrollLeft;
	theBox.style.top = newTop;
	theBox.style.left = newLeft;
	theGel.style.zIndex = 900;
	theBox.style.zIndex = 901;
	theGel.style.visibility = "visible";
	theBox.style.visibility = "visible";

}

function WaitMessageProcessKeyStroke()
{
        event.cancelBubble = true; 
        event.returnValue = false;
	event.keyCode = 0; 
	return false;
}

function initProgressBar() {
    if (progressBarLoaded)
    {
        return true;
    }
    
	WaitMessage_OriginalKeyPressFunction = window.onresize;
	WaitMessage_OriginalResizeFunction = document.onkeypress;

	window.onresize = SizeWaitMessage;
	document.onkeypress = WaitMessageProcessKeyStroke;

	SizeWaitMessage();

	objTimeout = window.setTimeout("startProgressBar(true)", delayTime);
	var f;
	// Loop through all forms... ;
	for (var i = 0; i < document.forms.length; i++) {
		f = document.forms[i];
		// Loop through all elements in each form... ;
		for (var j = 0; j < f.elements.length; j++) {	
			// Check each element... ;
			e = f.elements[j];
			// get properties that apply to multiple types... ;
			strEType = e.type;
			// deal with select lists... ;
			if (strEType == "select-one" || strEType == "select-multiple") {
				e.style.visibility = "hidden";
			}
		}
	}
	
	progressBarLoaded = true;
}

function stopProgressBar() {

	try
	{
		window.onresize = null;
		document.onkeypress = null;
		window.onresize = WaitMessage_OriginalKeyPressFunction;
		document.onkeypress = WaitMessage_OriginalResizeFunction;
	}
	catch(e){}

	window.clearTimeout(objTimeout);
	document.all.FullPageFilter.style.zIndex = -900;
	document.all.WaitMessageBox.style.zIndex = -999;
	document.all.FullPageFilter.style.visibility = "hidden";
	document.all.WaitMessageBox.style.visibility = "hidden";
	progressBarLoaded = false;
	location.reload();
}

// requires global variable numberOfBars;
function writeBars(x) {
	if (x == null) x = numberOfBars;
	for (var j=(x-1); j >= 0; j--) {
		document.write("<td id='pb" + j + "'><img src='/images/spacer.gif' width='1' height='1'></td>");
	}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

//window.onload = initProgressBar; 
