function form_class(){
	this.form		=false;
	this.form.listeners	=new Array();
	this.request   		=false;
	this.themes		=this.themes_opt=false;
	//************************
	this.put_data		=function(data){this.form=eval('('+data+')');this.form["listeners"][0]["is_active"]=true}
	this.put_request	=function(data){this.request=eval('('+data+')');}
	this.put_themes		=function(data){this.themes_opt="";this.themes=eval('('+data+')');for(i in this.themes){this.themes_opt+='<option value="'+i+'">'+this.themes[i]+'</option>';}}
	this.redraw		=function(id,error){
		//показ правильного участника, особенно после удаления
		is_it=false;
		if(id)for(i in this.form["listeners"]){
			this.form["listeners"][i]["is_active"]=((id==i)?true:false);
			if(id==i)is_it=true;
		}
		if(!is_it)this.form["listeners"][0]["is_active"]=true;
		//**
		html='<table class="reg_table" id="reg_table">\n\
			<tr><td>Наименование предприятия:     			</td><td><input name="firm" 			value="'+this.form["firm"]+'"></td></tr>\n\
			<tr><td>Юридический адрес:	      			</td><td><input name="uadress" 			value="'+this.form["uadress"]+'"></td></tr>\n\
			<tr><td>Почтовый адрес:		      			</td><td><input name="adress" 			value="'+this.form["adress"]+'"></td></tr>\n\
			<tr><td>Номер телефона:		      			</td><td><input name="phone" 			value="'+this.form["phone"]+'"></td></tr>\n\
			<tr><td>Электронная почта:	       			</td><td><input name="email"			value="'+this.form["email"]+'"></td></tr>\n\
			<tr><td>Руководитель организации:			</td><td><input name="director" 		value="'+this.form["director"]+'"></td></tr>\n\
			<tr><td>Должность руководителя:				</td><td><input name="director_post" 		value="'+this.form["director_post"]+'"></td></tr>\n\
			<tr><td>На основании чего действует руководитель:	</td><td><input name="director_docs" 		value="'+this.form["director_docs"]+'"></td></tr>\n\
			<tr><td>Наименование банка:				</td><td><input name="bank" 			value="'+this.form["bank"]+'"></td></tr>\n\
			<tr><td>ИНН:   						</td><td><input name="inn" 			value="'+this.form["inn"]+'"></td></tr>\n\
			<tr><td>КПП:						</td><td><input name="kpp" 			value="'+this.form["kpp"]+'"></td></tr>\n\
			<tr><td>р/с:						</td><td><input name="r_s" 			value="'+this.form["r_s"]+'"></td></tr>\n\
			<tr><td>к/с:						</td><td><input name="k_s" 			value="'+this.form["k_s"]+'"></td></tr>\n\
			<tr><td>БИК:						</td><td><input name="bik" 			value="'+this.form["bik"]+'"></td></tr>\n\
			<tr><td>ОКПО:  						</td><td><input name="okpo" 			value="'+this.form["okpo"]+'"></td></tr>\n\
		</table><br />\
		<input type="button" value="Добавить участника" onclick="form_obj.add_listener();form_obj.redraw(form_obj.form[\'listeners\'].length-1,false)">\
		<table class="reg_table_listeners" id="reg_table_listeners" cellpadding=0 cellspacing=0>';
		n=0;
		active=false;
		for(i in this.form["listeners"]){
			n++;
			html+='<tr id="tr'+i+'">\
				<th class="select">Участник № '+n+'</th>\
				<th style="text-align:right" class="del">'+((this.form["listeners"][i]["is_active"] && i!=0)?"<a href='javascript:void(0)'>Удалить</a>":"")+'</th>\
			</tr>';
			if(this.form["listeners"][i]["is_active"] && !active)
				{
				active=true;
				html+='\
				<tr><td>ФИО участника:</td><td><input name="fio'+i+'" 			value="'+this.form["listeners"][i]["fio"]+'"</td></tr>\
				<tr><td>Должность участника:</td><td><input name="listener_post'+i+'"	value="'+this.form["listeners"][i]["listener_post"]+'"</td></tr>\
				<tr><td>Серия и номер паспорта:<br /><font size=1>(только для физ. лиц)</font></td><td><input name="passport_s'+i+'" style="width:35"\
													value="'+this.form["listeners"][i]["passport_s"]+'">\
													<input name="passport_n'+i+'" style="width:161"	value="'+this.form["listeners"][i]["passport_n"]+'"></td></tr>\
				</tr><tr><td>\
						<input type="checkbox" name="doklad'+i+'" id="doklad'+i+'" value="1" '+(this.form["listeners"][i]["doklad"]?'checked="checked"':"")+' onclick="document.getElementById(\'doklad_span'+i+'\').style.display=(this.checked)?\'block\':\'none\';"> <label for="doklad'+i+'">Докладчик</label><br />\
						<font size=1><a href="/index.php?pid=27" target="_blank" title="Подробнее">(Информация<br />для докладчиков)</a></font>\
				</td><td>\
						<span id="doklad_span'+i+'" style="display:'+(this.form["listeners"][i]["doklad"]?"block":"none")+'">\
							<select name="theme_id'+i+'" id="theme_id'+i+'">\
								<option value="0">Тема не выбрана</option>'+this.themes_opt+
							'</select></span>\
				</td></tr><tr><td>На каком круглом столе<br />Вы планируете<br />своё присутствие?</td><td>\
						<select name="theme_two_id'+i+'" id="theme_two_id'+i+'">\
							<option value="0">Тема не выбрана</option>'+this.themes_opt+
						'</select>\
				</td></tr><tr><td>\
				<input type="checkbox" name="general'+i+'" value="1" disabled="disabled" checked="checked"> Пленарное заседание</td><td><span id="general_span">'+this.request["cost_general"]+'</span> руб.</td></tr>';			
				if(this.request["type"]==0){
					html+='\
					<tr><td><input '+((this.form["listeners"][i]["banket"]>0)?'checked="checked"':"")+'		type="checkbox" name="banket'+i+'" 		id="banket'+i+'" 	value="1" ><label for="banket'+i+'">		Участие в торжественном ужине			</label></td><td><span id="banket_span">'+this.request["cost_banket"]+'</span> руб.</td></tr>\
					<tr><td><input '+((this.form["listeners"][i]["tech_tour"]>0)?'checked="checked"':"")+'		type="checkbox" name="tech_tour'+i+'"  		id="tech_tour'+i+'" 	value="1" ><label for="tech_tour'+i+'">        	Участие в техническом туре №1 на Загорскую ГАЭС	</label></td><td><span id="tech_tour_span">'+this.request["cost_tech_tour"]+'</span> руб.</td></tr>\
					<tr><td><input '+((this.form["listeners"][i]["tech_tour_two"]>0)?'checked="checked"':"")+'	type="checkbox" name="tech_tour_two'+i+'" 	id="tech_tour_two'+i+'" value="1" <label for="tech_tour_two'+i+'">	Участие в техническом туре №2 на Угличскую ГЭС	</label></td><td><span id="tech_tour_two_span">'+this.request["cost_tech_tour_two"]+'</span> руб.</td></tr>';
					}
				}
			}
		html+='\
		</table><div id="calculation"></div>';
		$("#form").html(html);
		
		//$("#reg_table_listeners").find("th:last").click(function(){form_obj.add_listener();form_obj.redraw(form_obj.form["listeners"].length-1,false)})
		
		$("#reg_table_listeners").find("th").parent().click(function(){id=$(this).attr("id").replace(/[^0-9]/ig,"");form_obj.redraw(id)}).hover(function(){$(this).find("th:first").css("color","yellow")},function(){$(this).find("th:first").css("color","white")})
		
		$("#reg_table_listeners").find("th.del a").click(function(){id=$(this).parent().parent().attr("id").replace(/[^0-9]/ig,"");form_obj.del_listener(id)})
		
		$("#reg_table input").blur(function(){
			form_obj.form[$(this).attr("name")]=$(this).val().replace(/((\")|(\'))/ig,"`");
			$(this).val(form_obj.form[$(this).attr("name")]);
		});
		$("#reg_table_listeners input:text").blur(function(){
			id=$(this).attr("name");
			form_obj.form["listeners"][id.replace(/[^0-9]/ig,"")][id.replace(/[0-9]/ig,"")]=(($(this).attr("type")=="text" || $(this).attr("checked"))?$(this).val().replace(/((\")|(\'))/ig,"`"):false);
			form_obj.redraw(id.replace(/[^0-9]/ig,""));
		});
		
		$("#reg_table_listeners input:checkbox").click(function(){
			id=$(this).attr("name");
			name=id.replace(/[0-9]/ig,"");
			id=id.replace(/[^0-9]/ig,"");
//			if((name=="tech_tour" && !$("#tech_tour_two"+id).attr("checked")) || (name=="tech_tour_two" && !$("#tech_tour"+id).attr("checked")) || (name.indexOf("tech_tour")==-1))
			
			form_obj.form["listeners"][id][name]=($(this).attr("checked"))?$(this).val():false;
			
			if(name=="tech_tour" && $(this).attr("checked"))form_obj.form["listeners"][id]["tech_tour_two"]=false;
			if(name=="tech_tour_two" && $(this).attr("checked"))form_obj.form["listeners"][id]["tech_tour"]=false;
			
			form_obj.redraw(id);});
			
		$("#reg_table_listeners select").change(function(){id=$(this).attr("name");form_obj.form["listeners"][id.replace(/[^0-9]/ig,"")][id.replace(/[0-9]/ig,"")]=$(this).val()})
		.each(function(){
			id=$(this).attr("name");
			val=form_obj.form["listeners"][id.replace(/[^0-9]/ig,"")][id.replace(/[0-9]/ig,"")];
			$(this).find("option[value="+val+"]").attr("selected", "selected");})
		
		$("input:checkbox").css("width","20").css("border","none");
		
		this.recalculate();
		}
	this.add_listener	=function(){this.form["listeners"][this.form["listeners"].length]=new listener_class(this.form["listeners"].length);}
	this.del_listener	=function(id){
		if(id!=0 && this.form["listeners"][id]["is_active"]){
			for(i=id-1;i>0;i--)if(this.form["listeners"][i])break;if(!i || i<0)i=0;
			delete this.form["listeners"][id];this.redraw(i,false);
		}
		
	}
	this.recalculate	=function(){
		cost=0;
		tmp=this.form["listeners"];
		for(i in tmp)
			{
			cost+=this.request["cost_general"]*1;
			if(tmp[i]["tech_tour"]>0)		cost+=this.request["cost_tech_tour"]*1;
			if(tmp[i]["tech_tour_two"]>0)		cost+=this.request["cost_tech_tour_two"]*1;
			if(tmp[i]["banket"]>0)			cost+=this.request["cost_banket"]*1;
			if(tmp[i]["hotel"]>0)			cost+=this.request["cost_hotel"]*1;
			}
		$("#calculation").html("Итого: "+cost+" руб");
		}
	this.check_form		=function(){
		if(!is_int(f1.phone.value))
			{
			alert("Номер телефона должен состоять только из цифр");
			f1.phone.focus();
			return false;
			}
		if(!is_email(f1.email.value))
			{
			alert("Не корректный адрес электронной почты");
			f1.email.focus();
			return false;
			}
		//-------------------------------------------------
		if(f1.firm.value.replace(/ /,"").length==0)
			{
			alert("Наименование предприятия обязательно к заполнению");
			f1.firm.focus();
			return false;
			}
		if(f1.uadress.value.replace(/ /,"").length==0)
			{
			alert("Юридический адрес обязателен к заполнению");
			f1.uadress.focus();
			return false;
			}
		if(f1.adress.value.replace(/ /,"").length==0)
			{
			alert("Почтовый адрес обязателен к заполнению");
			f1.adress.focus();
			return false;
			}
		if(f1.director.value.replace(/ /,"").length==0)
			{
			alert("Руководитель организации обязателен к заполнению");
			f1.director.focus();
			return false;
			}
		if(f1.director_post.value.replace(/ /,"").length==0)
			{
			alert("Должность руководителя организации обязательна к заполнению");
			f1.director_post.focus();
			return false;
			}
		if(f1.director_docs.value.replace(/ /,"").length==0)
			{
			alert("На основании чего действует руководитель обязательно к заполнению");
			f1.director_docs.focus();
			return false;
			}
		if(f1.bank.value.replace(/ /,"").length==0)
			{
			alert("Наименование банка обязательно к заполнению");
			f1.bank.focus();
			return false;
			}
		//-------------------------------------------
		if(!is_int(f1.inn.value) || f1.inn.value.replace(/ /,"").length!=10)
			{
			alert("ИНН должен состоять состоять из 10-ти цифр");
			f1.inn.focus();
			return false;
			}
		if(!is_int(f1.kpp.value) || f1.kpp.value.replace(/ /,"").length!=9)
			{
			alert("КПП должен состоять состоять из 9-ти цифр");
			f1.kpp.focus();
			return false;
			}
		if(!is_int(f1.r_s.value) || f1.r_s.value.replace(/ /,"").length!=20)
			{
			alert("Р/с должен состоять состоять из 20-ти цифр");
			f1.r_s.focus();
			return false;
			}
		if(!is_int(f1.k_s.value) || f1.k_s.value.replace(/ /,"").length!=20)
			{
			alert("К/с должен состоять состоять из 20-ти цифр");
			f1.k_s.focus();
			return false;
			}
		if(!is_int(f1.bik.value) || f1.bik.value.replace(/ /,"").length!=9)
			{
			alert("БИК должен состоять состоять из 9-ти цифр");
			f1.bik.focus();
			return false;
			}
		if(!is_int(f1.okpo.value) /*|| f1.okpo.value.replace(/ /,"").length!=5*/)
			{
			alert("Поле ОКПО обязательно к заполнению");
			f1.okpo.focus();
			return false;
			}
		/*if(!is_int(f1.okonh.value))
			{
			alert("Поле ОКОНХ обязательно к заполнению");
			f1.okonh.focus();
			return false;
			}*/
		for(i in this.form["listeners"])
			{
			tmp=this.form["listeners"][i];
			if(!is_text_int(tmp.fio))
				{
				alert("ФИО должно состоять из букв");
				this.redraw(i);
				return false;
				}
			if(!is_text_int(tmp.listener_post))
				{
				alert("Должность участника должна состоять из букв");
				this.redraw(i);
				return false;
				}
			if(!is_int(tmp.passport_s) || tmp.passport_s.replace(/ /,"").length!=4)
				{
				alert("Серия паспорта должна состоять из 4-х цифр");
				this.redraw(i);
				return false;
				}
			if(!is_int(tmp.passport_n) || tmp.passport_n.replace(/ /,"").length!=6)
				{
				alert("Номер паспорта должен состоять из 6-ти цифр");
				this.redraw(i);
				return false;
				}
			}
		return true;
		}
	}
function listener_class(id){
	this.listener_id=id;
	this.is_active=false;
	this.order_id
		=this.fio
		=this.listener_post
		=this.passport_s
		=this.passport_n=""
	this.tech_tour
		=this.tech_tour_two
		=this.banket
		=this.hotel
		=this.block
		=this.doklad
		=this.theme_id
		=this.theme_two_id
		=0;
	}
function is_text_int(text){
	re=/[0-9a-zа-яё\s\-]/i;return re.test(text);
}
function is_int(text){
	re=/[0-9\s]/i;return re.test(text);
}
function is_email(text){
	re = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i;return re.test(text);
}
function check_forms(){
	delete form_obj.themes_opt;
	f1.obj.value=JSON.stringify(form_obj);if(form_obj.check_form())f1.submit();
}