//SETS UP FORM FOR VALIDATION BY ADDING ON SUMBIT EVENT HANDLER
function prepareForms() {
	if (!document.getElementsByTagName || !document.getElementById || !document.getElementById('productenquiry')) {
		return false;
	}
	for (var i=0; i < document.forms.length; i++) {
		var thisform = document.forms[i];
		if(thisform.getAttribute('id') == 'productenquiry') {
			resetFields(thisform);
			thisform.onsubmit = function() {
				clearfeedback();
				return validateForm(this);
			}
		}
	}
	return false;
}
//////////////////////////////////


//SET FORM FIELDS TO BLANK AND THEN RESET TO DEFAULT VALUE ON BLUR UNLESS IT'S GOT "http://" AS DEFAULT VALUE
function resetFields(whichform) {
	for (var i=0; i<whichform.elements.length; i++) {
		var element = whichform.elements[i];
		var elemtype = element.getAttribute('type');
		if (elemtype != "submit") {
			if (element.defaultValue) {
				if(element.defaultValue != "http://") {
					element.onfocus = function() {
						if (this.value == this.defaultValue) {
							this.value = "";
						}
					}
				}
			}
		}
		element.onblur = function() {
			if (this.value == "") {
				this.value = this.defaultValue;
			}
		}
	}
	return false;
}


//CLICK ON A LABEL TO FOCUS THE FORM FIELD - already does this in good browsers?
function focusLabels() {
	if (!document.getElementsByTagName) {
		return false;
	}
	else
	{
		var labels = document.getElementsByTagName("label");
		for (var i=0; i<labels.length; i++) {
			if (labels[i].getAttribute("for")) {
				labels[i].onclick = function() {
					var id = this.getAttribute("for");
					if (!document.getElementById(id)) {
						return false;
					} 
					else 
					{
						var element = document.getElementById(id);
					}
					return false;
				}
			}
		}
	}
	return false;
}

function getLabel(whichform,element) {
var elementid = element.getAttribute("id");
var formlabels = whichform.getElementsByTagName("LABEL");
	for (var i=0; i<formlabels.length; i++) {
		var blob = formlabels[i];
		if(elementid == blob.htmlFor) {
			return  blob;
		}
	}
	return false;
}

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)) {
				var elementlabel = getLabel(whichform,element);
				var feedback = "Please fill in the " +  elementlabel.firstChild.nodeValue + " field";
				addfeedback(elementlabel,feedback);
				element.focus();
				return false;
			}
			if (element.className.indexOf("email") != -1) {
				if (!isEmail(element)) {
					var elementlabel = getLabel(whichform,element);
					var feedback = "Please supply a valid email address";
					addfeedback(elementlabel,feedback);
					element.focus();
					return false;
				}
			}
		}
	}
	return true;
}

function addfeedback(elementlabel,feedback) {
	var feedbackText = document.createTextNode(feedback);
	var feedbackSpan = document.createElement('EM');
	feedbackSpan.className = 'feedback';
	feedbackSpan.appendChild(feedbackText);
	elementlabel.appendChild(feedbackSpan);
}

function clearfeedback() {
	var formspans = document.getElementsByTagName("EM");
	for (var i=0; i<formspans.length; i++) {
		var blob = formspans[i];
		if(blob.className == 'feedback') {
			blob.parentNode.removeChild(blob);
		}
	}
}

//STANDARD CHECKERS
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;
	}
}


addLoadEvent(focusLabels);
addLoadEvent(prepareForms);
