// Form Validation
function resetFields(whichForm){ // adapted from DOM Scripting; Jeremy Keith
	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 = "";
			}//end if
		}// end onfocus
		element.onblur = function() {
			if(this.value == "") {
				this.value = this.defaultValue;
			}// end if
		}// end onblur
	}// end for
}// end resetFields

function isFilled(field) {// adapted from DOM Scripting; Jeremy Keith
	if(field.value.length < 1 || field.value == field.defaultValue) {
		return false;
	}
	else {
		return true;
	}
}

function isEmail(field) {// adapted from DOM Scripting; Jeremy Keith
	if(field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
		return false;
	}
	else {
		return true;
	}
}

function insertAfter(newElement, targetElement) {// adapted from DOM Scripting; Jeremy Keith
	var parent = targetElement.parentNode;
	if(parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	} else {
		parent.insertBefore(newElement, targetElement.nextSibling);
	}
}

function validateSpecial(element){
	//alert("special element" + element.value);
	if(element.value == "-- SELECT A SCHOOL --"){
		//element.className += " yellow";
		element.style.background = "yellow";
		return false;
	}else{
		element.style.background = "white";
		return true;
	}
}

function validateForm(whichForm) {// adapted from DOM Scripting; Jeremy Keith
	var req = document.createElement("span");
	req.className = "requiredNote";
	var reqText = document.createTextNode("* REQUIRED");
	req.appendChild(reqText);
	
	var returnVal = true;
	
	//check all required
	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.");
				//element.className += " yellow";
				element.style.background = "yellow";
				//insertAfter(req, element);
				returnVal = false;
			}else {
				element.style.background = "white";
			}// end if
		}// end if
		if(element.className.indexOf("email") != -1) {
			if(!isEmail(element)) {
				//alert("The " + element.name + " field must be a valid email address.");
				//element.className += " yellow";
				element.style.background = "yellow";
				returnVal = false;
			}else{
				element.style.background = "white";
			}// end if
		}// end if
	}// end for
	// check special
	if(!validateSpecial(document.getElementById("school"))){
		returnVal = false;
	}
	if(!returnVal) {
		document.getElementById("invalid").className = "red";
	}
	return returnVal;
}// end validateForm

function prepareForms() { // adapted from DOM Scripting; Jeremy Keith
	for(var i=0; i<document.forms.length; i++) {
	 	var thisForm = document.forms[i];
		resetFields(thisForm);
		thisForm.onsubmit = function() {
			return validateForm(this);
		}
	}
}

function addLoadEvent(func) {// adapted from DOM Scripting; Jeremy Keith
	var oldonload = window.onload;
	if(typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
addLoadEvent(prepareForms);