	var validator={
		showErr:function(s)
		{
			var json = eval("("+s+")");
			for(each in json)
			{
				$("div#e_"+each).html(json[each]);
				$("span#e_"+each).html(json[each]);
			}
		},
		formCorrection:function(json, id_form)
		{
			var c='<div class="win_form_content"><h1 class="center">Пожалуйста, исправьте ошибки заполнения формы</h1><br/><table id="form_correct" width="95%" align="center" >';

			var err=null;
			var element=null;
			$("#"+id_form+" select").show();
			for(each in json)
			{
				err = $("#"+id_form+" #e_"+each);
				$(err).html(json[each]);
				element = $("#"+id_form+" [name="+each+"]");
				if (element.length==0)
					element = $("#"+id_form+" #"+each);
				
				//if ($(element).attr("type")=='file')
					//$(element).hide();

				var is_calendar = false;
				if (each.substr(0,5)=='date_' || each.substr(0,9)=='datetime_')
					is_calendar = true;

				if ($(element).attr("type")!="hidden" && $(element).attr("type")!='file' && !is_calendar)
				{

					var td = $(element).parent();
					var tr = $(td).parent();
					if ($(element).attr("name")=='captcha')
						$(tr).find("img").attr("src","/_t/captcha/?"+grv());

					c+="<tr>"+$(tr).html()+"</tr>";
				}
				else
				{
					var td = $(element).parent();
					var prev = $(td).prev();
					c+="<tr><td class='form_title'>"+$(prev).html()+"</td><td class='form_txt'>"+$(td).html()+"</td></tr>";
				}


			}

			c+='<tr><td colspan=2 style="text-align:right;"><br/> <input type="button" id="correct_button" value="Исправить" />&#160;<input type="button" id="close_button" value="Отмена" /></td></tr></table></div>';

			baseWin({id:"win_form", is_modal:true, html:c, width:"60%", height:"50%"});

			for(each in json)
			{
				$("table#form_correct div#e_"+each).html(json[each]);
				element = $("form#"+id_form+" [name="+each+"]");
				var val = $(element).val();
				$("table#form_correct [name="+each+"]").val(val);
			}

			$("#correct_button").click(
				function()
				{
			    	var is_file_input = false;
			    	var el = null;
			    	for(each in json)
					{
						el = $("#"+id_form+" [name="+each+"]");
						if ($(el).attr("type")!="file")
						{
							$(el).val($("#form_correct [name="+each+"]").val());
						}
						else is_file_input=true;


						if (each.substr(0,5)=='date_' || each.substr(0,9)=='datetime_')
							is_file_input = true;

						$(el).show();
					}
					if (!is_file_input)
						submitForm(id_form);
					else
					{
						$("#"+id_form+" select").show();
						Desktop.getToolsById("win_form").hide();
					}
			    }
			);

			$("#close_button").click(
				function()
				{
			    	$("#"+id_form+" select").show();
					Desktop.getToolsById("win_form").hide();
			    }
			);
		},
		success:function(response)
		{
			if (response.txt)
			{
				var c ='<div class="win_form_content">'+response.txt + '<br/><input type="button" id="close_button" value="Закрыть"/></div>';
				baseWin({id:"win_form", is_modal:true, html:c, width:"500px", height:"50%"});
			}

			if (!response.txt && response.redirect_url)
			{
				location.href = response.redirect_url;
				return;
			}

			if (response.redirect_url)
			{				$("#win_form #close_button").click(
					function()
					{						Desktop.getToolsById("win_form").hide();
						location.href = response.redirect_url;
					}
				);
			}

			if (response.close)
			{   				$("#win_form #close_button").click(
					function()
					{
						Desktop.getToolsById("win_form").hide();
					}
				);
			}


		}

	}


