var vpage="index.php?page=verifymail";
var upage="index.php?page=verifyusername";
var epage="index.php?page=validemail";

function XMLObjCreate()
{
	if(window.ActiveXObject)
	{
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if(XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}
	else
	{
		alert('AJAX not supported!');
		return;
	}
}

function isString(obj)
{
	return typeof(obj)=='string';
}

function getObj(obj_id)
{
	return document.getElementById(obj_id);
}

function convertIfNotString(obj)
{
	if(isString(obj))
	{
		return obj;
	}
	else
	{
		return getObj(obj).value;
	}
}


function getLiveEmailCheck(accountEmail)
{
	var verifObj = new XMLObjCreate();
	
	if(!verifObj)
	{	
		alert('AJAX seems to be disabled...');
		return;
	}
	
	if(!validateEmail(getObj(accountEmail)))
	{
		getObj('emailConf').style.display='';
		getObj('emailConfCell').innerHTML='Invalid Email.';
		return;
	}
		
	epage=epage+'&email='+getObj(accountEmail).value;
		
	verifObj.open("GET", epage, true);
	
	verifObj.onreadystatechange=function()
	{
		if(verifObj.readyState==4)
		{
			if(verifObj.status==200) 
			{
				var root = verifObj.responseXML.documentElement;
				if(root!=null)
				{
					if(root.getElementsByTagName('response')[0].firstChild.nodeValue=="1")
					{
						getObj('emailConf').style.display='';
						getObj('emailConfCell').innerHTML='Desired email is valid. You may continue.';
						return;
					}
					else
					{					
						getObj('emailConf').style.display='';					
						getObj('emailConfCell').innerHTML='The email address you entered can not be used.';
						return;
					}
				}
				else
				{
					getObj('emailConf').style.display='';					
					getObj('emailConfCell').innerHTML='AJAX disabled!';
					return;
				}
			}
		}
	};
	
	verifObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	
	
	verifObj.send(null);
	
	return;
}

function getLiveUsernameCheck(accountName)
{	
	var verifObj = new XMLObjCreate();
	
	if(!verifObj)
	{	
		alert('AJAX seems to be disabled...');
		return;
	}
	
	if(!validateUsername(getObj(accountName)))
	{
		getObj('usernameConf').style.display='';
		getObj('usernameConfCell').innerHTML='Invalid Username. Please choose a different username.';
		return;
	}
		
	upage=upage+'&username='+getObj(accountName).value;
		
	verifObj.open("GET", upage, true);
	
	verifObj.onreadystatechange=function()
	{
		if(verifObj.readyState==4)
		{
			if(verifObj.status==200) 
			{
				var root = verifObj.responseXML.documentElement;
				if(root!=null)
				{
					if(root.getElementsByTagName('response')[0].firstChild.nodeValue=="1")
					{
						getObj('usernameConf').style.display='';
						getObj('usernameConfCell').innerHTML='Desired username is valid and available for use.';
						return;
					}
					else
					{					
						getObj('usernameConf').style.display='';					
						getObj('usernameConfCell').innerHTML='Invalid username; already taken. Please choose another username.';
						return;
					}
				}
				else
				{
					getObj('usernameConf').style.display='';					
					getObj('usernameConfCell').innerHTML='AJAX disabled!';
					return;
				}
			}
		}
	};
	
	verifObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	
	
	verifObj.send(null);
	
	return;
}


function getLiveVerif(accountName,accountVCode)
{	
	var verifObj = new XMLObjCreate();
	
	if(!verifObj)
	{		
		alert('AJAX seems to be disabled...');
		return;
	}
	
	if(!verifyUsername(getObj(accountName)))
	{
		getObj('verifConf').style.display='';
		getObj('verifConfCell').innerHTML='INVALID CODE. Please enter the correct Verification Code.';
		return;
	}
	
	if(!verifyVCode(getObj(accountVCode)))
	{
		getObj('verifConf').style.display='';
		getObj('verifConfCell').innerHTML='INVALID CODE. Please enter the correct Verification Code.';
		return;
	}
	
	vpage=vpage+'&username='+getObj(accountName).value+'&v='+getObj(accountVCode).value;
		
	verifObj.open("GET", vpage, true);
	
	verifObj.onreadystatechange=function()
	{
		if(verifObj.readyState==4)
		{
			if(verifObj.status==200) 
			{
				var root = verifObj.responseXML.documentElement;
				if(root!=null)
				{
					if(root.getElementsByTagName('response')[0].firstChild.nodeValue=="1")
					{
						getObj('verifConf').style.display='';
						getObj('verifConfCell').innerHTML='VERIFIED. Please Submit to confirm Verification.';
						return;
					}
					else
					{					
						getObj('verifConf').style.display='';
						getObj('verifConfCell').innerHTML='INVALID CODE. Please enter the correct Verification Code.';
						return;
					}
				}
				else
				{
					getObj('verifConf').style.display='';
					getObj('verifConfCell').innerHTML='AJAX disabled!';
					return;
				}
			}
		}
	};
	
	verifObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	
	
	verifObj.send(null);
	
	return;
}

function validateUsername(accountName)
{	
	if(accountName.value.length==0)
	{
		alert('No username specified.');
		return false;
	}
	
	if(accountName.value.length<2)
	{
		alert('Username too short.');
		return false;
	}
	
	if(accountName.value.length>22)
	{
		alert('Username too long.');
		return false;
	}
	
	return true;
}

function validatePassword(accountPassword)
{		
	if(accountPassword.value.length==0)
	{
		alert('No password specified.');
		return false;
	}
	
	if(accountPassword.value.length<6)
	{
		alert('Password too short.');
		return false;
	}
	
	return true;
}

function validateEmail(accountEmail)
{	
	if(accountEmail.value.length==0)
	{
		alert('No email specified.');
		return false;
	}
	
	if(accountEmail.value.length<11)
	{
		alert('Email too short.');
		return false;
	}
	
	return true;
}

function validateAll(accountName,accountPassword,accountEmail)
{
	if(!validateUsername(getObj(accountName)))
	{
		return false;
	}
	
	if(!validatePassword(getObj(accountPassword)))
	{
		return false;
	}
	
	if(!validateEmail(getObj(accountEmail)))
	{
		return false;
	}
	
	return true;
}

function verifyUsername(accountName)
{	
	if(accountName.value.length==0)
	{
		alert('No username specified.');
		return false;
	}
	
	return true;
}

function verifyVCode(accountVCode)
{
	if(accountVCode.value.length==0)
	{
		alert('No code specified.');
		return false;
	}
	
	if(accountVCode.value<1000)
	{
		alert('Invalid Verification Code.');
		return false;
	}
	
	return true;
}

function verifyAll(accountName,accountVCode)
{
	if(!verifyUsername(getObj(accountName)))
	{
		return false;
	}
	
	if(!verifyVCode(getObj(accountVCode)))
	{
		return false;
	}
	
	return true;	
}