var _GlobalModalInterval = null;
//use a javascript IIFE to protect window events from being destroyed with GlideDialogWindow destroy
(function () {
	var settings = {
		'secDigest':10,
		"secHeartbeat":60,
		"secWarningDuration":120,
		"minSessionTimeout":30,
		'dialogTitle':' ',
		'loginPage':'login.do',
		'studentLoginPage': 'wrp?id=student_landing_page',
		'recruiterLoginPage': 'wrp?id=recruiter_landing_page',
		'employerLoginPage': 'wrp?id=employer_landing_page',
		'schoolLoginPage': 'wrp?id=school_coordinator_landing_page',
		'hbRetries': 2
	};
	var objDialog = null;
	var globals = {
		'now':new Date(),
		'lastClientAction':new Date(),
		'lastHeartbeat':new Date(),
		'nextHeartbeat':new Date(),
		'warnAt':null,
		'expireAt':null,
		'objTimer':null,
		'originalTitle':''
	};
	//when page is loaded initialize
	init();
    function init() {
		userCheck();
    }
	
	function userCheck() {
		var ga = new GlideAjax('WRP_CheckUser');
		ga.addParam('sysparm_name','u_user');
		// Check for active user session.
		ga.getXML(userDataParse);
	}
	
	function userDataParse(response) {
		var answer = response.responseXML.documentElement.getAttribute("answer");
		if (answer == null) {
            return;
		}
		globals.objTimer = window.setInterval(main, settings.secDigest * 1000);
        main();
	}

    function main() {
        globals.now = new Date();
        calcEnds();
        if (globals.expireAt.getTime() < globals.now.getTime()) {
            shutdown();
        }
    }
	
	function calcEnds(){
		globals.expireAt = new Date(globals.lastClientAction.getTime() + (settings.minSessionTimeout * 60000));
		globals.warnAt = new Date(globals.expireAt.getTime() - (settings.secWarningDuration * 1000));
	}	
	
	function shutdown(){
		alert('Your session has expired.');
		clearInterval(globals.objTimer);
		window.onmousemove = null;
		window.onclick = null;
		window.onkeypress = null;
        window.location = "/logout.do?sysparm_goto_url=/wrp";
		
	}
	
	//refresh last user input datetime, if dialog is open when user becomes active close dialog and perform heartbeat
	function clientAction(){
		globals.lastClientAction = new Date();
		if (globals.expireAt != null && globals.expireAt.getTime() < globals.lastClientAction.getTime()){
			//expired, shut it down
			shutdown();
		}
	}
	
	//monitor browser input events to to indicate user is active
	window.onmousemove = clientAction;
	window.onclick = clientAction;
	window.onkeypress = clientAction;
	
}());