function validateForm(theInputs) {
	var missingFields = false;
	var radioGroups = new Array()
	var selectGroups = new Array()
	
	for (var i=0;i<theInputs.elements.length;i++) {
		var element = theInputs.elements[i];

			
			if(element.type == "radio" && element.className.indexOf("required") != -1){
					var radioGroupName = element.name
					var alreadyListed = false
					for(j=0;j<radioGroups.length;j++){
						if(radioGroups[j] == radioGroupName)
								alreadyListed = true
					}
					if(!alreadyListed) {
					radioGroups.push(radioGroupName)
					}
					
				
			
			
			}
	
			if(element.type == "select-one" && element.className.indexOf("required") != -1){
					var selectGroupName = element.name
					var alreadyListed = false
					for(j=0;j<selectGroups.length;j++){
						if(selectGroups[j] == selectGroupName)
								alreadyListed = true
					}
					if(!alreadyListed) {
					selectGroups.push(selectGroupName)
					}
			
			}

			if(element.className.indexOf("alert") != -1 && isFilled(element) && element.className.indexOf("email") == -1) {
					//input style
					element.className = "required"
					//label style
					element.previousSibling.className = ""
			}
				
			if(element.className.indexOf("required") != -1) {
			
				if(!isFilled(element)){
					
					//input style
					element.className += " alert"
					//label style
					element.previousSibling.className = "alert"
					missingFields = true;
					
					
					element.onblur = element.onchange = function() {
						if(this.className.indexOf("alert") != -1 && isFilled(this)) {
					//input style
					this.className = "required"
					//label style
					this.previousSibling.className = ""
						}
					}
				}
				
				
			
			}
			
			
			if(element.className.indexOf("email") != -1) {
					if(!isEmail(element)){
					//input style
					element.className += " alert"
					//label style
					element.previousSibling.className = "alert"
					
			
					missingFields = true;
					
						element.onblur = function() {
							if(isEmail(this)) {
					//input style
								this.className = "email"
					//label style
								this.previousSibling.className = ""

								
							}
						}
					}

				}
			
		
	
	}// end for
	checkRadioButtons(theInputs,radioGroups)
	
	
	
	if (missingFields) { return false }
	else { return true}
	
}// end validate form

function isFilled(field) {
	if(field.value.length < 1) {
		return false;
		alert("?")
	}
	else {return true;}
	

}
//radio buttons must have class required to be detected
function checkRadioButtons(theInputs,radioGroups) {
	for(j=0;j<radioGroups.length;j++){
	var radioGroupName = radioGroups[j];
	//alert(theInputs[radioGroupName].checked)
		
		var isChecked = false
		for(k=0;k<theInputs[radioGroupName].length;k++){
			
			if(theInputs[radioGroupName][k].checked){
				isChecked = true;
			//	alert(theInputs[radioGroupName][k].name + k + " IS checked")
				theInputs[radioGroupName][k].parentNode.firstChild.className = ""
				break;
				//alert(theInputs[radioGroupName][k].name + " - " + theInputs[radioGroupName][k].checked + " = " +theInputs[radioGroupName][k].value)
			} else {
				//alert(theInputs[radioGroupName][k].parentNode.firstChild.nodeName + " is not checked")
				theInputs[radioGroupName][k].parentNode.firstChild.className = "alert"
				theInputs[radioGroupName][k].onfocus = function() {
					this.parentNode.firstChild.className = ""
				}
				
			}
		}
		//theInputs[radioGroupName][0].checked
		
		//alert(theInputs[radioGroupName].length)
	
}
}
function isEmail(field) {
  if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
    return false;
  } else {
    return true;
  }
}


function checkEstimates() {

	for(var i=0;i<document.forms.length;i++) {
		var thisForm = document.forms[i];
		
		thisForm.onsubmit = function() {
			if(!validateForm(this)) {
				alert("Magenta fields are required.");
				return false;
			}
			else {return true}
		}
	}
}


window.onload = function() {
checkEstimates();

}