		function fnShowProps(obj, objName){
			var result = "";
			for (var i in obj) // обращение к свойствам объекта по индексу
				result += objName + "." + i + " = " + obj[i] + "<br />\n";
			document.write(result);
		}

(function($) { //create closure

$.fn.adv_formmaker = function(options){
	var defaults = {
	};
	var errors = 0; var msg='';
	var opts = $.extend(defaults, options);
	var name = "";
	var span = null;
	var a = null;
	var textblock = null;
	var textcanvas = null;
	
	var form = $(this);
	$(":input",form).each(function(){
	var field = $(this);
	var ID = $(field).attr("id");
	
	if ($(field).is('select')) {
		if ($(this).attr('multiple')) {
			textblock = $("<div class=\"inptmultiblock clearfix\"></div>").insertBefore(field);
			textcanvas = $("<div></div>");
			$(field).css({'border':'none', 'width':'98%', 'margin-top':'5px'}).appendTo(textcanvas);
			$(textcanvas).appendTo(textblock);
		} else {
			//fnShowProps($(field));
			//$(field).attr("id") == 'field-_FILIAL_SIGNATURE__E'
			if ($(field).attr('add_class')) {
				add_class = $(field).attr('add_class');
			} else add_class = '';
			var selblock = $("<div class=\"inpselblock "+add_class+" clearfix\"></div>");
			var seltxt = $("<div class=\"inpseltxt\"></div>");
			
			$(field).wrap(selblock);
			$(seltxt).insertBefore(field);
			$(seltxt).html("<div>"+$("option:selected",field).text()+"</div>");
			
			if ($(field).attr('add_class')) {
				add_class = 'optcontainer_'+$(field).attr('add_class');
			} else add_class = '';
			var selopener = $("<a class=\"selopener\" href=\"#\"></a>").insertBefore(seltxt);
			var optcontainer = $("<div class=\"optcontainer "+add_class+" \" id=\""+$(field).attr("name")+"opts\"></div>").appendTo("body");
			var opts = $("<div></div>").appendTo(optcontainer);
	/*			$(optcontainer).hide(function(){
				$(this).addClass("off");
			});
			*/
			$(optcontainer).hide().addClass("off");
			
			$("option",field).each(function(k){
				var opt = $(this);
				var aopt = $("<a href=\"#\">"+$(opt).text()+"</a>").appendTo(opts);
				$(aopt).click(function(){
					$(field).get(0).selectedIndex = k;
					$(seltxt).html("<div>"+$("option:eq("+k+")",field).text()+"</div>");
					$(optcontainer).hide("fast",function() {
						$(this).addClass("off");
					});
					$(field).change();
					return false;
				});
			});
			$(selopener).click(function(){
				hideSelOpts();
				if ($(optcontainer).hasClass("off")) {
					var pos = $(seltxt).offset();
					$(optcontainer).removeClass("off");
					$(optcontainer).css({zIndex:"9999",left: pos.left-6+"px", top: pos.top + 22+ "px"});
					$(optcontainer).show("fast", function(){
						$(window).one("click",function(e) {
							if (e.pageX < pos.left-6 || e.pageX > (pos.left - 6 + $(optcontainer).width()) || e.pageY < (pos.top) || e.pageY > (pos.top + 22 + $(optcontainer).height())) {
								$(optcontainer).hide("fast",function() {
									$(this).addClass("off");
								});
								} 
						});
					
					});
				} else {
					$(optcontainer).hide("fast",function() {
						$(this).addClass("off");
					});
				}
				return false;
			});
		}

	}
	switch ($(field).attr("type")) {
		case "radio" :
			var rlabel = $("label[for="+ID+"]",form); // поискать label для кнопки
			if (ID!="" && $(rlabel).length > 0) { //  дальше только если есть label для radio
				name = $(field).attr("name");
				var radioblock = $("<div class=\"radioblock\"></div>").insertBefore(field);
				span = $("<span class=\"radiomark\"></span>").appendTo(radioblock);
                                $(field).appendTo(radioblock);
				$(rlabel).appendTo(radioblock);
				if ($(field).attr("checked")){
					$(radioblock).addClass("checked");
					$(radioblock).parent().addClass("checked");
				}
				$(field).addClass("off");
				$("label,span",radioblock).click(function() {
					if ($('#fog').css('display') == 'block') return false;
					parent_field_container = $(rlabel).parent().parent().parent().parent();
					if (!$(parent_field_container).hasClass('disable_js')) {
						if (!$(field).attr("checked")) {
							var name = $(field).attr("name").replace("[", "\\[").replace("]", "\\]");
							var rblock = $("input[name="+name+"]");
							$(rblock).parent("div.radioblock").removeClass("checked");
							$(rblock).parent("div.radioblock").parent().removeClass("checked");
							$(field).attr("checked","checked");
							$(radioblock).addClass("checked");
							$(radioblock).parent().addClass("checked");
							if ($(field).hasClass('office_changer')) {
								$(field).parent().parent().next().children('.calc_offices_header').trigger('click');
								//$(field).parent().parent().parent().parent().parent().find('input[type=hidden]').val($(field).parent().parent().next().children('.calc_offices_header').text());
								//CheckDataForm();
							}
						}
						hideSelOpts();
						$(field).change();
					}
					return false;
				});
			}

		break; // radio	
		
		case "checkbox" :
			var cdiv = $("div#"+ID+"Block",form); // поискать блок, который можно спрятать
			var clabel = $("label[for="+ID+"]",form); // поискать label для кнопки
			var checkcontainer = $(field).parent("."+ID); // поискать, может быть оно в контейнере?
								// обычно, для пользовательского соглашения
			if (ID!="" && $(clabel).length > 0) { // дальше только если есть label для radio
				name = $(field).attr("name");
				if ($(checkcontainer).length > 0) {
					chkblock = $("<div class=\"chkblock clearfix\"></div>").insertBefore(checkcontainer);
					span = $("<ins class=\"chkmark\"></ins>").appendTo(chkblock);

					$(checkcontainer).appendTo(chkblock);
				} else {
					chkblock = $("<div class=\"chkblock clearfix\"></div>").insertBefore(field);
					span = $("<ins class=\"chkmark\"></ins>").appendTo(chkblock);
                    $(field).appendTo(chkblock);
					$(clabel).appendTo(chkblock);
				}
				
				
				//var chk = $(field).attr("checked");
				var chk = $(field).is(":checked");
				if (chk) {
					$(chkblock).addClass("checked");
				}
				if ($(cdiv).length > 0) {
					if (chk) {
						$(cdiv).show("fast");
					} else {
						$(cdiv).hide("fast");
					}
				}
				$(field).addClass("off");
				var chkblock2 = $(field).parent(".chkblock");
				if(!chkblock2 || chkblock2.length == 0){
					// если не нашлось прямого родителя с классом chkblock, значит должен быть дедушка
					chkblock2 = $(field).parent().parent(".chkblock");
				}
				// почему-то chkblock определяется неправильно, отмечается последний элемент из чекбоксов в форме
				// сделала новую переменную - сейчас работает нормально.
				$("label,ins",chkblock2).click(function() {
					//if ($(this).is('label') && $(this).hasClass('description_label')) return false;
					//calc-RiskPND_Other_description
					if ($('#calc-'+$(this).attr('code')+'_description').is('div')) {
						$('#calc-'+$(this).attr('code')+'_description').toggle();
						return false;
					} 
					if($(chkblock2).hasClass("checked")){
					//if($(field).is(":checked")){
						// если чекбокс действительно был выбран
							$(field).attr("checked",false);
							//$(chkblock).removeClass("checked");
							$(chkblock2).removeClass("checked");
							if ($(cdiv).length > 0){
								$(cdiv).hide("fast");
							}
							
							/*
						// хак для борьбы с непонятными галочками
						if(typeof($(field[0])[0].attributes['checked'])=='undefined'){
							// сюда зайдет нормальный браузер, если вдруг галочка на самом деле не выбрана
							$(field).attr("checked","checked");
							$(field).checked = true;
							//$(chkblock).addClass("checked");
							$(chkblock2).addClass("checked");
							if ($(cdiv).length > 0){
								$(cdiv).show("fast");
							}
						}
						else if($(field[0])[0].attributes['checked'].nodeValue===false){
							// сюда зайдет эксплорер, если вдруг галочка на самом деле не выбрана
							$(field).attr("checked","checked");
							$(field).checked = true;
							//$(chkblock).addClass("checked");
							$(chkblock2).addClass("checked");
							if ($(cdiv).length > 0){
								$(cdiv).show("fast");
							}
						}
						*/
					}
					else{
						// если не был выбран
						$(field).attr("checked",true);
						$(chkblock2).addClass("checked");
						if ($(cdiv).length > 0){
							$(cdiv).show("fast");
						}
					}					
					hideSelOpts();
					$(field).change();
					return false;
				});
			}

		break; // checkbox
		
		case "text" :
			if ($(field).hasClass("exttext")) {
				a = $("a[rel="+ID+"]");
				if ($(a).length > 0) {
					textblock = $("<div class=\"inpexttextblock clearfix\"></div>").insertBefore(field);
					textcanvas = $("<div></div>");
					$(a).appendTo(textcanvas);
					$(field).appendTo(textcanvas);
					$(textcanvas).appendTo(textblock);
	
				}
			} else {
				if ($(field).attr('add_class')) {
					add_class = $(field).attr('add_class');
				} else add_class = '';
				$(field).wrap("<div class=\"inptextblock "+add_class+" clearfix\"><div></div></div>");
			}
			
		break; // text	
		
		case "password" :
				$(field).wrap("<div class=\"inptextblock clearfix\"><div></div></div>");
			
		break; // text(password)	
		

		case "textarea" :
			if ($(field).hasClass("exttext")) {
				a = $("a[rel="+ID+"]");
				if ($(a).length > 0) {
					textblock = $("<div class=\"inptareablock clearfix\"></div>").insertBefore(field);
					textcanvas = $("<div></div>");
					$(a).appendTo(textcanvas);
					$(field).appendTo(textcanvas);
					$(textcanvas).appendTo(textblock);
	
				}
			} else {
				$(field).wrap("<div class=\"inptareablock clearfix\"><div></div></div>");
			}
		break; // textarea
		
		/*case "select-multiple" :
			textblock = $("<div class=\"inptmultiblock clearfix\"></div>").insertBefore(field);
			textcanvas = $("<div></div>");
			$(field).css({'border':'none', 'width':'98%', 'margin-top':'5px'}).appendTo(textcanvas);
			$(textcanvas).appendTo(textblock);
		break; // multiple select
		
		case "select-one" :
			if ($(field).attr('add_class')) {
				add_class = $(field).attr('add_class');
			} else add_class = '';
			var selblock = $("<div class=\"inpselblock "+add_class+" clearfix\"></div>");
			var seltxt = $("<div class=\"inpseltxt\"></div>");
			
			$(field).wrap(selblock);
			$(seltxt).insertBefore(field);
			$(seltxt).html("<div>"+$("option:selected",field).text()+"</div>");
			
			if ($(field).attr('add_class')) {
				add_class = 'optcontainer_'+$(field).attr('add_class');
			} else add_class = '';
			var selopener = $("<a class=\"selopener\" href=\"#\"></a>").insertBefore(seltxt);
			var optcontainer = $("<div class=\"optcontainer "+add_class+" \" id=\""+$(field).attr("name")+"opts\"></div>").appendTo("body");
			var opts = $("<div></div>").appendTo(optcontainer);
/*			$(optcontainer).hide(function(){
				$(this).addClass("off");
			});
			*/
			/*$(optcontainer).hide().addClass("off");
			
			$("option",field).each(function(k){
				var opt = $(this);
				var aopt = $("<a href=\"#\">"+$(opt).text()+"</a>").appendTo(opts);
				$(aopt).click(function(){
					$(field).get(0).selectedIndex = k;
					$(seltxt).html("<div>"+$("option:eq("+k+")",field).text()+"</div>");
					$(optcontainer).hide("fast",function() {
						$(this).addClass("off");
					});
					$(field).change();
					return false;
				});
			});
			$(selopener).click(function(){
				hideSelOpts();
				if ($(optcontainer).hasClass("off")) {
					var pos = $(seltxt).offset();
					$(optcontainer).removeClass("off");
					$(optcontainer).css({zIndex:"9999",left: pos.left-6+"px", top: pos.top + 22+ "px"});
					$(optcontainer).show("fast", function(){
						$(window).one("click",function(e) {
							if (e.pageX < pos.left-6 || e.pageX > (pos.left - 6 + $(optcontainer).width()) || e.pageY < (pos.top) || e.pageY > (pos.top + 22 + $(optcontainer).height())) {
								$(optcontainer).hide("fast",function() {
									$(this).addClass("off");
								});
								} 
						});
					
					});
				} else {
					$(optcontainer).hide("fast",function() {
						$(this).addClass("off");
					});
				}
				return false;
			});

		break; // select*/	
		
		default :

		break; // radio	
		
	} //switch
	
	
	});


	function hideSelOpts() {
		$("div.optcontainer").hide(5,function() {
			$(this).addClass("off");
		});
		return false;
	}
};
//end of closure
})(jQuery);




// onfocus="return getCEvent(this,event,'alert(\'d\')');"
function getCEvent(el,ev,fn) {
	//$(window).bind("keydown",function(ev) {
	$(el).bind("keydown",function(ev) {
		if (!ev){
			var ev = window.event;
		}
		var cCode = (ev.charCode) ? ev.charCode : 0;
		var kCode = (ev.keyCode) ? ev.keyCode : 0;
		var code = cCode + kCode;
		if (code==13 || code==9){
			$(el).blur();
			$(el).unbind("keydown");
			//$(window).unbind("keyup");
			e = eval(fn);
		}
	});
	return false;
}

