
/* ************************************************************

Created    : 2007-04-14
Author     : Jeremy Saunders
Description: Functions for the website character creation.

************************************************************ */

function clearFields()
{
	document.getElementById("email_field").value = "";
	document.getElementById("name_field").value = "";
	document.getElementById("password_field").value = "";
	document.getElementById("passcheck_field").value = "";
}

function alpha(alphane)
{
	var numaric = alphane;
	for(var j=0; j<numaric.length; j++)
	{
		var alphaa = numaric.charAt(j);
		var hh = alphaa.charCodeAt(0);
		if((hh > 64 && hh<91) || (hh > 96 && hh<123))
		{
		}
		else	
		{
			return false;
		}
	}
	return true;
}

function nameMasterMessage()
{
	var nameMessage = "Your character name will be a unique identifier when dealing with other players in the game. " +
					   "It must be unique and will be used to log into the game in the future.";
				  
	return nameMessage;
}

var xmlHttp;

function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function stateChanged() 
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById("valid_name").value = xmlHttp.responseText;
		setNameFieldInfo();
	} 
}

function nameExists(name)
{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	}
	
	var url = "validName.php" +"?name="+name + "&sid="+Math.random();

	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function validName(name)
{
	if (name.length < 3)
	{
		return false;
	}
	
	if (name.length > 12)
	{
		return false;
	}
	
	if (alpha(name) == false)
	{
		return false;
	}
	
	if (document.getElementById("valid_name").value == "0")
	{
		return false;
	}
	
	if (document.getElementById("valid_name").value == "2")
	{
		return false;	
	}
		
	return true;
}

function getNameErrorMessage(name)
{
	if (name.length < 3)
	{
		return "Your character name must be longer then 3 letters.";
	}
	
	if (name.length > 12)
	{
		return "Your character name cannot be longer then 12 letters.";
	}
	
	if (alpha(name) == false)
	{
		return "Names can only contain letters. No spaces, numbers, or special characters.";
	}
	
	if (document.getElementById("valid_name").value == "0")
	{
		return "Sorry! This name is already in use.";
	}
	
	if (document.getElementById("valid_name").value == "2")
	{
		return "Please choose a name unique to this realm.";	
	}
}

function focusName() 
{
	var Message = nameMasterMessage();

	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var name = document.getElementById("name_field").value;
	document.getElementById("name_info").innerHTML = "<img src='images/arrow.png'>";
	
	if(validName(name) == false)
	{
		if (name != "") 
		{
			var Message = "<span id='warning'>" + getNameErrorMessage(name) + "</span><br><br>" + Message;
		}
		
		document.getElementById("field_info").innerHTML = Message;
		return false;
	}
	
	document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Character Name!</span><br><br>" + Message;
	
	return true;
}

function blurName() 
{
	var name = document.getElementById("name_field").value;
	
	if (name == "") 
	{
		document.getElementById("name_info").innerHTML = "";
	}
	else if (validName(name) == false) 
	{
		document.getElementById("name_info").innerHTML = "<img src='images/invalid.png'>";
	}
	else
	{
		document.getElementById("name_info").innerHTML = "<img src='images/valid.png'>";
	}
	
	return;
}

function setNameFieldInfo()
{
	var Message = nameMasterMessage();
	var name = document.getElementById("name_field").value;
	
	if (validName(name) == true) 
	{
		document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Character Name!</span><br><br>" + Message;
	}
	else
	{
		document.getElementById("field_info").innerHTML = Message;
	}
}

function onKeyUpName() 
{
	var name = document.getElementById("name_field").value;
	
	nameExists(name);
	setNameFieldInfo();
	
	return;
}

function emailMasterMessage()
{
	var emailMessage = "Please use your real email address.<br><br>" +
				  "Your privacy is important to us and any information you provide is confidential.";
				  
	return emailMessage;
}

function validEmail(address)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	
	if(reg.test(address) == false) 
	{
		return false;
	}

	return true;
}

function focusEmail() 
{
	var Message = emailMasterMessage();

	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var address = document.getElementById("email_field").value;
	document.getElementById("email_info").innerHTML = "<img src='images/arrow.png'>";
	
	if(reg.test(address) == false)
	{
		if (address != "") 
		{
			var Message = "<span id='warning'>Please enter a valid email address.</span><br><br>" + Message;
		}
		
		document.getElementById("field_info").innerHTML = Message;
		return false;
	}
	
	document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Email Address!</span><br><br>" + Message;
	
	return true;
}

function blurEmail() 
{
	var address = document.getElementById("email_field").value;
	
	if (address == "") 
	{
		document.getElementById("email_info").innerHTML = "";
	}
	else if (validEmail(address) == false) 
	{
		document.getElementById("email_info").innerHTML = "<img src='images/invalid.png'>";
	}
	else
	{
		document.getElementById("email_info").innerHTML = "<img src='images/valid.png'>";
	}
	
	return;
}

function onKeyUpEmail() 
{
	var Message = emailMasterMessage();
	var address = document.getElementById("email_field").value;
	
	if (validEmail(address) == true) 
	{
		document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Email Address!</span><br><br>" + Message;
	}
	else
	{
		document.getElementById("field_info").innerHTML = Message;
	}
	
	return;
}

function passwordMasterMessage()
{
	var passwordMessage = "Please create a secure password.<br><br>" +
					  	  "Passwords must range from 6 to 20 characters.<br><br>" +
					  	  "Passwords are case sensitive.<br><br>" +
					  	  "The best passwords consist of upper and lowercase letters, numbers and special characters.";
		  	  
	return passwordMessage;
}

function validPassword(password)
{		
	var invalid = " "; // Invalid character is a space
	var minLength = 6; // Minimum length
	var maxLength = 20; // Maximum length
	
	var password = document.getElementById("password_field").value;
	var name = document.getElementById("name_field").value;

	// check for minimum length
	if (password.length < minLength) 
	{
		return false;
	}
	// check for minimum length
	if (password.length > maxLength) 
	{
		return false;
	}
	// check for spaces
	if (password.indexOf(invalid) > -1) 
	{
		return false;
	}
	// cannot use the players name
	if (password == name && name != "") 
	{
		return false;
	}
	
	return true;
}

function getPasswordErrorMessage(password, name)
{
	var invalid = " "; // Invalid character is a space
	var minLength = 6; // Minimum length
	var maxLength = 20; // Maximum length
	
	// check for minimum length
	if (password.length < minLength) 
	{
		return "Your password must be at least " + minLength + " characters long.";
	}
	// check for minimum length
	if (password.length > maxLength) 
	{
		return "Your password cannot be longer then " + maxLength + " characters.";
	}
	// check for spaces
	if (password.indexOf(invalid) > -1) 
	{
		return "Spaces are not allowed in your password.";
	}
	
	// cannot use the players name
	password = password.toLowerCase();
	name = name.toLowerCase();
	if (password == name && name != "") 
	{
		return "You cannot use your character name as your password.";
	}
	
	return "";
}

function focusPassword() 
{
	var Message = passwordMasterMessage();
	var password = document.getElementById("password_field").value;
	var name = document.getElementById("name_field").value;
	
	document.getElementById("password_info").innerHTML = "<img src='images/arrow.png'>";
	
	if (validPassword(password) == false)
	{
		if (password != "") 
		{
			var Message = "<span id='warning'>" + getPasswordErrorMessage(password, name) + "</span><br><br>" + Message;
		}
		
		document.getElementById("field_info").innerHTML = Message;
		return false;
	}
	
	document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Password!</span><br><br>" + Message;
	
	return true;
}

function blurPassword() 
{
	var password = document.getElementById("password_field").value;
	
	if (password == "") 
	{
		document.getElementById("password_info").innerHTML = "";
	}
	else if (validPassword(password) == false) 
	{
		document.getElementById("password_info").innerHTML = "<img src='images/invalid.png'>";
	}
	else
	{
		document.getElementById("password_info").innerHTML = "<img src='images/valid.png'>";
	}
	
	return;
}

function onKeyUpPassword() 
{
	var Message = passwordMasterMessage();
	var password = document.getElementById("password_field").value;
	
	testPasswordCss(password);
	
	if (validPassword(password) == true) 
	{
		document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Password!</span><br><br>" + Message;
	}
	else
	{
		document.getElementById("field_info").innerHTML = Message;
	}
	
	blurPasscheck();
	
	return;
}

function passcheckMasterMessage()
{
	var passcheckMessage = "Please enter your password again to confirm that you have entered your password correctly.<br><br>" +
						   "Both passwords must match exactly.";
					  	  
	return passcheckMessage;
}

function validPasscheck(pw1, pw2)
{			
	if (pw1 != pw2 || pw1 == "") 
	{
		return false;
	}
	
	return true;
}

function getPasscheckErrorMessage(pw1, pw2)
{
	if (pw1 != pw2 || pw1 == "") 
	{
		return "Passwords do not match.";
	}
	
	return "";
}

function focusPasscheck() 
{
	var Message = passcheckMasterMessage();
	var pw1 = document.getElementById("password_field").value;
	var pw2 = document.getElementById("passcheck_field").value;
	
	document.getElementById("passcheck_info").innerHTML = "<img src='images/arrow.png'>";
	
	if (validPasscheck(pw1, pw2) == false)
	{
		if (pw2 != "") 
		{
			var Message = "<span id='warning'>" + getPasscheckErrorMessage(pw1, pw2) + "</span><br><br>" + Message;
		}
		
		document.getElementById("field_info").innerHTML = Message;
		return false;
	}
	
	document.getElementById("field_info").innerHTML = "<span id='valid'>Valid Password!</span><br><br>" + Message;
	
	return;
}

function blurPasscheck() 
{
	var pw1 = document.getElementById("password_field").value;
	var pw2 = document.getElementById("passcheck_field").value;
	
	if (pw2 == "") 
	{
		document.getElementById("passcheck_info").innerHTML = "";
	}
	else if (validPasscheck(pw1, pw2) == false) 
	{
		document.getElementById("passcheck_info").innerHTML = "<img src='images/invalid.png'>";
	}
	else
	{
		document.getElementById("passcheck_info").innerHTML = "<img src='images/valid.png'>";
	}
	
	return;
}

function onKeyUpPasscheck() 
{
	var Message = passcheckMasterMessage();
	var pw1 = document.getElementById("password_field").value;
	var pw2 = document.getElementById("passcheck_field").value;
	
	if (pw2 == "") 
	{
		document.getElementById("field_info").innerHTML = Message;
	}
	else if (validPasscheck(pw1, pw2) == true) 
	{
		document.getElementById("field_info").innerHTML = "<span id='valid'>Passwords Match!</span><br><br>" + Message;
	}
	else
	{
		document.getElementById("field_info").innerHTML = Message;
	}
	
	return;
}

function validate()
{
	var email = document.getElementById("email_field").value;
	var name = document.getElementById("name_field").value;
	var pw1 = document.getElementById("password_field").value
	var pw2 = document.getElementById("passcheck_field").value;

	if (validEmail(email) == false)
	{
		alert("Your email address is not valid.");
		return false;
	}
	if (validName(name) == false)
	{
		alert("Your character name is not valid.");
		return false;
	}
	if (validPassword(pw1) == false)
	{
		alert("Your password is not valid.");
		return false;
	}
	if (validPasscheck(pw1, pw2) == false)
	{
		alert("Your passwords do not match.");
		return false;
	}
	
	return true;
}

