function isNotEmpty( elem )
{
	var str = elem.value;
	var str_name = elem.name;

	if ( str == null || str.length == 0 ) {
		alert("Please fill in a value for " + str_name + "." );
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name +
					"')", 0);
		return false;
	} else {
		return true;
	}
}

function isLength( elem, elemLength )
{
        var str = elem.value;
        var str_name = elem.name;

        if ( str.length != elemLength ) {
                alert("Please make sure " + str_name + " is " + elemLength + " numbers in length." );
                setTimeout("focusElement('" + elem.form.name + "', '" + elem.name +
                                        "')", 0);
                return false;
        } else {
                return true;
        }
}

// validate that the user made a selection other than the default
function isChosen( select )
{
	if ( select.selectedIndex == 0 ) {
		alert("Please select a " + select.name + " from the list.");
		return false;
	} else {
		return true;
	}
}


// auto-focus an invalid text-entry field
function focusElement( form_name, elem_name )
{
	var elem = document.forms[form_name].elements[elem_name];
	elem.focus();
	elem.select();
}

// takes an array of element names; verifies that each has a value
//
function requireValues( form, requiredValues )
{
	for ( var i = 0; i < requiredValues.length; i++ ) {
		element = requiredValues[i];

		if ( form[element].value == "" ) {
			alert( "Please enter a value for " + element + "." );
			return false;
		}
	}
	return true;
}


function requireSelects( form, requiredSelect )
{
	for ( var i = 0; i < requiredSelect.length; i++ ) {
		element = requiredSelect[i];

		if ( form[element].selectedIndex < 0 ) {
			alert( "Please select a value for " + element + ".\n" +
					"Value = " + form[element].selectedIndex );
			return false;
		}
	}
	return true;
}


function requireRadios( form, requiredRadio )
{
	for ( var i = 0; i < requiredRadio.length; i++ ) {
		element = requiredRadio[i];
		isChecked = false;

		for ( var j = 0; j < form[element].length; j++ ) {
			if ( form[element][j].checked ) {
				isChecked = true;
			}
		}

		if ( ! isChecked ) {
			alert( "Please choose a " + form[element][0].name + "." );
			return false;
		}
	}
	return true;
}



function validateEmail( form )
{
	re = /[ |\t|\r|\n]*\"?([^\"]+\"?@[^ <>\t]+\.[^ <>\t][^ <>\t]+)[ |\t|\r|\n]*/;

	validEmail = re.exec( form.email.value );

	if ( validEmail ) {
		form.email.value = validEmail[1];
	}
	else {
		alert( form.email.value + " isn't a valid email address." );
		form.email.focus();
		form.email.select();
		return false;
	}

	return true;
}

// allow only numbers in an input field
function numeralsOnly( evt )
{
	evt = (evt) ? evt : event;
	
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
					((evt.which) ? evt.which : 0));

	if ( charCode > 31 && (charCode < 48 || charCode > 57) ) {
		alert("Enter numerals only in this field.");
		return false;
	}
	return true;
}


// allow only letter in an input field
function lettersOnly( evt )
{
	evt = (evt) ? evt : event;
	
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
					((evt.which) ? evt.which : 0));

	if ( charCode > 31 && (charCode < 65 || charCode > 90) &&
		(charCode < 97 || charCode > 122))
	{
		alert("Enter letters only in this field.");
		return false;
	}
	return true;
}

// allow only letters, commas, hyphens, spaces in an input field
function namesOnly( evt )
{
	evt = (evt) ? evt : event;
	
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
					((evt.which) ? evt.which : 0));

	if ( charCode > 31 && (charCode < 65 || charCode > 90) &&
		(charCode < 97 || charCode > 122) &&
		(charCode != 46 ) && (charCode != 39) && (charCode != 44) &&
		(charCode != 45) && (charCode != 95) && (charCode != 32) )
	{
		alert("Enter letters and the characters , - ' only in this field.");
		return false;
	}
	return true;
}

