/**
 * Check for required form fields when submitting
 * the form.
 */

// The error message.
var errorMessageText = "Fill out the missing fields: ";

function validateRequiredFields( formObj ) {
	//alert( "validateRequiredFields called" );
	var missingFields = new Array();
	for ( var i = 0; i < formObj.elements.length; i++ ) {
		var field = formObj.elements[i];
		//alert( "Validating field no. "+i+": name = "+field.name+", type = "+field.type+", id = "+field.id );
		if ( field.className && field.className == "required" ) {
			//alert( "Required field: " + field.name );
			if ( field.type == "radio" ) {
				var radioGroup = formObj.elements[field.name];
				if ( !isValidRadio(radioGroup) ) {
					// Check that same radio group not already added
					var alreadyAdded = false;
					for ( var j = 0; j < missingFields.length; j++ ) {
						if ( missingFields[j].name == field.name ) {
							alreadyAdded = true;
							// alert( "field " + field.name + " already added." );
						}
					}
					if ( !alreadyAdded ) {
						missingFields[missingFields.length] = field;
					}
				}
			} else {
				if ( isEmpty(field) ) {
					missingFields[missingFields.length] = field;
				}
			}
		}
	}
	
	if ( missingFields.length > 0 ) {
		var errorMessage = errorMessageText;
		for ( i = 0; i < missingFields.length; i++ ) {
			errorMessage += i > 0 ? ", " : "";
			errorMessage += missingFields[i].name;
		}
		alert( errorMessage );
		return false;
	} else {
		return true;
	}
}

function isEmpty( field ) {
	var val = field.value;
	if ( val && val.replace ) {
	  val = val.replace( /^\s*/, '' ).replace( /\s*$/, '' );
	}
	return val == null || val.length == 0;
}

function isValidRadio( radio ) {
	// alert( "checking radio " + radio[0].name + " with " + radio.length + " options." );
	for ( var i = 0; i < radio.length; i++ ) {
		if ( radio[i].checked ) {
			return true;
		}
	}
	return false;
}
