/**********************************************************************
*****
*****	Filename:		forms.js
*****	Version:		1.0
*****	Last modified:  29 December 2009
*****	Author:			Kevin Browne
*****	E-mail:			kevin.browne@wibu.us
*****	Copyright:		Wibu-Systems USA, 2009
*****
*****	Based off original script by Jeremy Keith.
**********************************************************************/



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();
		}
	}
}

function prepareForms() {
	for (var i = 0; i < document.forms.length; i++) {
		var thisform = document.forms[i];
		resetFields(thisform);
		thisform.onsubmit = function() {
			return validateForm(this);

		}
	}
}

function resetFields(whichform){
	for (var i = 0; i < whichform.elements.length; i++) {
		var element = whichform.elements[i];
		if (element.type == "submit") {continue;}
		if (element.type == "reset") {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;
			}
		}
	}
}

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 Enter " + element.value + ".");
				return false;
			}
		}
		if (element.className.indexOf("email") != -1) {
			if (!isEmail(element)) {
				alert ("The " + element.name + " field must be a valid e-mail address.");
				return false;
			}
		}
	}
	return replaceDefaultValues(whichform);
}

function isFilled(field) {
	if (field.value.length < 1 || field.value == field.defaultValue) {
		return false;
	}
	else {
		return true;
	}
}

function isEmail(field) {
	if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
		return false;
	}
	else {
		return true;
	}
}

function replaceDefaultValues(whichform) {
	for (var i = 0; i < whichform.elements.length; i++) {
		var element = whichform.elements[i];
		if (element.type == "submit") continue;
		if (element.type == "reset") continue;
		if (element.type == "hidden") continue;
		if (!element.defaultValue) continue;
		if (element.value == element.defaultValue) {
			var subbedValue = "";
			element.value = subbedValue;
		}
	}
	return true;
}

addLoadEvent(focusLabels);
addLoadEvent(prepareForms);

