MM_DOM = (document.getElementById) ? true : false;
MM_NS4 = (document.layers) ? true : false;
MM_IE = (document.all) ? true : false;
MM_IE4 = MM_IE && !MM_DOM;
MM_Mac = (navigator.appVersion.indexOf("Mac") != -1);
MM_IE4M = MM_IE4 && MM_Mac;
MM_IE5 = (document.all && document.getElementById) ? true : false;
MM_NS6 = (!document.all && document.getElementById) ? true : false;

/*
* включает видимость слоя над текущей страницей
* делает недоступными элементы форм и ссылки во время показа слоя
*/
function lockPageOn(target)
{
	try {
		if (!target)
			target = this; //страница с которой была вызвана функция

		if (!target._lon_disabled_arr)
			target._lon_disabled_arr = new Array();
		else if (target._lon_disabled_arr.length > 0)
			return true;

		//включить слой-маску
		target.document.getElementById("loadLayer").style.display = "";
		//получить массив элементов select
		var select_arr = target.document.getElementsByTagName("select");

		//перевести все элементы select в состояние disabled
		for (var i = 0; i < select_arr.length; i++) {
			if (select_arr[i].disabled)
				continue;

			select_arr[i].disabled = true;
	
			var clone = target.document.createElement("input");
			clone.type = "hidden";
			clone.name = select_arr[i].name;
			var values = new Array();
			for (var n = 0; n < select_arr[i].length; n++) {
				if (select_arr[i][n].selected) {
					values[values.length] = select_arr[i][n].value;
				}
			}
			clone.value = values.join(",");
			select_arr[i].parentNode.insertBefore(clone, select_arr[i]);
		}
	} catch (e) {
		return false;
	}
	
	return true;
}

function lockPageOff(target)
{
	try {
		if (!target)
			target = this;
		//выключить слой-маску
		target.document.getElementById("loadLayer").style.display = "none";
		//включить элементы select
		var select_arr = target.document.getElementsByTagName("select");
		for (var i = 0; i < select_arr.length; i++) {
			if (select_arr[i].disabled)
				select_arr[i].disabled = false;
		}

	} catch (e) {
		return false;
	}
	return true;
}

/**
* защита от двойного поста формы frm
* в форме должно быть скрытое поле с именем lock и значением false
*/
function lsubmit(frm)
{
	try {
		if (frm.lock.value == "true")
			return false;
		frm.lock.value = "true";
	} catch (e) {
	}

	lockPageOn();

	try {
		frm.submit(frm);
	} catch (e) {
		return false;
	}
	return true;
}


/**
* открыть новое окно по центру, загрузить в него страницу link
*/
function open_window(link,w,h) {
	var scrx=window.screen.availWidth;
	var scry=window.screen.availHeight;
	var vleft=(scrx-w)/2;
	var vtop=(scry-h)/2;
	var win = "width="+w+",height="+h+",left="+vleft+", top="+vtop+", menubar=no,location=no,resizable=yes,scrollbars=yes, status=no";
	newWin = window.open(link,'_blank',win);
	newWin.focus();

	return true;
}


/**
* управление окном сообщений
* createMessage("Минуточку...", "#4f4f4f");
*/
function hideMessage()
{
   with (document.getElementById('hint_message'))
   {
		innerHTML = "";
		style.visibility = "hidden";
		style.color = "black";
   }
}

function createMessage(text, color, time_to_show)
{
	with(document.getElementById('hint_message'))
	{
		style.visibility = "visible";
		innerHTML        = text;
		style.color      = color;
		setTop();
	}
	if ( time_to_show > 0 ) {
		setTimeout("hideMessage()", time_to_show);
	}
}

window.onscroll = setTop;

function setTop() {
	if(document.getElementById('hint_message')){
		if(MM_IE) {
			
			scrollHeight = document.body.scrollTop;
			if( typeof( window.pageYOffset ) == 'number' ) { scrollHeight = pageYOffset; scrollWidth = pageXOffset; } else {
				if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { scrollHeight = document.body.scrollTop;} else {
					if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { scrollHeight = document.documentElement.scrollTop;} }
			}
			document.getElementById('hint_message').style.pixelTop = scrollHeight + 200;
		}
		else {
			top = window.pageYOffset + 200;
			document.getElementById('hint_message').style.top = top+"px";
		}
	}
	return true;
}

function highlightTableRows(tableId, hoverClass, clickClass, multiple)
{
	var table = document.getElementById(tableId);
	
	//если не был передан четвертый аргумент, то по умолчанию принимаем его как true
	if (typeof multiple == 'undefined') multiple = true;
	
	if (hoverClass)
	{
		//регулярное выражение для поиска среди значений атрибута class элемента, имени класса обеспечивающего подсветку по наведению мыши на строку.
		//Данное рег. выражение используется и в обработчике onclick
		var hoverClassReg = new RegExp("\\b"+hoverClass+"\\b");
		
		table.onmouseover = table.onmouseout = function(e)
		{
			if (!e) e = window.event;
			var elem = e.target || e.srcElement;
			while (!elem.tagName || !elem.tagName.match(/td|th|table/i)) elem = elem.parentNode;

			//Если событие связано с элементом TD или TH из раздела TBODY
			if (elem.parentNode.tagName == 'TR' && elem.parentNode.parentNode.tagName == 'TBODY')
			{
				var row = elem.parentNode;//ряд содержащий ячейку таблицы в которой произошло событие
				//Если текущий ряд не "кликнутый" ряд, то в разисимости от события либо применяем стиль, назначая класс, либо убираем.
				if (!row.getAttribute('clickedRow')) row.className = e.type=="mouseover"?row.className+" "+hoverClass:row.className.replace(hoverClassReg," ");
			}
		};
	}

	
	if (clickClass) table.onclick = function(e)
	{
		if (!e) e = window.event;
		var elem = e.target || e.srcElement;
		while (!elem.tagName || !elem.tagName.match(/td|th|table/i)) elem = elem.parentNode;

		//Если событие связано с элементом TD или TH из раздела TBODY
		if (elem.parentNode.tagName == 'TR' && elem.parentNode.parentNode.tagName == 'TBODY')
		{
			//регулярное выражение для поиска среди значений атрибута class элемента, имени класса обеспечивающего подсветку по клику на строке.
			var clickClassReg = new RegExp("\\b"+clickClass+"\\b");
			var row = elem.parentNode;//ряд содержащий ячейку таблицы в которой произошло событие
			
			//Если текущий ряд уже помечен стилем как "кликнутый"
			if (row.getAttribute('clickedRow'))
			{
				row.removeAttribute('clickedRow');//убираем флаг того что ряд "кликнут"
				row.className = row.className.replace(clickClassReg, "");//убираем стиль для выделения кликом
				row.className += " "+hoverClass;//назначаем класс для выделения строки по наведею мыши, т.к. курсор мыши в данный момент на строке, а выделение по клику уже снято
			}
			else //ряд не подсвечен
			{
				//если задана подсветка по наведению на строку, то убираем её
				if (hoverClass) row.className = row.className.replace(hoverClassReg, "");
				row.className += " "+clickClass;//применяем класс подсветки по клику
				row.setAttribute('clickedRow', true);//устанавливаем флаг того, что ряд кликнут и подсвечен
				
				//если разрешена подсветка только последней кликнутой строки
				if (!multiple)
				{
					var lastRowI = table.getAttribute("lastClickedRowI");
					//Если то текущей строки была кликнута другая строка, то снимаем с неё подсветку и флаг "кликнутости"
					if (lastRowI!==null && lastRowI!=='' && row.sectionRowIndex!=lastRowI)
					{
						var lastRow = table.tBodies[0].rows[lastRowI];
						lastRow.className = lastRow.className.replace(clickClassReg, "");//снимаем подсветку с предыдущей кликнутой строки
						lastRow.removeAttribute('clickedRow');//удаляем флаг "кликнутости" с предыдущей кликнутой строки
					}
				}
				//запоминаем индекс последнего кликнутого ряда
				table.setAttribute("lastClickedRowI", row.sectionRowIndex);
			}
		}
	};
}        
//вкл/выкл видимость слоя
function toggleDiv(objEl,visible) {
	if(MM_NS4||MM_IE4){
	     if(!visible) {
	       objEl.visibility ="hidden"
	     } else {
	       objEl.visibility ="visible"
	     }
	 } else if (MM_IE5 || MM_NS6) {
	      if(!visible){
	         objEl.style.display = "none";
	      } else {
	        objEl.style.display = "";
	      }
	 }
}
// получить объект элемента
function getelementbyid(elementid) {
	if (MM_NS4){
		objEl = document.layers[elementid];
	}else if (MM_IE4) {
	    objEl = document.all[elementid];
	}else if (MM_IE5 || MM_NS6) {
	    objEl = document.getElementById(elementid);
	}
	return(objEl);
}

function popup(Path, Width, Height, Title){
   WinFeatures = "top="+(screen.height-Height)/2+",left="+(screen.width-Width)/2+",width="+Width+",height="+Height+",Status=no,toolbar=no,menubar=no,location=no,directories=no,scrollbars=no";
   w = window.open("","window",WinFeatures);
   w.document.open();
   w.document.write('<html>');
   w.document.write('<head><title>'+Title+'</title></head>');
   w.document.write("<body bgcolor='#FFFFFF' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><img src='"+Path+"' height='"+Height+"' width='"+Width+"' alt='"+Title+"'></body>"); 
   w.document.write('</html>');
   w.document.close();
}
