/**
 * Remove all of the options from the passed <select> object
 *
 * @param selectObject
 */
function clearOptions(selectObject) {
	if (!selectObject) {
		return;
	}
	
	while (selectObject.options.length>0) {
		selectObject.remove(0);
	}
}

/**
 * Add a name/value option to the passed <select> object
 *
 * @param selectObject
 * @param name
 * @param value
 */
function addOption(selectObject, name, value) {
	if (!selectObject) {
		return;
	}
	
	selectObject.options[selectObject.options.length] = 
		new Option(name, value);
}

/**
 * Trim leading and trailing whitespace
 *
 * @param str
 */
function trim(str) {
	if (!str) {
		return "";
	}
	str += '';
	return str.replace(/^\s+|\s+$/g,"");
}

/**
 * Utility function for converting string values to an integer.
 *
 * @param val
 */
function convToInteger( val ) {

	if ( ( trim( val ) == '' ) || isNaN( val ) || ( val < 0 ) ) {
		val = 0;
	} else {
		val = parseInt( val, 10 );
	} // End if.

	return val;

} // End convToInteger().

/**
 * Saves and restores field values.
 */
var formUtil_fieldsBackup = new Array();
function backupValue( field ) {
	formUtil_fieldsBackup[ field.name ] = field.value;
}
function restoreValue( field ) {
	var val = formUtil_fieldsBackup[ field.name ];
	if ( val == null ) val = "";
	field.value = val;
}

/**
 * Returns true if the pressed key is a number key.
 */
function isNumberKey( evt ) {
	try {
		var charCode = ( evt.which ) ? evt.which : event.keyCode;
		if ( charCode > 31 && ( charCode < 48 || charCode > 57 ) ) return false;
		return true;
	} catch( e ) {}
}

/**
 * Ensures a field's value is a number.
 */
function ensureNumberValue( field ) {
	var val = field.value;
	for(var i = 0; i < val.length; i++ ) {
		var charCode = val.charAt( i ).charCodeAt( 0 );
		if ( charCode > 31 && ( charCode < 48 || charCode > 57 ) ) {
			restoreValue( field );
			return;
		} // End if.
	} // End for.
	backupValue( field );
}
