function cut_symbols (textarea_object, max_count)
{
	if (textarea_object.value.length > max_count)
	{
		textarea_object.value = textarea_object.value.substr(0, max_count);
	}			
}

/*
*Функция показывает количество оставшихся символов для элемента формы textarea,
*Используется для элемента textarea в формах
*element_id - атрибут ID для этого элемента
*max_length  - максимально допустимое количество знаков 
*/
function show_length(element_id, max_length)
{
	var field_object = document.getElementById(element_id);
	if (!field_object)
	{
		return false;
	}

	if(max_length)
	{
		//Текущая длина содержимого
		var current_length = field_object.value.length;

		//Элемент, в который будем выводить счётчик
		var counter_element = document.getElementById(element_id+'_counter');

		//Если длина не превысила допустимую, то выводим просто запись
		if(max_length - current_length < 0)
		{
			counter_element.innerHTML = 
				'<span class="gray">Осталось знаков: <span class="imp"><nobr>'+(max_length - current_length) + '</nobr></span></span>';
		}
		//Иначе подсвечиваем красным отрицательную цифру
		else
		{
			counter_element.innerHTML = '<span class="gray">Осталось знаков: '+(max_length - current_length)+'</span>';
		}
	}
}

/*
* Переключает элемент по id в положение state (bool)
* 
*/
function switch_element_by_id(element_id, state)
{
	var element = document.getElementById(element_id);
	
	if (state)
	{
		var switch_to = '';
	}
	else
	{
		var switch_to = 'none';
	}
	
	if (element)
	{
		element.style.display = switch_to;
	}
	
	return false;
}

function switch_elements_by_id(elements_ids, state)
{
	var ids = elements_ids.split(',');
	
	if (state)
	{
		var switch_to = '';
	}
	else
	{
		var switch_to = 'none';
	}
	
	for (var i = 0; i < ids.length; i++)
	{
		if (elem = document.getElementById(ids[i]))
		{
			elem.style.display = switch_to;
		}
	}
}

/**
* Переключает элементы типов tagname, содержащие в id element_id в положение state
* 
*/
function switch_elements_by_id_tag(element_id, tagname, state)
{
	var elements = get_elements_by_id_tag(element_id, tagname);
	
	if (!(elements.length > 0))
	{
		
		return false;
	}
	
	if (state)
	{
		var switch_to = '';
	}
	else
	{
		var switch_to = 'none';
	}
	
	
	for (var i = 0; i < elements.length; i++)
	{
		elements[i].style.display = switch_to;
	}
}

function switch_elements(elements, state)
{
	if (!(elements.length > 0))
	{
		return false;
	}
	
	
	if (state)
	{
		var switch_to = '';
	}
	else
	{
		var switch_to = 'none';
	}
	
	
	for (key in elements)
	{
		e = elements[key];
		if (e.style)
		{
			e.style.display = switch_to;
		}
	}
}

function set_elements_attribute(elements, attribute, value)
{
	if (!(elements.length > 0))
	{
		return false;
	}
	
	for (key in elements)
	{
		e = elements[key];
		e[attribute] = value;
	}
}

/*
* Переключает атрибут disable элементы типов tagname, содержащие в id element_id 
* в положение state
* 
*/
function disable_elements_by_id_tag(element_id, tagname, state)
{
	var elements = get_elements_by_id_tag(element_id, tagname);
	
	if (!(elements.length > 0))
	{
		
		return false;
	}
	
	if (state)
	{
		var switch_to = true;
	}
	else
	{
		var switch_to = false;
	}
	
	
	for (var i = 0; i < elements.length; i++)
	{
		if (typeof(elements[i].disabled) != 'undefined')
		{
			elements[i].disabled = switch_to;
		}
	}
}

function check_elements_by_id_tag(element_id, tagname, state)
{
	var elements = get_elements_by_id_tag(element_id, tagname);
	
	if (!(elements.length > 0))
	{
		
		return false;
	}
	
	if (state)
	{
		var switch_to = true;
	}
	else
	{
		var switch_to = false;
	}
	
	
	for (var i = 0; i < elements.length; i++)
	{
		if (typeof(elements[i].checked) != 'undefined')
		{
			elements[i].checked = switch_to;
		}
	}
}


/**
* Возвращает элементы tagname, у которых в id содержится element_id
* В tagname тэги можно перечислять через запятую
*/
function get_elements_by_id_tag(element_id, tagname)
{
	var found_elements = new Array();
	
	// Массив требуемых тэгов
	var tags = tagname.split(',');
	
	// Собираем все элементы всех перечисленных тэгов в elements
	for (var j = 0; j < tags.length; j++)
	{
		var current_tag = tags[j];
		var elems = document.getElementsByTagName(current_tag);
		if (typeof(elems) == 'object')
		{
			// Собираем все элементы содержащие в id element_id
			for (var i = 0; i < elems.length; i++)
			{
				if (elems[i].id.indexOf(element_id) != -1)
				{
					found_elements[found_elements.length] = elems[i];
				}
			}
		}
	}
	
	return found_elements;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
	{
		node = document;
	}
	else
	{
		//alert(node);
	}
	
	if ( tag == null )
	{
		tag = '*';
	}
	
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;

	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) 
	{
		if ( pattern.test(els[i].className) ) 
		{
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function getElementByAttributeMatch(from, attribute, pattern_string, tag)
{
	var found = false;
	
	var pattern = new RegExp(pattern_string);
	
	var node_list = Array();
	
	if (!tag)
	{
		tag = '*';
	}
	// Для IE 5 вообще-то звездочку нельзя использовать
	node_list = from.getElementsByTagName(tag)
	
	var length = node_list.length;
	
	for (var i = 0; i < length; i++)
	{
		if (node_list[i][attribute] 
				&& node_list[i][attribute].match(pattern)
		)
		{
			return node_list[i];
		}
	}
	
	return false;
}