// Form Vaildation Script

// IMPORTANT NOTES: none..



//This function moves the focus (cursor) to a field when its label is clicked,
//for browsers that don't have this functionality built in for the <label> tag.

function focusLabels()
{
	if(!document.getElementsByTagName) return false;
	var labels = document.getElementsByTagName("label");
	for(var i=0; i<labels.length; i++)
	{
		if(!labels[i].getAttribute("for")) continue;
		labels[i].onclick = function()
		{
			var id = this.getAttribute("for");
			if(!document.getElementById(id)) return false;
			var element = document.getElementById(id);
			element.focus();
		}
	}
}


//This function resets all fields only after form is "submitted", it
//does not reset default values.

function resetFields(whichform)
{
	for(var i=0; i<whichform.elements.length; i++)
	{
		var element = whichform.elements[i];
		if(element.type == "submit") continue;
		if(!element.defaultValue) continue;
		element.onfocus = function()
		{
			if(this.value == this.defaultValue)
				this.value == "";

		}
		element.onblur = function()
		{
			if(this.value == "") 
				this.value = this.defaultValue;
		}
	}
}


//this function prepares each form to be reset and validated when appropriate.

function prepareForms()
{
	for(var i=0; i<document.forms.length; i++)
	{
		var thisform = document.forms[i];
		resetFields(thisform);
		thisform.onsubmit = function()
		{return validateForm(this);}
	}
}


//This function checks to see if a field is filled in. 

function isFilled(field)
{
	if(field.value.length < 1 || field.value == field.defaultValue) return false;
	else return true;
}


//This function checks to see if the field is an "email" field.

function isEmail(field)
{
	if(field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) return false;
	else return true;
}


//This function validates the form when user clicks "submit" button.
//It checks for valid email and ensures all required fields are filled in.

function validateForm(whichform)
{
	for(var i=0; i<whichform.elements.length; i++)
	{
		var element = whichform.elements[i];
		if(element.className.indexOf("required") != -1)
		{
			if(!isFilled(element))
			{
				alert("Please fill in the "+element.name+" field.")
				return false;
			}
		}
		if(element.className.indexOf("email") != -1)
		{
			if(!isEmail(element))
			{
				alert("The "+element.name+" field must be a valid email address.");
				return false;
			}
		}
	return true;
	}
}

//Call the necessary functions using "addLoadEvent()"

addLoadEvent(focusLabels);
addLoadEvent(prepareForms);


