function HTML_Form_TextField(fieldName, field, fieldInfo)
{
	if (!fieldInfo['TextField']) return true;
	var textFieldInfo = fieldInfo['TextField'];

	// Check for requirement
	if (fieldInfo['Required'] && field.value.length == 0)
	{
		alert(HTML_Form_Error(fieldName, 'required', fieldInfo['Title']));
		if (!field.disabled && field.focus) field.focus();
		return false;
	}

	// Check for numericness
	if (field.value.length != 0 && textFieldInfo['Numeric'] == 1 && isNaN(parseInt('0'+field.value)))
	{
		alert(HTML_Form_Error(fieldName, 'numeric', fieldInfo['Title']));
		if (!field.disabled && field.focus) field.focus();
		return false;
	}

	// Check if over maximum field size
	if (textFieldInfo['MaxLength'] > 0 && field.value.length > textFieldInfo['MaxLength'])
	{
		alert(HTML_Form_Error(fieldName, 'maxlength', fieldInfo['Title'], textFieldInfo['MaxLength']));
		if (!field.disabled && field.focus) field.focus();
		return false;
	}

	// Check if under minimum field size
	if (field.value.length < textFieldInfo['MinLength'])
	{
		alert(HTML_Form_Error(fieldName, 'minlength', fieldInfo['Title'], textFieldInfo['MinLength']));
		if (!field.disabled && field.focus) field.focus();
		return false;
	}

	// Check if matches validator
	if (textFieldInfo['RegExp'] != '' && field.value.length > 0)
	{
		var reg = new RegExp(textFieldInfo['RegExp']);
		if (!reg.test(field.value))
		{
			alert(HTML_Form_Error(fieldName, 'notvalid', fieldInfo['Title']));
			if (!field.disabled && field.focus) field.focus();
			return false;
		}
	}

	// Check if matches validator
	if (textFieldInfo['NotRegExp'] != '' && field.value.length > 0)
	{
		var notReg = new RegExp(textFieldInfo['NotRegExp']);
		if (notReg.test(field.value))
		{
			alert(HTML_Form_Error(fieldName, 'notvalid', fieldInfo['Title']));
			if (!field.disabled && field.focus) field.focus();
			return false;
		}
	}

	return true;
}

function HTML_Form_TextField_IsNumKey(event)
{
	if (event.keyCode) key = event.keyCode;
	else key = event.which;
	if (key == 46 || key == 44 || key == 45) return true;
    if ((key > 31 && key < 48) || key > 57) return false;
    return true;
}

