window.onload = init;

/* Initialisation for JS capable browsers */
function init()
{
	var resetForm = document.getElementById("resetForm");
	var username = document.getElementById("resetusername");
	var email = document.getElementById("resetemail");
	var characters = document.getElementById("resetcharacters");

	username.onkeyup = onkeyupUsername;
	username.onchange = onchangeUsername;
	username.onblur = onchangeUsername;
	
	email.onkeyup = onkeyupEmail;
	email.onchange = onchangeUsername;
	email.onblur = onchangeEmail;
	
	characters.onkeyup = onkeyupCharacters;
	characters.onchange = onchangeCharacters;
	characters.onblur = onchangeCharacters;
	
	resetForm.onsubmit = checkForm;

	return true;
}


function onchangeUsername()
{
	if (this.value == "" || this.value.length < 4)
	{
		this.valid = false;
		message(this, "errorMessage", "Please enter a valid username");
		this.className = "text error";
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = "text";
	}

	return true;
}

function onchangeCharacters()
{
	if (this.value == "" || this.value.length < 5)
	{
		this.valid = false;
		message(this, "errorMessage", "Please enter the security code");
		this.className = "text error";
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = "text";
	}

	return true;
}


function onchangeEmail(field)
{
	/* If function is called via an event, assign "this" object to "field" argument */
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (!field.value.match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/))
	{
		field.valid = false;
		message(field, "errorMessage", "Please enter a valid e-mail address");
		field.className = "text error";
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = "text";
	}

	return true;
}


function onkeyupUsername()
{
	if (this.value == "" || this.value.length < 4)
	{
		this.valid = false;
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = "text";
	}

	return true;
}

function onkeyupCharacters()
{
	if (this.value == "" || this.value.length < 5)
	{
		this.valid = false;
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = "text";
	}

	return true;
}

function onkeyupEmail()
{
	// If an error message is currently displayed
	if (this.message != null && this.message.className == "errorMessage")
	{
		if (this.value.match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/))
		{
			this.valid = true;
			message(this);
			this.className = "text";
		}
		else
		{
			this.valid = false;
			message(this, "errorMessage", "Please enter a valid e-mail address");
			this.className = "text error";
		}
	}

	return true;
}





function message(element, classString, errorMessage)
{
	if (element.message != null)
	{
		try
		{
			element.message.className = classString;
			element.message.removeChild(element.message.childNodes[0]);
		}
		catch (error)
		{
		}
	}

	if (errorMessage != null)
	{
		if (element.message == null)
		{
			var messageDiv = document.createElement("div");

			element.message = element.parentNode.insertBefore(messageDiv, element);
			element.message.style.marginLeft = parseInt(element.scrollWidth) + 10 + "px";
		}

		element.message.className = classString;
		element.message.appendChild(document.createTextNode(errorMessage));
	}

	return true;
}

/* Validate form before sending */
function checkForm()
{
	var username = document.getElementById("resetusername");
	var characters = document.getElementById("resetcharacters");
	var email = document.getElementById("resetemail");
	var firstError = null;
	var submit = document.getElementById("resetsubmit");
	var resetForm = document.getElementById("resetForm");
	var validationArray = new Array();

	validationArray.push(username);
	validationArray.push(email);
	validationArray.push(characters);

	for (var i = 0; i < validationArray.length; i++)
	{
		if (!validationArray[i].valid)
		{
			validationArray[i].onchange();

			if (!validationArray[i].valid)
			{
				message(validationArray[i], "errorMessage", "Please enter a valid " + validationArray[i].title);

				if (firstError == null)
				{
					firstError = validationArray[i];
				}
			}
		}
	}

	if (firstError != null)
	{
		try
		{
			firstError.focus();
		}
		catch (error)
		{
		}

		alert("Please correct the marked errors.");

		return false;
	}
	document.resetForm.submit();
	return false;
}

