function validateDims(f) {
	var msg = "";
	var numerr = 0;
	var firsterr = -1;
	var result = 0;
	var shape = f.shape.value;
	// Loop through all submitted elements.
	for(var i = 0; i < f.length; i++) {
		var e = f.elements[i];
		// Deal with text elements starting with dim.
		if ((e.type == "text") && (e.name.substring(0, 3) == "dim")) {
			var origVal = e.value;
			var s = origVal;
			// Remove inch symbol ("), trim spaces.
			s = s.replace(/"/g, '');
			s = trim(s);
			// Check for all types of "empty" fields.
			if ( (s == null) || (s == "") || (isBlank(s)) ) {
				// This field is allowed to be empty.
				if ((shape == 13) && ((e.name == 'dim1') || (e.name == 'dim4'))) {
					// Top and Inner Top of Yacht Mattress shape.
				} else if ((shape == 32) && (e.name == 'dim4')) {
					// Bottom Channel of Straight style drapes.
				} else if ((shape == 33) && (e.name == 'dim_grommet_spacing_2')) {
					// Alternating Grommet Spacing of Grommet style drapes.
				} else {
					msg += "  " + "(blank)\n";
					numerr++;
					if (firsterr == -1) firsterr = i;
				}
			// Check for zero values.
			} else if (s == 0) {
				// This field is allowed to be zero.
				if ((shape == 13) && ((e.name == 'dim1') || (e.name == 'dim4'))) {
					// Top and Inner Top of Yacht Mattress shape.
				} else if ((shape == 32) && (e.name == 'dim4')) {
					// Bottom Channel of Straight style drapes.
				} else if ((shape == 33) && (e.name == 'dim_grommet_spacing_2')) {
					// Alternating Grommet Spacing of Grommet style drapes.
				} else {
					msg += "  " + "(zero)\n";
					numerr++;
					if (firsterr == -1) firsterr = i;
				}
			// All other values.
			} else {
				// Check for non-numeric data.
				result = s.match(/[^0-9\.]/);
				if (result != null) {
					msg += "  " + origVal + "\n";
					numerr++;
					if (firsterr == -1) firsterr = i;
				// Check for value with no number.
				} else if (!s.match(/[0-9]/)) {
					msg += "  " + origVal + "\n";
					numerr++;
					if (firsterr == -1) firsterr = i;
				// Check for value with more than one decimal point.
				} else if (s.match(/\.[^\.]*\./)) {
					msg += "  " + origVal + "\n";
					numerr++;
					if (firsterr == -1) firsterr = i;
				}
			}
		}
	}
	if (msg == "") return true;
	var error = "Make sure to fill in all fields. Please enter only decimal numbers for the dimensions.\n\nInvalid entr";
	if (numerr == 1) {
		error += "y:" + msg;
	} else {
		error += "ies:\n" + msg;
	}
	alert(error);
	f.elements[firsterr].focus();
	f.elements[firsterr].select();
	return false;
}

