function initTimeoutOnFormRefresh(url,contextPath,sessionId,timeout,timeoutWarningInt,excludeList,msg_timeout_warning,msg_timeout_message,msg_timeout_new_window_confirmmessage)
{
var excludeURLList = excludeList.split(",");
var excludeURL = false;
for(var i=0;i<excludeURLList.length;i++)
{
if(url == contextPath+excludeURLList[i])
{
excludeURL = true;
break;
}
}
var timeoutWarningDelay = timeoutWarningInt*1000;
var timeoutVal = new Date();
if (getTopLevelWnd().sessionRefreshTimer != null)
{
getTopLevelWnd().clearTimeout(getTopLevelWnd().sessionRefreshTimer);
}
// Set/Upate the cookie "timeoutHandler<JSESSIONID>" here for the first time and during subsequent calls
setCookie("timeoutHandler"+sessionId,timeoutVal.getTime(),null,"/");
//Trace_println("timeouthandler.js: (Re)Set the timeout cookie to the following value:" + timeoutVal.getTime());
var f=  function handleTimeout()
{
//Trace_println("timeouthandler.js: Entered the 'handleTimeout' Method. ");
if((getCookie("timeoutHandler"+sessionId) != "-1"))
{
var currentTimeStamp = new Date();
var timeoutHasOccurred = (currentTimeStamp.getTime() - getCookie("timeoutHandler"+sessionId)) >(timeout*1000);
var timeoutWillOccur = ((currentTimeStamp.getTime() - getCookie("timeoutHandler"+sessionId)) >= (timeout*1000 - timeoutWarningDelay)) && ((currentTimeStamp.getTime() - getCookie("timeoutHandler"+sessionId)) < (timeout*1000));
if(timeoutWillOccur && !timeoutHasOccurred)
{
// Trace_println("timeouthandler.js: Entered the timeout Warning condition "+timeoutWillOccur+ " "+timeoutHasOccurred +" "+ currentTimeStamp.getTime());
if( !excludeURL && !(timeoutWarningDelay == 0) )
{
alert(msg_timeout_warning+" "+currentTimeStamp+")!!");
}
currentTimeStamp = new Date();
var freshTimeStamp = timeout*1000 -(currentTimeStamp.getTime() - getCookie("timeoutHandler"+sessionId));
// Trace_println("timeouthandler.js: Fresh TimeStamp after re-calculating the timeouthandler post response to the warning "+freshTimeStamp);
if(freshTimeStamp >= 0 )
{
getTopLevelWnd().sessionRefreshTimer = getTopLevelWnd().setTimeout(f, freshTimeStamp);
}
else
{
getTopLevelWnd().sessionRefreshTimer = getTopLevelWnd().setTimeout(f, 0);
}
}
else if(timeoutHasOccurred)
{
// Trace_println("timeouthandler.js: Timeout has occurred");
setCookie("timeoutHandler"+sessionId,"-1",null,"/");
if(!excludeURL)
{
alert(msg_timeout_message);
}
relogin();
}
else
{
var newTimeStamp = timeout*1000- timeoutWarningDelay - (currentTimeStamp.getTime() - getCookie("timeoutHandler"+sessionId));
// Trace_println("timeouthandler.js: Entered the reset timeout condition " + newTimeStamp);
if(newTimeStamp >= 0)
{
getTopLevelWnd().sessionRefreshTimer = getTopLevelWnd().setTimeout(f, newTimeStamp);
}
else
{
getTopLevelWnd().sessionRefreshTimer = getTopLevelWnd().setTimeout(f, 0);
}
}
}
else
{
var answer = confirm(msg_timeout_new_window_confirmmessage);
if (answer)
{
getTopLevelWnd().close();
}
}
};
getTopLevelWnd().sessionRefreshTimer = getTopLevelWnd().setTimeout(f, timeout*1000- timeoutWarningDelay);
}
function relogin()
{
setTimeout("loginRedirect()", 3000);
}
function loginRedirect()
{
fireAppIntgEvent("event=HideDialog");
fireAppIntgEvent("event=SessionTimeout");
var targetWindow = getTopLevelWnd();
if (window.getWindowOpener())
{
targetWindow = getTopLevelWndForApplication();
}
var strUrl = addBrowserIdToURL(g_virtualRoot+"/component/main");
navigateToURL(strUrl, "timeout", targetWindow);
if (window.getWindowOpener())
{
window.close();
}
}

