String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
function checkUsername(username) {
	if(username.match(/[^a-zA-Z0-9_]/)) 
		return false;
	else 
		return true;
}
function fetch_object(idname) {
	if (document.getElementById)
		obj = document.getElementById(idname);
	else if (document.all)			
		obj = document.all[idname];			
	else if (document.layers)
		obj = document.layers[idname];			
	return obj;
}
function validEmail(field) {
	var goodEmail = field.value.match(/\b(^(\S+@).+((\.biz)|(\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
	if (!goodEmail){
	   alert("Please enter a valid e-mail address.");
	   field.focus();
	   field.select();
	   return false;
	  }
	return true;
}
function checkLogin() {
	if(fetch_object("login").username.value=="") {
		alert(" Please enter your user name.  ");
		fetch_object("login").username.focus();
		return false;
	}
	if(fetch_object("login").password.value=="") {
		alert(" Please enter the password.  ");
		fetch_object("login").password.focus();
		return false;
	}
	
	xmlhttpPost('login.ajax.php','login','error_login');
	return false;
}
function exAccount() {
		fetch_object("registerForm").style.display="block";
		fetch_object("loginForm").style.display="none";
		fetch_object("register").username.focus();
}

function checkRegister() {
	username = fetch_object("register").username.value.trim();
	password = fetch_object("register").passwordA.value;
	if(username=="") {
		alert(" Please enter your name.  ");
		fetch_object("register").username.focus();
		return false;
	}
	if(username.length<5 || username.length>25) {
		alert(" User name must between 5 and 25 characters. ");
		fetch_object("register").username.focus();
		return false;
	}	
	if(!checkUsername(username)) {
		alert(" User name must be letters and/or numbers.");
		fetch_object("register").username.focus();
		return false;
	}	
	
	if(password=="") {
		alert(" Please enter the password.  ");
		fetch_object("register").passwordA.value="";
		fetch_object("register").passwordA.focus();
		return false;
	}
	if(!checkUsername(password))  {
		alert(" Password must be letters and/or numbers. ");
		fetch_object("register").passwordA.value="";
		fetch_object("register").passwordA.focus();
		return false;
	}	
	if(password.length<5 || password.length>15) {
		alert(" The length of password must be between 5 and 15.  ");
		fetch_object("register").passwordA.value="";
		fetch_object("register").passwordA.focus();
		return false;
	}	
	if(fetch_object("register").passwordB.value=="") {
		alert(" Please verify the password.  ");
		fetch_object("register").passwordB.focus();
		return false;
	}	
	if(fetch_object("register").passwordA.value!=fetch_object("register").passwordB.value) {
		alert(" The passwords do not match.  ");
		fetch_object("register").passwordB.value="";
		fetch_object("register").passwordB.focus();
		return false;
	}
	
	if(!validEmail(fetch_object("register").email)) return false;
	
	if(fetch_object("register").city.value=="") {
		alert(" Please enter the city field .  ");
		fetch_object("register").city.focus();
		return false;
	}	
	if(fetch_object("register").province.value=="") {
		alert(" Please select a province .  ");
		fetch_object("register").province.focus();
		return false;
	}
	if(fetch_object("register").gender.value=="") {
		alert(" Gender is a required field.  ");
		fetch_object("register").gender.focus();
		return false;
	}	
	if(fetch_object("register").req_check.checked!=true) {
		alert(" You have to agree with the terms .  ");
		fetch_object("register").req_check.focus();
		return false;
	}	
	if(fetch_object("register").req_guide.checked!=true) {
		alert(" You have to read the forum guideline .  ");
		fetch_object("register").req_guide.focus();
		return false;
	}
	xmlhttpPost('login.ajax.php','register','error_register');

}

function xmlhttpPost(strURL,formID,dispID) {
	var xmlHttpReq = false;
	var self = this;
	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		self.xmlHttpReq = new XMLHttpRequest();
		//self.xmlHttpReq.overrideMimeType("text/xml");
	}
	// IE
	else if (window.ActiveXObject) {
		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	self.xmlHttpReq.open("POST", strURL, true);
	self.xmlHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	self.xmlHttpReq.onreadystatechange = function() {
		if (self.xmlHttpReq.readyState == 4) {
			updatepage(self.xmlHttpReq.responseText,dispID);
		}
	}
	self.xmlHttpReq.send(getquerystring(formID));
}

function getquerystring(formID) {
	var qstr= "";
	obj = document.getElementById(formID);
	for(i=0;i<obj.length;i++) {
		qstr+=obj[i].name+"="+escape(obj[i].value)+"&";
	}
	return qstr;
}
function updatepage(str,dispID){
	if(str=="101") {
		document.getElementById(dispID).innerHTML = "Wrong username or password, please try again";
		document.getElementById("login").password.value = '';
		fetch_object("loginForm").style.display="block";
		fetch_object("registerForm").style.display="none";
		fetch_object("login").username.focus();
	}
	else if(str=="103") {
		document.getElementById(dispID).innerHTML = "User name or email has been taken. Try again.";
		fetch_object("registerForm").style.display="block";
		fetch_object("loginForm").style.display="none";
		fetch_object("register").username.focus();
	}
	else if(str=="104") {
		alert("The user name is available.");
		fetch_object("register").passwordA.focus();
		fetch_object("register").todo.value="REG";		
	}	
	else if(str=="105") {
		alert("The user name is NOT available.");
		fetch_object("register").username.select();
		fetch_object("register").username.focus();
		fetch_object("register").todo.value="REG";	
	}
	else if(str=="106") {
		alert("The email address is available.");
		fetch_object("register").city.focus();
		fetch_object("register").todo.value="REG";		
	}	
	else if(str=="107") {
		alert("The email address is NOT available.\nPlease use another one.");
		fetch_object("register").email.select();
		fetch_object("register").email.focus();
		fetch_object("register").todo.value="REG";	
	}
	else if(str=="108") {
		alert("User name must be letters and/or numbers.");
		fetch_object("register").username.select();
		fetch_object("register").username.focus();
		fetch_object("register").todo.value="REG";	
	}
	else if(str=="109") {
		alert("User name must be between 5-25 charactors.");
		fetch_object("register").username.select();
		fetch_object("register").username.focus();
		fetch_object("register").todo.value="REG";	
	}	
	else if(str=="110") {
		alert("Password must be letters and/or numbers.");
		fetch_object("register").passwordA.select();
		fetch_object("register").passwordA.focus();
		fetch_object("register").todo.value="REG";	
	}
	else if(str=="111") {
		alert("Password must be between 5-15 charactors.");
		fetch_object("register").passwordA.select();
		fetch_object("register").passwordA.focus();
		fetch_object("register").todo.value="REG";	
	}	
	else if(str=="test") {
		alert("something wrong.");
	}
	else {
		//document.getElementById(dispID).innerHTML = str;
		window.location = str;
	}
}
function checkAvailability(what) {
	if(what=="email") {
		if(!validEmail(fetch_object("register").email)) 
			return false;
	}
	else if(what=="username") {
		if(fetch_object("register").username.value=="") {
			alert("User name can't be empty.");
			return false;
		}
	}
	fetch_object("register").todo.value=what;
	xmlhttpPost('login.ajax.php','register','error_register');
}

