addOnload(fieldSelecter);
addOnload(clearinput)
/*window.onbeforeunload = function(){ resetValues(); }*/

function addOnload(newFunction) {
	var oldOnload = window.onload;	
	
	if (typeof oldOnload == "function") {
		window.onload = function() {
			if (oldOnload) {
				oldOnload();
			}
			newFunction();
		}
	}
	else {
		window.onload = newFunction;
	}
	
}

function clearinput() {
		for (var i=0; i<document.getElementsByTagName('input').length; i++) {
			if (document.getElementsByTagName('input')[i].value != "") {
				valueSave(document.getElementsByTagName('input')[i]);
			}
		}
	
	
	function valueSave(thisInput) {
		thisInput.origValue = thisInput.value;
		thisInput.onfocus = clicked;
		thisInput.onblur = unclicked;
	}
	
	function clicked() {
		if(this.value == this.origValue)
		this.value = "";
	}
	
	function unclicked() {
		if(this.value == ""){
		this.value = this.origValue;
		}
	}
}

function fieldSelecter(){
	var forms = document.getElementsByTagName("form");
	
	for(i=0; i<forms.length; i++){
		forms[i].onsubmit = function(){return checkfields(this);}
	}
	
	var allElements = document.getElementsByTagName("*");
	for(k=0; k<allElements.length; k++){
		allElements[k].originalValue = allElements[k].value;
	}

	function checkfields(currForm){
		var fields;
		var fieldname;
		var currClasses;
		fields = currForm.getElementsByTagName("*");
		
		for(j=0; j<fields.length; j++){
			currClasses = fields[j].className;
			fieldname = fields[j].name;
			if(fieldname){
				fieldname = fieldname.toLowerCase()
			}
			if(checkForReq(currClasses) > 0){
				var noUnderScore = fields[j].name.replace(/_/g, " ");
				if(fields[j].value == "" || fields[j].value == fields[j].originalValue){
					fields[j].focus();
					alert(noUnderScore + " is empty");
					return false;
				} else if(fieldname) {
					if(fieldname.indexOf("email") > -1){
						if (!validateEmail(fields[j].value)){
							fields[j].focus();
							alert(noUnderScore + " is invalid");
							return false;
						}
					} else if (fieldname.indexOf("phone") > -1) {
						if (!validatePhone(fields[j].value)){
							fields[j].focus();
							alert(noUnderScore + " is invalid");
							return false;
						}
					}
				}
			}
		}
		 return true;
	}
	
	function checkForReq(currClasses){
		var classes;
		var returnvalue = false;
		classes = currClasses.split(" ");
		for(h=0; h<classes.length; h++){
			if(classes[h] == "req"){
			 returnvalue = true;	
			}
			
		}

		return returnvalue;
	}
	
	function validateEmail(email){
		var emailPattern = new RegExp(/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}/);
		return emailPattern.test(email);
	}
	
	function validatePhone(phone){
		var numbersOnly = phone.replace(/\D/g, "");
		if (numbersOnly.length > 9){
			return true;
		}
		return false;
	}
}

/* function resetValues(){
	var allElements = document.getElementsByTagName("*");
	for(l=0; l<allElements.length; l++){
		if(allElements[l].originalValue){
			allElements[l].value = allElements[l].originalValue;
		} else {
			allElements[l].value = "";
		}
	}	
} */
