/*
	Validation v1.41
*/
var forms=new Array();
validation_init();
validate();
function ffocus (objdata) 
{
	if (objdata.value==objdata.alt) 
	{
		objdata.value='';
		objdata.className+=" active";
	}
}
function fblur (objdata) 
{
	if (objdata.value=='') 
	{
		objdata.value=objdata.alt;
		objdata.className=objdata.className.replace(/active/g,"");
	}
}
function validation_init_refresh()
{
	/* В начале нужно пробежаться по всем элементам на формах и восстановить их дефолтные события, если они переопределялись*/
	for (q=0;q<forms.length;q++)
	{
		form=forms[q];
		for (i=0;i<form[1].length;i++)
		{
			if ((form[1][i].type=='text')||(form[1][i].type=='password')||(form[1][i].type=='textarea')||(form[1][i].type=='file'))
			{
				if (form[1][i]._onkeyup!=null)
				{
					form[1][i].onkeyup=form[1][i]._onkeyup;
					form[1][i]._onkeyup=null;
				}else
				{
					form[1][i].onkeyup=null;
				}
				form[1][i].onkeydown=null;
				form[1][i].onblur=null;
				form[1][i].onfocus=null;
			}
			if (form[1][i].type=='select-one')
			{
				if (form[1][i]._onchange!=null)
				{
					form[1][i].onchange=form[1][i]._onchange;
					form[1][i]._onchange=null;
				}else
				{
					form[1][i].onchange=null;
				}
			}
			if (form[1][i].type=='checkbox')
			{
				if (form[1][i]._onclick!=null)
				{
					form[1][i].onclick=form[1][i]._onclick;
					form[1][i]._onclick=null;
				}else
				{
					form[1][i].onclick=null;
				}
				form[1][i].onblur=null;
			}
			if (form[1][i].type=='radio')
			{
				for (z=0;z<form[2][form[1][i].name].length;z++)
				{
					if (form[2][form[1][i].name][z]._onclick!=null)
					{
						form[2][form[1][i].name][z].onclick=form[2][form[1][i].name][z]._onclick;
						form[2][form[1][i].name][z]._onclick=null;
					}else
					{
						form[2][form[1][i].name][z].onclick=null;
					}
				}
			}
		}
	}
	forms=new Array();
	validation_init();
	validate();
}
function validation_init()
{
	forms_count=document.forms.length;
	/*Ловим форму, требующую проверки*/
	if (forms_count==0)
	{
		return;
	}
	form_id=0;
	for (f=0;f<document.forms.length;f++)
	{
		if (document.forms[f].className.search("valid_form")>-1)
		{
			forms[form_id]=new Array(); //Определяем новую форму
			forms[form_id][1]=new Array(); //Определяем массив элементов
			forms[form_id][2]=document.forms[f];
			form_tmp=forms[form_id];
			z=0;
			for (i=0;i<document.forms[f].elements.length;i++)
			{
				var tmp=document.forms[f].elements[i];
				if (tmp.type=='submit')
				{
					forms[form_id][0]=tmp;
				}
				if (tmp.className.search("valid_check")>-1)
				{
					/* Расковыриваем параметры для всех элементов, кроме radio */
					if (tmp.type!='radio')
					{
						var params=tmp.className.match(/valid_params\((.*)\)/);
						if (params!=null)
						{
							tmp.valid_params = new Array();
							params=params[1].split(/,/);
							for (p=0;p<params.length;p++)
							{
								var vars=params[p].split(/=/);
								tmp.valid_params[vars[0]]=vars[1];
							}
						}
					}
					if ((tmp.type=='text')||(tmp.type=='password')||(tmp.type=='textarea')||(tmp.type=='file'))
					{
						tmp._form_id=form_id;
						tmp.onkeydown=function () {validate(this);};
						if (tmp.onkeyup==null)
						{
							tmp.onkeyup=function () {validate(this);};
						}else
						{
							tmp._onkeyup=tmp.onkeyup;
							tmp.onkeyup=function () {this._onkeyup();validate(this);};
						}
						if ((tmp.type=='text')||(tmp.type=='password')||(tmp.type=='file'))
						{
							tmp.onfocus=function () {validate(this);ffocus(this);};
							tmp.onblur=function () {fblur(this);validate(this);};
						}
						forms[form_id][1][z]=tmp;
						z++;
					}
					if (tmp.type=='select-one')
					{
						if (tmp.onchange==null)
						{
							tmp.onchange=function () {validate(this);};
						}else
						{
							tmp._onchange=tmp.onchange;
							tmp.onchange=function () {this._onchange();validate(this);};
						}
						tmp.onblur=function () {validate(this);}
						tmp._form_id=form_id;
						forms[form_id][1][z]=tmp;
						z++;
					}
					if (tmp.type=='checkbox')
					{
						if (tmp.onclick==null)
						{
							tmp.onclick=function () {validate(this);};
						}else
						{
							tmp._onclick=tmp.onclick;
							tmp.onclick=function () {this._onclick();validate(this);};
						}
						tmp._form_id=form_id;
						forms[form_id][1][z]=tmp;
						z++;
					}
					if (tmp.type=='radio')
					{
						for (k=0;k<document.forms[f][tmp.name].length;k++)
						{
							document.forms[f][tmp.name][k]._form_id=form_id;
							if (document.forms[f][tmp.name][k].onclick==null)
							{
								document.forms[f][tmp.name][k].onclick=function () {validate(this);};
							}else
							{
								document.forms[f][tmp.name][k]._onclick=document.forms[f][tmp.name][k].onclick;
								document.forms[f][tmp.name][k].onclick=function () {this._onclick();validate(this);};
							}
						}
						forms[form_id][1][z]=tmp;
						z++;
					}
				}
			}
			form_id++;
		}
	}
}
function validate_form(form)
{
	if (form[2].offsetHeight==0)
	{
		return;
	}
	enabled=true;
	for (i=0;i<form[1].length;i++)
	{
		if (form[1][i].offsetHeight>0)
		{
			if ((form[1][i].type=='text')||(form[1][i].type=='password')||(form[1][i].type=='textarea')||(form[1][i].type=='file'))
			{
				if ((form[1][i].value=='')||(form[1][i].value==form[1][i].alt))
				{
					enabled=false;
					break;
				}
				if (form[1][i].valid_params!=null)
				{
					if (form[1][i].valid_params["type"]!=null)
					{
						if (form[1][i].valid_params["type"]=='integer')
						{
							if (form[1][i].value.search(/[^0-9]+/ig)>-1)
							{
								enabled=false;
								break;
							}
						}
						if (form[1][i].valid_params["type"]=='float')
						{
							if (form[1][i].value.search(/,/ig)>-1)
							{
								form[1][i].value=form[1][i].value.replace(/,/g,'.');
							}
							if (form[1][i].value.match(/^([0-9]+)([\.]*)([0-9]*)$/i)==null)
							{
								enabled=false;
								break;
							}
						}
					}
				}
			}
			if (form[1][i].type=='select-one')
			{
				if (form[1][i].selectedIndex==0)
				{
					enabled=false;
					break;
				}
			}
			if (form[1][i].type=='radio')
			{
				checked=false;
				for (z=0;z<form[2][form[1][i].name].length;z++)
				{
					if (form[2][form[1][i].name][z].checked)
					{
						checked=true;
					}
				}
				if (!checked)
				{
					enabled=false;
					break;
				}
			}
			if (form[1][i].type=='checkbox')
			{
				if (form[1][i].valid_params!=null)
				{
					if (form[1][i].valid_params["group"]!=null)
					{
						/*Указан параметр group. Значит надо проверить тезок...*/
						var check=false;
						for (c=0;c<form[1].length;c++)
						{
							if (form[1][c].type=='checkbox')
							{
								if (form[1][c].offsetHeight>0)
								{
									if ((form[1][c].valid_params!=null)&&(form[1][c].checked))
									{
										if (form[1][c].valid_params["group"]!=null)
										{
											if (form[1][c].valid_params["group"]==form[1][i].valid_params["group"])
											{
												check=true;
												break;
											}
										}
									}
								}
							}
						}
						if (!check)
						{
							enabled=false;
							break;
						}
					}
				}
			}
		}
	}
	form[0].disabled=!enabled;
}
function validate(self)
{
	if (self==null)
	{
		for (q=0;q<forms.length;q++)
		{
			validate_form(forms[q]);
		}
		return;
	}
	f_id=self._form_id;
	validate_form(forms[f_id]);
}