var FormField = {
	'GetField' :
		function(fieldId)
		{
			if (isNaN(fieldId) && typeof(fieldId) == 'object') {
				fieldId = $j(fieldId).attr('id');
			}
			
			if (fieldId == "")
			{
				return false;
			}

			var field = el(fieldId);

			if (typeof(field) == 'undefined') {
				return false;
			}

			return field;
		},
	'GetFieldType':
		function(field)
		{
			var field = FormField.GetField(field);

			switch( field.type ){
				case "select": case "select-one": case "select-multiple":
					t = "select";
					break;
				case "text": case "hidden": case "textarea": case "password": case "button": case "submit": case "submit":
					t = "text";
					break;
				case "checkbox": case "radio":
					t = field.type;
					break;
			}
			return t;
		},
	'GetFieldDefinitionData':
		function(field)
		{
			var field = FormField.GetField(field);

			if (!field || $j(field).parent('dd').length == 0) {
				return false;
			}

			return $j(field).parent('dd');
		},

	'GetFieldDefinitionTag':
		function(field)
		{
			var dd = FormField.GetFieldDefinitionData(field);

			if (!dd || $j(dd).prev('dt').length == 0) {
				return false;
			}

			return $j(dd).prev('dt');
		},
	'GetValue':
		function(fieldId)
		{
			var field = FormField.GetField(fieldId);
			
			if (!field || typeof(field) == 'undefined') {
				return '';
			}
			var field_type = FormField.GetFieldType(field).toLowerCase();

			switch (field_type) {
				case 'radio':
				case 'checkbox':
					var value = $j("input:"+field_type+"[name="+$j(field).attr('name')+"]:checked").val();
					if (typeof(value) == 'undefined')
					{
						return '';
					}
					return value;
					break;
				case 'select':
					return $j(field).val();
					break;
				default:
					return $j(field).val();
					break;
			}
		},
	'IsHide':
		function(field)
		{
			
			var field = FormField.GetField(field);
			
			if (!field || typeof(field) == 'undefined') {
				return false;
			}
			
			var display = $j(field).css("display");
			
			if (display == 'none')
			{
				return true;
			}

			return false;
		},
	'IsRequired':
		function(field)
		{
			var dt = FormField.GetFieldDefinitionTag(field);

			if (!dt) {
				return false;
			}

			var span = $j('.FieldRequired', dt).text();
			
			if (span != "*") {
				return false;
			}
			
			return true;
		},
	'GetLabel':
		function(field)
		{
			var dt = FormField.GetFieldDefinitionTag(field);

			if (!dt) {
				return false;
			}

			var label = $j('.FieldLabel', dt).text();
			label = label.replace(/:/, '');

			return label;
		},
	'Focus':
		function(field)
		{
			field = FormField.GetField(field);

			if (!field) {
				return;
			}

			var selected = null;
			var doSelect = true;

			switch (FormField.GetFieldType(field).toLowerCase()) {
				case 'select':
					selected = $j('input:first', field);
					doSelect = false;
					break;

				default:
					selected = field;
			}

			if (selected == null) {
				return;
			}

			if (doSelect) {
				$j(selected).select();
			}

			$j(selected).focus();
		},
	'Validate':
		function(field)
		{
			field = FormField.GetField(field);

			if (!field) {
				return false;
			}

			var rtn = {'status': true, 'msg': ''};
			var val = FormField.GetValue(field);
			var type = FormField.GetFieldType(field).toLowerCase();

			if (FormField.IsRequired(field) && val == '') {
				if (type == 'select') {
					// Do nothing
				} else if (type == 'password') {
					// same here
				} else if (type == 'checkbox' || type == 'radio') {
					rtn.msg = lang.FieldsValidationOptionRequired;
				} else {
					rtn.msg = lang.FieldsValidationRequired;
				}
			}

			if ( rtn.msg !== '' && !FormField.IsHide(field) ) {
				rtn.msg = rtn.msg.replace(/'%s'/, "'" + FormField.GetLabel(field) + "'");
				rtn.status = false;
			}

			return rtn;
		}
}
