function HTML_Form_Validator(fieldName)
{
	// Field information
	var fieldInfo = HTML_Form_Fields[fieldName];
	var field = HTML_Form_Field(fieldName);
	if (!field) return true;
	var condition;

	// If not validating form, return true
	if (!HTML_Forms[fieldInfo['Form']]['Validate']) return true;
	if (!fieldInfo['Validate']) return true;
	if (!fieldInfo['Validator']) return true;

	// For each non-change validator item, process
	for (var i = 0; i < fieldInfo['Validator'].length; i++) {
		condition = fieldInfo['Validator'][i];
		if (condition['Type'] == 'Required') {
			if (eval(condition['Condition'])) fieldInfo['Required'] = condition['Value'];
			else fieldInfo['Required'] = !condition['Value'];
			continue;
		}
		if (condition['Type'] == 'Error') {
			if (eval(condition['Condition'])) {
				alert(condition['Value']);
				if (field.focus && !field.disabled) field.focus();
				return false;
			}
			continue;
		}
	}

	// Everything good
	return true;
}


function HTML_Form_ValidatorChange(fieldName)
{
	// Field information
	var fieldInfo = HTML_Form_Fields[fieldName];
	var field = HTML_Form_Field(fieldName);
	if (!field) return true;
	var condition;

	// If not validating form, return true
	if (!HTML_Forms[fieldInfo['Form']]['Validate']) return true;
	if (!fieldInfo['Validate']) return true;
	if (!fieldInfo['Validator']) return true;

	// For each non-change validator item, process
	for (var i = 0; i < fieldInfo['Validator'].length; i++) {
		condition = fieldInfo['Validator'][i];
		if (condition['Type'] == 'Disabled') {
			if (eval(condition['Condition'])) field.disabled = condition['Value'];
			else field.disabled = !condition['Value'];
			continue;
		}
		if (condition['Type'] == 'ReadOnly') {
			if (eval(condition['Condition'])) field.readOnly = condition['Value'];
			else field.readOnly = !condition['Value'];
			continue;
		}
		if (condition['Type'] == 'Warning') {
			if (eval(condition['Condition'])) {
				alert(condition['Value']);
			}
			continue;
		}
	}

	// Everything good
	return true;
}

