﻿var _CheckSessionLoader = null;
var _CurrentTimeout = null;
var _SessionTimeout = null;
var _SessionExpiration = null;
var _TimeAllowedToRenew = 5*60*1000;
var _CheckInterval = 5000;
var _CurrentWindow = null;
var _defaultSession = 20*60*1000;

function InitializeSessionExpiration(fCheck)
{
	//debugger;
	try
	{
		var oWin = GetWindowRootActivportal(window);
		if( oWin == null ) oWin = window;
		
		if( _SessionTimeout == null )
		{
			if( oWin.GetCurrentDashboard )
			{
				var oDash = oWin.GetCurrentDashboard();
				if( oDash != null ) 
					_SessionTimeout = (oDash.sessionTimeout - _TimeAllowedToRenew);
				else
					_SessionTimeout = (_defaultSession - _TimeAllowedToRenew);
			}
		}
	}
	catch(e){
		return;
	}


	if (_CurrentTimeout != null) {clearTimeout(_CurrentTimeout); _CurrentTimeout=null;}
	
	if( _SessionTimeout > 0 )
	{
	
		oWin._SessionExpiration = new Date()
		oWin._SessionExpiration.setMilliseconds(_SessionTimeout);
	
		if( oWin == window)
		{
			if ( fCheck )
			{
				_CurrentTimeout = setTimeout('CheckSessionExpiration()', _SessionTimeout - (3 * _CheckInterval));
			}
		}
	}
	
}

function CheckSessionExpiration()
{
	var oWin = GetWindowRootActivportal(window);
	if( oWin == null ) oWin = window;
	
	if( oWin == window ) 
	{
		var oNow = new Date();
		var oDiff = null;
		//debugger;
		oDiff = ((oNow-oWin._SessionExpiration))
		if( oDiff > 0 )
		{
			alert(SessionEnd_Text);
			if( _CheckSessionLoader == null )
			{
				var _DivCheckSession = document.createElement("div");
				
				_DivCheckSession.setAttribute('id', '_DivCheckSession');
		   	_DivCheckSession.setAttribute('name', '_DivCheckSession');
			  _DivCheckSession.style.visibility = 'hidden';
		  	_DivCheckSession.style.position = 'absolute';
		   	_DivCheckSession.style.width = _DivCheckSession.style.Height = _DivCheckSession.borderWidth = '0px'; 
				document.getElementsByTagName('body')[0].appendChild(_DivCheckSession);
				_CheckSessionLoader = new RemoteFileLoader('_CheckSessionLoader');
				_CheckSessionLoader.onload = CheckSessionLoader;
			}
			_CheckSessionLoader.loadInto('CheckSession.asp','_DivCheckSession');			
		}
		else
		{
			if (_CurrentTimeout != null) {clearTimeout(_CurrentTimeout); _CurrentTimeout=null;}
			_CurrentTimeout = setTimeout('CheckSessionExpiration()',_CheckInterval);
		}
	}
}

function CheckSessionLoader(doc,uri,destId)
{
	if( !_CheckSessionLoader.getThread(destId).iframe._IsConnected )
	{
		if (_CurrentWindow != null) { 
			try {_CurrentWindow.close();} catch(e){} 
			_CurrentWindow=null;
		}
		window.focus();
		document.location.href = 'dashboard.asp?flushcache=2';
		return;
	}
	if (_CurrentWindow != null) { try {_CurrentWindow.focus();} catch(e){}}
	InitializeSessionExpiration(true);
}

function SetExpiration()
{
	InitializeSessionExpiration(true);
}

RegisterEvent("www.activportal.mc:Browser","onload", InitializeSessionExpiration);
RegisterEvent("www.activportal.mc:DocumentLoader","beforeonsubmit", SetExpiration);
RegisterEvent("www.activportal.mc:DocumentLoader","beforeonload", SetExpiration);



