function checkValidUsername(srcObj) {
	err="";
	if (srcObj.value.length<4) err="At least 4 letters required";
	if (srcObj.value.length>50) err="No more than 50 letters allowed";
	nonan=new RegExp(/[^a-zA-Z0-9 ]/);
	if (nonan.test(srcObj.value)) err="Alphanumeric chatacters only";
	setInnerHTML(srcObj.id+"Alert",err);
	
	srcObj.className=(err=="")?"normalinput":"failedinput";
	return (err=="");
}
var usernameInput=null;
function checkUsername(srcObj) {
	usernameInput=srcObj;
	if (checkValidUsername(srcObj)) {
		sendPostRequest("/index.php","cmd=availableUsername&username="+srcObj.value,usernameReceived);
	}
}
function usernameReceived(reply) {
	if (reply=="ok") {
		usernameInput.className="normalinput"
		setInnerHTML(usernameInput.id+"Alert","");
	}else{
		usernameInput.className="failedinput"
		setInnerHTML(usernameInput.id+"Alert",reply);
	}
}
function confirmWith(srcObj,tar) {
	err=""
	if (objid(tar).value!=srcObj.value) err="Do not match";
	srcObj.className=(err=="")?"normalinput":"failedinput";
	setInnerHTML(srcObj.id+"Alert",err);
}
function verifyLogin() {
	if (checkValidEmail(document.getElementById('username')) && checkValidPassword(document.getElementById('password'))) {
		setInnerHTML("loginMessage","Verifying sign in...");
		var un=document.getElementById('username').value;
		var pw=document.getElementById('password').value;
		var vars="cmd=loginverify&un="+un+"&pw="+pw;
		sendPostRequest("/index.php",vars,verifyReceived);
	}
}
function verifyReceived(reply) {
	if (reply.substr(0,1)=="!") {
		setInnerHTML("loginMessage",reply.replace("!",""));
	}else{
		setInnerHTML("loginMessage","Processing sign in...");
		var un=document.getElementById('username').value;
		var pw=document.getElementById('password').value;
		var vars="cmd=login&un="+un+"&pw="+pw+"&sec="+reply;
		vars+="&remember="+(document.getElementById('remember').checked?"on":"off");
		sendPostRequest("/index.php",vars,loggedin);
	}
}
function loggedin(reply) {
	if (reply=="loggedin") {
		setInnerHTML("loginMessage","Signed in...");
		window.location='/';
	}else{
		setInnerHTML("loginMessage","Incorrect sign in details");
	}
}
function checkValidEmail(val) {	
    alpharegex=new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
    ok=alpharegex.test(val.value);
	if (ok) {
		val.className="normalinput";
		setInnerHTML(val.id+"Alert","");
	}else{
		val.className="failedinput";
		setInnerHTML(val.id+"Alert","Not a valid email format");
	}
	return ok;
}
function checkValidPassword(val) {	
    alpharegex=new RegExp(/^([a-zA-Z0-9]{6,11})$/);
    ok=alpharegex.test(val.value);
	if (ok) {
		val.className="normalinput";
		setInnerHTML(val.id+"Alert","");
	}else{
		val.className="failedinput";
		setInnerHTML(val.id+"Alert","6-11 alphanumeric characters");
	}
	return ok;
}
var emailInput=null;
function validateEmail(src) {
	emailInput=src;
	if (checkValidEmail(src)) sendPostRequest("/index.php","cmd=available&email="+src.value,emailChecked);	
}
function emailChecked(reply) {
	if (reply=="ok") {
		emailInput.className="normalinput";
		setInnerHTML(emailInput.id+"Alert","");
	}else{
		emailInput.className="failedinput";
		setInnerHTML(emailInput.id+"Alert",reply);
	}
}
function register() {
	err=true;
	if (document.getElementById("registeremail").className=="normalinput") {
		if (document.getElementById("confirmemail").className=="normalinput") {
			if (document.getElementById("registerpassword").className=="normalinput") {
				if (document.getElementById("confirmpassword").className=="normalinput") {
					if (document.getElementById("firstname").className=="normalinput") {
						if (document.getElementById("lastname").className=="normalinput") {
							vars="cmd=register";
							vars+="&userpw="+document.getElementById("registerpassword").value;
							vars+="&userem="+document.getElementById("registeremail").value;
							vars+="&userfn="+document.getElementById("firstname").value;
							vars+="&userln="+document.getElementById("lastname").value;
							setInnerHTML("registerMessage","Registering...");
							err=false;
							sendPostRequest("/index.php",vars,registered);
						}
					}
				}
			}
		}
	}
	if (err) dropThisMessage("Not all inputs are valid");
}
function checkvalidinput(src,withSpaces,minlength) {
	val=src.value;
	if (withSpaces) {
    	alpharegex=new RegExp(/^[\.@\/a-zA-Z0-9 ]*$/);
	}else{
    	alpharegex=new RegExp(/^[\.@\/a-zA-Z0-9]*$/);
	}
    ok=alpharegex.test(val);
	if (ok) {
		if (val.length<minlength) {
			src.className="failedinput";
			com="At least "+minlength+" "+((minlength>1)?"characters":"character");
			setInnerHTML(src.id+"Alert",com);
			ok=false;
		}else{
			src.className="normalinput";
			setInnerHTML(src.id+"Alert","");
		}			
	}else{
		src.className="failedinput";
		setInnerHTML(src.id+"Alert","Alphanumeric only");
	}
	return ok;
}
function registered(reply) {
	if (reply=="ok") {
		document.getElementById("registerform").innerHTML="<div style='padding:20px;text-align:center'><h2>Congratulations</h2><br />Your are now registered. You can login with your provided details now.</center>";
		//window.location="/";
	}else{
		setInnerHTML("registerMessage",reply);
	}
}
function isUsernameAvailable(src) {
	un=src.value;
	if (checkvalidinput(src,false,6)) {
		sendPostRequest("user.php","cmd=useravailable&usernom="+un,UsernameChecked);
		return true;
	}else{
		return false;
	}
}
function UsernameChecked(reply){
	if (reply=="OK") {
		document.getElementById("registerusername").className="normalinput";
		setInnerHTML("registerusernameAlert","");
	}else{
		document.getElementById("registerusername").className="failedinput";
		setInnerHTML("registerusernameAlert",reply);
	}
}
function getPassword() {
	if (checkValidEmail(document.getElementById('email'))) {
		setInnerHTML("emailAlert","Requesting...");
		sendPostRequest("index.php","cmd=forgot&userem="+document.getElementById("email").value,forgotReceived);
	}else{
		setInnerHTML("emailAlert","Please provide a valid email address");
	}
}
function forgotReceived(reply) {
	dropThisMessage(reply);
	setInnerHTML("loginMessage","");
	setInnerHTML("emailAlert",reply);
}
function resendValidation(un) {
	setInnerHTML("loginMessage","Resending verification...");
	sendPostRequest("/index.php","cmd=resendValidation&un="+un,forgotReceived);
}
function validationSent(reply) {
	setInnerHTML("loginMessage",reply);
}
