(function($){
	// очистка select-а
	$.fn.clearSelect = function()
	{
		return this.each(function()
		{
			if(this.tagName=='SELECT')
			{
				this.options.length = 0;
				$(this).attr('disabled','disabled');
			}
		});
	}
	// заполнение select-а
	$.fn.fillSelect = function(dataArray,prevsel)
	{
		return this.clearSelect().each(function()
		{
			if(this.tagName=='SELECT')
			{
				var currentSelect = this;
				$.each(dataArray, function(index,data)
				{
					var option = new Option(data.mess_header, data.id);
					option.selected = (prevsel && prevsel==data.id) ? 'selected' : '';
					if($.support.cssFloat)
					{
						currentSelect.add(option,null);
					}
					else
					{
						currentSelect.add(option);
					}
				});
				if(this.options.length)
				{
					$(this).attr('disabled','');
				}
			}
		});
	}

	//вызов autocomplete()
	$.fn.autocomplete_i = function()
	{
		return this.each(function()
		{
			var param = $(this).attr('id').replace('p__','');
			$(this).autocomplete(
			{
				serviceUrl: '/',
				params:
				{
					"id":TG_curid?TG_curid:1,
					"clas":"json",
					"func":"findtext",
					"param":param
				},
				onSelect: function(value, data)
				{
					//value - mess_header выбранного объекта
					//value - id выбранного объекта
					
					//var url = '/?id='+TG_curid+'&oneblock='+TG_curid+'&action=process&p__'+param+'='+value;
					//url = url.replace(/ /g,'%20');
					//$('#block_'+TG_curid).load(url);
					
					//var url = '/?id='+TG_curid+'&oneblock='+'812'+'&cur_id=' + data;
					//$('#block_812').load(url);
				}
			});
		});
	}

})(jQuery);

//
//замена зависимых select-ов
//
function changeselects(obj)
{
	var th = (obj && obj.tagName=='SELECT') ? obj : this;
	var sel = (th.selectedIndex>=0) ? th.options[th.selectedIndex] : null;
	var id = (sel) ? parseInt(sel.value) : 0;
	var nextselect = $(th).attr('nextselect');
	var nextselected = $(th).attr('nextselected');
  	var nextobj = ($('#p__'+nextselect).size()) ? $('#p__'+nextselect) : $('#c__'+nextselect);

	if(id==0 || (sel && $(sel).attr('cl_code_is')))
	{
		nextobj.clearSelect();
		if($(nextobj).attr('nextselect'))
			$(nextobj).change();
	}
	else
	{
		var desc = nextobj.attr('description') ? nextobj.attr('description') : '';
		$.getJSON('/?clas=json&func=getchilds', {id:id, desc:desc}, function(data)
		{
			if(data.length > 0)
			{
				var domnextobj = $(nextobj).get(0);
				var prevsel = (domnextobj && domnextobj.selectedIndex>=0) ? domnextobj.options[domnextobj.selectedIndex].value : 0;
	  			nextobj.fillSelect(data,nextselected ? nextselected : prevsel);
	  		}
  			else
				nextobj.clearSelect();
			if($(nextobj).attr('nextselect'))
				$(nextobj).change();
		});
	}
}


//
//показ формы для режима debug
//
TG_formcnt = new Array();	// счетчик элементов форм для режима debug
function debugform()
{
	var param = $(this).attr('param');				// имя параметра или атрибута
	var cur_id = $(this).attr('cur_id');			// id текущего блока-объекта
	var obj = $(this).next();						// td со значением параметра или элементом формы
	var fid = $(this).parent().parent().parent().parent().attr('id'); 	//css-id формы td-tr-tbody-table-form
	var sbm = $('#' + fid + ' input[type="submit"]');					// кнопка submit формы
	if(!$(this).attr('savehtml'))
	{
		TG_formcnt[fid] = TG_formcnt[fid] ? TG_formcnt[fid]+1 : 1;	// счетчик элементов в форме
		$(this).attr('savehtml',obj.html());						// запоминаем значение html td в атрибуте td
		obj.html('<img src="/comm/images/16/loading.gif">');
		obj.load('/?id=' + TG_jmid + '&action=get_form_element&cur_id=' + cur_id + '&param=' + param);
	}
	else
	{
		TG_formcnt[fid] = TG_formcnt[fid] ? TG_formcnt[fid]-1 : 1;	// счетчик элементов в форме
		obj.html($(this).attr('savehtml'));							// восстанавливаем html td
		$(this).attr('savehtml','');
	}
	if(TG_formcnt[fid]) sbm.show();	// отображаем submit
	else sbm.hide();				// прячем submit
	return false;
}

//
//ввод формы для режима debug
//
function debugsubmit()
{
	var form_id = '#' + $(this).attr('id');			// css-id формы
	var block_id = '#' + $(this).parent().parent().next().attr('id');	// css-id блока с html-кодом
	var wid = $(block_id).width();
	var hei = $(block_id).height();
	var hei2 = parseInt((hei-16)/2);

	$(block_id).html('<div style="background:#F0F0F0; border:1px solid #B0B0B0; text-align:center; width:'+ wid + 'px; height:'+ hei +'px;"><img src="/comm/images/16/loading.gif" style="margin-top:' + hei2 + 'px;"></div>');
	$(this).ajaxSubmit({/*target:block_id,*/ success:function()
		{
			var block_css = $(form_id).find('input[name="p__block_css"]');
			if(block_css.length)
				$(block_id).attr('style',block_css.val());
			var view_class_block = $(form_id).find('input[name="p__view_class_block"]');
			if(view_class_block.length)
				$(block_id).attr('class','block_is ' + view_class_block.val());
			if($(form_id).find('select[name="p__block_pos"]').length)
				window.location = document.location;
				
			var cur_id  = $(form_id).find('input[name="cur_id"]').attr('value');
			var page_id = $(form_id).find('input[name="page_id"]').attr('value');
			var gethtml = '/?noredirect=1&id=' + page_id + '&oneblock=' + cur_id;
			if(cur_id && page_id)
				$(block_id).load(gethtml);
		}
	});
	return false;
}


$(document).ready(function()
{
	//для режима debug
	$('.debugtags').bind('click', debugform);
	$('.debugform').submit(debugsubmit);

	//обновляем зависимые select-ы
	$('select[nextselect]').change();

	//автозаполняемые input-ы
	$('.autocomplete-i').autocomplete_i();
	
});

// checkssetall - устанавливает / сбрасывает массив checkbox-ов для одного параметра (mchecks, checks)
// pname - имя параметра
// act=set - установить все checked
// act=unset - сбросить все checked
// act=invert - инвертировать все checked
//
function checkssetall(pname,act)
{
	var checks = $.find('input[type="checkbox"][name^="p__'+pname+'"]');
	for(i=0;i<checks.length;++i)
	{
		if(act=='set')
			checks[i].checked = true;
		else if(act=='unset')
			checks[i].checked = false;
		else if(act=='invert')
			checks[i].checked = !checks[i].checked;
	}
}


