if(typeof cms_sessionto == 'undefined') {
cms_sessionto = true;
if(typeof cms == 'undefined'){cms = {};}

// Code to gracefully handle session timeouts.
cms.sessionExpire = function() {
	if(!cms.sessionLoginURL){return;}
	//console.log("Expiring session.");
	var w = window;
	if(window.top){w = window.top;}
	i2rd.deleteCookie("JSESSIONID");
	i2rd.deleteCookie("jsessionid"); // Should be case insensitive, but...
	w.location.replace(cms.sessionLoginURL);
};
cms.reactivateSession = function() {
	//console.log("Reactivating session.");
	i2rd.removeEvent(document.body, "mousemove", cms.reactivateSession, true);
	log4js.logger.info("Session reactivated"); // This actually reactivates the session.
};
cms.sessionResetExpireTimeout = function() {
    //console.log("Resetting expire timeout");
	if(cms.sessionExpireTimeout) {
		window.clearTimeout(cms.sessionExpireTimeout);
	}
	cms.sessionExpireTimeout = window.setTimeout(cms.sessionExpire, (cms.sessionTO));
	if(cms.sessionReactivateTimeout) {
		window.clearTimeout(cms.sessionReactivateTimeout);
	}
	var delay = (cms.sessionTO - 300000);
	if(delay > 0) {
		cms.sessionReactivateTimeout = window.setTimeout(cms.sessionAboutToExpire, delay);
	}
};
cms.sessionAboutToExpire = function() {
	var w = window;
	if(window.top){w = window.top;}
	//console.log("Session about to expire.");
	i2rd.addEvent(document.body, "mousemove", cms.reactivateSession, true);
};
cms.setupSessionTO = function() {
	if(window.top && window.top != window) {
		return;
	}
	var csc = document.getElementById("cms-session-config");
	if(csc) {
		cms.sessionTO = document.getElementById("cms-session-config-interval-to");
		if(cms.sessionTO) {
			cms.sessionTO = parseInt(i2rd.getInnerText(cms.sessionTO)) * 1000;
			cms.sessionLoginURL = document.getElementById("cms-session-config-login-url");
			if(cms.sessionLoginURL) {
				cms.sessionLoginURL = i2rd.getInnerText(cms.sessionLoginURL);
			} else {
				cms.sessionLoginURL = null;
			}
			//console.info("sessionTO = " + cms.sessionTO + " milliseconds");
			//console.info("sessionLoginURL = " + cms.sessionLoginURL);
			cms.sessionResetExpireTimeout();
			var originalLogMethod = log4js.logger.log;
			log4js.logger.log = function(logLevel, mesg, exception) {
				if(log4js.logger.canLog(logLevel)) {
					cms.sessionResetExpireTimeout();
				}
				originalLogMethod.apply(log4js.logger, [logLevel, mesg, exception]);
			};
		}
		csc.parentNode.removeChild(csc);
	}
    i2rd.removeEvent(window, "load", cms.setupSessionTO);
};
i2rd.addEvent(window, "load", cms.setupSessionTO, true);

}// End conditional eval

