
/*
	TODO: избавиться от ненужных параметров при открытии форм подбора
*/
var selection_windows = new Array();
var selection_prefix = ''; //префикс назначается при открытии окна из родительской формы
var wnd_count = 0;
var selection_row;

var filter_lists = new Array();
var filter_curr_list = false;
var filter_iteration = 0;
var filter_value_iteration = 0;
var filter_date_initializations = new Array();

//Общие функции
function in_array(what, where){
	for(var i=0; i<where.length; i++){
		if(what == where[i]){
        	return true;
		}
	}
    return false;
}

function getObj(objID)
{
    if (document.getElementById) {return document.getElementById(objID);}
    else if (document.all) {return document.all[objID];}
    else if (document.layers) {return document.layers[objID];}
}
function debug(a_message){
	debug_window = window.open();
	debug_window.width = 300;
	debug_window.height = 300;
	debug_window.document.write(a_message);
}

function sleep(milliseconds){
	var start = new Date().getTime();
	while ( (new Date().getTime() - start) <  milliseconds){};
}

function number_format( number, decimals, dec_point, thousands_sep ) {

	var i, j, kw, kd, km;

	// input sanitation & defaults
	if( isNaN(decimals = Math.abs(decimals)) ){
		decimals = 2;
	}
	if( dec_point == undefined ){
		dec_point = ",";
	}
	if( thousands_sep == undefined ){
		thousands_sep = ".";
	}

	i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

	if( (j = i.length) > 3 ){
		j = j % 3;
	} else{
		j = 0;
	}

	km = (j ? i.substr(0, j) + thousands_sep : "");
	kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
	kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");


	return km + kw + kd;
}


function getBrowserName(){
	IE = (document.all); // Internet Explorer?
	NC = (document.layers); // Netscape?
	Opera = (document.getElementById); // Opera?
	
	if(IE){return 'ie';}
	if(NC){return 'nc';}
	if(Opera){return 'opera';}
	
	return 'n/a';
}

/*function getHeight(){
// Определение браузера
IE = (document.all); // Internet Explorer?
NC = (document.layers); // Netscape?
Opera = (document.getElementById); // Opera?

if (IE || Opera) send = document.body.clientHeight;
if (NC) send = window.innerHeight;
return send;
}

function getWidth(){
// Определение браузера
IE = (document.all); // Internet Explorer?
NC = (document.layers); // Netscape?
Opera = (document.getElementById); // Opera?

if (IE || Opera) send = document.body.clientWidth;
if (NC) send = window.innerWidth;
return send;
}*/

//Функции AJAX
function getXmlHttp(){
	var xmlhttp;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}

	return xmlhttp;
}

function AJAX(aMethod,aHREF,aDest){
	//alert(aMethod+', '+aHREF+', '+aDest);
	var xmlhttp = getXmlHttp();
	
	var response;
	var done = false;
	if(aDest!=''){
		getObj(aDest).innerHTML = '<IMG src="/imgs/buttons/preloader.gif" border="0">';
	}
	
	//xmlhttp.setRequestHeader('Content-Type', 'text/html; charset=utf-8');
	xmlhttp.open(aMethod, aHREF, false);
	//xmlhttp.setRequestHeader('Charset', 'windows-1251');
	
	xmlhttp.send(null);
	if(xmlhttp.status == 200) {

		resp = xmlhttp.responseText;
		done = true;
		if (aDest == ''){
			response = resp;
		}
		else{
			contentDiv = document.getElementById(aDest);
			contentDiv.innerHTML = resp;
		}
	}

	return response;
}

function DIVStyle(aDIV,aAJAXDIV,aHREF,aMethod){
	var DIV = document.getElementById(aDIV);
	var AJAXDIV = document.getElementById(aAJAXDIV);
	if (AJAXDIV.style.display == 'none')
	{
		AJAXDIV.style.display = 'block';
		AJAX(aMethod,aHREF,aAJAXDIV);
	}
	else
	{
		AJAXDIV.style.display = 'none';
	}
}

function generate_GUID(){
	var new_GUID = new Date();
	new_GUID =
	new_GUID.getHours().toString()+
	new_GUID.getMinutes().toString()+
	new_GUID.getSeconds().toString()+
	new_GUID.getMilliseconds().toString();
	return new_GUID;
}

function on_form_load(){
	/*if(document.GUID == null){
		var new_GUID = generate_GUID();
		document.GUID = new_GUID;
	}*/
}

function elem_visibility(a_elem_id)
{
	if (getObj(a_elem_id).style.display=='none') {getObj(a_elem_id).style.display = 'block';return;}
	if (getObj(a_elem_id).style.display=='block'){getObj(a_elem_id).style.display = 'none';return;}
}

function submit_form(a_form)
{
	var f = document.getElementById(a_form);
	f.submit();
}

function return_enum_html_combo(a_enum_id,a_multi_combo,a_name)
{
	url = '<?=SYSTEM_ROOT_URL?>ajax_results.php?rec='+a_enum_id+'&multi='+a_multi_combo+'&name='+a_name;

	res = AJAX('get',url,'');
	return res;

}

//Клонирование строки таблицы
function clone_row(a_table_id,a_pattern_id){
	var v_table;
	var v_pattern;
	var v_row;
	var selection_wnd = parent.frames[1].document;
	v_table = selection_wnd.getElementById(a_table_id);
	if(v_table!=null){
		if((v_table.hasChildNodes)&&(v_table.firstChild.tagName=='TBODY')){
			v_table = v_table.firstChild;
		};
		v_pattern = selection_wnd.getElementById(a_pattern_id);
		if(v_pattern!=null){
			v_row = v_pattern.cloneNode(true);
			if(v_row!=null){
				v_table.appendChild(v_row);
				v_row.style.display = 'block';
			}
		}
	}
	return v_row;
}

function clone_row_ex(a_document,a_table,a_pattern_id){
	var v_table;
	var v_pattern;
	var v_row;

	v_table = a_table;
	if((v_table.hasChildNodes)&&(v_table.firstChild.tagName=='TBODY')){
		v_table = v_table.firstChild;
	};
	v_pattern = a_document.getElementById(a_pattern_id);
	if(v_pattern!=null){
		v_row = v_pattern.cloneNode(true);
		if(v_row!=null){
			v_table.appendChild(v_row);
			v_row.style.display = 'block';
		}
	}
	return v_row;
}

//Функция нужна, чтобы вернуть названия элементов реквизита
//a_object - либо рисунок "delete_value" либо
function return_ctrl_values(a_object){
	
	var result = new Array();
	result['type_id'] 		= '';
	result['link_type_id'] 	= '';
	result['value'] 		= '';
	result['view'] 			= '';
	result['ctrl_name'] 	= '';
    result['v_type_id'] 		= '';
	result['v_link_type_id'] 	= '';
	result['v_value'] 			= '';
	result['v_view'] 			= '';
	
	root_node_name = a_object.nodeName;
	var ctrl_values = '';
	switch (root_node_name){
		case 'IMG':
			ctrl_values 		= a_object.parentNode.parentNode.firstChild;
			result['v_value'] 	= ctrl_values.childNodes.item(2).value;
			result['v_view'] 	= ctrl_values.childNodes.item(3).value;
			result['value'] 	= ctrl_values.childNodes.item(2).name;
			result['view'] 		= ctrl_values.childNodes.item(3).name;
		break
		case 'SELECT':
			ctrl_values = a_object.parentNode;
			result['v_value'] 	= a_object.value;
			result['v_view'] 	= a_object.value;
			result['value'] 	= a_object.name;
			result['view'] 		= a_object.name;		
		break;
		case 'INPUT':
			ctrl_values = a_object.parentNode;
			result['v_value'] 	= a_object.value;
			result['v_view'] 	= a_object.value;
			result['value'] 	= a_object.name;
			result['view'] 		= a_object.name;		
		break;
		case 'TEXTAREA':
			ctrl_values = a_object.parentNode;
			result['v_value'] 	= a_object.value;
			result['v_view'] 	= a_object.value;
			result['value'] 	= a_object.name;
			result['view'] 		= a_object.name;
			//alert(ctrl_values.innerHTML);
		break;
	}
	
    result['type_id'] 			= ctrl_values.children[0].name;
	result['link_type_id'] 		= ctrl_values.children[1].name;
    result['v_type_id'] 		= ctrl_values.children[0].value;
	result['v_link_type_id'] 	= ctrl_values.children[1].value;
	
	res = ctrl_values.children[0].name;
	result['ctrl_name'] = res.substring(res.indexOf('type_id_')+String('type_id_').length);
		
	return result;
}

function alert_windows(a_selection_windows){
	res = document.title;
	if(a_selection_windows.length<=0){
		alert(res+'\r\nНет окон');
		return 0;
	}
	for (var i=0;i <= a_selection_windows.length-1;i++){
		res +='\r\nwin=' +  a_selection_windows[i]['win'] + ', ctrl=' + a_selection_windows[i]['destination_ctrl'];
	}
	alert(res);
}

//a_dest_url - url скрипта, который выведет форму подбора
//a_destination_ctrl - 	идентификатор таблицы <TABLE> или одиночного реквизита, в которую занесется подобранный элемент/ы
//P.S. Если a_select_type >= 10, то a_destination_ctrl обязан быть таблицей
//a_select_type (прим. далее: подбор = множественный выбор)
//	10 	- подбор только элементов
//	1 	- выбор только элементов
//	20 	- подбор только групп справочника
//	2 	- выбор только групп справочника
//	30 	- любой подбор из справочника
//	3 	- любой выбор из справочника
//	40 	- любой подбор из документа
//	4 	- любой выбор из документа
//a_field_link_type_id - если a_link_type_id=0, то массив структуры ("системный тип"=>"объектный тип")
//	пример (
//		'1','1',
//		'6','',
//		'7',''
//		) - Если 'a_use_meta'= false, то "Справочник объектного типа 1, Дата, Строка",
//			Если 'a_use_meta'='ИД типа', то выбор типов данных доступных для данного объектного типа
function open_selector_form(a_object, a_dest_url, a_type_id, a_link_type_id, a_destination_ctrl, a_select_type){
	
	ctrl_values = return_ctrl_values(a_object);
	try{
		if(a_link_type_id==0){
			//Реквизит составной
			new_window = window.open('<?=SYSTEM_ROOT_URL?>type_select.php');
			return;
		}
		//alert('new window');
		wnd_count++;
		new_window = window.open(
			'<?=SYSTEM_ROOT_URL?>form_select.php?dest_url='+a_dest_url+
			'?action=select*type_id='+ctrl_values['v_link_type_id']+
			'*select_type='+a_select_type+
			'*ctrl_elem='+ctrl_values['ctrl_name'],'','_blank');
		rs = false;
		try_count = 0;
		rss = '';
		/*while(!rs){
			ready_state = new_window.document.readyState;
			if((ready_state=='complete')||(ready_state=='loaded')||(ready_state==4)){rs = true;rss+= ', '+ready_state;break;}
			sleep(150);
			try_count++;
			rss+= ', '+ready_state;
		}*/
		selection_windows[wnd_count] = new Array();
		selection_windows[wnd_count]['win'] 				= new_window;
		selection_windows[wnd_count]['destination_ctrl'] 	= ctrl_values['ctrl_name'];
		selection_windows[wnd_count]['select_type'] 		= a_select_type;

		new_window.focus();

	}
	catch(e){
		try{new_window.close();}catch(e){};
		alert('Ошибка подбора! Код: 2. \r\n Обратитесь к администратору! \r\n'+e);
	}

}

function open_multi_selector_form(a_dest_url, a_link_type_id, a_destination_ctrl, a_select_type, a_col_num, a_prefix){

	try{
		wnd_count++;
		new_window = window.open('<?=SYSTEM_ROOT_URL?>form_select.php?dest_url='+a_dest_url+'?action=select*type_id='+a_link_type_id+'*select_type='+a_select_type+'*ctrl_elem='+a_destination_ctrl,'selwnd'+wnd_count);
		rs = false;
		
		while(!rs){
			if((new_window.document.readyState=='complete')||(new_window.document.readyState==4)){rs = true;}
		}

		selection_windows[wnd_count] = new Array();
		selection_windows[wnd_count]['win'] 				= new_window;
		selection_windows[wnd_count]['destination_ctrl'] 	= a_destination_ctrl;
		selection_windows[wnd_count]['select_type'] 		= a_select_type;
		selection_windows[wnd_count]['col_num'] 			= a_col_num;

		new_window.focus();
		new_window.frames[0].selection_prefix = a_prefix;
	}
	catch(e){
		try{new_window.close();}catch(e){};
		alert('Ошибка подбора! Код: 3. \r\n Обратитесь к администратору! \r\n'+e);
	}
}

//Эта функция вызывается во фреймовой форме в первом фрейме(фрейме списка справочника или журнала документов)
//Сначала элемент, который только что подобрали переносится во второй фрейм формы подбора (selected_elements)
//и в нем провоится проверка - надо ли закрывать форму после подбора (если select_type > 10, то форму закрываем)
//a_sel_id, a_sel_type, a_sel_view - это параметры подобранного объекта из первого фрейма формы подбора
function select_elem(a_sel_id, a_sel_type_id, a_sel_link_type_id, a_sel_view, a_sel_state, a_sel_is_group, a_destination_ctrl){

	var selection_wnd = parent.frames[1].document;
	var select_pattern = selection_wnd.getElementById('select_pattern');
	var parent_window = parent.opener.document;

	//ищем в родительском окне переменные подбора - 
	//мы находимся во фрейме - не забываем об этом!
	sel_windows = parent.opener.selection_windows;
	found = false;
	for(var i = 1; i<= sel_windows.length; i++){
		if((parent === sel_windows[i]['win'])&&(a_destination_ctrl==sel_windows[i]['destination_ctrl'])){
			found = true;
			destination_ctrl = sel_windows[i]['destination_ctrl'];
			select_type = sel_windows[i]['select_type'];
			break;
		}
	}
	if(!found){
		return '';
	}
	//alert_windows(sel_windows);
	//проверка на выбор группы справочника
	
	if(select_type>=10){
		//МНОЖЕСТВЕННЫЙ подбор множества элементов/документов: заносим в таблицу подбора фреймовой формы подбора
		row = clone_row('selected_elements','select_pattern');
		//alert(row);
		if(row!=null){
			
			cell = row.firstChild.firstChild.firstChild.firstChild.firstChild;
			var ctrl_type_id		= cell.childNodes.item(0);
			var ctrl_link_type_id 	= cell.childNodes.item(1);
			var ctrl_value 			= cell.childNodes.item(2);
			var ctrl_view 			= cell.childNodes.item(3);

			ctrl_type_id.value = a_sel_type_id;
			ctrl_link_type_id.value = a_sel_link_type_id;
			ctrl_value.value = a_sel_id;
			ctrl_view.value = a_sel_view;
		}
		else{
			alert('Ошибка подбора! Код: 4. \r\n Обратитесь к администратору!');
		}
	}
	else{
		//ОДИНОЧНЫЙ выбор элемента/документа
		
		var ctrl_type_id		= parent_window.getElementById('type_id_'		+destination_ctrl);
		var ctrl_link_type_id 	= parent_window.getElementById('link_type_id_'	+destination_ctrl);
		var ctrl_value 			= parent_window.getElementById('value_'			+destination_ctrl);
		var ctrl_view 			= parent_window.getElementById('view_'			+destination_ctrl);
		
		ctrl_type_id.value 			= a_sel_type_id;
		ctrl_link_type_id.value 	= a_sel_link_type_id;
		ctrl_value.value 			= a_sel_id;
		ctrl_view.value 			= a_sel_view;

		parent.opener.selection_windows[i]['win'] = '';
		parent.close();
	}

}

function return_max_obj_index(a_table,a_obj_col_num){
	a_table = a_table.firstChild;//позиционируемся на TBODY
	max_index = 0;
	for (var i=0;i < a_table.childNodes.length;i++) {

		curr_row = a_table.childNodes[i];
		if (curr_row.nodeType != 1) {continue;}

		cell = curr_row.firstChild.firstChild.firstChild.firstChild.firstChild;
		var ctrl_obj_index = cell.childNodes.item(a_obj_col_num);
		if(ctrl_obj_index.value > max_index){
			max_index = ctrl_obj_index.value;
		}
	}
	max_index++; return max_index;
}

/**
	Возвращает кол-во строк в любой таблице TABLE
**/
function return_row_count(a_table){
	a_table = a_table.firstChild;//позиционируемся на TBODY
	row_count = 0;
	for (var i=0;i < a_table.childNodes.length;i++) {
		curr_row = a_table.childNodes[i];
		if (curr_row.nodeType == 1) {row_count++;}
	}
	return row_count;
}

function return_selection_destination_table(a_tab_name, a_width, a_style){
	
	var result =
	'<TABLE id="'+a_tab_name+'" style="'+a_style+'">'+
	'<TR id="select_pattern" style="display:none;"><TD'+
	'><TABLE cellpadding="0" cellspacing="0" border="1" class="ST"'+
	'><TR'+
	'><TD'+
	'><INPUT type="hidden" value="0" id="obj_index" name="obj_index"><INPUT'+
	' type="hidden" id="type_id_" name="type_id_" value="-1"><INPUT'+
	' type="hidden" id="link_type_id_" value="-1" name="link_type_id_"><INPUT'+
	' type="hidden" id="value_" value="-1" name="value_"><INPUT'+
	' type="text" id="view_" value="" readonly class="SI" name="view_">'+
	'<img src="/imgs/buttons/delete_mark.gif" style="vertical-align:middle;" onclick="parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeNode(true);"'+
	'></TD></TR></TABLE><BR></TD></TR>'+
	'</TABLE>';
	//alert(result);
	return result;
}

//процедура запускается в ОКНЕ ПОДБОРА
//в ГЛАВНОЕ ОКНО (parent_window) переносятся подобранные элементы
function transfer_selected(){
	var selection_table = document.getElementById('selected_elements');
	var parent_window = parent.opener.document;
	var parent_window_ex = parent.opener;

	new_selection_prefix = parent.frames[0].selection_prefix;
	if(new_selection_prefix != ''){
		new_selection_prefix = new_selection_prefix;
	}
	
	sel_windows = parent.opener.selection_windows;
	//ищем в родительском окне переменные подбора
	found = false;
	for(var i = 1; i<= sel_windows.length; i++){
		if(parent == sel_windows[i]['win']){
			
			found = true;
			destination_ctrl = sel_windows[i]['destination_ctrl'];
			select_type = sel_windows[i]['select_type'];

			parent.opener.selection_windows[i]['win'] = '';
			break;
		}
	}
	if(!found)
	{return '';}

	var destination_table = parent_window.getElementById(destination_ctrl);
	
	parent_window_ex.filter_value_iteration = parent_window_ex.filter_value_iteration+1;
	obj_index = parent_window_ex.filter_value_iteration;
	
	//перебираем selection_table и переносим значения из нее в destination_table
	selection_table = selection_table.firstChild;//позиционируемся на TBODY
	for (var i=0;i < selection_table.childNodes.length;i++) {

		curr_row = selection_table.childNodes[i];
		if (curr_row.nodeType != 1) {continue;}

		cell = curr_row.firstChild.firstChild.firstChild.firstChild.firstChild;

		var ctrl_type_id		= cell.childNodes.item(0);
		var ctrl_link_type_id 	= cell.childNodes.item(1);
		var ctrl_value 			= cell.childNodes.item(2);
		var ctrl_view 			= cell.childNodes.item(3);
		
		if(ctrl_type_id.value==-1){continue;}

		row = clone_row_ex(parent_window, destination_table, 'select_pattern');
		
		if(row!=null){
			
			new_cell = row.firstChild.firstChild.firstChild.firstChild.firstChild;
			dest_ctrl_obj_index		= new_cell.childNodes.item(0);
			dest_ctrl_type_id		= new_cell.childNodes.item(1);
			dest_ctrl_link_type_id 	= new_cell.childNodes.item(2);
			dest_ctrl_value 		= new_cell.childNodes.item(3);
			dest_ctrl_view 			= new_cell.childNodes.item(4);

			dest_ctrl_obj_index.value = obj_index;
			
			dest_ctrl_type_id.id 		= ''+dest_ctrl_type_id.id		+ obj_index + '_' + new_selection_prefix;
			dest_ctrl_link_type_id.id 	= ''+dest_ctrl_link_type_id.id	+ obj_index + '_' + new_selection_prefix;
			dest_ctrl_value.id 			= ''+dest_ctrl_value.id			+ obj_index + '_' + new_selection_prefix;
			dest_ctrl_view.id 			= ''+dest_ctrl_view.id			+ obj_index + '_' + new_selection_prefix;
			
			dest_ctrl_type_id.name 		= dest_ctrl_type_id.id;
			dest_ctrl_link_type_id.name = dest_ctrl_link_type_id.id;
			dest_ctrl_value.name 		= dest_ctrl_value.id;
			dest_ctrl_view.name 		= dest_ctrl_view.id;
			
			dest_ctrl_type_id.value 		= ctrl_type_id.value;
			dest_ctrl_link_type_id.value 	= ctrl_link_type_id.value;
			dest_ctrl_value.value 			= ctrl_value.value;
			dest_ctrl_view.value 			= ctrl_view.value;
			
			obj_index++;
		}
	}

	parent_window_ex.filter_value_iteration = obj_index;
	parent.close();
}

function delete_sc_value(a_object,a_ctrl_name){
	a_ctrl_name = return_ctrl_values(a_object)['ctrl_name'];
	ctrl_value = getObj('value_'+a_ctrl_name);ctrl_value.value = '1';
	ctrl_view = getObj('view_'+a_ctrl_name);ctrl_view.value = '';
}

function delete_enum_value(a_object,a_ctrl_name){
	a_ctrl_name = return_ctrl_values(a_object)['ctrl_name'];
	ctrl_value = getObj('value_'+a_ctrl_name);ctrl_value.value = '1';
	ctrl_view = getObj('view_'+a_ctrl_name);ctrl_view.selectedIndex = '0';
}

function change_type_id()
{
	var select_type_combo = document.getElementById('select_type');
	var select_link_type_combo = document.getElementById('select_link_type');

	select_link_type_combo.selectedIndex = select_type_combo.selectedIndex;
}

function type_select()
{
	var select_type_combo = document.getElementById('select_type');
	var select_link_type_combo = document.getElementById('select_link_type');

	selected_type = new Array();
	selected_type['type_id'] = select_type_combo.value;
	selected_type['link_type_id'] = select_link_type_combo.value;

	return selected_type;
}

//проверка корректности реквизитов типа "Строка","Дата","Число" и запись изменений в поле value
//при изменении поля view_"a_name" должно меняться скрытое поле value_"a_name"
function change_value(a_object, a_name,a_type)
{
	aa_name = return_ctrl_values(a_object)['ctrl_name'];
	
	var view_elem = getObj('view_'+aa_name);
	var value_elem = getObj('value_'+aa_name);
	//alert(value_elem+', '+'value_'+aa_name);
	value_elem.value = view_elem.value;
}

function change_enum(a_object, a_name)
{
	a_name = return_ctrl_values(a_object)['ctrl_name'];
	var view_elem = document.getElementById('view_'+a_name);
	var value_elem = document.getElementById('value_'+a_name);

	value_elem.value = view_elem.value;

}

function operate_navigation_menu(){
	var nav1 = document.getElementById("navigation1");
	var nav_menu_h = document.getElementById("nav_menu");

	if(nav1.style.display=='block'){
		nav1.style.display = 'none';
		nav_menu.innerHTML = 'Показать навигационное меню';
	}
	else{
		nav1.style.display = 'block';
		nav_menu.innerHTML = 'Свернуть навигационное меню';
	}
}//function operate_navigation_menu()

function add_nonobject_select(a_type){
	var pre_pref = '<?=SYS_FILTER_PRE_PREFIX?>';
	if(a_type==6){

	}

}

function filter_change_select_type(a_script_name, a_field, a_field_id, a_type, a_link_type_id)
{
	var pre_pref = '<?=SYS_FILTER_PRE_PREFIX?>';
	source_td = document.getElementById('filter_source_'+a_field_id);
	filter_option = a_field.value;
	//alert(filter_option);
	//Структура массива:
	//	filter_lists[i]
	//					['filed_id'] = ИД_Поля
	//					['type'] = Тип подбора (in, not in, =, и т.д)
	//					['value'] = Текущие значения подбора для данного типа(таблица или реквизит)
	//Сначала запоминаем старые значения для данного типа фильтра

	list_found = false;
	if(typeof(filter_curr_list) == 'object')
	{
		for(var i=0; i <= filter_lists.length-1; i++)
		{
			if((filter_lists[i]['field_id']==filter_curr_list['field_id'])
			&&(filter_lists[i]['type']==filter_curr_list['type'])){
				list_found = true;
				filter_lists[i]['value'] = filter_curr_list['source_td'].innerHTML;
				break;
			}
		}
	}

	if(((!list_found)) && (typeof(filter_curr_list) == 'object')){
		filter_lists.push(new Array());
		filter_lists[filter_lists.length-1]['field_id'] = filter_curr_list['field_id'];
		filter_lists[filter_lists.length-1]['type'] = filter_curr_list['type'];
		filter_lists[filter_lists.length-1]['value'] = filter_curr_list['source_td'].innerHTML;
	}

	//Берем значения фильтра из filter_lists, если он там есть.
	//Если его там нет, то создаем новый фильтр
	list_found = false;
	list_index = 0;
	for(var i=0; i <= filter_lists.length-1; i++)
	{
		if((filter_lists[i]['field_id']==a_field_id)
		&&(filter_lists[i]['type']==filter_option)){
			list_found = true;
			list_index = i;
			source_td.innerHTML = filter_lists[i]['value'];
			break;
		}
	}
	
	if(!list_found){
		filter_lists[filter_lists.length] = new Array();
		list_index = filter_lists.length-1;
		filter_lists[list_index]['field_id'] = a_field_id;
		filter_lists[list_index]['type'] = filter_option;
		filter_lists[list_index]['value'] = '';
	}
	else{
		filter_curr_list = new Array();
		filter_curr_list['field_id'] = a_field_id;
		filter_curr_list['type'] = filter_option;
		filter_curr_list['value'] = source_td.innerHTML;
		filter_curr_list['source_td'] = source_td;
		return 0;
	}

	if(filter_option==0){
		source_td.innerHTML = '&nbsp;';
	}

	//наращиваем глобальный индекс итерации
	filter_iteration++;

	//создаем префикс для нового значения фильтра
	//<ИДПоля>_<ТипПодбора>_<Итератор>, например view_filter_pref_in_6_10 (т.е. поле fd_7 фильтруется по вхождению в список)
	filter_prefix = pre_pref+filter_option+'_'+filter_iteration+'_'+a_field_id;
	
	if((filter_option=='in')||(filter_option=='notin'))
	{
		destination_table = document.getElementById('filter_pattern_table');

		v_row = destination_table.cloneNode(true);
		table_id = 'filter_source_'+filter_option+'_'+a_field_id;
		v_row.id = table_id;
		if(v_row!=null){
			source_td.appendChild(v_row);
			v_row.style.display = "block";
		}

		if((a_type==5)||(a_type==6)||(a_type==7)){
			source_td.innerHTML =
			'<INPUT type="button" value="Добавить" class="CtrlButton" onclick="add_nonobject_select(\''+a_type+'\');">'+
			return_selection_destination_table(table_id,'100%','display:block;');
		}
		else{
			if(a_type==3){
				source_td.innerHTML = return_enum_html_combo(a_link_type_id,true,filter_prefix);
			}
			else{
				source_td.innerHTML =
				'<INPUT type="button" value="Добавить" class="CtrlButton" onclick="open_multi_selector_form(\''+a_script_name+'\',\''+
				a_link_type_id+'\',\''+
				table_id+'\',\'10\',\'0\',\''+filter_prefix+'\');">'+
				return_selection_destination_table(table_id,'100%','display:block;');
			}
		}
	}
	else{
		if((a_type==5)||(a_type==7)||(a_type==10)){
			
			source_td.innerHTML =
			'<TABLE cellpadding="0" cellspacing="0" border="1" class="ST" width="100%"><TR><TD width="100%">'+
			'<INPUT type="Hidden" name="type_id_fd_'+filter_prefix+'" id="type_id_fd_'+filter_prefix+'" value="7">'+
			'<INPUT type="Hidden" name="link_type_id_fd_'+filter_prefix+'" id="link_type_id_fd_'+filter_prefix+'" value="0">'+
			'<INPUT type="hidden" name="value_fd_'+filter_prefix+'" id="value_fd_'+filter_prefix+'" value="">'+
			'<INPUT type="Text" OnKeyUp="change_value(this, \'fd_'+filter_prefix+'\',\'7\');" class="SI" style="width:100%;" name="view_fd_'+filter_prefix+'" id="view_fd_'+filter_prefix+'" value=""></TD>'+
			'</TR></TABLE>';
		}
		if ((a_type==1)||(a_type==2)){
			
			source_td.innerHTML =
			'<TABLE cellpadding="0" cellspacing="0" border="1" class="ST"><TR><TD width="100%">'+
			'<INPUT type="hidden" name="type_id_'+filter_prefix+'" id="type_id_'+filter_prefix+'" value="'+a_type+'">'+
			'<INPUT type="hidden" name="link_type_id_'+filter_prefix+'" id="link_type_id_'+filter_prefix+'" value="'+a_link_type_id+'">'+
			'<INPUT type="hidden" name="value_'+filter_prefix+'" id="value_'+filter_prefix+'" value="1">'+
			'<INPUT type="Text" readonly class="SI" style="width:100%;" name="view_'+filter_prefix+'" id="view_'+filter_prefix+'" value="&lt;---&gt;"></TD>'+
			'<TD width="13px"><img src="/imgs/buttons/selector_select.bmp" class="VM" border="0" alt="Выбрать значение"'+
			' onclick="open_selector_form(this, \''+a_script_name+'\',\''+a_type+'\',\''+a_link_type_id+'\',\''+filter_prefix+'\',\'3\');"></TD>'+
			'<TD width="13px"><img src="/imgs/buttons/selector_view.bmp" class="VM" border="0" alt="Просмотр/редактирование объекта"></TD>'+
			'<TD width="13px"><img src="/imgs/buttons/selector_clear.bmp" class="VM" border="0" alt="Очистить значение" onclick="delete_sc_value(this, \'0\');"></TD>'+
			'</TR></TABLE>';
		}
		if(a_type==3){
			source_td.innerHTML = return_enum_html_combo(a_link_type_id,false,filter_prefix);
		}
		if(a_type==6){
			source_td.innerHTML =
			'<TABLE cellpadding="0" cellspacing="0" border="1" class="ST" width="70px"><TR><TD>	'+
			'<INPUT type="hidden" name="type_id_'+filter_prefix+'" id="type_id_'+filter_prefix+'" value="1">					'+
			'<INPUT type="hidden" name="link_type_id_'+filter_prefix+'" id="link_type_id_'+filter_prefix+'" value="1">				'+
			'<INPUT type="hidden" name="view_'+filter_prefix+'" id="view_'+filter_prefix+'" value="1">						'+
			/*'<span style="cursor:pointer;" id="value_'+filter_prefix+'_picker">					'+*/
			'<INPUT type="Text" onfocus="this.select();lcs(this)" onclick="event.cancelBubble=true;this.select();lcs(this);change_value(this, \'fd_'+filter_prefix+'\',\'6\');" class="SI" style="width:100%; cursor:pointer;" id="value_'+filter_prefix+'" name="value_'+filter_prefix+'" value="">'+
			/*'</span>																			'+*/
			'</TD></TR></TABLE>';			
		}
	}

	filter_curr_list = new Array();
	filter_curr_list['field_id'] = a_field_id;
	filter_curr_list['type'] = filter_option;
	filter_curr_list['value'] = source_td.innerHTML;
	filter_curr_list['source_td'] = source_td;

}//function filter_change_select_type(a_field,a_field_id,a_type,a_link_type_id)

function ajax_return_children_groups(a_parent_id,a_sc_id,a_level)
{
	var target_div = document.getElementById('group_'+a_parent_id);
	if((target_div.innerHTML=='')||(target_div.innerHTML==undefined)){
		AJAX('get','<?=SYSTEM_ROOT_URL?>ajax_results.php?parent_id='+a_parent_id+'&sc_id='+a_sc_id+'&level='+a_level,'group_'+a_parent_id);
	}
	else{
		target_div.innerHTML = '';
	}
	
}

function set_user_filter(a_form){
	var f = document.getElementById(a_form);
	submit_form(a_form);
}

function load_user_filter(a_table){
	
	var t = document.getElementById(a_table);
	var a = document.getElementById('new_filter_text');
	t.innerHTML = a.value;
}

function ret_user_filter(a_form_id, a_filter_block, a_submit_name){
	
	var fb = document.getElementById(a_filter_block);
	//var a = document.getElementById('new_filter_text');
	var f = document.getElementById(a_form_id);
	var div = document.getElementById('highslide_new_filter_div');
	
	//a.value = fb.innerHTML;
	div.innerHTML = fb.innerHTML;
	f.innerHTML = f.innerHTML + '<INPUT type="sumbit" name="'+a_submit_name+'">';
	//set_names(0);
	submit_form(a_form_id);	
}

function ret_user_filter2(a_div_id, a_area_id){
	var a_div_id = document.getElementById(a_div_id);
	var a_area_id = document.getElementById(a_area_id);	
	a_area_id.value = a_div_id.innerHTML;
}

function print_list(){

	/*getObj('test').value = getObj('test1').innerHTML;
	if(getObj('the-table')){
		alert('print');
		getObj('the-table').id = 'print_the_table';
	}
	else{
		if(getObj('print-the-table')){
			alert('view');
			getObj('print-the-table').id = 'the_table';
		}
	}*/
	//alert('Пока в разработке');
}

/*addon - 
childNodes исправлено на children
children.item(i) на children[i]*/
function add_line_to_table(a_table_id, a_pattern){
	
	var SYS_TABID_PREFIX = '<?=SYS_TABID_PREFIX?>';
	var SYS_TAB_FIELD_PREFIX = '<?=SYS_TAB_FIELD_PREFIX?>';
	
	var table = document.getElementById(a_table_id);
	rows = table.children[0];
	row_count = 0;
	for (var i=0;i < rows.children.length;i++) {
		if (rows.children[i].nodeName=='TR'){
			row_count++;
		}
	}
	new_row_index = row_count - 1;
	
	row = clone_row_ex(document, table, a_pattern);
	
	for (var i=0;i < row.children.length;i++) {
    	if (row.children[i].id.indexOf(SYS_TAB_FIELD_PREFIX) > -1) {
    		ctrl_values = row.children[i].children[0].children[0].children[0].children[0];
    		for (var k=0; k < ctrl_values.children.length; k++) {
    			if ((ctrl_values.children[k].nodeName=='INPUT')||(ctrl_values.children[k].nodeName=='SELECT')){
    				
    				ctrl_values.children[k].name = ctrl_values.children[k].name +'_'+new_row_index;
    				ctrl_values.children[k].id   = ctrl_values.children[k].name;
				}
    		}
    	}
	}
	row.children[0].children[0].innerHTML = new_row_index;
}
/*addon - 
childNodes исправлено на children
children.item(i) на children[i]
Исправить removeNode на удобоваримый метод

*/
function delete_row_from_table(a_elem){
	var tr = a_elem.parentNode.parentNode;
	var table_body = tr.parentNode;
	
	//-2 потому что первая строка в реальной таблице заголовочная
	//а вторая - пустая и невидимая строка клонирования
	curr_index = -2;
	found = false;
	for (var i=0;i < table_body.children.length;i++) {
		if(table_body.children[i] == tr){
			found = true;
			continue;
		}
		curr_index++;
		if(found){
			table_body.children[i].children[0].children[0].innerHTML = curr_index;
		}
	}
	tr.removeNode(true);
}

function table_visibility(a_table_id,a_image_id){
	
	elem_visibility(a_table_id);
	var img = document.getElementById(a_image_id);
	if (img.src == '/imgs/buttons/collapse.gif'){
		img.src = '/imgs/buttons/expand.gif';
	}
	else{
		img.src = '/imgs/buttons/collapse.gif';
	}
}

function operate_filter_block(){
	elem_visibility('user_filter_div');
}

function user_filter_show_list(href,a_link_type_id){
	AJAX('GET',href+'ajax_results.php?user_filters_get=1&link_type_id='+a_link_type_id,'user_filters_selector_span');
}

function user_filter_load(href){
	AJAX('GET',href+'ajax_results.php?user_filters_get=1&link_type_id='+a_link_type_id,'user_filter_div');
}

function user_filter_save(){
	
}

function view_object(a_obj, a_href){
	/*<a href=\"".SYSTEM_ROOT_URL.$a_params["url"].".php?view_object=".$a_value."&type_id=".$a_params["link_type_id"]."\" target=\"_blank\">*/
	//alert(a_obj.parentNode.parentNode.children[0].children[2].value);
	view_object = a_obj.parentNode.parentNode.children[0].children[2].value;
	type_id = a_obj.parentNode.parentNode.children[0].children[1].value;
	href = a_href+'?view_object='+view_object+'&type_id='+type_id;
	if((view_object > 1) && (type_id>0)){
		new_window = window.open(href,'','_blank,scrollbars=1,resizable=1');
	}else{
		alert('В поле ничего не записано!');
	}
}
