dom = (document.getElementById) ? (true) : (false);
ie = (document.all) ? (true) : (false);
ie4 = ie && !dom;
nn4 =(document.layers) ? (true) : (false);

Mac = (navigator.appVersion.indexOf("Mac") != -1);
ie4mac = ie4 && Mac;
opera = (navigator.userAgent.indexOf("Opera")!=-1);
Konqueror = (navigator.userAgent.indexOf("Konqueror")!=-1);
FireFox = (navigator.userAgent.indexOf("Firefox")!=-1);

visible = (nn4)?('show'):('visible');
hidden = (nn4)?('hide'):('hidden');

var elem = 0, timer = 0;

function mouseOver(id,a)
{
	var open;
	if(!id) return;
	if(dom) open = document.getElementById(id);
	else if(ie4) open = document.all[id];
	else if(nn4) open = document.layers[id];

	if(!open)return;
	if(!nn4)open = open.style;

	if(timer){
		clearTimeout(timer);
		timer=0;
	}
	
	if(elem && open!=elem)hideNow();
	if(a) {open.left = menuLeft(id,a); open.top = menuTop(id,a);}
	open.visibility = visible;
	elem = open;
}

function mouseOut()
{
	timer = setTimeout('hideNow()',200);
}

function hideNow()
{
	if(elem) elem.visibility = hidden;
	elem = 0;
}

function menuLeft(id,a) 
{
	var num = a.id;
	if(nn4) return document.layers['x'+id].pageX;
	else {
		var pos = a.offsetLeft;
		while (a.offsetParent != null) {
			a = a.offsetParent;
			pos += a.offsetLeft;
			if (a.tagName == 'BODY') break;
		} 
		if ( (num=='navsell1') || FireFox ) return pos-1;
		else return pos;
		// return pos-13;
	}
}

function menuTop(id,a) 
{
	if(nn4) return document.layers['x'+id].pageY+20;
	else {
		var pos = a.offsetTop;
		while (a.offsetParent != null) {
			a = a.offsetParent;
			pos += a.offsetTop;
			if (a.tagName == 'BODY') break;
		} return pos+21;// return pos+18;
	}
}

function changeMap(elemId)
{
	var elem, img;
	if(dom || ie4){
	        elem = (dom)?(document.getElementById(elemId)):(document.all[elemId]);
	        img = (dom)?(document.getElementById(elemId+"-img")):(document.all[elemId+"-img"]);
	        /* dv = (dom)?(document.getElementById(elemId+"D")):(document.all[elemId+"D"]); */
	        if(elem)
	                with(elem.style)
	                if(display == "block" || display == ""){
	                        display = "none";
	                        if(img) img.src = "/img/icon-folder.gif";
	                      /*  if(dv) dv.style.color = "Black"; */
	                }
	                else{
	                        display = "block";
	                        if(img) img.src = "/img/icon-folder-active.gif";
	                      /*  if(dv) dv.style.color = "#3366ff"; */
	                }
	}
}

function changeMapWithLink(elemId, linkRef)
{
	var elem, img;
	if(dom || ie4){
	        elem = (dom)?(document.getElementById(elemId)):(document.all[elemId]);
	        img = (dom)?(document.getElementById(elemId+"-img")):(document.all[elemId+"-img"]);
	        /* dv = (dom)?(document.getElementById(elemId+"D")):(document.all[elemId+"D"]); */
	        if(elem)
	                with(elem.style)
	                if(display == "block" || display == ""){
	                        display = "none";
	                        if(img) img.src = "/img/icon-folder.gif";
	                      /*  if(dv) dv.style.color = "Black"; */
	                }
	                else{
	                        display = "block";
	                        if(img) img.src = "/img/icon-folder-active.gif";
	                      /*  if(dv) dv.style.color = "#3366ff"; */
	                }
	}
}

function cm(elemId)
{
	var elem;
	if(dom || ie4){
	        elem = (dom)?(document.getElementById(elemId)):(document.all[elemId]);
	        if(elem)
	                with(elem.style)
	                if(display == "block" || display == ""){
	                        display = "none";
	                }
	                else{
	                        display = "block";
	                }
	}
	return false;
}

function man(xxx){
		window.parent.frames['bottom'].document.forms['msgpost'].msg.focus();
		window.parent.frames['bottom'].document.forms['msgpost'].msg.value+=('['+xxx+'] ');
}

/*
 * Функция проверки заполнения полей различных типов. 
 */
function validateField(name, type) 
{
	var input, valid = false;
	
	if (dom || ie4) {
		input = (dom) ? (document.getElementsByName(name)) : (document.all[name]);
		if (input) {

			switch (type) {
				// Поля загрузки файлов и ввода текста.
				case 3:
				case 4:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
					if (input[0].value != "") {
						valid = true;
					}
					break;
				// Ниспадающее меню.
				case 5:
					if (input[0].value != 0) {
						valid = true;
					}
					break;
				// Группа радиобоксов и чекбоксов.
				case 6:
				case 7:
					for (i = 0; i < input.length; i++) {
						if (input[i].checked) {
							valid = true;
						}
					}
					break;
			}
		}
	}
	return valid;
}

/*
 * Функция проверки заполнения обязательных полей конструируемой формы.
 */
function validateForm(fields, errorBegin, errorEnd, warningId, messageId)
{
	var errorBody = "";
	var i, invalid = false;
	
	for (i = 0; i < fields.length; i++) {

		if (!validateField(fields[i][0], fields[i][1])) { 
			invalid = true;
			errorBody = errorBody + fields[i][2];
		}
	}
	
	var warning, message;
	if (dom || ie4) {
		
		warning = (dom) ? (document.getElementById(warningId)) : (document.all[warningId]);
		message = (dom) ? (document.getElementById(messageId)) : (document.all[messageId]);

		if (warning && message) {

			if (invalid) {
				//
				// Показать статусный блок, если он не виден, 
				// иначе просто поменять статусное сообщение. 
				//
				warning.style.display = "block";
				message.innerHTML = errorBegin + errorBody + errorEnd;
				
			} else {
				// Скрыть статусный блок.
				warning.style.display = "none";
			}
		}
	}
	
	return !invalid;
}

/*
 * Функции проверки заполнения полей неконструируемых форм.
 */
function checkSearchQuery(statusId, messageId, queryName, warning)
{
	var status, message;
	var invalid = false;
	
	if (dom || ie4) {
		
		status = (dom) ? (document.getElementById(statusId)) : (document.all[statusId]);
		message = (dom) ? (document.getElementById(messageId)) : (document.all[messageId]);

		if (status && message) {

			invalid = !validateField(queryName, 8);
			if (invalid) {
				//
				// Показать статусный блок, если он не виден, 
				// иначе просто поменять статусное сообщение. 
				//
				status.style.display = "block";
				message.innerText = warning;
				
			} else {
				// Скрыть статусный блок.
				status.style.display = "none";
			}
		}
	}
	
	return !invalid;
}
