
function get_element_by_name(name)
{
	elements = document.getElementsByName(name);
	if (elements.length == 0) alert('Warning: no elements with name "' + name + '" found');
	return elements[0];
}


function switch_all_checkboxes(checked, name, start)
{
	var index = start;

	do
	{
		elements = document.getElementsByName(name + '[' + index + ']');
	    if (elements.length == 0) break; index++; 
		elements[0].checked = checked;
	} while (true);
}


function clear_all_filters(name)
{
	div = document.getElementById(name);
	elems = div.childNodes;
	alert(div.id + " : " + elems.length + " : " + elems[0].nodeName);
}


function switch_visibility(div_name, hid_name)
{
	div = document.getElementById(div_name);
	state = div.style.display;
	if (state == 'none') div.style.display = 'block';
	if (state == 'block') div.style.display = 'none';
	hid = document.getElementById(hid_name);
	hid.value = div.style.display;
}


function get(name) { return get_element_by_name(name); }


function switch_sort_button(button, hid_name)
{
	value = button.value.charCodeAt(0);
	hidden = document.getElementById(hid_name);

	var parts = hid_name.split('[');
	var common_hid_name = parts[0] + '[' + parts[1];
	var elements = document.getElementsByTagName('input');  
	for(var i = 0; i < elements.length; i++) 
	{
		if(elements[i].name.indexOf(common_hid_name)==0)
		{
			elements[i].value = '';
		}
	}

	if (value == 9650) { button.value = String.fromCharCode(9679); hidden.value=''; }
	if (value == 9679) { button.value = String.fromCharCode(9660); hidden.value='DESC'; }
	if (value == 9660) { button.value = String.fromCharCode(9650); hidden.value='ASC'; }
}

function open_window(url, w_width, w_height)
{
	window.open(url, '', 'toolbar=no,scrollbars=yes,directories=no,status=no,menubar=no,resizable=no,width='+w_width+',height='+w_height);
}

function new_window(url)
{
	window.open('url', '', 'toolbar=no,scrollbars=yes,directories=no,status=no,menubar=no,resizable=no,width=585,height=225');
}

//window.open('../_modules/html_editor/html_editor.php?stor=<xsl:call-template name="build_elem_name" />', '', 'toolbar=no,scrollbars=yes,directories=no,status=no,menubar=no,resizable=yes,width=635,height=400');
// выводит модальное окно с заданными шириной и высотой
function open_modal_dialog(url, d_width, d_height)
{
	window.showModalDialog(url, '', 'DialogHeight='+d_height+'px; DialogWidth='+d_width+'px; center=yes');
}

// устанавливает значение для заданного элемента заданного плагина
function set_plugin_elem_value(plugin_id, elem_name, elem_value)
{
	elem_name = plugin_id+'['+elem_name+']';

	elem = get_element_by_name(elem_name);

	if (elem)
	{
		elem.value = elem_value;
		return true;
	}
	return false;
}

function reload_form(plugin_id)
{
	set_plugin_elem_value(plugin_id, 'offset', '');
	set_plugin_elem_value(plugin_id, 'action', 'reload_form_data');
}

function get_opener_elem(elem_name)
{
	elements = window.opener.document.getElementsByName(name);

	if (elements.length == 0) alert('Warning: no elements with name "' + name + '" found');
	return elements[0];
}

function global_submit()
{
	document.global.submit();
}

function set_form_action(action_name)
{
	document.global.action = action_name;
}

function show_form_container(plugin_id, elem_name)
{
	elem_name = plugin_id+'['+elem_name+']';

	elem = get_element_by_name(elem_name);
	elem.style.display = 'block';
	elem.style.visibility =  'visible';
}

function switch_row_visibility(plugin_id, elem_name, visible)
{
	elem_name = plugin_id+'['+elem_name+']';
	elem = get_element_by_name(elem_name);
	if(elem)
	{
		if(visible)
			elem.style.display = 'block';
		else
			elem.style.display = 'none';
	}
}

function is_opera()
{
	return (navigator.appName.indexOf('Opera') != -1) || (navigator.userAgent.indexOf('Opera') != -1);
}

// устанавливает action для формы
function set_form_action(action_name)
{
	elem = get('global');
	if (elem)
	{
		elem.action = action_name;
	}
}

function resize_window(width, row_height, min_height)
{
	rows = document.getElementsByTagName('tr')
	window.resizeTo(width, rows.length * row_height + min_height);
}


function resize_dialog(width, row_height, min_height)
{
	rows = document.getElementsByTagName('tr');
	parent.dialogHeight = (rows.length * row_height + min_height) + 'px';
	parent.dialogWidth = width + 'px';
}

// нажатие на кнопку "Сохранить"
function save_btn_click(button, plugin_name)
{
	if(get(plugin_name+'[rec_id]').value == -1)
		get(plugin_name+'[action]').value = 'insert_record'; 
	else
		get(plugin_name+'[action]').value = 'update_record'; 

	button.disabled = true;
	global.action = document.location.href;
	global_submit();
}

function dialog_form_submit(button)
{
	button.disabled = true;
	global.action = document.location.href;
	global_submit();
}

function switch_shell(shell_name)
{
	get('shell_name').value = shell_name;
	global_submit();
}

function checked_exists(plugin_name)
{
	var elements = document.getElementsByTagName('input');  
	for(var i = 0; i < elements.length; i++) 
	{
		if(elements[i].name.indexOf(plugin_name+'[check]')==0)
		{
			if(elements[i].checked) 
				return true;
		}
	}
	return false;
}

function get_first_check_id(plugin_name)
{
	var elements = document.getElementsByTagName('input');  
	var rec_id = null;
	for(var i = 0; i < elements.length; i++) 
	{
		if(elements[i].name.indexOf(plugin_name+'[check]')==0)
		{
			if(elements[i].checked) 
			{
				rec_id = elements[i].value;
				break;
			}
		}
	}
	if(rec_id == null)
		alert('Вы не выбрали запись.');

	return rec_id;
}

function get_first_checked_row(plugin_name)
{
	var elements = document.getElementsByTagName('input');  
	for(var i = 0; i < elements.length; i++) 
	{
		if(elements[i].name.indexOf(plugin_name+'[check]')==0)
		{
			if(elements[i].checked) 
			{
				var pattern = /\[check\]\[(.*)\]/;
				pattern.test(elements[i].name);
				return RegExp.$1;
			}
		}
	}
	return null;
}

function choose_color()
{
	color_obj = document.getElementById("dlghelper");
	if (color_obj==null)
	{
		alert("Failed to get color object.");
		return ;
	}
	
	sColor = color_obj.choosecolordlg();	

	sColor = sColor.toString(16);
	if (sColor.length < 6) 
	{
		var sTempString = "000000".substring(0,6-sColor.length);
		sColor = sTempString.concat(sColor);
	}

	return sColor;
}


/*
Function :	checked_exists
Purpose  :	проверяет есть ли в родительском окне хоть один установленый чекбокс
Arguments:	имя чекбоксов
Returns  :	true | false
Comments :	
*/
function checked_exists(checked_name) 
{
	var elements = document.getElementsByTagName('input');  
	for(var i = 0; i < elements.length; i++) 
	{
		if(elements[i].name.indexOf(checked_name)==0)
		{
			if(elements[i].checked) return true;
		}
	}
	return false;
}

function grid_edit_click(plugin_name, form_file)
{
	if(checked_exists(plugin_name)) 
	{ 
		row_click(plugin_name, get_first_checked_row(plugin_name), 0, form_file) 
	}
}