function getElementFromForm(elName, fmId)
{
	var list = document.getElementsByName(elName);
	for(var i=0; i<list.length; i++)
	{
		var pnode = list[i].parentNode;
		while( pnode != null )
		{
			if(pnode.id == fmId)
				return list[i];
			pnode = pnode.parentNode;
		}
	}
	return null;
}

/// checkType: not-empty,  email,  id
function checkFormValue(fmId, elName, checkType, minLength)
{
	var el = getElementFromForm(elName, fmId);

	if(el == null)
	{
		alert("checkFormValue. Element not found:  "+elName);
		return false;
	}
	
	var val = getValueFromElementEx(el);
	if( val == null )
		return false;
	
	if (checkType == 'email')
	{
		return checkEmail(val);
	}
	else
	if (checkType == 'email-or-empty')
	{
		if ( strHasData(val, 1) )
			return checkEmail(val);
		else
			return true; // empty - допустимо
	}
	else
	if (checkType == 'id')
	{
		val = val-0;
		return val >= 1;
	}
	else
	if (checkType == 'bool')
	{
		return val == 1;
	}
	else
	if (checkType == 'psw_ed')
	{
		if( ! strHasData(val, 1) )
			return true;
		if(minLength == null)
			minLength = 1;
		if(minLength < 1)
			minLength = 1;
		return strHasData(val, minLength);
	}
	else
	{
		if(minLength == null)
			minLength = 1;
		if(minLength < 1)
			minLength = 1;
		return strHasData(val, minLength);
	}
}

function getValueFromElement(elID)
{
	var el = document.getElementById(elID);
	if(el == null)
	{
		alert("Element not found:  "+elID);
	}
	
	return getValueFromElementEx(el);
}

function getValueFromElementEx(el)
{
	if(el == null)
	{
		alert("Element should be not null");
	}
	
	if(el.type == 'checkbox')
	{
		return el.checked - 0;
	}
	else
	{
		return el.value;
	}
}

function getValueFromElementAsParam(elID, pid)
{
	var el = document.getElementById(elID);
	if(el == null)
	{
		alert("Element not found:  "+elID);
	}
	
	var params = '';
	
	if((el.nodeName == 'div') || (el.nodeName == 'DIV'))
	{
		// обработка для даты-времени
		el = document.getElementById(elID + '_d');
		if(el != null)
			params += pid + '_d=' + el.value;

		el = document.getElementById(elID + '_m');
		if(el != null)
		{
			if(params != '')
				params += '&';
			params += pid + '_m=' + el.value;
		}

		el = document.getElementById(elID + '_y');
		if(el != null)
		{
			if(params != '')
				params += '&';
			params += pid + '_y=' + el.value;
		}

		el = document.getElementById(elID + '_t');
		if(el != null)
		{
			if(params != '')
				params += '&';
			params += pid + '_t=' + el.value;
		}
	}
	else
	{
		var val = getValueFromElementEx(el);
		val = encodeURIComponent(val);
		params = pid + '=' + val;
	}
	return params;
}

function isProcessResponseOk(responseText)
{
	if(responseText == null)
		return false;

	// Размер ответа должен быть не меньше длины служебного префикса
	if(responseText.length < 6)
		return false;
	
	var prefix = responseText.substring(0, 6);
	if(prefix == "-CORE-")
		return true;
		
	return false;
}

/// Отделяет служебный префикс, возвращает ответ в виде массива полученного с помощью split("|")
function getResponseData(responseText)
{
	var strData = responseText.substring(6, responseText.length);
	var arrData = strData.split("|");
	return arrData;
}

/// Отделяет служебный префикс, возвращает ответ в виде текста
function getResponseText(responseText)
{
	var strData = responseText.substring(6, responseText.length);
	return strData;
}

function onEditorTabSwitch(activeId, prevActiveId)
{
	var elActive = document.getElementById(activeId);
	if (elActive == null)
	{
		alert("Элемент - активная страница не найден - " + activeId);
		return;
	}
	
	var elPrevActive = document.getElementById(prevActiveId);
	if (elPrevActive == null)
	{
		alert("Элемент - предыдущая активная страница не найден - " + prevActiveId);
		return;
	}

	elActive.style.display = "block";
	elPrevActive.style.display = "none";
}

/*перемещение из контрола в контролы */
function move_date_to_d_m_y(elDateId, elD_Id, elM_Id, elY_Id, sep)
{
	elDate = document.getElementById(elDateId);
	strDate = elDate.value;
	var vals = strDate.split(sep);
	if( vals.length != 3 )
		return;
	el = document.getElementById(elD_Id);
	el.value = vals[0];

	el = document.getElementById(elM_Id);
	el.value = vals[1];

	el = document.getElementById(elY_Id);
	el.value = vals[2];
}

function move_date_to_d_m_y2(elDateId, elBaseId, sep)
{
	elD_Id = elBaseId + '_d';
	elM_Id = elBaseId + '_m';
	elY_Id = elBaseId + '_y';
	move_date_to_d_m_y(elDateId, elD_Id, elM_Id, elY_Id, sep);
}

/*устанавливает Знак фильтра в элемент знака elFltSignId. Если значение в элементе elDateId пустое, 
то устанавливаем n иначе Знак sign*/
function set_flt_sign(elDateId, elFltSignId, fltSign)
{
	var elSign = document.getElementById(elFltSignId);
	var elDate = document.getElementById(elDateId);
	var strDate = elDate.value + '';
	extend_string(); 
	strDate = strDate.trim();
	if( strDate == '' )
		elSign.value = 'n';
	else
		elSign.value = fltSign;
}

function clear_val(elId)
{
	var el = document.getElementById(elId);
	el.value = '';
	el.onchange();
}

function set_val(elId, val)
{
	var el = document.getElementById(elId);
	if(el == null)
		return;
	if(val == null)
		val = ''; //?
	
	if(el.value == null)
	{
		if(el.firstChild == null)
		{
			var textNode = document.createTextNode(val);
			el.appendChild(textNode); 			
		}
		else
			el.firstChild.nodeValue = val;
	}
	else
	{
		el.value = val;
	}
}
