// session_timeout.js
// Handle sessions timing out.
var busy;
var timeout;	// default timeout value in minutes
var timemsec;
var warn; // warn 1 minute before we have reached timeout	
var warnmsec;
var noWarning;
var killTimer;
var warnTimer;
var IE = document.all?true:false

function alert_user() {
    // stop the timer
    clearTimeout(warnTimer);	// we only stop the warning timer
    // set up the div - center it nicely, place a button in it
    var message = '<strong class="windowname">Warning</strong>';
    message += '<img src="/images/messagebox_warning.png" style="float: left;" alt="warning" />';
    message += '<p class="message">Your Members-Only session will expire in 1 minute.<br /><br />';
    message += '<div style="text-align:center; margin-bottom: 0.2em;"><input type="button" value="Continue..." onclick="updateIt();" /></div></p>';
    document.getElementById('timeoutwarning').innerHTML = message;
    document.getElementById('timeoutwarning').style.display = 'block';
    putIncenter();
}

function killSession() {
	window.location.href = "/members-only/logout.php";
}

function session_updated() {
	if (srequest.readyState == 4) {
		if(srequest.responseText == 0) {
			// session expired - throw them out
			window.location.href = "/?" + client;
		} else {
			busy = 0;
			timer = setTimeout("alert_user()", interval);
		}
	}
}

function resetTimer() {
    clearTimeout(timer);
    if (busy == 0) {
    	busy = 1;
		updateIt();
	}
}

function updateIt() {
    url = '/helpers/update_session.php';
    if (!srequest) { srequest = ajaxConnect(); }
    srequest.open("POST", url, true);
    srequest.onreadystatechange = session_updated;
    srequest.send(null);
}

function putIncenter() { 
	var d = document; 
	var rootElm = (d.documentelement && d.compatMode == 'CSS1Compat') ? d.documentelement : d.body; 
	var vpw = self.innerWidth ? self.innerWidth : rootElm.clientWidth; // viewport width 
	var vph = self.innerHeight ? self.innerHeight : rootElm.clientHeight; // viewport height 
	var myDiv = d.getElementById('timeoutwarning');
	var divHeight = myDiv.clientHeight;
	var ScrollTop = document.body.scrollTop;
	if (ScrollTop == 0)	{
	    if (window.pageYOffset)
	        ScrollTop = window.pageYOffset;
	    else
	        ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	myDiv.style.position = 'absolute';
	myDiv.style.left = ((vpw - 100) / 2) + 'px';
	myDiv.style.top = (ScrollTop + (vph - divHeight)/2 ) + 'px'; 
} 

window.onload = function() {
	busy = 0;

	timeout = sessTimeout;	// default timeout value in minutes
	timemsec = timeout * 60 * 1000;
	warn = timeout - 1; // warn 1 minute before we have reached timeout	
	warnmsec = warn * 60 * 1000;	
	noWarning = false;

	killTimer;
	warnTimer;

	if (warn == 0) { 
		noWarning = true;
	}
	var sessConn = ajaxConnect();
	
	if (!noWarning) {
    	//warnTimer = setTimeout("alert_user()", warnmsec);	//warnmsec
	}
	if (timemsec > 0) {
		//killTimer = setTimeout("killSession()", timemsec);
	}
}
