﻿var bswebSessionTimeout = 30;
var bswebSessionUserID = -1;

function deleteCookie(name, path, domain) {
        if (getCookie(name)) {
                document.cookie = name + "=" + 
                ((path) ? "; path=" + path : "; path=/") +
                ((domain) ? "; domain=" + domain : "") +
                "; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
}

function getCookie(name) {
        var prefix = name + "=";
        var cookieStartIndex = document.cookie.indexOf(prefix);
        if (cookieStartIndex == -1)
                return null;
        var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
        if (cookieEndIndex == -1)
                cookieEndIndex = document.cookie.length;
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

function setCookie(name, value, expires, path, domain, secure) {
		var expDate = new Date(Date.parse(new Date()) + expires * 1000);
        var curCookie = name + "=" + escape(value) +
                ((expires) ? "; expires=" + expDate.toUTCString() : "") +
               ((path) ? "; path=" + path : "; path=/") +
                ((domain) ? "; domain=" + domain : "") +
                ((secure) ? "; secure" : "");
        if ((name + "=" + escape(value)).length <= 4000)
                document.cookie = curCookie;
        else
                if (confirm("Cookie 4kb limit failed!"))
                        document.cookie = curCookie;
}

//Session control
var refreshSessionTimer = null;
var refreshMessageTimer = null;

function refreshSession()
{
 //return;
 //Cookie for notification after redirect
 setCookie("sessionRefreshed", "true", 120);
 location.href = "/DesktopModules/BSWeb.UserAccounts/Logout.aspx?SessionTimeout=true";
	//admin/Security/Logoff.aspx?SessionTimeout=true
}

function emptyRequest()
{
	var durl = "/DesktopModules/BSWeb.UserAccounts/Dispatcher.aspx"
	var pars = "Action=Refresh";
	bsweb.loadingON(true);
	new bsweb.Ajax.Request(durl, {method: 'post', onSuccess: emptyRequestCompleted, parameters: pars} );
}

function emptyRequestCompleted(s)
{
	bsweb.loadingOFF(true);
	flushSessionTimer(bswebSessionUserID, bswebSessionTimeout);
	var data = s.get_responseData();
}

function alertWithEmptyRequest(m)
{
	alert(m);
	emptyRequest();
}

function flushSessionTimer(UserID, sessionTimeout)
{
 bswebSessionTimeout = sessionTimeout;
 bswebSessionUserID = UserID;
 if(getCookie("sessionRefreshed") == "true")
 {
  deleteCookie("sessionRefreshed");
  //var message = "<p style=\"color: #f15d22; font-size: 17px; font-family: arial narrow; font-weight: bold;\">Session Timed Out!</p>";
  var message = "Your session has timed out!";
  //alertMessage(message);
  alert(message);
 }
 else
 {
  if(UserID != -1)
  {
   if(refreshSessionTimer != null) clearTimeout(refreshSessionTimer);
   refreshSessionTimer = setTimeout("refreshSession();", (sessionTimeout - 1)*60000); //1140000

   if(refreshMessageTimer != null) clearTimeout(refreshMessageTimer);
   refreshMessageTimer = setTimeout("alertWithEmptyRequest('WARNING:  Your session will time out in 10 minutes due to inactivity.  Click on OK before this time to remain logged in.');", (sessionTimeout - 11)*60000);
  }
 }
}