var FormCheck = 
{
	GetPrefixPos: 0,
	
	checkOne: function(fname)
	{	
		prefix = this.getNextPrefix(fname);
		if (!this.prefixes[prefix](fname))
		{		
			fname.focus();
			this.GetPrefixPos = 0;
			alert(this.warnings[prefix]);		
			return false;
		}
	},

	checkFields: function(form)
	{
		var prefix;
		var form_length = form.elements.length;

		for(var c = 0; c < form_length; c++)
		{
			var i = form.elements[c];
			while ((prefix = this.getNextPrefix(i)) != "" && !i.disabled)
			{
				if(!(this.prefixes[prefix](i)))
				{
					form.elements[c].focus();
					this.GetPrefixPos = 0;
					alert(this.warnings[prefix]);
					return false;
				}
			}
		}
		
		return true;
	},

	getNextPrefix: function(obj)
	{
		var prefix;
		var cond = obj.getAttribute("condition", 2);
		if (cond != null)
		{
			for (prefix in this.prefixes)
			{
				if (cond.substring(this.GetPrefixPos, this.GetPrefixPos + prefix.length) == prefix)
				{
					this.GetPrefixPos += prefix.length;
					return prefix;
				}
			}
		}
		this.GetPrefixPos = 0;
		prefix = "";
		return prefix;
	},

	prefixes: 
	{
		_nonempty_: function(obj)
		{
			var val = obj.value;
			if (val.replace(/(^\s*)|(\s*$)/g, "") == "") { return false; }
			return true;
		},

		_email_: function(obj)
		{
			var val = obj.value;
			if (val == "") { return true; }
			var re = /^\w+[\w-]*(\.\w[\w-]*)*@\w[\w-]*\.(\w[\w-]*\.)*\w{2,}$/i;
			if (!val.match(re)) { return false; }
			return true;
		},

		_number_: function(obj)
		{
			var val = obj.value;
			if (val == "") { return true; }
			var re = /^-?\d+[\.,]?\d*$/;
			if (!val.match(re)) { return false; }
			return true;
		},

		_select_: function(obj)
		{
			var val = obj.options[obj.selectedIndex].value;
			if (val == "") { return false; }
			return true;
		},

		_radio_: function(obj)
		{
			var form = obj.form;
			var obj_name = obj.name;
			var objs = form.elements[obj_name];
			var obj_length = objs.length;
			var status = false;

			if (obj_length)
			{
				for (var i = 0; i < obj_length; i++)
				{
					if (objs[i].checked)
					{
						status = true;
						break;
					}
				}
			}
			else if (objs.checked) { status = true; }
			
			return status;
		}
	},

	warnings:
	{
		_nonempty_: 'Не заполнено обязательное поле',
		_email_: 'Неверный формат email',
		_number_: 'Неверный формат числа',
		_select_: 'Не выбрано поле',
		_radio_: 'Не выбрано поле'
	}
}