function ProgressBarClass() {
	this.Message = "Loading...";
	this.Small = false;
	this.ManualHide = false;
	
	this.Show = function (sMessage, bSmall, bManualHide) {
		if (typeof(sMessage) != "undefined") {
			this.Message = sMessage;
		}
		if (typeof(bSmall) != "undefined") {
			this.Small = bSmall;
		}
		if (typeof(bManualHide) != "undefined") {
			this.ManualHide = bManualHide;
		}
		
		ShowProgressBar(this.Message, this.Small, this.ManualHide);
	}
	
	this.Hide = function () {
		HideProgressBar();
	}
}

var ProgressBar = new ProgressBarClass();


document.write('<style> \
.fwProgressBarMessage { \
	font-size: 12px; \
	font-weight: bold; \
	color: #124EC3; \
} \
</style>');

var g_tmrProgressBar, g_tmrProgressBarShow, g_tmrProgressBarEval;
var g_bProgressBarVisible = true;

var FW_PROGRESS_BAR_OFFSET_TOP = 400;

var FW_PROGRESS_BAR_HEIGHT = 132;
var FW_PROGRESS_BAR_HEIGHT_SMALL = 100;

var FW_PROGRESS_BAR_WIDTH = 400;
var FW_PROGRESS_BAR_WIDTH_SMALL = 230;

var FW_PROGRESS_BAR_IMAGE_WIDTH = 49;
var FW_PROGRESS_BAR_IMAGE_WIDTH_SMALL = 49;

var FW_PROGRESS_BAR_IMAGE_HEIGHT = 48;
var FW_PROGRESS_BAR_IMAGE_HEIGHT_SMALL = 48;

var FW_PROGRESS_BAR_IMAGE = "progress.gif";
var FW_PROGRESS_BAR_IMAGE_SMALL = "progress.gif";

//render the progress bar
if (typeof(fw_config_ImageDirectory) != 'undefined') {
	document.write('<div id="progressBarLayer" style="position:absolute; left:1px; top:1px; width:99%; height:' + FW_PROGRESS_BAR_OFFSET_TOP + 'px; z-index:31; display:none; visibility:hidden;"> \
	  <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> \
		<tr> \
		  <td align="center" valign="middle"> \
			<table id="progressBarTableMain" width="' + FW_PROGRESS_BAR_WIDTH + '" height="' + FW_PROGRESS_BAR_HEIGHT + '" border="0" cellspacing="0" cellpadding="0"> \
			  <tr> \
				<td style="background-color:#CCCCCC;padding-right:2px;padding-bottom:2px;"> \
				  <table id="progressBarTableSub" width="100%" border="0" cellspacing="0" cellpadding="8" height="' + FW_PROGRESS_BAR_HEIGHT + '" style="border-right:1px #888888 solid; border-bottom:1px #888888 solid;"> \
					<tr> \
					  <td bgcolor="#FFFFFF" align="center" style="border:1px black solid;"> \
					  	<img name="progressBarImage" id="progressBarImage" src="' + fw_config_ImageDirectory + '/' + FW_PROGRESS_BAR_IMAGE + '" width="' + FW_PROGRESS_BAR_IMAGE_WIDTH + '" height="' + FW_PROGRESS_BAR_IMAGE_HEIGHT + '" align="middle" hspace="5"> \
						<br><br> \
						<span id="progressBarMessage" class="fwProgressBarMessage">Logging in...</span> \
						<br> \
					  </td> \
					</tr> \
				  </table> \
				</td> \
			  </tr> \
			</table> \
		  </td> \
		</tr> \
	  </table> \
	</div> \
	\
	<div id="blockProgressBarLayer" style="position:absolute; left:1px; top:1px; z-index:30; display:none; visibility:hidden;"> \
	  <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> \
		<tr> \
		  <td align="center" valign="middle"> \
			<img src="' + fw_config_ImageDirectory + '/spacer.gif" width="100%" height="100%" galleryimg="no"> \
		  </td> \
		</tr> \
	  </table> \
	</div>');
}

function ShowProgressBar(messageString, bSmall, bManualHide) {
	if (!bSmall) {
		bSmall = false;
	}
	if (!bManualHide) {
		bManualHide = false;
	}
	g_tmrProgressBarShow = window.setTimeout("DoShowProgressBar('" + messageString + "', " + bSmall + "," + bManualHide + ");", fw_config_ProgressBarDelay);
}

function DoShowProgressBar(messageString, bSmall, bManualHide) {
	//if this is netscape, AOL, or Mac dont use the progress bar
	var bIsAOL = (navigator.appVersion.indexOf('AOL') != -1);
	var bIsNetscape = (document.layers && !document.all);
	var bIsMac = (Browser.OS == OS_MAC && (Browser.UserAgent == BROWSER_IE || Browser.UserAgent == BROWSER_KONQUEROR));
	
	if (bIsAOL || bIsNetscape || bIsMac) {
		return;
	}

	var progressBarLayer = document.getElementById('progressBarLayer');
	var blockProgressBarLayer = document.getElementById('blockProgressBarLayer');
	var progressBarMessage = document.getElementById('progressBarMessage');
	var progressBarTableMain = document.getElementById('progressBarTableMain');
	var progressBarTableSub = document.getElementById('progressBarTableSub');
	var progressBarImage = document.getElementById('progressBarImage');
	
	if (bSmall) {
		progressBarTableMain.width = FW_PROGRESS_BAR_WIDTH_SMALL;
		progressBarTableMain.height = FW_PROGRESS_BAR_HEIGHT_SMALL;
		progressBarTableSub.height = FW_PROGRESS_BAR_HEIGHT_SMALL;
		progressBarImage.width = FW_PROGRESS_BAR_IMAGE_WIDTH_SMALL;
		progressBarImage.height = FW_PROGRESS_BAR_IMAGE_HEIGHT_SMALL;
		progressBarImage.src = fw_config_ImageDirectory + "/" + FW_PROGRESS_BAR_IMAGE_SMALL;
	} else {
		progressBarTableMain.width = FW_PROGRESS_BAR_WIDTH;
		progressBarTableMain.height = FW_PROGRESS_BAR_HEIGHT;
		progressBarTableSub.height = FW_PROGRESS_BAR_HEIGHT;
		progressBarImage.width = FW_PROGRESS_BAR_IMAGE_WIDTH;
		progressBarImage.height = FW_PROGRESS_BAR_IMAGE_HEIGHT;
		progressBarImage.src = fw_config_ImageDirectory + "/" + FW_PROGRESS_BAR_IMAGE;
	}

	var i=0;
	
	if (!document.all) {
		window.captureEvents(Event.STOP || Event.RESIZE || Event.SCROLL);
	}
	
	if (!bManualHide) {
		document.onstop = HideProgressBar;
	}
	window.onresize = SizeProgressBar;
	window.onscroll = SizeProgressBar;
	
	document.body.style.cursor = 'wait';
	
	progressBarMessage.innerHTML = messageString;
	
	progressBarLayer.style.display = 'block';
	blockProgressBarLayer.style.display = 'block';
	progressBarLayer.style.visibility = 'visible';
	blockProgressBarLayer.style.visibility = 'visible';
	
	try {
		document.body.focus(); //hides the cursor
	} catch (e) {
		//do nothing
	}
	
	//disable all selects in IE
	if (document.all) {
		EnableAllSelects(false);
	}
	
	SizeProgressBar();
	
	//kickstarts the gif image
	g_tmrProgressBar = setTimeout("document.getElementById('progressBarImage').src=document.getElementById('progressBarImage').src.toString();", 500);
	
	//periodically checks to see if the window is still in a "loading" state
	if (!bManualHide) {
		g_tmrProgressBarEval = setInterval('ProgressBarCheck();', 100);
	}
}

function HideProgressBar() {
	window.clearTimeout(g_tmrProgressBar);
	window.clearTimeout(g_tmrProgressBarShow);
	window.clearTimeout(g_tmrProgressBarEval);

	var progressBarLayer = document.getElementById('progressBarLayer');
	var progressBarTableMain = document.getElementById('progressBarTableMain');
	var blockProgressBarLayer = document.getElementById('blockProgressBarLayer');
	var i=0;
	
	progressBarLayer.style.display = 'none';
	blockProgressBarLayer.style.display = 'none';
	progressBarLayer.style.visibility = 'hidden';
	blockProgressBarLayer.style.visibility = 'hidden';
	
	//if this is IE, show selects that overlapped the progress bar
	ShowOverlappingSelects(progressBarTableMain);
	
	document.onstop = null;
	window.onresize = null;
	window.onscroll = null;
	document.body.style.cursor = 'auto';
	
	if (document.all) {
		EnableAllSelects(true);
	}
}

function SizeProgressBar() {
	var progressBarLayer = document.getElementById('progressBarLayer');
	var blockProgressBarLayer = document.getElementById('blockProgressBarLayer');
	var progressBarMessage = document.getElementById('progressBarMessage');
	var progressBarTable = document.getElementById('progressBarContainerTable');
	
	if (document.body.clientHeight < FW_PROGRESS_BAR_OFFSET_TOP) {
		progressBarLayer.style.height = document.body.clientHeight;
	} else {
		progressBarLayer.style.height = FW_PROGRESS_BAR_OFFSET_TOP;
	}
	
	progressBarLayer.style.top = document.body.scrollTop;
	
	blockProgressBarLayer.style.height = document.body.scrollHeight-2;

	//if this is IE, hide selects that overlap the progress bar
	HideOverlappingSelects(document.getElementById('progressBarTableMain'));
}

function ProgressBarCheck() {
	if (document.readyState && document.readyState == 'complete') {
		HideProgressBar();
	}
}

function EnableAllSelects(bDoEnable) {
	var arrSelects = document.getElementsByTagName('SELECT');
	for (var i=0; i<arrSelects.length; i++) {
		if (!bDoEnable) {
			if (!arrSelects[i].disabled && arrSelects[i].style.display != 'none') {
				arrSelects[i].progressBarDisabled = true;
				arrSelects[i].disabled = true;
			}
		} else {
			if (arrSelects[i].progressBarDisabled) {
				arrSelects[i].progressBarDisabled = null;
				arrSelects[i].disabled = false;
			}
		}
	}
}