
function verifyLogin() {
	setInnerHTML("loginMessage","Validating login...");
	var un=document.getElementById('username').value;
	var pw=document.getElementById('password').value;
	var vars="cmd=loginverify&un="+un+"&pw="+pw;
	sendPostRequest("/user.php",vars,verifyReceived);
}
function verifyReceived(reply) {
	if (reply=="FAILED") {
		setInnerHTML("loginMessage","Incorrect login details");
	}else{
		if (reply.length>15) {
			setInnerHTML("loginMessage",reply);
		}else{
			setInnerHTML("loginMessage","Processing login...");
			var un=document.getElementById('username').value;
			var pw=document.getElementById('password').value;
			var vars="cmd=login&un="+un+"&pw="+pw+"&sec="+reply;
			sendPostRequest("/user.php",vars,loggedin);
		}
	}
}
function loggedin(reply) {
	if (reply=="loggedin") {
		setInnerHTML("loginMessage","Logged in...");
		window.location.reload();
	}else{
		setInnerHTML("loginMessage","Incorrect login details");
	}
}
function logoff(src) {
	setInnerHTML(src.id,"Logging off..");
	var vars="cmd=logout";
	sendPostRequest("/user.php",vars,logoutReceived);
}
function logoutReceived(reply) {
	if (reply=="ok") {
		window.location.reload();
	}
}
function expandDivName(id) {
	var details=document.getElementById(id);
	if (details!=null) {
		if (details.style.display=="none") {
			expandDiv(details);
		}
	}
}
function drawBox(width,content,frameid,contentid,closeFunction) {
	reply="<table cellpadding=0 cellspacing=0";
	if (width!=null) {
		reply+=" width=\""+width+"px\" style=\"width:"+width+"px;";
	}else{
		reply+=" style=\"";
	}
	reply+="position:absolute;z-index:2;overflow:visible\" id=\""+frameid+"\">";
	reply+="<tr><td class=\"ftl\" /><td class=\"ft\" /><td class=\"ftr\">";
	reply+="</td></tr>";
	reply+="<tr><td class=\"fl\" /><td class=\"fc\">"
	if (closeFunction!=null) {
		reply+="<span class=\"link\" onclick=\""+closeFunction+"\" />close</span>";
	}else{
		reply+="<span class=\"link\" onclick=\"startFadeDown();removeTheNode('"+frameid+"')\" />close</span>";
	}
	reply+="</td><td class=\"fr\" /></tr>";
	reply+="<tr><td class=\"fl\" /><td class=\"fc\" id=\""+contentid+"\">"+content+"</td><td class=\"fr\" /></tr>";
	reply+="<tr><td class=\"fbl\" /><td class=\"fb\" /><td class=\"fbr\" /></tr>";
	reply+="</table>";
	return reply;
}
function checkValidEmail(src) {	
	val=src.value;
    alpharegex=new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
    ok=alpharegex.test(val);
	if (ok) {
		src.className="normalinput";
		setInnerHTML(src.id+"Alert","");
		sendPostRequest("user.php","cmd=emailavailable&userem="+val,emailChecked);
	}else{
		src.className="failedinput";
		setInnerHTML(src.id+"Alert","Not a valid email format");
	}
	return ok;
}
function emailChecked(reply) {
	if (reply=="OK") {
		document.getElementById("registeremail").className="normalinput";
		setInnerHTML("registeremailAlert","");
	}else{
		document.getElementById("registeremail").className="failedinput";
		setInnerHTML("registeremailAlert",reply);
	}
}
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";
			setInnerHTML(src.id+"Alert","Must be at least "+minlength+" characters");
			ok=false;
		}else{
			src.className="normalinput";
			setInnerHTML(src.id+"Alert","");
		}			
	}else{
		src.className="failedinput";
		setInnerHTML(src.id+"Alert","Only use alphanumeric characters");
	}
	return ok;
}
function registerme() {
	ok=true;
	if (!isUsernameAvailable(document.getElementById("registerusername"))) ok=false;
	if (!checkvalidinput(document.getElementById("registerpassword"),true,6)) ok=false;
	if (!checkValidEmail(document.getElementById("registeremail"))) ok=false;
	if (document.getElementById("registerusername").value=="" || document.getElementById("registerusernameAlert").innerHTML!="") ok=false;
	if (document.getElementById("registerpassword").value=="" || document.getElementById("registerpasswordAlert").innerHTML!="") ok=false;
	if (document.getElementById("registeremail").value=="" || document.getElementById("registeremailAlert").innerHTML!="") ok=false;
	if (ok) {
		vars="usernom="+document.getElementById("registerusername").value;
		vars+="&cmd=register";
		vars+="&userpw="+document.getElementById("registerpassword").value;
		vars+="&userem="+document.getElementById("registeremail").value;
		setInnerHTML("registerAlert","Registering...");
		sendPostRequest("user.php",vars,registered);
	}else{
		setInnerHTML("registerAlert","Attention required!");
	}
}
function registered(reply) {
	if (reply=="ok") {
		setInnerHTML("registerform","Congratulaions!<br />You are now registered.<br />You have been sent an email with a validation link,<br />click that link to activate your login.");
	}else{
		setInnerHTML("registerAlert",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() {
	toInsert="<div style=\"border-top:1px solid #626c6f;margin-top:4px;text-align:left\"><b>Forgotten password</b></div>";
	toInsert+="<div style=\"text-align:center\">Enter your email address<br /><input type=\"text\" onkeydown=\"pressingEnter(event,requestPassword)\" id=\"findEmail\" value=\"\" /><br />";
	toInsert+="<div id=\"forgotControl\"><div class=\"buttonDiv\" onclick=\"requestPassword()\">Email me my password</div></div></div>";
	//startFadeUp();
	//pasteRawHTML(drawBox(300,toInsert,"forgotform","forgotcontents",null),document.body);
	//centerObject(document.getElementById("forgotform"));
	setInnerHTML("forgotContainer",toInsert);
}
function requestPassword(){
    alpharegex=new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
    ok=alpharegex.test(document.getElementById("findEmail").value);
	if (ok) {
		document.getElementById("forgotControl").innerHTML="Requesting...";
		sendPostRequest("user.php","cmd=forgot&userem="+document.getElementById("findEmail").value,forgotReceived);
	}else{
		alert("The supplied email is not a valid format");
	}
}
function forgotReceived(reply) {
	reply="<div class=\"buttonDiv\" onclick=\"requestPassword()\">Email me my password</div>"+reply;
	setInnerHTML("forgotControl",reply);
}

function pressingEnter(e,handler) {
    if (window.event)
    {
        e=window.event;
        keycode=window.event.keyCode;
    }else{
        keycode=e.which;
    }
	if (keycode==13) handler();
}

function expand(src){
	var details=document.getElementById(src.id+"menu");
	if (details!=null) {
		if (src.className=="closeMenu") {
			src.className="openMenu";
			expandThisObj(details, false, true)
			divs=details.parentNode.parentNode.getElementsByTagName("DIV");
			for(i=0;i<divs.length;i++) {
				if (divs[i].id.substr(divs[i].id.length-4,4)=="menu" && divs[i]!=details) {
					sect=document.getElementById(divs[i].id.replace("menu",""));
					if (sect.className=="openMenu") {
						sect.className="closeMenu";
						collapseThisObj(divs[i], false, true)
					}
				}
			}
		}else{
			src.className="closeMenu";
			collapseThisObj(details, false, true)
		}
	}
}
function addToConversation(lesson,content) {
    sendPostRequest("/user.php","cmd=addConversation&lesson="+lesson+"&posting="+content,refreshLesson);
}
function refreshLesson(reply) {
	window.location.reload();
}
function deletePost(id) {
    sendPostRequest("/user.php","cmd=deletePost&posting="+id,refreshLesson);
}
function resendValidation(un) {
	setInnerHTML("loginMessage","Resending validation...");
	sendPostRequest("/user.php","cmd=resendValidation&un="+un,validationSent);
}
function validationSent(reply) {
	setInnerHTML("loginMessage",reply);
}
	