// keyPressed - returns the numerical keycode of the key pressed (ENTER=13)
function keyPressed(ev) {
	// IE
	if(window.event)
		return window.event.keyCode;
	// Firefox
	else
		return ev.which;
}

// ajaxLogin - ajax login function
function ajaxLogin(target) {
	var xmlHttp, response;
	
	try {
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) {
			try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (e) {
      		alert("Your browser does not support AJAX! Load Firefox or Internet Explorer.");
      		return false;
    		}
		}
	}
		
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			response = xmlHttp.responseText;
			// login ok
			if(response==0) {
				document.getElementById('login').style.visibility='hidden';
				alert("Login successful!");
				//document.getElementById('silhouette').style.visibility='hidden';
				//document.getElementById('content').style.overflow='visible';
				window.location.reload();
			}
			// invalid login
			else if(response==1) {		
				document.getElementById('netid').value = '';
				document.getElementById('pass').value = '';
				document.getElementById('but_login').value = 'LogIn';
				document.getElementById('but_login').disabled = false;
				alert("Invalid username or password! Try again.");
				document.getElementById('netid').focus();
			}
			// database error
			else if(response==2) {
				document.getElementById('netid').value = '';
				document.getElementById('pass').value = '';
				document.getElementById('but_login').value = 'LogIn';
				document.getElementById('but_login').disabled = false;
				alert("Database error! Contact administrator.");
				document.getElementById('netid').focus();
			}
			// misc error
			else {
				document.getElementById('netid').value = '';
				document.getElementById('pass').value = '';
				document.getElementById('but_login').value = 'LogIn';
				document.getElementById('but_login').disabled = false;
				alert("Error! Contact administrator.");
				document.getElementById('netid').focus();
			}
		}
	}
	
	xmlHttp.open("GET", target, true);
	xmlHttp.send(null);
}

// ajaxRecovery - ajax login function
function ajaxRecovery(target) {
	var xmlHttp, response;
	
	try {
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) {
			try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (e) {
      		alert("Your browser does not support AJAX! Load Firefox or Internet Explorer.");
      		return false;
    		}
		}
	}
		
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			response = xmlHttp.responseText.split("|");
			// recovery succeeded
			if(response[0]==0) {
				document.getElementById('recovery').style.visibility='hidden';
				alert(response[1]);
				//document.getElementById('silhouette').style.visibility='hidden';
				//document.getElementById('content').style.overflow='visible';
				window.location.reload();
			}
			// recovery failed - invalid netid
			else if(response[0]==1) {		
				document.getElementById('inpt').value = '';
				document.getElementById('but_recov').value = 'Submit';
				document.getElementById('but_recov').disabled = false;
				alert("Invalid username!");
				document.getElementById('inpt').focus();
			}
			// recovery step 2 - request response
			else if(response[0]==2) {		
				document.getElementById('nid_recov').value = response[1];
				document.getElementById('resp').innerHTML = response[2];
				document.getElementById('inpt').value = '';
				document.getElementById('but_recov').value = 'Submit';
				document.getElementById('but_recov').disabled = false;
				document.getElementById('inpt').focus();
			}
			// recovery failed - invalid response
			else if(response[0]==3) {
				document.getElementById('inpt').value = '';
				document.getElementById('but_recov').value = 'Submit';
				document.getElementById('but_recov').disabled = false;
				alert("Invalid response!");
				document.getElementById('inpt').focus();
			}
			// recovery failed - no response provided
			else if(response[0]==4) {
				document.getElementById('inpt').value = '';
				document.getElementById('but_recov').value = 'Submit';
				document.getElementById('but_recov').disabled = false;
				alert("Password cannot be recovered since you never provided a secret question and answer. Please contact the administrator to have your password reset.");
				document.getElementById('inpt').focus();
			}
			// database error
			else if(response[0]==5) {
				document.getElementById('inpt').value = '';
				document.getElementById('but_recov').value = 'Submit';
				document.getElementById('but_recov').disabled = false;
				alert("Database error! Contact administrator.");
				document.getElementById('inpt').focus();
			}
			// misc error
			else {
				document.getElementById('inpt').value = '';
				document.getElementById('but_recov').value = 'Submit';
				document.getElementById('but_recov').disabled = false;
				alert("Error! Contact administrator.");
				document.getElementById('inpt').focus();
			}
		}
	}
	
	xmlHttp.open("GET", target, true);
	xmlHttp.send(null);
}

// doLogin - perform the login operation
function doLogin(sid) {
	var n = document.getElementById('netid').value;
	var p = document.getElementById('pass').value;
	document.getElementById('but_login').value='Wait...';
	document.getElementById('but_login').disabled=true;
	ajaxLogin('process_login.php?netid='+n+'&pass='+hex_md5(p)+'&sid='+sid);
}

// showLogin - shows the login element
function showLogin() {
	document.getElementById('content').style.overflow='hidden';
	document.getElementById('silhouette').style.visibility='visible';
	document.getElementById('login').style.visibility='visible';
	document.getElementById('netid').focus();
}

// closeLogin - closes the login element
function closeLogin() {
	document.getElementById('content').style.overflow='visible';
	document.getElementById('silhouette').style.visibility='hidden';
	document.getElementById('login').style.visibility='hidden';
}

// doRecovery - perform the login operation
function doRecovery(sid) {
	var n = document.getElementById('nid_recov').value;
	var i = document.getElementById('inpt').value;
	document.getElementById('but_recov').value='Wait...';
	document.getElementById('but_recov').disabled=true;
	ajaxRecovery('process_recovery.php?netid='+n+'&inpt='+i+'&sid='+sid);
}

// showRecovery - shows the password recovery element
function showRecovery() {
	document.getElementById('login').style.visibility='hidden';
	document.getElementById('recovery').style.visibility='visible';
	document.getElementById('inpt').focus();
}

// closeRecovery - closes the password recovery element
function closeRecovery() {
	document.getElementById('content').style.overflow='visible';
	document.getElementById('silhouette').style.visibility='hidden';
	document.getElementById('recovery').style.visibility='hidden';
}