 var fadeTimeoutTime = 300;
 var menu1LoColor = '#B7A591';
 var menu1HiColor = '#F38600';
 var menu2LoColor = '#F38600';
 var menu2HiColor = '#DE6200';
 var menu3LoColor = '#DE6200';
 var menu3HiColor = '#AA4E2B';
 var selectedMenu1 = null;
 var objectToHilightPrev1 = null;
 var selectedMenu2 = null;
 var objectToHilightPrev2 = null;
 var menuVisible2 = null;
 var shownMenu2 = null;

 var selectedMenu3 = null;
 var objectToHilightPrev3 = null;
 var menuVisible3 = null;
 var shownMenu3 = null;

 var fadeTimeout2 = null;

 function buildMenu(menu){
	var menu_begin = new Array(3);
	menu_begin[0] = "<DIV id=\"menu_id\" style=\"position:absolute; align: right; top:53px; width:642px; height:29px; z-index:1; visibility:visible; background:#B7A591;\">\n"
			+ "<TABLE bgcolor=\"#B7A591\" width=642 border=0 cellpadding=0 cellspacing=0 height=29>\n"
			+ "	<TR>\n";
	menu_begin[1] = "<DIV id=\"menu_id\" style=\"position:absolute; align: right; top:82px; width:642px; height:29px; z-index:2; visibility:hidden; background:#F38600;\">\n"
			+ "<TABLE bgcolor=\"#F38600\" width=642 border=0 cellpadding=0 cellspacing=0 height=29>\n"
			+ "	<TR>\n";
 	menu_begin[2] = "<DIV ID=\"menu_id\" STYLE=\"position:absolute; align: right; top:111px; width:642px; height:29px; z-index:3; visibility:hidden; background:#DE6200;\">\n"
 			+ "<TABLE bgcolor=\"#DE6200\" width=642 border=0 cellpadding=0 cellspacing=0 height=29>\n"
			+ "	<TR>\n";
	var menu_end = "	</TR>\n"
			+ "</TABLE>\n"
			+ "</DIV>\n";
	var delim = new Array(false, false, false);
	var menu_delim = "		<TD width=1><img src=img/menu_dlmtr.gif width=1 height=29></TD>\n";
	var menu_cell = "		<TD id=\"menu_id\" onMouseOver=\"act_menu_over; self.status='self_id'; return true;\" onMouseOut=\"act_menu_out; self.status=''; return true;\" style=\"text-align: center; padding-left:7px; padding-right:7px;cursor:hand;border-bottom:1px solid windowtext;border-bottom-color: #B7A591;\" onClick=\"window.open('index.php?id=reference_id','_self',''); return false;\"><A href=\"index.php?id=reference_id\" class=menu>name_id</A></TD>\n";
	var menu_table = new Array("", "", "");
	// создаем таблицы меню
	for (var i = 0; i < (menu.length - 1); i++){
		reference_id = menu[i][1];
		menu_id = menu[i][3] + "_id";
		name_id = menu[i][4];
		self_id = (menu[i][5] == "")?menu[i][4]:menu[i][5];
		cell_temp = menu_cell;
		// начало таблицы меню
		if (i == 0 || menu[i][0] > menu[i - 1][0]) menu_table[menu[i][0]] += menu_begin[menu[i][0]].replace("menu_id", "menu" + (menu[i][0] + 1) + menu[i][2] + "_id");
		// ячейка с подменю
		if (menu[i][0] < menu[i + 1][0]){
			act_menu_over = "sM" + (menu[i][0] + 2) + "('menu" + (menu[i][0] + 2) + menu[i][3] + "_id', '" + menu[i][3] + "_id')";
			act_menu_out = "hM" + (menu[i][0] + 2) + "('" + menu[i][3] + "_id')";
			if (delim[menu[i][0]]) menu_table[menu[i][0]] += menu_delim;
			else delim[menu[i][0]] = true;
			//заполняем ячейку таблицы
			cell_temp = cell_temp.replace("reference_id",  reference_id);
			cell_temp = cell_temp.replace("reference_id",  reference_id);
			cell_temp = cell_temp.replace("menu_id",  menu_id);
			cell_temp = cell_temp.replace("name_id",  name_id);
			cell_temp = cell_temp.replace("self_id",  self_id);
			cell_temp = cell_temp.replace("act_menu_over",  act_menu_over);
			cell_temp = cell_temp.replace("act_menu_out",  act_menu_out);
			menu_table[menu[i][0]] += cell_temp;
		}
		// ячейка без подменю
		else if (menu[i][0] == menu[i + 1][0]){
			act_menu_over = "pM" + (menu[i][0] + 2) + "('" + menu[i][3] + "_id')";
			act_menu_out = "dM" + (menu[i][0] + 2) + "('" + menu[i][3] + "_id')";
			if (delim[menu[i][0]]) menu_table[menu[i][0]] += menu_delim;
			else delim[menu[i][0]] = true;
			//заполняем ячейку таблицы
			cell_temp = cell_temp.replace("reference_id",  reference_id);
			cell_temp = cell_temp.replace("reference_id",  reference_id);
			cell_temp = cell_temp.replace("menu_id",  menu_id);
			cell_temp = cell_temp.replace("name_id",  name_id);
			cell_temp = cell_temp.replace("self_id",  self_id);
			cell_temp = cell_temp.replace("act_menu_over",  act_menu_over);
			cell_temp = cell_temp.replace("act_menu_out",  act_menu_out);
			 menu_table[menu[i][0]] += cell_temp;
		}
		//ячейка без подменю + завершение таблицы
		else{
			act_menu_over = "pM" + (menu[i][0] + 2) + "('" + menu[i][3] + "_id')";
			act_menu_out = "dM" + (menu[i][0] + 2) + "('" + menu[i][3] + "_id')";
			if (delim[menu[i][0]]) menu_table[menu[i][0]] += menu_delim;
			//заполняем ячейку таблицы
			cell_temp = cell_temp.replace("reference_id",  reference_id);
			cell_temp = cell_temp.replace("reference_id",  reference_id);
			cell_temp = cell_temp.replace("menu_id",  menu_id);
			cell_temp = cell_temp.replace("name_id",  name_id);
			cell_temp = cell_temp.replace("self_id",  self_id);
			cell_temp = cell_temp.replace("act_menu_over",  act_menu_over);
			cell_temp = cell_temp.replace("act_menu_out",  act_menu_out);
			menu_table[menu[i][0]] += cell_temp;
			var k = menu[i][0];
			for ( var j = (menu[i][0] - menu[i + 1][0]); j > 0; j--){
				menu_table[k] += menu_end;
				delim[k] = false;
				k--;
			}
		}

	}
	var menucontent = menu_table.join(""); //объединяем строки в единое динамическое меню
	document.write(menucontent);
}

function setObjectVisibility(objectName, isVisible)
 {
  switch (navigator.family)
  {
   case 'nn4':
   		value = ((isVisible) ? "show" : "hide");
   		objectPtr = eval('document["' + objectName + '"]');
   		break;
   case 'ie4':
   case 'opera':
        value = ((isVisible) ? "visible" : "hidden");
        objectPtr = eval('document.all["' + objectName + '"].style');
   		break;
   case 'gecko':
        value = ((isVisible) ? "visible" : "hidden");
   		objectPtr = eval('document.getElementById("' + objectName + '").style');
   		break;
   default:
   		break;
  }
  objectPtr.visibility = value;
 }

 function setObjectBgColor(objectName, objectColor)
 {
  switch (navigator.family)
  {
   case 'nn4':
     	document[objectName].bgColor = objectColor;
     	break;
   case 'ie4':
   case 'opera':
        document.all[objectName].bgColor = objectColor;
     	break;
   case 'gecko':
     	document.getElementById(objectName).bgColor = objectColor;
     	break;
   default:
   		break;
  }
 }

function hideSubMenu()
{
  if (objectToHilightPrev3 != null)
  {
   setObjectBgColor(objectToHilightPrev3, menu3LoColor);
   objectToHilightPrev3 = null;
  }
  if (objectToHilightPrev2 != null)
  {
   setObjectBgColor(objectToHilightPrev2, menu2LoColor);
   objectToHilightPrev2 = null;
  }
  if (objectToHilightPrev1 != null)
  {
   setObjectBgColor(objectToHilightPrev1, menu1LoColor);
   objectToHilightPrev1 = null;
  }
  if (menuVisible3 != null)
  {
   setObjectVisibility(menuVisible3, false);
   menuVisible3 = null;
  }
  if (menuVisible2 != null)
  {
   setObjectVisibility(menuVisible2, false);
   menuVisible2 = null;
  }
 }

function sM2(menu_id, cell_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu = "showMenu2('" + menu_id + "', '" + cell_id + "')";
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function hM2(cell_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu = 'hideMenu2(\'' + cell_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function pM2(menu_id, name_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu='processMenu2(\'' + menu_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function dM2(cell_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu= 'doneMenu2(\'' + cell_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function sM3(menu_id, cell_id, name_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu='showMenu3(\'' + menu_id + '\', \'' + cell_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function hM3(cell_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu='hideMenu3(\'' + cell_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function pM3(menu_id, name_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu='processMenu3(\'' + menu_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function dM3(cell_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu= 'doneMenu3(\'' + cell_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function pM4(menu_id, name_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu='processMenu4(\'' + menu_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function dM4(cell_id)
{
	clearTimeout(fadeTimeout2);
	dynamic_menu= 'doneMenu4(\'' + cell_id + '\')';
	fadeTimeout2=setTimeout("eval(dynamic_menu)", fadeTimeoutTime);
}

function processMenu2(objectToHilight)
 {
  hideSubMenu();
  setObjectBgColor(objectToHilight, menu1HiColor);
  objectToHilightPrev1=objectToHilight;
 }

 function doneMenu2(objectToLolight)
 {
  setObjectBgColor(objectToLolight, menu1LoColor);
  hideSubMenu();
  showCurrentMenu();
 }

 function showMenu2(menuLayerName, objectToHilight)
 {
  processMenu2(objectToHilight)
  setObjectVisibility(menuLayerName, true);
  menuVisible2 = menuLayerName;
 }

 function hideMenu2(objectToLolight)
 {
  doneMenu2(objectToLolight);
 }

 function processMenu3(objectToHilight)
 {
  if (objectToHilightPrev3 != null)
  {
   setObjectBgColor(objectToHilightPrev3, menu3LoColor);
   objectToHilightPrev3 = null;
  }
  if (objectToHilightPrev2 != null)
  {
   setObjectBgColor(objectToHilightPrev2, menu2LoColor);
   objectToHilightPrev2 = null;
  }
  if (menuVisible3 != null)
  {
   setObjectVisibility(menuVisible3, false);
   menuVisible3 = null;
  }
  setObjectBgColor(objectToHilight, menu2HiColor);
  objectToHilightPrev2 = objectToHilight;
 }

 function doneMenu3(objectToLolight)
 {
  setObjectBgColor(objectToLolight, menu2LoColor);
  hideSubMenu();
  showCurrentMenu();
 }

 function showMenu3(menuLayerName, objectToHilight)
 {
  processMenu3(objectToHilight);
  setObjectVisibility(menuLayerName, true);
  menuVisible3 = menuLayerName;
 }

 function hideMenu3(objectToLolight)
 {
  doneMenu3(objectToLolight);
 }

 function processMenu4(objectToHilight)
 {
  if (objectToHilightPrev3 != null)
  {
   setObjectBgColor(objectToHilightPrev3, menu3LoColor);
   objectToHilightPrev3 = null;
  }
  setObjectBgColor(objectToHilight, menu3HiColor);
  objectToHilightPrev3 = objectToHilight;
 }

  function doneMenu4(objectToLolight)
 {
  setObjectBgColor(objectToLolight, menu3LoColor);
  hideSubMenu();
  showCurrentMenu();
 }

 function showCurrentMenu()
 {
  if (selectedMenu1 != null)
 {
   setObjectBgColor(selectedMenu1, menu1HiColor);
   objectToHilightPrev1 = selectedMenu1;
  }

  if (shownMenu2 != null)
 {
   setObjectVisibility(shownMenu2, true);
   menuVisible2 = shownMenu2;
  }

  if (selectedMenu2 != null)
  {
   setObjectBgColor(selectedMenu2, menu2HiColor);
   objectToHilightPrev2 = selectedMenu2;
  }

  if (shownMenu3 != null)
  {
   setObjectVisibility(shownMenu3, true);
   menuVisible3 = shownMenu3;
  }

  if (selectedMenu3 != null)
  {
   setObjectBgColor(selectedMenu3, menu3HiColor);
   objectToHilightPrev3 = selectedMenu3;
  }
 }
