	// Retrieve Browser Information:
	var nav_id = -1;
	// -1 - unknown
	//  0 - IE
	//  1 - Opera
	//  2 - Netscape
	
	var __nav = navigator.appName;
	var __ver = navigator.appVersion;
	
	if(__nav.indexOf("Microsoft Internet Explorer") != -1) nav_id = 0;
	if(navigator.userAgent.indexOf("Opera") != -1) nav_id = 1;
	if(__nav.indexOf("Netscape") != -1) nav_id = 2;

	//--------------------------------------------------------------------------

	// Return the element coords in browser window:
	function getElementPosition(elem) {
	    var offsetTrail = elem;
	    var offsetLeft = 0;
	    var offsetTop = 0;
	    while (offsetTrail) {
	        offsetLeft += offsetTrail.offsetLeft;
	        offsetTop += offsetTrail.offsetTop;
	        offsetTrail = offsetTrail.offsetParent;
	    }
	    if (navigator.userAgent.indexOf("Mac") != -1 && 
	        typeof document.body.leftMargin != "undefined") {
	        offsetLeft += document.body.leftMargin;
	        offsetTop += document.body.topMargin;
	    }
	    return {left:offsetLeft, top:offsetTop};
	}


	// Retrieve the rendered width of an element
	function getObjectWidth(elem) {
		var result = 0;
		if (elem.offsetWidth) {
			result = elem.offsetWidth;
		} else if (elem.clip && elem.clip.width) {
			result = elem.clip.width;
		} else if (elem.style && elem.style.pixelWidth) {
			result = elem.style.pixelWidth;
		}
		return parseInt(result);
	}

	// Retrieve the rendered height of an element
	function getObjectHeight(elem) {
		var result = 0;
		if (elem.offsetHeight) {
			result = elem.offsetHeight;
		} else if (elem.clip && elem.clip.height) {
			result = elem.clip.height;
		} else if (elem.style && elem.style.pixelHeight) {
			result = elem.style.pixelHeight;
		}
		return parseInt(result);
	}
   
	//--------------------------------------------------------------------------
	
	// показать меню:
	function showMenu() {
		// ставим свойство видимости в 1
		this.is_vis = 1;
		// show div:
		if(this.can_hide) {
			showDiv(this.id, this.x, this.y);
		}
	}

	// спраятать меню:
	function hideMenu() {
		// ставим свойсвто видимости в 0
		this.is_vis = 0;
		this.is_over = 0;

		// спрятать все подменю, если они есть:
		for (var i = 0; i < menu.length; i++) {
			if (menu[i].pid == this.id) {
				if(menu[i].is_vis == 1) {
					if(canHide(menu[i].id))
						menu[i].hide();
				}
			}
		}
		
		// если это не главное меню, то спрятать его:
		if (this.can_hide && canHide(this.id))
			hideDiv(this.id);
	}

	// Drop-Down Menu Class Definition:
	function CMenu(id, parent, state, can_hide, overClass, outClass, orient, action) {
		this.id = id;
		this.pid = parent;
		// position & box:
		this.x = 0;
		this.y = 0;
		this.w = 0;
		this.h = 0;
		// states:
		this.is_vis = state;
		this.is_over = 0;
		// visualisation:
		this.overClass = overClass;
		this.outClass = outClass;
//		this.clickClass = clickClass;
		// additional params: 
		this.can_hide = can_hide;
		this.orient = orient;
		this.action = action;
		
		// Methods:
		this.show = showMenu;
		this.hide = hideMenu;
	}
	
	//--------------------------------------------------------------------------
	
	var menu = new Array();

	menu[menu.length] = new CMenu("menu_0", "", 1, false, "", "", "", "");

	//--------------------------------------------------------------------------

	// Show Div:
	function showDiv(divid, x, y) {
		var el = document.getElementById(divid);
		el.style.left = (nav_id==0) ? parseInt(x) + 1 + "px" : parseInt(x) + "px";
		el.style.top = (nav_id==0) ? parseInt(y) + "px" : parseInt(y) + "px";
//		el.style.width = (nav_id==0) ? parseInt(w) + 5 + "px" : parseInt(w) - 1 + "px";
//		el.style.height = (nav_id==0) ? parseInt(h) + 5 + "px" : parseInt(h) - 1 + "px";
		el.style.display = "block";
		el.style.visibility = "visible";
	}

	// Hide Div:
	function hideDiv(divid) {
		var el = document.getElementById(divid);
		el.style.display = "none";
		document.getElementById(divid).style.visibility = "hidden";
	}

	//--------------------------------------------------------------------------

	// получиит индекс для меню в массиве:
	function getMenuInd(id) {
		for (var i = 0; i < menu.length; i++)
			if (menu[i].id == id)
				return i;
		return -1;
	}

	// проверяет, есть ли подменю для данного меню:
	function getSubMenu(id) {
		for (var i = 0; i < menu.length; i++)
			if (menu[i].pid == id)
				return menu[i].id;
		return -1;
	} 
	
	// проверяет, есть ли подменю для данного меню:
	function getSubMenuInd(id) {
		for (var i = 0; i < menu.length; i++)
			if (menu[i].pid == id)
				return i;      
		return -1;
	} 

	// проверяем, открыты ли подменю для данного меню:
	function canHide(id) {
		for (var i = 0; i < menu.length; i++) {
			if(menu[i].pid == id) {
				if (menu[i].is_over == 1) {
					return false;
				} else if (menu[i].is_vis == 1) {
					return canHide(menu[i].id);
				}
			}
		}
		return true;
	}
	
	// если меню можно спрятать, то прячем его
	var _timer = null;
	function tryHide(id, ind) {
		// убиваем таймер:
		if(_timer != null)
			clearTimeout(_timer);
		// получаем элемент меню:
		var el = document.getElementById(id);
		// проверяем, не открыты ли подменю:
		if(canHide(id) == true) {
			// если установлен класс, то обновляем его:
			var className = menu[ind].outClass;
			if(className != '')
				el.className = className;
			
			// прячем менюшку:
			if(ind != -1) {
				if(menu[ind].pid == "") {
					// если это главное меню, то просто прячем его:
					menu[ind].hide();
				} else {
					// иначе ищем прародителя и прячем его:
					var pind = ind;
					while(menu[pind].pid != "") {
						if(menu[pind].is_over == 0) {
							if(canHide(menu[pind].id)) {
								// меняем стиль, если нужно:
								el = document.getElementById(menu[pind].id);
								var className = menu[pind].outClass;
								if(className != '')
									el.className = className;
								
								window.status = menu[pind].id;
								menu[pind].hide();
							}
						}
						pind = getMenuInd(menu[pind].pid);
					}
				}
			}
		}
	}
	
	// OnMouseOver Event for Top Menu:
	var _cmd = "";
	function onMenuOver(el) {
		if(_cmd != "") {
			eval(_cmd);
			_cmd = "";
		}
			
		// show ddmenu:
		var id = el.id;
		var ind = getMenuInd(id);
		
		// обновляем класс (если есть):
		var className = menu[ind].overClass;
		if(className != '')
			el.className = className;

		// если элемент существует, то открываем его подменю:
		if(ind != -1) {
//			menu[ind].is_vis = 1;
			menu[ind].is_over = 1;
			menu[ind].show();
			// прячем все менюшки этого уровня:
/*
			var pid = menu[ind].pid;
			for (var i = 0; i < menu.length; i++) {
				if(menu[i].pid == pid && menu[i].id != id) {
					if(canHide(menu[i].id))
						menu[i].hide();
				}
			}
/**/
			var sub = getSubMenuInd(id);
			if(sub != -1) {
				if(menu[ind].orient == "up") {
					menu[sub].x = parseInt(getElementPosition(el).left) - 5;
					menu[sub].y = parseInt(getElementPosition(el).top) - getObjectHeight(document.getElementById(menu[sub].id)) + 10;
				}
				if(menu[ind].orient == "down") {
					menu[sub].x = parseInt(getElementPosition(el).left) - 5;
					menu[sub].y = parseInt(getElementPosition(el).top) + getObjectHeight(el) - 5;
				}
				if(menu[ind].orient == "right") {
					menu[sub].x = parseInt(getElementPosition(el).left) + getObjectWidth(el) - 5;
					menu[sub].y = parseInt(getElementPosition(el).top) - 5;
				}
				if(menu[ind].orient == "left") {
					menu[sub].x = parseInt(getElementPosition(el).left) - getObjectWidth(document.getElementById(menu[sub].id)) + 10;
					menu[sub].y = parseInt(getElementPosition(el).top) - 5;
				}
				menu[sub].show();
			}
		} 
	}
	
	// OnMouseOut Event for Top Menu:
	function onMenuOut(el) {
		var id = el.id;
		var ind = getMenuInd(id);
		if(ind != -1) {
			menu[ind].is_over = 0;
			
//			_cmd = "tryHide('" + id + "', " + ind + ");";
			_timer = window.setTimeout("tryHide('" + id + "', " + ind + ");", 30);
		} 
	}

	// OnMouseOut Event for Top Menu:
	function onMenuClick(el) {
		var id = el.id;
		var ind = getMenuInd(id);
		if(ind != -1) {
			if(menu[ind].action != "")
				eval(menu[ind].action);
		} 
	}

	//--------------------------------------------------------------------------

	function getInsideWindowHeight() {
		var isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ?
        true : false;

	    if (window.innerHeight) {
	        return window.innerHeight;
	    } else if (isIE6CSS) {
	        // measure the html element's clientHeight
	        return document.body.parentElement.clientHeight;
	    } else if (document.body && document.body.clientHeight) {
	        return document.body.clientHeight;
	    }
	    return 0;
	}

	function pageResize() {
		document.getElementById("imgH").height = getInsideWindowHeight() - 200;
	}

	//--------------------------------------------------------------------------

	// Page Loader:
	function pageLoad() {
		pageResize();
	}

	//--------------------------------------------------------------------------

   	function openWnd(url, w, h) {
		var width = w;
		var height = h;
		var left = parseInt((screen.availWidth/2) - (width/2));
		var top = parseInt((screen.availHeight/2) - (height/2));
		var windowFeatures = "width=" + width + ",height=" + height + 
			",left=" + left + ",top=" + top + 
			",screenX=" + left + ",screenY=" + top +
			",status=0,resizable=0,menubar=0,scrollbars=0";
		var myWindow = window.open(url, "", windowFeatures);
	}

	function GoToURL(url) {
		document.location.href = url;
	}

	function openUrl(url, in_new) {
		if (in_new == 1) {
			window.open(url, "", "");
		} else {
			document.location.href = url;
		}
	}
