/**
 * function btn_dict(btn)
 * проводии анализ событий связанных с кнопками справочника
 * 
*/
function btn_dict(btn)
{
	switch (btn.name) 
	{
	
		case 'btn_insert': dict_show_insert_form(btn);
		break;

		case 'btn_edit' : dict_show_edit_form(btn);
		break;

		case 'btn_filter' : dict_show_filter_form(btn);
		break;

		case 'btn_filter_disabled' : dict_filter_disabled(btn);
		break;

		/*default :
		break;*/

	} 


}







/**
 * function dict_filter_disabled(btn)
 * проводит визов плагина фильтрации записей справочника
 * 
*/
function dict_filter_disabled(btn)
{

	//пытаюсь получить тело плагина в котором находитсо вызвавшая кнопка
	var plugin_body = get_plugin_body(btn);
	
	// если не найдено прерываю выполнение
	if (!plugin_body)
	{
		return false;
	}

	//получаю параметры фильтруемого плагина и те которые являються параметрами фильрации определяю как UNSET
	var filtered_plugin_params = get_plugin_params(plugin_body.id);
	var pattern = /filter_(\w)+/;
	for (var HashKey in filtered_plugin_params) 
	{ 
		var param_name = HashKey; 
		if (pattern.test(param_name))
		{
			filtered_plugin_params[param_name] = 'UNSET';
		}
	} 

	//передаю в плагин фильтрации параметры фильтруемого плагина (для оторажения уже установленых фильров в полях формы фильтрации)
	set_plugin_params(plugin_body.id,filtered_plugin_params);
	load_plugin(plugin_body.id);
	
}






/**
 * function dict_show_filter_form(btn)
 * проводит визов плагина фильтрации записей справочника
 * 
*/
function dict_show_filter_form(btn)
{

	//пытаюсь получить тело плагина в котором находитсо вызвавшая кнопка
	var plugin_body = get_plugin_body(btn);
	
	// если не найдено прерываю выполнение
	if (!plugin_body)
	{
		return false;
	}

	//из параметров плагина пытаюсь получить переменную (имя плагина фильтрации записей)
	var edit_form_plugin_name = get_plugin_param(plugin_body.id, 'filter_form_plugin');
	if (edit_form_plugin_name == undefined)
	{
		return false;
	}


	//формирую уникальные имена для вызова формы данного справочника
	var window_name = plugin_body.id + '[filter_window]';
	var form_plugin_body_id = plugin_body.id + '[filter_form]';

	//создаю окно для загрузки плагина фоормы
	var window_obj = new cHydraWindow();
	window_obj.create_window(window_name);
	window_obj.set_title('Параметры фильтрации записей');
	window_obj.set_toolbar('форма фильтрации записей');


	//загружаю в окно плагин формы фильтрации 
	var container_id = window_obj.get_content_id();
	create_plugin(form_plugin_body_id,edit_form_plugin_name,container_id);

	//получаю параметры фильтруемого плагина и отсепкаю те которые не являються параметрами фильрации
	var filtered_plugin_params = get_plugin_params(plugin_body.id);
	var pattern = /filter_(\w)+/;
	for (var HashKey in filtered_plugin_params) 
	{ 
		var param_name = HashKey; 
		if (!pattern.test(param_name))
		{
			delete filtered_plugin_params[param_name];
		}
	} 

	//передаю в плагин фильтрации параметры фильтруемого плагина (для оторажения уже установленых фильров в полях формы фильтрации)
	set_plugin_params(form_plugin_body_id,filtered_plugin_params);

	//передаю плагину фильтрации имя фильтруемого плагина
	set_plugin_param(form_plugin_body_id,'filtered_plugin',plugin_body.id);

	load_plugin(form_plugin_body_id);
	
}







/**
 * function dict_show_insert_form(btn)
 * проводит визов плагина добаления записей 
 * 
*/
function dict_show_insert_form(btn)
{

	//вызов события инициировала кнопка которая находилась в теле плагина - относительно кнопки получаю тело плагина
	var plugin_body = get_plugin_body(btn);
	if (!plugin_body)
	{
		return false;
	}

	//из параметров плагина пытаюсь получить переменную (имя плагина формы редактирования)(форма добавления и редактирования могут быть определены как одна а могут и как разные)
	var insert_form_plugin_name = get_plugin_param(plugin_body.id,'insert_form_plugin');
	var edit_form_plugin_name = get_plugin_param(plugin_body.id,'edit_form_plugin');
	if (insert_form_plugin_name != undefined)
	{
		edit_form_plugin_name = insert_form_plugin_name;
	}
	if (edit_form_plugin_name == undefined)
	{
		return false;
	}

	// получаю параметры плагина дикта
	var params = get_plugin_params(plugin_body.id);
	//добавляю параметр (форма должна получить идентификатор вызвавшего плагина чтоб при закрытии себя перезагрузить родителя)
	params['parent_plugin_body_id'] = plugin_body.id;

	//формирую уникальные имена для вызова формы данного справочника
	var window_name = plugin_body.id + '[edit_window]';
	var form_plugin_body_id = plugin_body.id + '[edit_form]';

	//создаю окно для загрузки плагина фоормы
	var window_obj = new cHydraWindow();
	window_obj.create_window(window_name);
	window_obj.set_title('Добавление записи');
	window_obj.set_toolbar('форма добавления записи');
	var window_container_id = window_obj.get_content_id();

	//загружаю в окно плагин формы редактирования
	create_plugin(form_plugin_body_id,edit_form_plugin_name,window_container_id);
	//передаю ему параметры
	set_plugin_params(form_plugin_body_id,params);
	//загрузаю плагин
	load_plugin(form_plugin_body_id);

}



/**
 * function dict_show_edit_firm(btn)
 * проводит визов плагина редактирования записей 
 * 
*/
function dict_show_edit_form(btn)
{
	//пытаюсь получить тело плагина в котором находитсо вызвавшая кнопка
	var plugin_body = get_plugin_body(btn);

	// если не найдено прерываю выполнение
	if (!plugin_body)
	{
		alert('Неудалось получить плагин');
		return false;
	}


	//получаю список чекнутых строк грида
	var checked_rows = get_grid_checked_rows(plugin_body.id + '[grid]','rec_id')


	//если нет ни одного чекнутого то прерываю выполнение
	if (checked_rows[0] == undefined)
	{
		alert("Не выбрана запись для редактирования.");
		return false;
	}

	// получаю параметры плагина дикта
	var params = get_plugin_params(plugin_body.id);
	// получаю переменные выделенной строки
	var row_params = get_grid_row_values(checked_rows[0]);
	
	//соединяю масивы
	for (var HashKey in row_params) 
	{ 
	   param_name  = HashKey; 
	   param_value = row_params[HashKey];
	   params[param_name] = param_value;
	} 


	// передаю параметром имя плагина владельза (для перезагрузки )
	params['parent_plugin_body_id'] = plugin_body.id;

	//из параметров плагина пытаюсь получить переменную (имя плагина добавления записей)
	var edit_form_plugin_name = get_plugin_param(plugin_body.id,'edit_form_plugin');
	if (edit_form_plugin_name == undefined)
	{
		return false;
	}

	// формирую имена окну и прагину
	var window_name = plugin_body.id + '[edit_window]';
	var form_plugin_body_id = plugin_body.id + '[edit_form]';

	//создаю окно
	var window_obj = new cHydraWindow();

	window_obj.create_window(window_name);
	
	window_obj.set_title('Редактирование записи');
	window_obj.set_toolbar('форма редактирования записи');
	
	//создаю плагин формы передею в него параметры и загружаю его
	var container_id = window_obj.get_content_id();

	create_plugin(form_plugin_body_id,edit_form_plugin_name,container_id);
	
	set_plugin_params(form_plugin_body_id,params);
	load_plugin(form_plugin_body_id);

}

// функция валидации формы
function validate_form(container_id) 
{
	var form_validator = new cHydraFormValidator();
	form_validator.set_container(container_id);
	return form_validator.validate();
}


function save_form(btn) 
{
    btn.disabled = true;

	var plugin_body = get_plugin_body(btn);

	if (!validate_form(plugin_body.id))
	{
		btn.disabled = false;
		return false;
	}


	var params = get_input_values(plugin_body.id);
	

	var rec_id = get_plugin_param(plugin_body.id, 'rec_id');
	if (rec_id == -1 || rec_id == undefined)
	{
		params['action'] = 'insert_record';
	}
	else
	{
		params['action'] = 'update_record';
	}


	

	params['close_window_after_save'] = 1;

	
	if (params['action_plugin_name']==undefined) 
	{
		params['action_plugin_name'] = plugin_body.plugin_name;
	}
	
	params['container_id'] = plugin_body.id;

	//debugger;
//	ajax_run_plugin('state', plugin_body.id, params, 'POST');

	ajax_run_plugin_xml('state', plugin_body.id, params); 

}





function delete_row(btn)
{
	var plugin_body = get_plugin_body(btn);
	btn.disabled = true;

	var params = new Array();
	var collection = plugin_body.getElementsByTagName('input');


	if (collection) 
	{
		var recs =  new Array();
		for (i = 0; i < collection.length; i++) 
		{
			// обработка чекбоксов
			if (collection[i].type=='checkbox'&&collection[i].name=='rec_id') 
			{
				if (collection[i].checked) 
				{
					recs.push(collection[i].value);
				}
			}
		}

		if (recs.length==0)
		{
			alert('Не выбраны записи для удаления');
			return false;
		}
		
	}
	params['action'] = 'delete_record';
	params['rec_id'] = recs;

		params['action_plugin_name'] = 	get_plugin_param(plugin_body.id,'edit_form_plugin');
	//params['action_plugin_name'] = 'shop_category_form';
	// указываем какой плагин нам нужно будет перезагрузить после сохранения
	params['refresh_plugin_name'] = plugin_body.id;
	


	params['obj_file'] = '../_components/ajax/shell/xml/init/objects.xml';
	params['page'] = 'state';
	
	var url = 'index.php';
	//call_ajax_script(url, params, 'shop_category_list_dict', 'POST'); 
	ajax_run_plugin_xml('state', plugin_body.id, params, 'POST'); 
	//ajax_run_plugin('state', plugin_body.id, params, 'POST');
}







function filter_form(btn) 
{
    //btn.disabled = true;

	/*if (!validate_form(btn))
	{
		btn.disabled = false;
		return false;
	}*/

	var params = new Array();

	var plugin_body = get_plugin_body(btn);

	

	var collection = plugin_body.getElementsByTagName('input');
	if (collection) 
	{
		for (i = 0; i < collection.length; i++) 
		{
			//collection[i].disabled = true;
		
			// обработка чекбоксов
			if (collection[i].type=='checkbox') 
			{
				if (collection[i].checked) 
				{
				    collection[i].value = 1;
				}
				else 
				{
				    collection[i].value = 0;
				}
			
				params[collection[i].name] = collection[i].value;
			}

			// обработка чекбоксов
			if (collection[i].type == 'text') 
			{
				if (collection[i].value == '') 
				{
					params[collection[i].name] = 'UNSET';
				}
				else 
				{
					params[collection[i].name] = collection[i].value;
				}
			
			}

			
		}
	}


	var collection = plugin_body.getElementsByTagName('select');
	if (collection) 
	{
		for (i = 0; i < collection.length; i++) 
		{
			params[collection[i].name] = collection[i].value;
		}
	}


	var filtered_plugin = get_plugin_param(plugin_body.id, 'filtered_plugin');
	set_plugin_params(filtered_plugin, params);
	set_plugin_param(filtered_plugin,'activ_page_number',1);
	load_plugin(filtered_plugin);



//filtered_plugin

//	ajax_run_plugin('state', plugin_body.id, params, 'POST');

//	ajax_run_plugin_xml('state', plugin_body.id, params); 

}

function get_elem_by_name(container, elem_name) 
{
    var collection = container.getElementsByTagName('input');
	if (collection) 
	{
		for (i = 0; i < collection.length; i++) 
		{
			if (collection[i].name==elem_name) 
			{
				return collection[i];    
			}
		}
	}

	return false;
}



function get_input_values(container_id)
{
	var params = new Array();

	var container_body = document.getElementById(container_id);

	if (!container_body)
	{
		return params;
	}

	var collection = container_body.getElementsByTagName('input');
	if (collection) 
	{
		for (i = 0; i < collection.length; i++) 
		{
		
			// обработка чекбоксов
			if (collection[i].type == 'checkbox' && (collection[i].getAttribute('confirm')==null)) 
			{
				if (collection[i].checked) 
				{
				    collection[i].value = 1;
				}
				else 
				{
				    collection[i].value = 0;
				}

				params[collection[i].name] = collection[i].value;
			}


			if (collection[i].type == 'radio') 
			{
				if (collection[i].checked) 
				{
					params[collection[i].name] = collection[i].value;
				}
			}

			if (collection[i].type == 'text') 
			{
				params[collection[i].name] = collection[i].value;
			}

			if (collection[i].type == 'hidden') 
			{
				params[collection[i].name] = collection[i].value;
			}

			if ((collection[i].type == 'password') && (collection[i].getAttribute('confirm')==null) && (!collection[i].disabled)) 
			{
				params[collection[i].name] = collection[i].value;
			}

			collection[i].disabled = true;

		}

	}


	
	
	var collection = container_body.getElementsByTagName('select');
	if (collection) 
	{
		for (i = 0; i < collection.length; i++) 
		{
			collection[i].disabled = true;
			params[collection[i].name] = collection[i].value;
		}
	}

	var collection = container_body.getElementsByTagName('textarea');
	if (collection) 
	{
		for (i = 0; i < collection.length; i++) 
		{
			collection[i].disabled = true;
			params[collection[i].name] = collection[i].value;
		}
	}


	return params;


}