
function validate_mail(value)
{
	re=/^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/;
	return re.test(value);
}

function validate_basic(value)
{
	re=/^\s*$/i;
	return !re.test(value);
}
function validate_mysql_date(value)
{
	re=/^[12]\s{3}-\s{1,2}-\s{1,2}$/i;
	return re.test(value);
}
function validate_mysql_date_time(value)
{
	re=/^[12]\d{3}-\d{1,2}-\d{1,2}\s\d{2}:\d{2}:\d{2}$/i;
	return re.test(value);
}
function dnk_form_validator()
{
	this.validators=Array();
	this.register_validator=function(alias, func, msg_ok, msg_bad)
	{
		this.validators[alias]=Array(3);
		this.validators[alias]['func']=func;
		this.validators[alias]['msg_ok']=msg_ok;
		this.validators[alias]['msg_bad']=msg_bad;
	}
	this.validate_field=function()
	{
		e=EventUtil.getEvent();
		obj=e.target;
		if (alias=obj.getAttribute('validate'))
		{
			if (fv.validators[alias]['func'](obj.value))
			{
				fv.message_ok(fv.validators[alias]['msg_ok'],obj);
			}
			else
			{
				fv.message_bad(fv.validators[alias]['msg_bad'],obj);
			}
		}
		else
		{
			fv.message_bad("Validation handler not found",obj);
		}
	}
	this.validate_field_submit=function(obj)
	{
		if (alias=obj.getAttribute('validate'))
		{
			if (fv.validators[alias]['func'](obj.value))
			{
				fv.message_ok(fv.validators[alias]['msg_ok'],obj);
				return true;
			}
			else
			{
				fv.message_bad(fv.validators[alias]['msg_bad'],obj);
				return false;
			}
		}
		else
		{
			fv.message_bad("Validation handler not found",obj);
		}
	}
	this.submit_form=function()
	{
		e=EventUtil.getEvent();
		obj=e.target;
		name=obj.name;
		vals=obj.getElementsByTagName("input");
		var allow_submit=true;
		for (i=0; i<vals.length;i++)
		{
			if (vals[i].getAttribute("validate"))
			{
				allow_submit&=fv.validate_field_submit(vals[i]);
			}
		}
		if (!allow_submit) e.preventDefault();
	}
	this.message_ok=function(message, obj)
	{
		document.getElementById(obj.getAttribute("id")+"_div").style.display='none';
	}
	this.message_bad=function(message, obj)
	{
		document.getElementById(obj.getAttribute("id")+"_div").style.display='block';
	}
	this.register_form=function(name)
	{
		pforms=document.getElementsByTagName('form');
		for(i=0; i<pforms.length;i++)
		{
			if (pforms[i].getAttribute("name")==name)
			{
				myform=pforms[i];
				EventUtil.addEventHandler(myform,"submit",this.submit_form);
				pvals=myform.getElementsByTagName('input');
				for (k=0; k<pvals.length; k++)
				{
					if (val_type=pvals[k].getAttribute('validate'))
					{
						if (this.validators[val_type])
						{
							EventUtil.addEventHandler(pvals[k],"blur",this.validate_field);
						}
					}
				}
				break;
			}
		}
	}
	return this;
}
var fv=new dnk_form_validator();
fv.register_validator("basic",validate_basic,"Поле введено правильно", "Поле не может быть пустым");
fv.register_validator("mail",validate_mail,"Поле введено правильно", "Поле должно иметь формат user@domain");

