////////////////////////////////// LOGIN FUNCTIONS

var browserType;
var loginForm;
var view;
var userXML;
var loginstatus;
var loginrights;
var timestamp;
var loggedin = false;
var timedcheck;

function submitLogin(id) {
	browserCheck();
	loginForm = document.getElementById(id).parentNode;
	// COUNTS EACH ELEMENT, INCLUDING TEXT AND TAGS ("Username", "<br />", etc.)
	var u = document.getElementById('usr').value;
	var p = document.getElementById('psw').value;
	
	var url = "/includes/validatelogin.php?timeStamp=" + new Date().getTime();
	var verifypass = "usr=" + u + "&psw=" + p;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
	http_request.send(verifypass);
	http_request.onreadystatechange = function() {

		if (http_request.readyState == 4 && http_request.status == 200) {
			
			loginstatus = "invalid";
			
			userXML = http_request.responseXML.documentElement;
			loginstatus = userXML.getElementsByTagName('status')[0].firstChild.nodeValue;
			
			if (loginstatus == "valid") {
				loggedin = true;
				document.getElementById('loginroot').style.display = "none";
				document.getElementById('loginmsg').innerHTML = "Authorized";
				
				/*
				 *   NEED SESSION HANDLING
				 *   RESETS COUNTER WHEN ON MOUSE MOVE OR KEY DOWN
				 */			
				// CLEAR PASSWORD FIELDS
				document.getElementById('psw').value = "";
				var view = "block";
				setWindows(view);
				setSession();
			} else if (loginstatus == "invalid") {
				document.getElementById('loginmsg').innerHTML = "Incorrect login information";
				// CLEAR LOGIN DATA FOR REENTRY
				document.getElementById('usr').value = "";;
				document.getElementById('psw').value = "";;
				document.getElementById('usr').focus();
			} else {
				document.getElementById('loginmsg').innerHTML = "Unknown user status.";
			}
		} else {
			document.getElementById('loginmsg').innerHTML = "Waiting for server response.";
		}
	};
}

function setLock() {
	loggedin = false;
	document.getElementById('timeout').innerHTML = "Session timer";
	// MAKE HIDDEN
	view = "none";
	setWindows(view);
	
	// TOGGLE BETWEEN LOGIN FORM AND SESSION LOCK LINK
	document.getElementById('loginroot').style.display = "block";
	var loginForm = document.getElementById('loginform');
	document.getElementById('psw').focus();
	document.getElementById('loginmsg').innerHTML = "Session Locked";
	document.getElementById('space').style.cssText = "";
}

function setWindows(view) {
	rights = userXML.getElementsByTagName('rights');
	for (i=0; i<rights.length; i++) {
		// RETURNED XML NAMES THE DIV IDS TO MAKE VISIBLE
		document.getElementById(rights[i].childNodes[0].nodeValue).style.display = view;
		document.getElementById(rights[i].childNodes[0].nodeValue).style.zIndex = i;
	}
	// SHOW THE LOCK BUTTON
	document.getElementById('logoutroot').style.display = view;
	var cssVars = userXML.getElementsByTagName('cssvars');
	var cssUser = "";
	for (i=0; i<cssVars.length; i++) {		
		cssUser = cssUser + " " + cssVars[i].childNodes[0].nodeValue;
	}
	document.getElementById('space').style.cssText = cssUser;
	return true;
}

function entListener(event, id) {
	// IF USING ENTER KEY INSTEAD OF LOGIN BUTTON TO LOG IN
	if (event.keyCode == 13) {
		submitLogin(id);
		return false;
	} else {
		return true;
	}
}

function initPage() {
	document.getElementById('usr').value = "";
	document.getElementById('psw').value = "";
	document.getElementById('usr').focus();
}

function mouseListener() {
	if (loggedin) {
		document.getElementById('loginmsg').innerHTML = new Date().getTime();
		setSession();
	}
}

function setSession() {
	timestamp = new Date().getTime();
	document.cookie = "time=" + timestamp;
	clearTimeout(timedcheck);
	checkSession();
}

function checkSession() {
	if (loggedin) {
		var timenow =  new Date().getTime();
		var timeCookie = getCookieData('time');
		var diff = timenow - timeCookie;
		var maxdiff = 600000;
		document.getElementById('timeout').innerHTML = "Time remaining : " + Math.ceil((maxdiff - diff)/60000) + " minutes";
		if (Math.ceil(diff) >= Math.ceil(maxdiff)) {
			clearTimeout(timedcheck);
			setLock();
		} else {
			timedcheck = setTimeout('checkSession()', 10000);
		}
	}
	return true;
}

function getCookieData(labelName) {
	var labelLen = labelName.length;
	var cookieData = document.cookie;
	var cLen = cookieData.length;
	var cEnd;
	for (var i=0; i<cLen; i++) {
		var j = i + labelLen;
		if (cookieData.substring(i,j) == labelName) {
			cEnd = cookieData.indexOf(";", j);
			if (cEnd == -1) {
				cEnd = cookieData.length;
			}
			return unescape(cookieData.substring(j+1, cEnd));
		}
	}
	return "";
}
