// Check user inputs to see if all required fields have proper data and sets
// up fields for generic email form handler.

function checkInput() {
	f = self.document.formNav;	
	
	//************************ SPECIAL TESTING
	// Check mailto dropdown to make sure that an office has been selected

	//************************ SPECIAL TESTING
	// Gathers the names of all the fields on the submitting form in a pipe (|) delimited string,
	// so that the field names can be displayed in the same order and grouped by sections,
	// the same manner as on the form in the email body which is created by the
	// generic mailto form handler [genericMailtoFormProc.asp]. Duplicate field names
	// are not saved (as in the case of a required group of checkboxes, etc.).
	
	var strFields = "";
	
	for (i=0; i<document.forms[0].length; i++) {
		if (((document.forms[0].elements[i].name == "Selected_Navigant_Office") ||
			(document.forms[0].elements[i].name != "mailto") ||
			(document.forms[0].elements[i].type != "hidden") || 
			(document.forms[0].elements[i].name.indexOf("**") > -1))
			&& (strFields.indexOf(document.forms[0].elements[i].name) == -1)) {
			strFields = strFields + document.forms[0].elements[i].name + "|";
		}
	}
	// Remove the trailing pipe (|) and save the string in a hidden field
	
	strFields = strFields.substr(0,strFields.length-1);
	f.fieldorder.value = strFields;
	
	// Check to make sure that there are required fields, and if not, get the string with 
	// the comma-delimited required field names from a hidden field 
	// and split it into an array at the commas
	
	if (f.required.value != "") {
		var requiredFields = f.required.value.split(",");
	
		// Check to make sure the user has entered values for the required fields based on input type
		var oneChecked = false;
		for (i=0; i<requiredFields.length; i++) {
	
		//alert("f." + requiredFields[i] + ".length="+eval("f." + requiredFields[i] + ".length")+", f." + requiredFields[i] + ".type="+eval("f." + requiredFields[i] + ".type") + ", Value='"+eval("f." + requiredFields[i] + ".value")+"'");
	
			// Check that a required field of type "text" is not empty
			if (eval("f." + requiredFields[i] + ".type") == "text") {
				if ((eval("f." + requiredFields[i] + ".value") == null) || (eval("f." + requiredFields[i] + ".value") == "")) {
					alert("Please fill out the " + requiredFields[i] + " from line.");
					eval("f." + requiredFields[i] + ".focus()");
					return false;
				}
	

			// Check that a required field of type "textarea" is not empty
			} else if (eval("f." + requiredFields[i] + ".type") == "textarea") {
				if ((eval("f." + requiredFields[i] + ".value") == null) || (eval("f." + requiredFields[i] + ".value") == "")) {
					alert("Please fill out the " + requiredFields[i] + " text area.");
					eval("f." + requiredFields[i] + ".focus()");
					return false;
				}

			// Check that for a required drop down, a value is selected		
			} else if ((eval("f." + requiredFields[i] + ".type") == "select-one") || (eval("f." + requiredFields[i] + ".type") == "select-multiple")) {
				//alert("selectedIndex=" + eval("f." + requiredFields[i]+".selectedIndex")+ ", value='"+eval("f." + requiredFields[i] + "[f." + requiredFields[i] + ".selectedIndex].value")+"'");
				if ((eval("f." + requiredFields[i] + ".selectedIndex") < 0) || 
					(eval("f." + requiredFields[i] + "[f." + requiredFields[i] + ".selectedIndex].value") == "")) {
					alert("You must enter a valid value for the " + requiredFields[i] + ".");
					eval("f." + requiredFields[i] + ".focus()");
					return false;
				}

			// Check that a required checkbox is selected						
			} else if (eval("f." + requiredFields[i] + ".type") == "checkbox") {
				if (!(eval("f." + requiredFields[i] + ".checked"))) {
					alert("You must select one of the " + requiredFields[i] + " checkboxes.");
					eval("f." + requiredFields[i] + ".focus()");
					return false;
				}
				
			// Check to see that at least one chackbox in a required group of checkboxes is selected
			} else if ((eval("f." + requiredFields[i] + ".length") > 0) && (eval("f." + requiredFields[i] + "[0].type") == "checkbox")) {
				// Loop through all the checkboxes to see if one is checked
				oneChecked = false;
				for (j=0; j<eval("f." + requiredFields[i] + ".length"); j++) {
					//alert("j="+j+", f." + requiredFields[i]+"["+j+"].value=" + eval("f." + requiredFields[i]+"["+j+"].value")+", f." + requiredFields[i]+"["+j+"].checked=" + eval("f." + requiredFields[i]+"["+j+"].checked"));
					if (eval("f." + requiredFields[i]+"["+j+"].checked")) { oneChecked = true; }
				}
				// If none are checked, notify user
				if (!oneChecked) {
					alert("You must select at least one of the " + requiredFields[i] + " checkboxes.");
					eval("f." + requiredFields[i] + "[0].focus()");
					return false;
				}

			// Check to see that a radio button in a required group of radio buttons is selected
			} else if ((eval("f." + requiredFields[i] + ".length") > 0) && (eval("f." + requiredFields[i] + "[0].type") == "radio")) {
				// Loop through all the radio buttons to see if one is checked
				oneChecked = false;
				for (j=0; j<eval("f." + requiredFields[i] + ".length"); j++) {
					if (eval("f." + requiredFields[i]+"["+j+"].checked")) { oneChecked = true; }
				}
				// If none are checked, notify user
				if (!oneChecked) {
					alert("You must select one of the " + requiredFields[i] + " radio buttons.");
					eval("f." + requiredFields[i] + "[0].focus()");
					return false;
				}
			}	
		}
	}
	// All required fields validated, so submit the form
 var where_to= confirm("Are you sure you want to send this email?");
       if (where_to== true)
        {
      return (true);
       }
      else
      {
            return (false);
        }


} // end checkInput

