	// Returns the value of a form element:
	function form_is_filled (form_element) {
		var myVal = '';
		// A few form types are different, and require special parsing
		switch(form_element.type) {
			case 'select-multiple':
				var arr = new Array();
				for(var x=0; x < form_element.length; x++) {
					if (form_element[x].selected == true) {
						arr[arr.length] = form_element[x].value;
					}
				}
				myVal = arr.join();
				break;
			case 'radio':
				if(form_element.checked == true) {
					myVal = form_element.value;
				}
				break;
			case 'checkbox':
				myVal = form_element.checked;
				break;
			case 'undefined':
				break;
			default:
				myVal = form_element.value;
				break;
		}
		// If we have a value return it
		if (myVal) {
			return true;
		} else {
			return false;
		}
	};
	
	
	// Validate an email address:
	function email_is_correct (src) {
		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
		var regex = new RegExp(emailReg);
		return regex.test(src);
	}
	
	
	// makes sure that all the things are filled in:
	function ensure_form_is_filled (el_ref) {
		
		// Assume we're good:
		var returnval = true;
		// Loop the elements:
		for (i=0; i<el_ref.elements.length; i++){
			// input element:
			var input_el = el_ref.elements[i];
			// Grab its parent:
			var el_parent = input_el.parentNode;
			// Is it required?:
			if (el_parent.className == "required_field" || el_parent.className == "required_field unfilled_field") {
				if (form_is_filled (input_el) == false) {
					// Failed:
					returnval = false;
					// Visual:
					el_parent.className = "required_field unfilled_field";
				} else {
					// Visual:
					el_parent.className = "required_field";
				}
			}
			
			
			// Email needs 'special' validation;
			if (input_el.id == "contactemail") {
				if (email_is_correct (input_el.value) == false) {
					// Failed:
					returnval = false;
					// Visual:
					el_parent.className = "required_field unfilled_field";
				} else {
					// Visual:
					el_parent.className = "required_field";
				}
			}
			
		}
		return returnval;
	}
