var timeOutMinutes = 3;
var timerWarn;
var sessionLive = true;
var logoutURL;
var handleSession = true;
var modalPopupWindow;
var sessionTimeoutID;
var sessionShutdownID;
var balanceInSeconds = 60;
var SessionExpireTime = new Date();
var now = new Date();

function WarnSessionExpiration() {
    modalPopupWindow = $find('ModelPopupSessionExtender');
    sessionTimeoutID = window.setTimeout(ShowTime, 1000);
    modalPopupWindow.show();
}

function ShowTime() {
    now = new Date();
    var diff = SessionExpireTime.getTime() - now.getTime();
    document.getElementById("txtSessionBalance").value = (diff/1000) | 0;
    window.setTimeout("ShowTime()", 1000);
}

function ExtendSessionAndCloseWarning() {
    clearTimeout(sessionTimeoutID);
    clearTimeout(sessionShutdownID);
    window.clearTimeout(sessionShutdownID);
    window.clearTimeout(sessionTimeoutID);
    
    $find('ModelPopupSessionExtender').hide();
    
    //Renew Session timeout
    setSessionTime(timeOutMinutes);
    //return false;
}

function ShutDownSession() {
    modalPopupWindow = $find('ModelPopupSessionExtender');
    modalPopupWindow.hide();
    
    clearTimeout(sessionTimeoutID);
    clearTimeout(sessionShutdownID);
    
    alert('Your session has expired.');
    sessionLive = false;
    window.location = logoutURL;
}

function ExpireSession() {
    ExtendSession();
    return;

    alert('Your session has expired.');
    sessionLive = false;
    window.location = logoutURL;
}

function setSessionTime(oTime) {
    if (!handleSession)
        return;
        
    if (timerWarn != undefined)
        clearSessionTime();

    timeOutMinutes = oTime;

    now = new Date();
    var expTime = now.getTime();
    expTime += timeOutMinutes * 60 * 1000;

    // Set Expiration time from timeout minutes
    SessionExpireTime.setTime(expTime);

    //Temporary for testing
    //timerWarn = window.setTimeout(WarnSessionExpiration, 30 * 1000);

    // Set Session Expiration time from timeout minutes
    window.clearTimeout(sessionShutdownID);
    sessionShutdownID = window.setTimeout(ShutDownSession, timeOutMinutes * 60 * 1000);

    // Set Expiration warning time from timeout minutes
    window.clearTimeout(timerWarn);
    timerWarn = window.setTimeout(WarnSessionExpiration, (timeOutMinutes - 1) * 60 * 1000);
}

function clearSessionTime()
{
    window.clearTimeout(timerWarn);
}

function RenewSession() {
    window.clearTimeout(sessionShutdownID);
    window.clearTimeout(timerWarn);
    sessionLive = true;
    setSessionTime(timeOutMinutes);
}

function checkSession() 
{
    if (sessionLive)
    {
        RenewSession();
        return false;
    }
    else
    {
        if (window.parent == undefined)
            window.location = "../Default.aspx";
        else
            window.parent.location = "../Default.aspx";
        return true;
    }
        
}

function WebAsyncRefreshPanel_RefreshRequest(oPanel, oEvent, id)
{
    if (checkSession())
        return;
}