// JavaScript Document

function createXHR() {
	if (typeof XMLHttpRequest != "undefined") {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		var aVersions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0" ];
		
		for (var i=0; i<aVersions.length; i++) {
			try {
				var oXHR = new ActiveXObject(aVersions[i]);
				return oXHR;
			} catch(oError) {
				//Do nothing
			}
		}
	}
	throw new Error("XMLHttp object could not be created.");
}//end createXHR		

/* --------------------------------
| FUNCTION:	usrReg_submit()
| CREATED:	
| MODIFIED:	2/22/09 - updated to handle PHP response that email is already registered
|			3/16/08
| AUTHOR:	Seth DeSantis		
| PURPOSE: 
|-------------------------------- */


function usrReg_submit() {

	//BEGIN get input values
	
	var fname = document.getElementById("fname");
	var lname = document.getElementById("lname");
	var bday_m = document.getElementById("bday_m");
	var bday_d = document.getElementById("bday_d");
	var bday_y = document.getElementById("bday_y");
	var email1 = document.getElementById("email1");
	var email2 = document.getElementById("email2");
	var pass1 = document.getElementById("pass1");
	var pass2 = document.getElementById("pass2");
	
	//END get input values
	
	var reg_alert = document.getElementById("reg_alert");		//get alert div, to be used if there are any errors with input values
	reg_alert.innerHTML="";										//clear any error messages from previous try
	var error = 0;												//variable to track if there are errors
	
	var regE1 = /^([a-zA-Z])+$/	 													//regular expression, fname and lname
	var regE2 = /^[0-9]{2}$/														//regular expression, bday_m and bday_d
	var regE3 = /^[0-9]{4}$/														//regular expression, bday_y
	var regE4 =/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/	//regular expression, email
				
	if (!regE1.test(fname.value)){					//if value doesn't validate against expression
		error = 1;
		fname.style.backgroundColor="#FF99CC";
		reg_alert.innerHTML="error with first name <br />";
		
	} else {
		fname.style.backgroundColor="#FFFFFF";
	}
	
				
	
	if (!regE1.test(lname.value)){					//if value doesn't validate against expression
		error = 1;
		lname.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "error with last name <br />";
		
	} else {
		lname.style.backgroundColor="#FFFFFF";
	}
	
	if (!regE2.test(bday_m.value)){					//if value doesn't validate against expression
		error = 1;
		bday_m.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "error with birthday month, use MM format <br />";
		
	} else {
		bday_m.style.backgroundColor="#FFFFFF";
	}
	
	if (!regE2.test(bday_d.value)){					//if value doesn't validate against expression
		error = 1;
		bday_d.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "error with birthday day, use DD format <br />";
		
	} else {
		bday_d.style.backgroundColor="#FFFFFF";
	}
	
	if (!regE3.test(bday_y.value)){					//if value doesn't validate against expression
		error = 1;
		bday_y.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "error with birthday year, use YYYY format <br />";
		
	} else {
		bday_y.style.backgroundColor="#FFFFFF";
	}
	
	if (!regE4.test(email1.value)){					//if value doesn't validate against expression
		error = 1;
		email1.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "error with email, invalid format <br />";
		
	} else {
		email1.style.backgroundColor="#FFFFFF";
	}
	
	if (email1.value != email2.value) {
	error = 1;
	email1.style.backgroundColor="#FF99CC";
	email2.style.backgroundColor="#FF99CC";
	cur_alert = reg_alert.innerHTML;
	reg_alert.innerHTML=cur_alert + "email addresses do not match <br />";
		
	} else {
		
		email2.style.backgroundColor="#FFFFFF";
	}
	
	if (pass1.value != "")	{
		if (pass1.value != pass2.value) {
		error = 1;
		pass1.style.backgroundColor="#FF99CC";
		pass2.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "passwords do not match <br />";
			
		} else {
			
			pass1.style.backgroundColor="#FFFFFF";
			pass2.style.backgroundColor="#FFFFFF";
		}
	} else {
		error = 1;
		pass1.style.backgroundColor="#FF99CC";
		cur_alert = reg_alert.innerHTML;
		reg_alert.innerHTML=cur_alert + "please enter a password <br />";
	
	}
	if (error == 1) {
		usrLog('USER ALERT','registration: '+reg_alert.innerHTML);
		reg_alert.style.display="";
		
	} else if (error == 0) {			//if no errors
	reg_alert.style.display="";
	reg_alert.innerHTML = "thinking...";
	
	var oXHR = createXHR();
	
		oXHR.open("post", "ajax/usrReg_addUser.php", true);
		
		var bday = bday_m + "-" + bday_d + "-" + bday_y;
		
		var sBody = 
		"fname="+encodeURIComponent(fname.value)+
		"&lname="+encodeURIComponent(lname.value)+
		"&bday="+encodeURIComponent(bday)+
		"&email="+encodeURIComponent(email1.value)+
		"&pass="+encodeURIComponent(pass1.value);
		
		oXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		oXHR.setRequestHeader("Content-length", sBody.length);
		oXHR.setRequestHeader("Connection", "close"); 
		
		
		oXHR.onreadystatechange = function() {
				if (oXHR.readyState == 4) {
					if (oXHR.status == 200) {
						if (oXHR.responseText == '1') {		//if user updated succesful
							usrLog('REGISTRATION','SUCCESS')
							display_usrReg2();
						} else if (oXHR.responseText == '-1') {		//error -1 : user email already exists
							usrLog('USER ALERT','registration: duplicate email')
							document.getElementById("usrReg1").innerHTML="";
							var div_error = document.createElement("div");
							div_error.innerHTML = "Your email address is already registered, to recover your password plase click the link below: ";
							document.getElementById("usrReg1").appendChild(div_error);
							
							var a_recPas = document.createElement("a");
							a_recPas.innerHTML="password reset";
							a_recPas.href="/s9/pass/";
							document.getElementById("usrReg1").appendChild(a_recPas);
						
						} else {
							document.getElementById("reg_alert").innerHTML = "Error updating user"+oXHR.responseText;
							usrLog('ERROR','registration')
						}
					} else {
						document.getElementById("reg_alert").innerHTML = "Error updating user"+oXHR.responseText;
						usrLog('ERROR','registration')
					}
				}
			};
		
			//Send the request
			oXHR.send(sBody);
	} //end of IF EVERYTHING IS OK with input
	

}