	/********************************************************************/
	/*                                                                  */
	/*  Библиотека javascript-функций администраторской части сайта.    */
	/*                                                                  */
	/*  show_status - отображение информации в статусной строке         */
	/*  find - поиск первого вхождения строки в редактируемом тексте    */
	/*  findnex - поиск следующего вхождения строки                     */
	/*  replacenext - замена следующего вхождения строки                */
	/*  format - форматирование текста                                  */
	/*  format_field - форматирование текста в текстовом поле           */
	/*  setcolor - выделение цветом                                     */
	/*  insert_symbol - вставка специального символа                    */
	/*  insert_tag - вставка тэга разметки шаблонов                     */
	/*  recalc_stats - пересчет параметров редактируемого текста        */
	/*  help - отображение подсказки в поп-ап окне                      */
	/*  is_lower - проверка регистра символа/строки: нижний?            */
	/*  is_upper - проверка регистра символа/строки: верхний?           */
	/*  to_upper - перевод символа/строки в верхний регистр             */
	/*  to_lower - перевод символа/строки в нижний регистр              */
	/*  register_first - заглавная буква всех слов строки               */
	/*  register_inverse - инверсия регистров символов строки           */
	/*  register - работа с регистрами символов строки                  */
	/*  hideTree - скрыть слой данный                                   */
	/*  displayObject - показать/скрыть объект                          */
	/*  showTree - показать слой данных                                 */
	/*  my_void - пустая функция                                        */
	/*  rebuild_new - перестройка списков                               */
	/*  get_indexes_new - получение индексов выбранных значений списков */
	/*  init_new - инициализация списков                                */
	/*  deleteOption - удаление элемента списка                         */
	/*  addOption - добавление элемента списка                          */
	/*  rebuild - перестройка списков                                   */
	/*  get_indexes - получение индексов выбранных значений списков     */
	/*  init - инициализация списков                                    */
	/*  row_over - подсветка строки таблицы                             */
	/*  row_out - подсветка строки таблицы                              */
	/*  srow - подсветка выбранной таблицы                              */
	/*  check_fields - функция проверки заполнения полей формы          */
	/*                                                                  */
	/*  © Site Constructor v.1.0.gdb           Aleksej Prokofiev, 2004  */
	/*                                                                  */
	/********************************************************************/

	// отображение информации в статусной строке
	function show_status (text)
	{
		if(window.parent && window.parent.FStatus && window.parent.FStatus.document && window.parent.FStatus.document.getElementById('status')) window.parent.FStatus.document.getElementById('status').innerText = text;
	}

	// функции текстового редактора

	var lastFind = 0;
	var lastReplace = 0;

	// поиск первого вхождения строки в редактируемом тексте
	function find()
	{
		if(!document.admin.find_text.value)
		{
			alert("Specify text for find it.");
			return false;
		}
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		var str = document.admin.find_text.value;
		var rng = document.admin.body.createTextRange();

		if(rng.findText(str))
		{
			lastFind = 1;
			rng.scrollIntoView(true);
			rng.select();
			rng = null;
			return true;
		}
		alert("Text not found!");
		rng = null;
		return false;
	}

	// поиск следующего вхождения строки
	function findnext()
	{
		if(lastFind==0) return find();

		if(!document.admin.find_text.value)
		{
			alert("Specify text for find it.");
			return false;
		}
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		var str = document.admin.find_text.value;
		var rng = document.admin.body.createTextRange();
		var cur = 0;

		while(cur < lastFind)
		{
			var tmp = rng.duplicate();
			if(tmp.findText(str))
			{
				cur++;
				rng.setEndPoint("StartToEnd", tmp);
			}
			else
			{
				break;
			}
		}
		if(cur==lastFind)
		{
			if(rng.findText(str))
			{
				lastFind++;
				rng.scrollIntoView(true);
				rng.select();
				rng = null;
				return true;
			}
			else
			{
				lastFind = 0;
				return find();
			}
		}
		rng = null;
		return false;
	}

	// замена следующего вхождения строки
	function replacenext()
	{
		if(!document.admin.find_text.value)
		{
			alert("Specify text for find it.");
			return false;
		}
		if(!document.admin.replace_text.value)
		{
			alert("Specify text to replace.");
			return false;
		}
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		var strF = document.admin.find_text.value;
		var strR = document.admin.replace_text.value;

		if(document.selection.type=="Text")
		{
			var rngF = document.selection.createRange();
			if(rngF.text == strF)
			{
				if(lastFind>0) lastFind--;
				rngF.text = strR;
				rngF.scrollIntoView(true);
				rngF.select();
			}
			else
			{
				rngF = null;
				if(!find()) return false;
				replacenext();
			}
			rngF = null;
		}
		else
		{
			if(!find()) return false;
			replacenext();
		}
		return false;
	}

	// форматирование текста
	function format(operation)
	{
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		document.admin.body.focus();
		var rng = document.selection.createRange();
		switch (operation)
		{
			case 'b':
				rng.text="<b>"+rng.text+"</b>";
				break;
			case 'i':
				rng.text="<i>"+rng.text+"</i>";
				break;
			case 'u':
				rng.text="<u>"+rng.text+"</u>";
				break;
			case 'li':
				rng.text="<li>"+rng.text+"</li>";
				break;
			case 'br':
				rng.text=rng.text+"<br/>";
				break;
			case 'c':
				rng.text="<center>"+rng.text+"</center>";
				break;
			case 'p':
				rng.text="<p align=\"\">"+rng.text+"</p>";
				break;
			case 'a':
				rng.text="<a name=\"\" href=\"\" target=\"\">"+rng.text+"</a>";
				break;
			case 't':
				rng.text="<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n<tr>\n\t<td align=\"\" valign=\"\">"+rng.text+"</td>\n</tr>\n</table>";
				break;
			case 'f':
				rng.text="<font color=\"\">"+rng.text+"</font>";
				break;
			case 'nobr':
				rng.text="<nobr>"+rng.text+"</nobr>";
				break;
			case 'pre':
				rng.text="<pre>"+rng.text+"</pre>";
				break;
			case 'comm':
				rng.text="<!--"+rng.text+"-->";
				break;
			default:
				break;
		}
		rng = null;
		return true;
	}
	
	// форматирование текста в указанном поле формы
	function format_field(field, operation)
	{
		field.focus();
		var rng = document.selection.createRange();
		switch (operation)
		{
			case 'b':
				rng.text="<b>"+rng.text+"</b>";
				break;
			case 'i':
				rng.text="<i>"+rng.text+"</i>";
				break;
			case 'u':
				rng.text="<u>"+rng.text+"</u>";
				break;
			case 'li':
				rng.text="<li>"+rng.text+"</li>";
				break;
			case 'br':
				rng.text=rng.text+"<br/>";
				break;
			case 'c':
				rng.text="<center>"+rng.text+"</center>";
				break;
			case 'p':
				rng.text="<p align=\"\">"+rng.text+"</p>";
				break;
			case 'a':
				rng.text="<a name=\"\" href=\"\" target=\"\">"+rng.text+"</a>";
				break;
			case 't':
				rng.text="<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n<tr>\n\t<td align=\"\" valign=\"\">"+rng.text+"</td>\n</tr>\n</table>";
				break;
			case 'f':
				rng.text="<font color=\"\">"+rng.text+"</font>";
				break;
			case 'nobr':
				rng.text="<nobr>"+rng.text+"</nobr>";
				break;
			case 'pre':
				rng.text="<pre>"+rng.text+"</pre>";
				break;
			case 'comm':
				rng.text="<!--"+rng.text+"-->";
				break;
			default:
				break;
		}
		rng = null;
		return true;
	}

	// выделение цветом
	function setcolor(type, color)
	{
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		document.admin.body.focus();
		var rng = document.selection.createRange();
		switch (type)
		{
			case 'font':
				rng.text="<font color=\"#"+color+"\">"+rng.text+"</font>";
				break;
			case 'span':
				rng.text="<span style=\"color:#"+color+"\">"+rng.text+"</span>";
				break;
			case 'empty':
				rng.text=rng.text+"#"+color;
				break;
			default:
				break;
		}
		rng = null;
		return true;
	}

	// вставка специального символа
	function insert_symbol(symbol)
	{
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		document.admin.body.focus();
		var rng = document.selection.createRange();
		switch (symbol)
		{
			case 'copy':
				rng.text=rng.text+"&"+"copy;";
				break;
			case 'reg':
				rng.text=rng.text+"&"+"reg;";
				break;
			case 'trade':
				rng.text=rng.text+"&"+"trade;";
				break;
			case 'quot':
				rng.text=rng.text+"&"+"quot;";
				break;
			case 'dql':
				rng.text="&"+"#0147;"+rng.text;
				break;
			case 'dqr':
				rng.text=rng.text+"&"+"#0132;";
				break;
			case 'amp':
				rng.text=rng.text+"&"+"amp;";
				break;
			case 'lt':
				rng.text=rng.text+"&"+"lt;";
				break;
			case 'gt':
				rng.text=rng.text+"&"+"gt;";
				break;
			case 'sdot':
				rng.text=rng.text+"&"+"#0183;";
				break;
			case 'bdot':
				rng.text=rng.text+"&"+"#0149;";
				break;
			case 'stire':
				rng.text=rng.text+"&"+"#0150;";
				break;
			case 'btire':
				rng.text=rng.text+"&"+"#0151;";
				break;
			case 'mdot':
				rng.text=rng.text+"&"+"#0133;";
				break;
			case 'fql':
				rng.text="&"+"#0171;"+rng.text;
				break;
			case 'fqr':
				rng.text=rng.text+"&"+"#0187;";
				break;
			case 'degree':
				rng.text=rng.text+"&"+"#0176;";
				break;
			case 'incdec':
				rng.text=rng.text+"&"+"#0177;";
				break;
			case 'incinc':
				rng.text=rng.text+"&"+"#0135;";
				break;
			case 'sql':
				rng.text="&"+"#0145;"+rng.text;
				break;
			case 'sqr':
				rng.text=rng.text+"&"+"#0146;";
				break;
			case 'nbsp':
				rng.text=rng.text+"&"+"nbsp;";
				break;
			default:
				break;
		}
		rng = null;
		return true;
	}

	// вставка тэга разметки шаблонов
	function insert_tag(tag)
	{
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		document.admin.body.focus();
		var rng = document.selection.createRange();
		switch (tag)
		{
			case 'com':
				rng.text="</--:"+rng.text+":--/>";
				break;
			case 'data':
				rng.text="</data:"+rng.text+":data/>";
				break;
			case 'page':
				rng.text="</page:"+rng.text+":page/>";
				break;
			case 'var':
				rng.text="</var:"+rng.text+":var/>";
				break;
			case 'function':
				rng.text="</function:"+rng.text+":function/>";
				break;
			case 'set':
				rng.text="</set:"+rng.text+":set/>";
				break;
			case 'url':
				rng.text="</url:"+rng.text+":url/>";
				break;
			case 'inc':
				rng.text="</inc:"+rng.text+":inc/>";
				break;
			case 'for':
				rng.text="</for:;;;;:for/>"+rng.text+"</:endfor:/>";
				break;
			case 'loop':
				rng.text="</loop::loop/>"+rng.text+"</:endloop:/>";
				break;
			case 'if':
				rng.text="</if::if/>"+rng.text+"</:endif:/>";
				break;
			case 'ife':
				rng.text="</if::if/>"+rng.text+"</:else:/></:endif:/>";
				break;
			default:
				break;
		}
		rng = null;
		return true;
	}

	// пересчет параметров редактируемого текста
	function recalc_stats()
	{
		var text = document.admin.body.value;
		var str = text.split("\r\n");

		document.admin.filebytes.value = text.length;
		document.admin.filesize.value = Math.ceil(text.length/1024);
		document.admin.strings.value = str.length;
	}

	// вывод справки по модулю в попап окошке
	function help(id)
	{
		var newHelpWindow;
		var ver = parseInt(navigator.appVersion);
		var brow = navigator.appName;
		stamp=new Date();
		rand=stamp.getTime();

		newHelpWindow = window.open("_help_popup.php?module_id="+id, rand, "status,width=400,height=520,scrollbars=yes");

		if(!newHelpWindow.opener)
		{
			newHelpWindow.opener = window;
		}

		newHelpWindow.document.close();

		if(ver >=4 || brow == "Netscape")
		{
			newHelpWindow.focus();
		}
	}

	// проверка регистра символа/строки: нижний?
	function is_lower(c)
	{
		return to_lower(c) == c;
	}

	// проверка регистра символа/строки: верхний?
	function is_upper(c)
	{
		return to_upper(c) == c;
	}

	// перевод символа/строки в верхний регистр
	function to_upper(c)
	{
		return c.toUpperCase();
	}

	// перевод символа/строки в нижний регистр
	function to_lower(c)
	{
		return c.toLowerCase();
	}

	// заглавная буква всех слов строки
	function register_first(s)
	{
		var t = new String();
		var sc = s.length;
		var c;
		var doUpperFlag = true;
		for(i=0;i<sc;i++)
		{
			c = s.charAt(i);
			if(doUpperFlag)
			{
				c = to_upper(c);
			}
			else
			{
				c = to_lower(c);
			}
			if(c == ' ' || c == "\t" || c == "\n")
			{
				doUpperFlag = true;
			}
			else
			{
				doUpperFlag = false;
			}
			t = t + c;
		}
		return t;
	}

	// инверсия регистров символов строки
	function register_inverse(s)
	{
		var t = new String();
		var sc = s.length;
		var c;
		for (i=0;i<sc;i++)
		{
			c = s.charAt(i);
			if(is_lower(c))
			{
				c = to_upper(c);
			}
			else
			{
				if(is_upper(c)) c = to_lower(c);
			}
			t = t + c;
		}
		return t;
	}

	// работа с регистрами строки
	function register(operation)
	{
		if(document.admin.body.disabled==true)
		{
			alert("Editarea is empty.\nSelect file for edit.");
			return false;
		}

		document.admin.body.focus();
		var rng = document.selection.createRange();
		switch (operation)
		{
			case 'upper':
				if(rng.text!="") rng.text = to_upper(rng.text);
				else document.admin.body.value = to_upper(document.admin.body.value);
				break;
			case 'lower':
				if(rng.text!="") rng.text = to_lower(rng.text);
				else document.admin.body.value = to_lower(document.admin.body.value);
				break;
			case 'inverse':
				if(rng.text!="") rng.text = register_inverse(rng.text);
				else document.admin.body.value = register_inverse(document.admin.body.value);
				break;
			case 'first':
				if(rng.text!="") rng.text = register_first(rng.text);
				else document.admin.body.value = register_first(document.admin.body.value);
				break;
			case 'sup':
				rng.text="<sup>"+rng.text+"</sup>";
				break;
			case 'sub':
				rng.text="<sub>"+rng.text+"</sub>";
				break;
			default:
				break;
		}
		rng = null;
		return true;
	}

	// скрыть слой данный
	function hideTree(id)
	{
		document.getElementById("head"+id).style.display = "";
		document.getElementById("body"+id).style.display = "none";
	}

	// показать/скрыть объект
	function displayObject(id,isDisplay)
	{
		o = document.getElementById(id).style;
		o.display = (o.display=="none") ? "" : "none";
	}

	// показать слой данных
	function showTree(id)
	{
		displayObject("head"+id,0);
		displayObject("body"+id,1);
	}

	// пустая функция
	function my_void()
	{
		return;
	}

	/* Набор функций по работе со связанными списками групп и пользователей. */

	var selected_group_index = 0;
	var selected_owner_index = 0;
	var selected_new_group_index = 0;
	var selected_new_owner_index = 0;

	// перестройка списков
	function rebuild_new(object, index)
	{
		get_indexes_new(index);
		if(owners_n[selected_new_group_index] && owners_n[selected_new_group_index].length>0 && index != curr_new_group)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<owners_n[selected_new_group_index].length;i++)
			{
				addOption(i, object, owners_n[selected_new_group_index][i], owners_v[selected_new_group_index][i], false, false);
			}
			object.selectedIndex = selected_new_owner_index;
			curr_new_group = index;
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes_new (index)
	{
		if(index != selected_new_group)
		{
			selected_new_group = index;
			selected_new_owner == "";
		}
		if(selected_new_group == "") selected_new_group = groups_v[0];

		for(j=0;j<groups_v.length;j++)
		{
			if(groups_v[j] == selected_new_group)
			{
				selected_new_group_index = j;
				break;
			}
		}

		if(selected_new_owner == "") selected_new_owner = owners_v[selected_new_group_index][0];

		for(j=0;j<owners_v[selected_new_group_index].length;j++)
		{
			if(owners_v[selected_new_group_index][j] == selected_new_owner)
			{
				selected_new_owner_index = j;
				break;
			}
		}
	}

	// инициализация списков
	function init_new(object)
	{
		get_indexes_new(selected_new_group);
		if(object.new_owner_group.length>0)
		{
			for(i=object.new_owner_group.length;i>-1;i--)
			{
				deleteOption(object.new_owner_group, i);
			}
		}
		if(groups.length>0 && owners_n[selected_new_group_index].length>0)
		{
			for(i=0;i<groups.length;i++)
			{
				addOption(i, object.new_owner_group, groups[i], groups_v[i], false, false);
			}
			object.new_owner_group.selectedIndex = selected_new_group_index;
			rebuild_new(object.new_owner_id, groups_v[selected_new_group_index]);
			return true;
		}
		return false;
	}

	// удаление элемента списка
	function deleteOption(object, index)
	{
		object.options[index] = null;
	}

	// добавление элемента списка
	function addOption(index, object, t, v, ds, s)
	{
		object.options[index] = new Option(t, v, ds, s);
	}

	// перестройка списков
	function rebuild(object, index)
	{
		get_indexes(index);
		if(owners_n[selected_group_index] && owners_n[selected_group_index].length>0 && index != curr_group)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<owners_n[selected_group_index].length;i++)
			{
				addOption(i, object, owners_n[selected_group_index][i], owners_v[selected_group_index][i], false, false);
			}
			object.selectedIndex = selected_owner_index;
			curr_group = index;
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes (index)
	{
		if(index != selected_group)
		{
			selected_group = index;
			selected_owner == "";
		}
		if(selected_group == "") selected_group = groups_v[0];

		for(j=0;j<groups_v.length;j++)
		{
			if(groups_v[j] == selected_group)
			{
				selected_group_index = j;
				break;
			}
		}

		if(selected_owner == "") selected_owner = owners_v[selected_group_index][0];

		for(j=0;j<owners_v[selected_group_index].length;j++)
		{
			if(owners_v[selected_group_index][j] == selected_owner)
			{
				selected_owner_index = j;
				break;
			}
		}
	}

	// инициализация списков
	function init(object)
	{
		get_indexes(selected_group);
		// удаляем существующий список марок
		if(object.owner_group.length>0)
		{
			for(i=object.owner_group.length;i>-1;i--)
			{
				deleteOption(object.owner_group, i);
			}
		}
		if(groups.length>0 && owners_n[selected_group_index].length>0)
		{
			// формирование списка производителей
			for(i=0;i<groups.length;i++)
			{
				addOption(i, object.owner_group, groups[i], groups_v[i], false, false);
			}
			object.owner_group.selectedIndex = selected_group_index;
			// формирование списка моделей первого производителя
			rebuild(object.owner_id, groups_v[selected_group_index]);
			return true;
		}
		return false;
	}

	/* --------------------------------------------------------------------- */

	// подсветка строки таблицы
	function row_over(tr_id, pos)
	{
		var row_item = document.getElementById(tr_id);
		if(row_item && row_item.className != "admin_click")
		{
			row_item.className = "admin_over";
		}
	}

	// подсветка строки таблицы
	function row_out(tr_id, pos)
	{
		var row_item = document.getElementById(tr_id);
		if(row_item && row_item.className != "admin_click")
		{
			if(pos==1) row_item.className = "admin_out";
			else row_item.className = "admin_click_over";
		}
	}

	// подсветка выбранной таблицы
	function srow(tr_id, pos)
	{
		var row_item = document.getElementById(tr_id);
		if(row_item)
		{
			if(row_item.className == "admin_click")
			{
				if(pos==1) row_item.className = "admin_out";
				else row_item.className = "admin_click_over";
			}
			else row_item.className = "admin_click";
		}
	}

	// функция проверки заполнения полей формы
	function check_fields(fname, fields, fields_titles)
	{
		var error = "";
		var message="You not fill these required fields:\n";

		for(i=0; i<fields.length; i++)
		{
			if (document.forms[fname].elements[fields[i]].value=='' || document.forms[fname].elements[fields[i]].value==0 )
			{
				message += " - "+fields_titles[i]+"\n";
				if (!error) error=fields[i];
			}
		}
		if (error)
		{
			alert(message);
			document.forms[fname].elements[error].focus();
			return false;
		}
		else
		{
			return true;
		}
	}

	/* --------------------------------------------------------------------- */

	// Регионы и города

	var selected_region_index = 0;
	var selected_city_index = 0;

	// инициализация полей телефонов и факсов
	function phone_code(code)
	{
		if(document.admin.phone && document.admin.phone.value.length<9) document.admin.phone.value = code;
		if(document.admin.fax && document.admin.fax.value.length<9) document.admin.fax.value = code;

		//if(document.admin.c1_work_phone && document.admin.c1_work_phone.value.length<9) document.admin.c1_work_phone.value = code;
		//if(document.admin.c1_work_fax && document.admin.c1_work_fax.value.length<9) document.admin.c1_work_fax.value = code;
		//if(document.admin.c1_mobile && document.admin.c1_mobile.value.length<9) document.admin.c1_mobile.value = code;
		//if(document.admin.c2_work_phone && document.admin.c2_work_phone.value.length<9) document.admin.c2_work_phone.value = code;
		//if(document.admin.c2_work_fax && document.admin.c2_work_fax.value.length<9) document.admin.c2_work_fax.value = code;
		//if(document.admin.c2_mobile && document.admin.c2_mobile.value.length<9) document.admin.c2_mobile.value = code;
	}

	// инициализация списков
	function init2(object)
	{
		get_indexes2(selected_region);
		// удаляем существующий список регионов
		if(object.region_id.length>0)
		{
			for(i=object.region_id.length;i>-1;i--)
			{
				deleteOption(object.region_id, i);
			}
		}
		if(regions.length>0 && cities_n[selected_region_index].length>0)
		{
			// формирование списка регионов
			for(i=0;i<regions.length;i++)
			{
				addOption(i, object.region_id, regions[i], regions_v[i], false, false);
			}
			object.region_id.selectedIndex = selected_region_index;
			// формирование списка городов
			rebuild2(object.city_id, regions_v[selected_region_index]);
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes2 (index)
	{
		if(index != selected_region)
		{
			selected_region = index;
			selected_city == "";
		}
		if(selected_region == "") selected_region = regions_v[0];

		for(j=0;j<regions_v.length;j++)
		{
			if(regions_v[j] == selected_region)
			{
				selected_region_index = j;
				break;
			}
		}

		if(selected_city == "") selected_city = cities_v[selected_region_index][0];

		for(j=0;j<cities_v[selected_region_index].length;j++)
		{
			if(cities_v[selected_region_index][j] == selected_city)
			{
				selected_city_index = j;
				break;
			}
		}
	}

	// перестройка списков
	function rebuild2(object, index)
	{
		get_indexes2(index);
		if(cities_n[selected_region_index] && cities_n[selected_region_index].length>0 && index != curr_region)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<cities_n[selected_region_index].length;i++)
			{
				addOption(i, object, cities_n[selected_region_index][i], cities_v[selected_region_index][i], false, false);
			}
			object.selectedIndex = selected_city_index;
			curr_region = index;
			return true;
		}
		return false;
	}

	// инициализация списков
	function init6(object)
	{
		get_indexes6(selected_region2);
		// удаляем существующий список регионов
		if(object.region_id2.length>0)
		{
			for(i=object.region_id2.length;i>-1;i--)
			{
				deleteOption(object.region_id2, i);
			}
		}
		if(regions.length>0 && cities_n[selected_region_index2].length>0)
		{
			// формирование списка регионов
			for(i=0;i<regions.length;i++)
			{
				addOption(i, object.region_id2, regions[i], regions_v[i], false, false);
			}
			object.region_id2.selectedIndex = selected_region_index2;
			// формирование списка городов
			rebuild6(object.city_id2, regions_v[selected_region_index2]);
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes6 (index)
	{
		if(index != selected_region2)
		{
			selected_region2 = index;
			selected_city2 == "";
		}
		if(selected_region2 == "") selected_region2 = regions_v[0];

		for(j=0;j<regions_v.length;j++)
		{
			if(regions_v[j] == selected_region2)
			{
				selected_region_index2 = j;
				break;
			}
		}

		if(selected_city2 == "") selected_city2 = cities_v[selected_region_index2][0];

		for(j=0;j<cities_v[selected_region_index2].length;j++)
		{
			if(cities_v[selected_region_index2][j] == selected_city2)
			{
				selected_city_index2 = j;
				break;
			}
		}
	}

	// перестройка списков
	function rebuild6(object, index)
	{
		get_indexes6(index);
		if(cities_n[selected_region_index2] && cities_n[selected_region_index2].length>0 && index != curr_region2)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<cities_n[selected_region_index2].length;i++)
			{
				addOption(i, object, cities_n[selected_region_index2][i], cities_v[selected_region_index2][i], false, false);
			}
			object.selectedIndex = selected_city_index2;
			curr_region2 = index;
			return true;
		}
		return false;
	}

	// инициализация списков
	function init7(object)
	{
		get_indexes7(selected_region3);
		// удаляем существующий список регионов
		if(object.region_id3.length>0)
		{
			for(i=object.region_id3.length;i>-1;i--)
			{
				deleteOption(object.region_id3, i);
			}
		}
		if(regions.length>0 && cities_n[selected_region_index3].length>0)
		{
			// формирование списка регионов
			for(i=0;i<regions.length;i++)
			{
				addOption(i, object.region_id3, regions[i], regions_v[i], false, false);
			}
			object.region_id3.selectedIndex = selected_region_index3;
			// формирование списка городов
			rebuild7(object.city_id3, regions_v[selected_region_index3]);
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes7 (index)
	{
		if(index != selected_region3)
		{
			selected_region3 = index;
			selected_city3 == "";
		}
		if(selected_region3 == "") selected_region3 = regions_v[0];

		for(j=0;j<regions_v.length;j++)
		{
			if(regions_v[j] == selected_region3)
			{
				selected_region_index3 = j;
				break;
			}
		}

		if(selected_city3 == "") selected_city3 = cities_v[selected_region_index3][0];

		for(j=0;j<cities_v[selected_region_index3].length;j++)
		{
			if(cities_v[selected_region_index3][j] == selected_city3)
			{
				selected_city_index3 = j;
				break;
			}
		}
	}

	// перестройка списков
	function rebuild7(object, index)
	{
		get_indexes7(index);
		if(cities_n[selected_region_index3] && cities_n[selected_region_index3].length>0 && index != curr_region3)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<cities_n[selected_region_index3].length;i++)
			{
				addOption(i, object, cities_n[selected_region_index3][i], cities_v[selected_region_index3][i], false, false);
			}
			object.selectedIndex = selected_city_index3;
			curr_region3 = index;
			return true;
		}
		return false;
	}

	// Категории и подкатегории

	var selected_category1_index = 0;
	var selected_subcategory1_index = 0;
	var selected_subsubcategory1_index = 0;
	var selected_category2_index = 0;
	var selected_subcategory2_index = 0;
	var selected_subsubcategory2_index = 0;
	var selected_category3_index = 0;
	var selected_subcategory3_index = 0;
	var selected_subsubcategory3_index = 0;

	// инициализация списков
	function init3(object)
	{
		get_indexes3(selected_category1);

		// удаляем существующий список категорий
		if(object.category_id1.length>0)
		{
			for(i=object.category_id1.length;i>-1;i--)
			{
				deleteOption(object.category_id1, i);
			}
		}
		if(categories.length>0 && subcategories_n[selected_category1_index].length>0)
		{
			// формирование списка категорий
			for(i=0;i<categories.length;i++)
			{
				addOption(i, object.category_id1, categories[i], categories_v[i], false, false);
			}
			object.category_id1.selectedIndex = selected_category1_index;
			// формирование списка подкатегорий
			rebuild3(object.subcategory_id1, categories_v[selected_category1_index]);
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes3 (index)
	{
		if(index != selected_category1)
		{
			selected_category1 = index;
			selected_subcategory1 == "";
		}
		if(selected_category1 == "") selected_category1 = categories_v[0];

		for(j=0;j<categories_v.length;j++)
		{
			if(categories_v[j] == selected_category1)
			{
				selected_category1_index = j;
				break;
			}
		}

		if(selected_subcategory1 == "") selected_subcategory1 = subcategories_v[selected_category1_index][0];

		for(j=0;j<subcategories_v[selected_category1_index].length;j++)
		{
			if(subcategories_v[selected_category1_index][j] == selected_subcategory1)
			{
				selected_subcategory1_index = j;
				break;
			}
		}
	}

	// перестройка списков
	function rebuild3(object, index)
	{
		get_indexes3(index);
		if(subcategories_n[selected_category1_index] && subcategories_n[selected_category1_index].length>0 && index != curr_category1)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<subcategories_n[selected_category1_index].length;i++)
			{
				addOption(i, object, subcategories_n[selected_category1_index][i], subcategories_v[selected_category1_index][i], false, false);
			}
			object.selectedIndex = selected_subcategory1_index;
			curr_category1 = index;
			// формирование списка третьего уровня
			rebuild3_2(object.form.subsubcategory_id1, subcategories_v[selected_category1_index][selected_subcategory1_index]);
			return true;
		}
		return false;
	}

	// перестройка списков
	function rebuild3_2(object, index)
	{
		get_indexes3_2(index);
		if(object.length>0)
		{
			for(i=object.length;i>-1;i--)
			{
				deleteOption(object, i);
			}
		}
		if(subsubcategories_n[selected_category1_index][selected_subcategory1_index] && subsubcategories_n[selected_category1_index][selected_subcategory1_index].length>0 && index != curr_subcategory1)
		{
			for(i=0;i<subsubcategories_n[selected_category1_index][selected_subcategory1_index].length;i++)
			{
				addOption(i, object, subsubcategories_n[selected_category1_index][selected_subcategory1_index][i], subsubcategories_v[selected_category1_index][selected_subcategory1_index][i], false, false);
			}
			object.selectedIndex = selected_subsubcategory1_index;
			curr_subcategory1 = index;
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes3_2 (index)
	{
		if(index != selected_subcategory1)
		{
			selected_subcategory1 = index;
			selected_subsubcategory1 == "";
		}
		if(selected_subcategory1 == "") selected_subcategory1 = subcategories_v[selected_category1_index][0];

		for(j=0;j<subcategories_v[selected_category1_index].length;j++)
		{
			if(subcategories_v[selected_category1_index][j] == selected_subcategory1)
			{
				selected_subcategory1_index = j;
				break;
			}
		}

		if(selected_subsubcategory1 == "") selected_subsubcategory1 = subsubcategories_v[selected_category1_index][selected_subcategory1_index][0];

		for(j=0;j<subsubcategories_v[selected_category1_index][selected_subcategory1_index].length;j++)
		{
			if(subsubcategories_v[selected_category1_index][selected_subcategory1_index][j] == selected_subsubcategory1)
			{
				selected_subsubcategory1_index = j;
				break;
			}
		}

	}

	// инициализация списков
	function init4(object)
	{
		get_indexes4(selected_category2);

		// удаляем существующий список категорий
		if(object.category_id2.length>0)
		{
			for(i=object.category_id2.length;i>-1;i--)
			{
				deleteOption(object.category_id2, i);
			}
		}
		if(categories.length>0 && subcategories_n[selected_category2_index].length>0)
		{
			// формирование списка категорий
			for(i=0;i<categories.length;i++)
			{
				addOption(i, object.category_id2, categories[i], categories_v[i], false, false);
			}
			object.category_id2.selectedIndex = selected_category2_index;
			// формирование списка подкатегорий
			rebuild4(object.subcategory_id2, categories_v[selected_category2_index]);
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes4 (index)
	{
		if(index != selected_category2)
		{
			selected_category2 = index;
			selected_subcategory2 == "";
		}
		if(selected_category2 == "") selected_category2 = categories_v[0];

		for(j=0;j<categories_v.length;j++)
		{
			if(categories_v[j] == selected_category2)
			{
				selected_category2_index = j;
				break;
			}
		}

		if(selected_subcategory2 == "") selected_subcategory2 = subcategories_v[selected_category2_index][0];

		for(j=0;j<subcategories_v[selected_category2_index].length;j++)
		{
			if(subcategories_v[selected_category2_index][j] == selected_subcategory2)
			{
				selected_subcategory2_index = j;
				break;
			}
		}
	}

	// перестройка списков
	function rebuild4(object, index)
	{
		get_indexes4(index);
		if(subcategories_n[selected_category2_index] && subcategories_n[selected_category2_index].length>0 && index != curr_category2)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<subcategories_n[selected_category2_index].length;i++)
			{
				addOption(i, object, subcategories_n[selected_category2_index][i], subcategories_v[selected_category2_index][i], false, false);
			}
			object.selectedIndex = selected_subcategory2_index;
			curr_category2 = index;
			// формирование списка третьего уровня
			rebuild4_2(object.form.subsubcategory_id2, subcategories_v[selected_category2_index][selected_subcategory2_index]);
			return true;
		}
		return false;
	}

	// перестройка списков
	function rebuild4_2(object, index)
	{
		get_indexes4_2(index);
		if(object.length>0)
		{
			for(i=object.length;i>-1;i--)
			{
				deleteOption(object, i);
			}
		}
		if(subsubcategories_n[selected_category2_index][selected_subcategory2_index] && subsubcategories_n[selected_category2_index][selected_subcategory2_index].length>0 && index != curr_subcategory2)
		{
			for(i=0;i<subsubcategories_n[selected_category2_index][selected_subcategory2_index].length;i++)
			{
				addOption(i, object, subsubcategories_n[selected_category2_index][selected_subcategory2_index][i], subsubcategories_v[selected_category2_index][selected_subcategory2_index][i], false, false);
			}
			object.selectedIndex = selected_subsubcategory2_index;
			curr_subcategory2 = index;
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes4_2 (index)
	{
		if(index != selected_subcategory2)
		{
			selected_subcategory2 = index;
			selected_subsubcategory2 == "";
		}
		if(selected_subcategory2 == "") selected_subcategory2 = subcategories_v[selected_category2_index][0];

		for(j=0;j<subcategories_v[selected_category2_index].length;j++)
		{
			if(subcategories_v[selected_category2_index][j] == selected_subcategory2)
			{
				selected_subcategory2_index = j;
				break;
			}
		}

		if(selected_subsubcategory2 == "") selected_subsubcategory2 = subsubcategories_v[selected_category2_index][selected_subcategory2_index][0];

		for(j=0;j<subsubcategories_v[selected_category2_index][selected_subcategory2_index].length;j++)
		{
			if(subsubcategories_v[selected_category2_index][selected_subcategory2_index][j] == selected_subsubcategory2)
			{
				selected_subsubcategory2_index = j;
				break;
			}
		}

	}

	// инициализация списков
	function init5(object)
	{
		get_indexes5(selected_category3);

		// удаляем существующий список категорий
		if(object.category_id3.length>0)
		{
			for(i=object.category_id3.length;i>-1;i--)
			{
				deleteOption(object.category_id3, i);
			}
		}
		if(categories.length>0 && subcategories_n[selected_category3_index].length>0)
		{
			// формирование списка категорий
			for(i=0;i<categories.length;i++)
			{
				addOption(i, object.category_id3, categories[i], categories_v[i], false, false);
			}
			object.category_id3.selectedIndex = selected_category3_index;
			// формирование списка подкатегорий
			rebuild5(object.subcategory_id3, categories_v[selected_category3_index]);
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes5 (index)
	{
		if(index != selected_category3)
		{
			selected_category3 = index;
			selected_subcategory3 == "";
		}
		if(selected_category3 == "") selected_category3 = categories_v[0];

		for(j=0;j<categories_v.length;j++)
		{
			if(categories_v[j] == selected_category3)
			{
				selected_category3_index = j;
				break;
			}
		}

		if(selected_subcategory3 == "") selected_subcategory3 = subcategories_v[selected_category3_index][0];

		for(j=0;j<subcategories_v[selected_category3_index].length;j++)
		{
			if(subcategories_v[selected_category3_index][j] == selected_subcategory3)
			{
				selected_subcategory3_index = j;
				break;
			}
		}
	}

	// перестройка списков
	function rebuild5(object, index)
	{
		get_indexes5(index);
		if(subcategories_n[selected_category3_index] && subcategories_n[selected_category3_index].length>0 && index != curr_category3)
		{
			if(object.length>0)
			{
				for(i=object.length;i>-1;i--)
				{
					deleteOption(object, i);
				}
			}
			for(i=0;i<subcategories_n[selected_category3_index].length;i++)
			{
				addOption(i, object, subcategories_n[selected_category3_index][i], subcategories_v[selected_category3_index][i], false, false);
			}
			object.selectedIndex = selected_subcategory3_index;
			curr_category3 = index;
			// формирование списка третьего уровня
			rebuild5_2(object.form.subsubcategory_id3, subcategories_v[selected_category3_index][selected_subcategory3_index]);
			return true;
		}
		return false;
	}

	// перестройка списков
	function rebuild5_2(object, index)
	{
		get_indexes5_2(index);
		if(object.length>0)
		{
			for(i=object.length;i>-1;i--)
			{
				deleteOption(object, i);
			}
		}
		if(subsubcategories_n[selected_category3_index][selected_subcategory3_index] && subsubcategories_n[selected_category3_index][selected_subcategory3_index].length>0 && index != curr_subcategory3)
		{
			for(i=0;i<subsubcategories_n[selected_category3_index][selected_subcategory3_index].length;i++)
			{
				addOption(i, object, subsubcategories_n[selected_category3_index][selected_subcategory3_index][i], subsubcategories_v[selected_category3_index][selected_subcategory3_index][i], false, false);
			}
			object.selectedIndex = selected_subsubcategory3_index;
			curr_subcategory3 = index;
			return true;
		}
		return false;
	}

	// получение индексов выбранных значений списков
	function get_indexes5_2 (index)
	{
		if(index != selected_subcategory3)
		{
			selected_subcategory3 = index;
			selected_subsubcategory3 == "";
		}
		if(selected_subcategory3 == "") selected_subcategory3 = subcategories_v[selected_category3_index][0];

		for(j=0;j<subcategories_v[selected_category3_index].length;j++)
		{
			if(subcategories_v[selected_category3_index][j] == selected_subcategory3)
			{
				selected_subcategory3_index = j;
				break;
			}
		}

		if(selected_subsubcategory3 == "") selected_subsubcategory3 = subsubcategories_v[selected_category3_index][selected_subcategory3_index][0];

		for(j=0;j<subsubcategories_v[selected_category3_index][selected_subcategory3_index].length;j++)
		{
			if(subsubcategories_v[selected_category3_index][selected_subcategory3_index][j] == selected_subsubcategory3)
			{
				selected_subsubcategory3_index = j;
				break;
			}
		}

	}

	function enter_submit(obj)
	{
		if(event.keyCode == 13)
		{
			obj.action='_admin.php';
			obj.client.value='search_firm';
			obj.target='FMain';
			obj.submit();
		}
		else
		{
			return false;
		}
	}

	function show(item)
	{
		var obj;
		obj = document.getElementById(item);
		if (obj.style.display != "none"){
			obj.style.display = "none";
			obj.style.visibility = "hidden";
		}else{
			obj.style.display ="block";
			obj.style.visibility = "visible";

		        width = window.screen.width;
		        height = window.screen.height;
		        obj.style.top = height/2-80;
		        obj.style.left = width/2-170;
		}
	}
	
	function show2(item)
	{
		var obj;
		obj = document.getElementById(item);
		if(obj!=null){
			if (obj.style.visibility != "hidden"){
				obj.style.visibility = "hidden";
			}else{
				obj.style.visibility = "visible";
			}
		}
	}
	
	function trim(string){
		return string.replace(/(^\s+)|(\s+$)/g,"");
	}