/*************************************************
 File			: Login.js
 Description: Script to login to the program
 Date			: 5/31/2008
 Project		: NML Timer
 ================================================
 Updates:
*************************************************/

var intTryNumber=0;

function ClearCookie() {
	var strSessionCookie = "NMLSessionID=-1;expires=1 Jan 1980 07:00:00 UTC;path=/";
	if (typeof(cookiePath)!="undefined") {
   	strSessionCookie = "NMLSessionID=-1;expires=1 Jan 1980 07:00:00 UTC;path=" + escape(cookiePath);
	}
	if ((typeof(secureCookie)!="undefined") && (secureCookie)) strSessionCookie += ";secure";
	document.cookie = strSessionCookie;
}

function Login() {
	// Check that we have all the data we need
	if ((document.getElementById('FirstName')) && (document.getElementById('FirstName').value.trim()=="")) {
		alert("You must enter your first name.");
		return;
	}
	if ((document.getElementById('LastName')) && (document.getElementById('LastName').value.trim()=="")) {
		alert("You must enter your last name.");
		return;
	}
	if (((document.getElementById("DOB")) && (document.getElementById("DOB").value.trim()=="")) ||
	    ((document.getElementById('Identifier')) && (document.getElementById('Identifier').value.trim()==""))) {
		alert(warnMissingIdentifier);
		return;
	}
	
	// If there is custom code for the login
	if (window.VerifyLogin_CustomCode) {
		if (!VerifyLogin_CustomCode()) {
			return;
		}
	}
	
	var Identifier = null;
	if (document.getElementById("DOB")) Identifier = document.getElementById("DOB").value;
	if (document.getElementById('Identifier')) Identifier = document.getElementById('Identifier').value;
	
	document.getElementById('LogingButtonsDiv').style.display = "none";
	document.getElementById('LoggingIn').style.display = "";
	
	// Check for an existing cookie
	var tempSessionId = readCookie("NMLSessionID");
	if ((tempSessionId!=null) && (tempSessionId.trim()!="") && (tempSessionId.trim()!="-1")) {
		alert(alreadyLoggedIn);
		document.getElementById('LogingButtonsDiv').style.display = "";
		document.getElementById('LoggingIn').style.display = "none";
		return;
	}

	http_request = getHttpRequest();
	
	if (http_request==null) {
		alert(errMsgNoWebService);
		return;
	}
	
	var parameters = "Handle=" + encodeURIComponent(handle) + "&Program=" + encodeURIComponent(program) +
		"&Version=" + encodeURIComponent(progVer) + 
		"&FirstName=" + encodeURIComponent(document.getElementById('FirstName').value) +
		"&LastName=" + encodeURIComponent(document.getElementById('LastName').value) + 
		"&Identifier=" + encodeURIComponent(Identifier) + "&AJAX=true";
	if ((typeof(progLicenseTest) != "undefined") && (progLicenseTest)) {
		parameters += "&CheckLicense=true";
	}
	
	http_request.onreadystatechange = LoginResults;
   http_request.open('POST', loginService, true);
   http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   http_request.setRequestHeader("Content-length", parameters.length);
   http_request.setRequestHeader("Connection", "close");
   http_request.send(parameters);
}

function LoginResults() {
	if (http_request.readyState == 4) {
      if (http_request.status == 200) {
         //alert(http_request.responseText);
         var result = http_request.responseText.split("|");
			var resultNum = result[0].trim();
			if (parseInt(resultNum) < 1) {
				if (parseInt(resultNum)==-100) {
					// No licenses left
					alert("There are no more licenses available for this course. Please contact support.");
					document.getElementById('LoggingIn').innerHTML = "There are no more licenses available for this course. Please contact support.";
					return;
				}
				// There was an error either getting or creating this user in the DB
				intTryNumber++;
				var MaxTries = 1;
				if (typeof(loginTries)!='undefined') MaxTries = loginTries;
				if (intTryNumber < MaxTries) {
					// Try again in case it was a server error
					Login();
					return;
				}
				alert("There was an error logging you in, please refresh and try again. Error: " + result[1].trim());
				return;
			}
			var resultID = result[1].trim();
			var resultPage = result[2].trim();
			var resultExists = result[3].trim();
			var resultCanLogin = "true";
			// Set a cookie with the session ID
			var strSessionCookie = "NMLSessionID=" + escape(resultID) + ";path=" + escape(cookiePath);
			if (secureCookie) strSessionCookie += ";secure";
			document.cookie = strSessionCookie;
			// Check to see if they want to return to where they last were
			if ((resultExists=="true") && (resultPage!="-1")) {
				var resultLastSeen = new Date(result[4].trim());
				document.getElementById('LastSeen').value = resultLastSeen.getMonthName() + " " + resultLastSeen.getDate() + ", " + resultLastSeen.getFullYear() + " at " + resultLastSeen.getHours() + ":" + AddLeadingZero(resultLastSeen.getMinutes());
				document.getElementById('LastPage').value = resultPage;
				document.getElementById('LoginForm').action = welcomeBackPage;
				
				//alert("LastSeen: " + resultLastSeen + " LastPage: " + resultPage);
				document.getElementById('LoginForm').submit();
			} else if (resultExists=="true") {
				// User was likely added in the program
				document.getElementById('LoginForm').action = firstPageUserExists;
				document.getElementById('LoginForm').submit();
			} else {
				//alert("Exists: " + resultExists + " Redirect to: " + resultPage);
				document.getElementById('LoginForm').action = firstPage;
				document.getElementById('LoginForm').submit();
			}	
      } else {
			// Problem with the request
			intTryNumber++;
			var MaxTries = 1;
			if (typeof(loginTries)!='undefined') MaxTries = loginTries;
			if (intTryNumber < MaxTries) {
				// Try again in case it was a server error
				Login();
				return;
			}
			alert("There was an error logging you in, please refresh and try again.");
			document.getElementById('LogingButtonsDiv').style.display = "";
			document.getElementById('LoggingIn').style.display = "none";
      }
   }
}
