var APIUseActiveX = false;
var APIShowingTimeout = false;
var APITimeoutStartValue = 3;
var APITimeoutBaseValue = 600;
var APITimeoutSeconds = 0;
var APITimeoutInterval = 0;
function APIInitialize()
{
	try
	{
		var s = window.clientInformation.userAgent;
		var p = s.indexOf('MSIE');
		if (p != -1)
		{
			isIE = true;
			s = s.substring(p + 5);
			p = s.indexOf('.');
			if (p != -1)
				APIUseActiveX = (s.substring(0, p) - 0) < 7;
		}
	}
	catch (e)
	{
	}
}
function APIInit()
{
	setTimeout('APITimeout()', APITimeoutBaseValue * 1000);
}
function APIExecute(command, postdata)
{
	var xmlHttpReq = (APIUseActiveX ? new ActiveXObject('MSXML2.XMLHTTP.3.0') : new XMLHttpRequest());
	xmlHttpReq.open('POST', '../API/API.aspx?command=' + command, false);
	xmlHttpReq.send(postdata);
	return xmlHttpReq.responseText;
}
function APITimeout()
{
	var s = APIExecute('getTimeout', '');
	if (s)
	{
		s = s.split('\n');
		var minutes = s[0] - 0;
		var seconds = s[1] - 0;
		if (minutes < APITimeoutStartValue || (minutes == APITimeoutStartValue && seconds == 0))
		{
			if (minutes == 0 && seconds == 0)
			{
				location = '../Info/Timeout.aspx';
				return;
			}
			if (!APIShowingTimeout)
			{
				var d = new OverlayDialog('Session Timeout', 'Your session is about to time out.<br>Remaining time: <span id="APITimeoutRemaining"></span>');
				d.set_width(300);
				d.addRow('<tr><td colSpan="2"><IMG height="20" src="../images2/spix.gif" width="5"></td></tr><tr><td colSpan="2"><table cellSpacing="0" cellPadding="0" width="100%" border="0"><tr><td style="padding-left: 5px; padding-top: 3px; padding-bottom: 3px;"><table class="button" cellpadding="0" cellspacing="0" border="0" onclick="APITimeoutClear()"><tr><td><img src="../images2/secondarybutton_left.gif" border="0"></td><td class="secondary">Renew Session</td><td><img src="../images2/secondarybutton_right.gif" border="0"></td></tr></table></td><td align="right" style="padding-right: 5px; padding-top: 3px; padding-bottom: 3px;"><table class="button" cellpadding="0" cellspacing="0" border="0" onclick="APITimeoutTerminate()"><tr><td><img src="../images2/secondarybutton_left.gif" border="0"></td><td class="secondary">Terminate Session</td><td><img src="../images2/secondarybutton_right.gif" border="0"></td></tr></table></td></tr></table></td></tr></tr>');
				d.display();
				APIShowingTimeout = true;
			}
			if (minutes > 1 || (minutes == 1 && seconds > 10))
			{
				if (seconds > 30)
					minutes++;
				var remaining = document.getElementById('APITimeoutRemaining');
				if (!remaining)
					remaining = APITimeoutRemaining;
				remaining.innerHTML = minutes + ' minutes';
				if (seconds == 0)
					seconds = 60;
				setTimeout('APITimeout()', seconds * 1000);
			}
			else
			{
				if (minutes > 0)
					seconds += 60;
				var remaining = document.getElementById('APITimeoutRemaining');
				if (!remaining)
					remaining = APITimeoutRemaining;
				remaining.innerHTML = seconds + ' seconds';
				APITimeoutSeconds = seconds;
				if (APITimeoutInterval)
					clearInterval(APITimeoutInterval);
				APITimeoutInterval = setInterval('APITimeoutCountdown()', 1000);
			}
		}
		else
		{
			if (APIShowingTimeout)
			{
				OverlayDialogInstance.close();
				APIShowingTimeout = false;
			}
			
			var delay = (minutes - APITimeoutStartValue) * 60 + seconds;
			if (delay > APITimeoutBaseValue)
				delay = APITimeoutBaseValue;
			setTimeout('APITimeout()', delay * 1000);
		}
	}
} 
function APITimeoutCountdown()
{
	APITimeoutSeconds--;
	if (APITimeoutSeconds <= 0)
	{
		clearInterval(APITimeoutInterval);
		APITimeoutInterval = 0;
		APITimeout();
	}
	else if (APITimeoutRemaining)
	{
		var remaining = document.getElementById('APITimeoutRemaining');
		if (!remaining)
			remaining = APITimeoutRemaining;
		remaining.innerHTML = APITimeoutSeconds + ' seconds';
	}
	else
	{
		clearInterval(APITimeoutInterval);
		APITimeoutInterval = 0;
	}
}
function APITimeoutClear()
{
	APIExecute('clearTimeout', '');
	if (APITimeoutInterval)
	{
		clearInterval(APITimeoutInterval);
		APITimeoutInterval = 0;
	}
	OverlayDialogInstance.close();
	APIShowingTimeout = false;
	setTimeout('APITimeout()', APITimeoutBaseValue * 1000);
}
function APITimeoutTerminate()
{
	location = '../Info/Timeout.aspx';
}
APIInitialize();