function trf (form_name, element_name, mes_text) 
{
	if (document.forms[form_name].elements[element_name]) {
		if (string_trim(document.forms[form_name].elements[element_name].value) == "") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		}
		else {
			return "";
		}
	}
	else {
		return " - поле \"" + (mes_text.toUpperCase()) + "\" не найдено;\n";
	}
}
function trfn (form_name, element_name, mes_text)
{
	if (document.forms[form_name].elements[element_name].value=="") {
		return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
	  }
	else {
		if (isNaN(document.forms[form_name].elements[element_name].value)) {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" должно быть числом;\n";
		}
		else {
			return "";
		}
	}
}
function tnf (form_name, element_name, mes_text) 
{
	if (!(document.forms[form_name].elements[element_name].value=="")) {
		if (isNaN(document.forms[form_name].elements[element_name].value)) {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" должно быть числом;\n";
		}
		else {
			return "";
		}
	}
	else {
		return "";
	}
}
function tif (form_name, element_min_name, element_max_name, mes_text)
{
	var a = "";
	if (!(document.forms[form_name].elements[element_min_name].value=="")) {
		if (isNaN(document.forms[form_name].elements[element_min_name].value)) {
			a = a + " - не верно задан интервал (нижнее значение) " + (mes_text.toUpperCase()) + ";\n";
		}
	}
	if (!(document.forms[form_name].elements[element_max_name].value=="")) {
		if (isNaN(document.forms[form_name].elements[element_max_name].value)) {
			a = a + " - не верно задан интервал (верхнее значение) " + (mes_text.toUpperCase()) + ";\n";
		}
	}
	return a;
}
function tddl (form_name, element_name, mes_text)
{
	if (document.forms[form_name].elements[element_name].value=="") {
		return " - поле \"" + (mes_text.toUpperCase()) + " не заполнено;\n";
	  }
	else {
		if (document.forms[form_name].elements[element_name].value=="0") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		}
		if (isNaN(document.forms[form_name].elements[element_name].value)) {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" должно быть числом;\n";
		}
		else {
			return "";
		}
	}
}
function tddl2 (form_name, element_name, mes_text)
{
	if (document.forms[form_name].elements[element_name].value=="") {
		return " - поле \"" + (mes_text.toUpperCase()) + " не заполнено;\n";
	  }
	else {
		if (document.forms[form_name].elements[element_name].value=="0") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		}
		if (isNaN(document.forms[form_name].elements[element_name].value)) {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" должно быть числом;\n";
		}
		else {
			return "";
		}
	}
}


/* Переходы по страницам */
function goToPage(formName, pageHiddenElementName, a)
{
	document.forms[formName].action=formAction
	document.forms[formName].target="_self";
	document.forms[formName].elements[pageHiddenElementName].value=a;
	document.forms[formName].submit();
};

function openWindow(url, w, h) {			
	window.open(url,"_blank","width="+w+",height="+h+",scrollbars=1,resizable=1,menubar=0,toolbar=0");
};

function openWindowMenu(url, w, h) {			
	window.open(url,"_blank","width="+w+",height="+h+",scrollbars=1,resizable=1,menubar=1,toolbar=0");
};


function getRadioValue(radioObject) {	
	var value = null;
	if (radioObject) {
		if (radioObject.length) {
			for (var i=0; i<radioObject.length; i++) {
				if (radioObject[i].checked) {
					value = radioObject[i].value;
					break;
				};
			};
		}
		else {
			value = (radioObject.value);
		};		
	};	
	return value;
}
function getGIS(s) {
	//alert('Извините, карта временно недоступна!');
	//return false;
	var a = new Array();
	var u = "";
	a=s.split("-");
	if (a[0] == 'obl') {
		u = "http://gis.bn.ru/wmap_asp/main4lo.asp?id="+a[1];
	}
	else {	
		//u = "http://gis.bn.ru/wmap_asp/main4.asp?lay="+a[0]+"&id="+a[1];
		u = "http://www.emls.ru/spb/term/admin/mapg/adresonmap.phtml?lay="+a[0]+"&id="+a[1];
	}
	openWindow(u, 500, 500);
}

function getGIS_fur() {
	getGIS('adres-23696');
	return false;
};

function getGIS_gag() {
	getGIS('adres-26264');
	return false;
};

function testFloatValue(form_name, element_name, mes_text, r) {
	if (r==1) {
		// обязательное поле
		if (document.forms[form_name].elements[element_name].value=="") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		};
	};
	
	if (!document.forms[form_name].elements[element_name].value=="") {
		// проверка по шаблону
		var v = /^[0-9\.\,]+$/;
		if (!v.test(document.forms[form_name].elements[element_name].value)) {
			return (" - поле \""+(mes_text.toUpperCase())+"\" имеет неправильный формат (можно использовать только цифры, разделитель дробной части - точка \".\" или запятая \",\");");
		}
		else {
			return "";

		};	
	};
	return "";
}

function showAgentInfo(id_firm, id_agent)
{
	openWindow("/agency.php?id=" + id_firm + "&ida=" + id_agent, 850, 500);
}

function getLastObjects(intIdBase)
{
	if (jQuery) {		
		$('#divLastObjects').html('Получение данных...');
		jQuery.get('/ajax/getlast/' + intIdBase + '.html', {}, onAjaxSuccess_getLastObjects);
	}
	else {
		var elDiv = document.getElementByID('divLastObjects');
		if (elDiv) {
			elDiv.innerHtml = 'Нет данных';
		}
	}
	return false;
}
function onAjaxSuccess_getLastObjects(data) { $('#divLastObjects').html(data); };

function getRandObjects()
{
	if (jQuery) {		
		jQuery('#divRandObjects').html('');
		jQuery.get('/ajax/getrandom/', {}, function (data) { jQuery('#divRandObjects').html(data); });
	}
	return false;
}



// функция проверки обязательных полей на заполнение
;

// проверка текстового поля по паттерну
function tfp (form_name, element_name, mes_text, pattern, mes_pattern) 
{
	// trf - test field by pattern
	if (document.forms[form_name].elements[element_name]) {
		if (string_trim(document.forms[form_name].elements[element_name].value) == "") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		}
		else {
			var pat = RegExp(pattern);			
			if (pat) {
				if (pat.exec(string_trim(document.forms[form_name].elements[element_name].value)) == null) {
					return " - " + mes_pattern + "\r\n";
				}
				else {
					return "";
				};
			}
			else {
				return " - не поддерживаются регулярные выражения! Обновите свой броузер!\n";
			};			
		};
	}
	else {
		return " - поле \"" + (mes_text.toUpperCase()) + "\" не найдено;\n";
	}
};


// проверка текстового поля по паттерну
function tfpnr (form_name, element_name, mes_text, pattern, mes_pattern) 
{
	// trf - test field by pattern no require
	if (document.forms[form_name].elements[element_name]) {
		if (string_trim(document.forms[form_name].elements[element_name].value) == "") {
			return "";
		}
		else {
			var pat = RegExp(pattern);			
			if (pat) {
				if (pat.exec(string_trim(document.forms[form_name].elements[element_name].value)) == null) {
					return " - " + mes_pattern + "\r\n";
				}
				else {
					return "";
				};
			}
			else {
				return " - не поддерживаются регулярные выражения! Обновите свой броузер!\n";
			};			
		};
	}
	else {
		return " - поле \"" + (mes_text.toUpperCase()) + "\" не найдено;\n";
	}
};

function openWindow(url, w, h) {			
	window.open(url,"_blank","width="+w+",height="+h+",scrollbars=1,resizable=1,menubar=0,toolbar=0");
};

function openWindowMenu(url, w, h) {			
	window.open(url,"_blank","width="+w+",height="+h+",scrollbars=1,resizable=1,menubar=1,toolbar=0");
};
function openImage(url, w, h) {			
	window.open(url,"_blank","width="+w+",height="+h+",scrollbars=0,resizable=0,menubar=0,toolbar=0");
};


function getRadioValue(radioObject) {	
	var value = null;
	if (radioObject) {
		if (radioObject.length) {
			for (var i=0; i<radioObject.length; i++) {
				if (radioObject[i].checked) {
					value = radioObject[i].value;
					break;
				};
			};
		}
		else {
			value = (radioObject.value);
		};		
	};	
	return value;
}

function SubmitFormQS(formAction, formName, navigationType) {	
	if (formName) {	
		var num=document.forms[formName].elements.length;
		var resultUrl = new Array();
		var resultUrlAssociat = new Array();
		var multiVal="";
		var prefix;
		if (navigationType==1) {
			prefix="?";
		}
		else {
			prefix="&";
		}
		for (var i=0; i<num; i++) {			
			if (document.forms[formName].elements[i].length) {
				multiVal=getSelectionValues(document.forms[formName].elements[i],"-");
				if (multiVal!="") {
					resultUrl.push(document.forms[formName].elements[i].name);
					resultUrl.push(multiVal);
				}				
			}
			else {
				if (
					(document.forms[formName].elements[i].value=="") || 
					(document.forms[formName].elements[i].value==null) || 
					(document.forms[formName].elements[i].value==0) || 
					(document.forms[formName].elements[i].name=="") ||				
					(typeof document.forms[formName].elements[i]=="button") || 
					(typeof document.forms[formName].elements[i]=="submit") || 
					(typeof document.forms[formName].elements[i]=="reset") 
					) {
				}
				else {
					if ( (document.forms[formName].elements[i].type.toLowerCase())=="checkbox") {
						if (document.forms[formName].elements[i].checked) {
						resultUrl.push(document.forms[formName].elements[i].name);
						resultUrl.push(1);
						}
					}
					else {						
						resultUrl.push(document.forms[formName].elements[i].name);
						resultUrl.push(document.forms[formName].elements[i].value);
					}
				}					
			}			
		}

		var build_url=resultUrl.join("/");
		if (build_url!="") {
			document.forms[formName].action=formAction+prefix+"query="+build_url;
		}
		else {
			document.forms[formName].action=formAction;
		}		
		document.forms[formName].submit();
	}
}

function getUrlFromForm(formAction, formName)
{
	var strUrlResult = '';
	if ( formName ) {	
		var num = document.forms[formName].elements.length;
		var resultUrl = new Array();
		var resultUrlAssociat = new Array();
		var multiVal = '';
		var prefix = '?';

		for ( var i=0; i<num; i++ ) {
			if ( document.forms[formName].elements[i].length ) {
				multiVal = getSelectionValues(document.forms[formName].elements[i], '-');
				if ( multiVal != '' ) {
					resultUrl.push( document.forms[formName].elements[i].name );
					resultUrl.push( multiVal );
				}
			}
			else {
				if (
					(document.forms[formName].elements[i].value=="") || 
					(document.forms[formName].elements[i].value==null) || 
					(document.forms[formName].elements[i].value==0) || 
					(document.forms[formName].elements[i].name=="") ||				
					(typeof document.forms[formName].elements[i]=="button") || 
					(typeof document.forms[formName].elements[i]=="submit") || 
					(typeof document.forms[formName].elements[i]=="reset") 
					) {
				}
				else {
					if ( (document.forms[formName].elements[i].type.toLowerCase())=="checkbox") {
						if (document.forms[formName].elements[i].checked) {
						resultUrl.push(document.forms[formName].elements[i].name);
						resultUrl.push(1);
						}
					}
					else {						
						resultUrl.push(document.forms[formName].elements[i].name);
						resultUrl.push(document.forms[formName].elements[i].value);
					}
				}					
			}			
		}

		var strUrl = resultUrl.join("/");
		if ( strUrl != '' ) {
			strUrlResult = formAction + prefix + 'query=' + strUrl;
		}
		else {
			strUrlResult = formAction;
		}		
	}
	return strUrlResult;
}

function switchMap(formName, strType)
{
	document.forms[formName].elements['s'].value = 0;
	if ( strType == 'on' ) {
		document.forms[formName].elements['ft'].value = 1;
	}
	else {	
		document.forms[formName].elements['ft'].value = 0;
	}
	return true;
}


// функция возвращает выбранные элементы списка в виде строки с разделителем
function getSelectionValues(objectName,separator) {	
	if (objectName) {
		var list=new Array();
		for (var i=0; i<objectName.length;i++) {
			if (objectName.options[i].selected && objectName.options[i].value!=0) {
				list.push(objectName.options[i].value);
			};
		};
		return list.join(separator);
	}	
}

// функция устанавливает выбранный элемент в выпадающем списке
function setSelection(objectName, selectedValue) {
	selIndex = 0;
	if (objectName) {
		var list = new Array();
		for (var i=0; i < objectName.length; i++) {
			if (objectName.options[i].value == selectedValue) {
				selIndex = i;
			};
		};
	}	
	return selIndex;
}

// 
function string_trim(str) {
	return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

function string_test_email(email) {
	emailTest = "^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z_-]+\\.)+[a-z]{2,4}$";
	var regex = new RegExp(emailTest);
	if (!regex.test(email) || !(email.length > 0)) {
		return false;
	}
	else {
		return true;
	}
}

function string_test_pattern(text, pattern, message_about_pattern)
{
	var pat = RegExp(pattern);
	if (pat) {
		if (pat.exec(text) == null) {
			alert(message_about_pattern);
			return false;
		}
		else {
			return true;
		};
	}
	else {
		alert("- установленная версия JavaScript не поддерживает регулярные выражения, заполнение формы невозможно!!!\r\n");
		return false;
	}
}

function itemShowAndHide(itemName) {
	if (document.getElementById(itemName)) {
		if (document.getElementById(itemName).style.display == 'block') {
			document.getElementById(itemName).style.display = 'none';
		}
		else {
			document.getElementById(itemName).style.display = 'block';
		}
	}
	return false;
};

function testLogin(formName)
{
	var em = "";

	em+= trf(formName, "login", "Логин");	
	em+= trf(formName, "pass", "Пароль");

	if (em == "") {
		document.forms[formName].submit();				
	}
	else {
		em = "Форма заполнена неверно!\r\n" + em;
		alert(em);
	}
	return true;
}

function updateCaptcha(strIdImage)
{
	var elementImage = document.getElementById(strIdImage);
	var n = 100;
	var m = 1;
	if (elementImage) {
		if ( typeof(Math) != "undefined" ) {
			elementImage.src = '/captcha/?upd=' + Math.floor(Math.random( ) * (n - m + 1)) + m;
		}
		else {
			elementImage.src = '/captcha/';
		}
	}
	return true;
}

function checkAll(flag, strForm, strElementName)
{
	var field = document.forms[strForm].elements[strElementName];
	
	if (field && field.length) {
		for (i = 0; i < field.length; i++) {
			field[i].checked = flag;
		}
	}
	return true;
}



function moreObjects(url, resultDiv)
{
	jQuery('#' + resultDiv).html('Идет загрузка данных...');

	if ( typeof(jQuery) != "undefined" ) {
		jQuery.post(url, {}, function(data) { jQuery('#' + resultDiv).html(data); });
	}
	else { // не загружена библиотека AJAX
	
	}
}

function addComment(intIdObject, intIdBase)
{
	var elComment = document.getElementById('newcomment');
	var strComment = '';
	
	if (jQuery && elComment) {		
		strComment = elComment.value;
		if ( strComment != '' ) {
			$("#example1").html('Обновление данных...')
			jQuery.post('/ajax/getcomments/' + intIdObject + '.html?query=base/' + intIdBase, {comment: strComment, id_base: intIdBase, id_object: intIdObject}, onAjaxSuccess_addComment);
		}
	};
	return false;
}
function onAjaxSuccess_addComment(data) { $('#example1').html(data); };

function updateSelect(strIdSelect, strData, strSepField, strSepRow, strSelectedValue)
{
    var objSelect = document.getElementById(strIdSelect);
	var boolResult = false;
	if ( ( objSelect ) && ( strData.length > 0 ) ) {
		objSelect.options.length = 0;
		var arRows = strData.split(strSepRow); // массив строк
		for (var i = 0; i < arRows.length; i++) {
			arValue = arRows[i].split(strSepField); // массив значений
			objSelect.options[objSelect.options.length] = new Option(arValue[1], arValue[0], false, false);
		}
		
		if ( strSelectedValue != '' ) {
			jQuery('#' + strIdSelect + ' option[value="' + strSelectedValue + '"]').attr('selected', 1);
		}
		
		boolResult = true;
	}
	return boolResult;
}

function updateSelectAjax(strUrl, strResultSelect, strSelectedValue)
{
	updateSelect(strResultSelect, '0;загрузка данных...', ';', '\n');
	//if ( !jQuery.post(strUrl, {}, function(data) { updateSelect(strResultSelect, data, ';', '\n', strSelectedValue); }) ) {
	if ( !jQuery.get( strUrl, {}, function(data) { updateSelect(strResultSelect, data, ';', '\n', strSelectedValue); }) ) {
		alert('Броузер не смог отправить запрос через JQuery, попробуйте обновить страницу!');
	}
	return true;
}



function updSearch(intIdReg, intIdDept, intIdDist, intIdStreet, intIdStation)
{	
	jQuery('#selectReg option[value="' + intIdReg + '"]').attr('selected', 1);
	updateSelectAjax('/ajax/getdept2/' + intIdReg + '.html', 'selectDept', intIdDept);
	updateSelectAjax('/ajax/getdist2/' + intIdDept + '.html?query=reg/' + intIdReg, 'selectDist', intIdDist);
	updateSelectAjax('/ajax/getstreet2/' + intIdDist + '.html?query=reg/' + intIdReg, 'selectStreet', intIdStreet);		
	updateSelectAjax('/ajax/getstation/' + intIdDept + '.html?query=reg/' + intIdReg, 'selectStation', intIdStation);
	
	if ( intIdDept == 2 ) {
		jQuery('#labelSelectStation').html('Метро');
		jQuery('#labelSelectDist').html('Район');
	}
	else {
		jQuery('#labelSelectStation').html('Ж/д станция');
		jQuery('#labelSelectDist').html('Нас.пункт');
	}
	
	jQuery('#searchAddressResult').hide();
	jQuery('#fieldSearchAddress').val('');
}

function replaceComma(strInput)
{
	var strResult = strInput;
	var objString = new String(strInput);
	var arTmp = new Array();
	if ( objString.length > 0 ) {
		arTmp = objString.split(",");				
		strResult = arTmp.join(".");
		arTmp = strResult.split(" ");
		strResult = arTmp.join("");
	}
	return strResult;
}

function testFormFeedback(formName, actionType)
{
	var em = "";	
	em+= trf(formName, "message_person_name", "имя");
	em+= trf(formName, "message_text", "текст сообщения");	
	if ( actionType == 'guest' ) {
		em+= trf(formName, "ccode", "Контрольный код");
	}
	if (em == "") {
		document.forms[formName].submit();				
	}
	else {
		em = "Форма заполнена неверно!\r\n" + em;
		alert(em);
	}
	return true;
}

function addMark(intBase, intObject, boolChecked)
{
	var strUrlAdd = '/ajax/mark/' + intBase + '/' + intObject + '.html';
	if ( !boolChecked ) {
		strUrlAdd+= '?query=off/1';
	}
	var resultDiv = '#intSelectedIds';
	jQuery.post(strUrlAdd, {}, function (data) {jQuery(resultDiv).html('помечено: ' + data) } );
}

function testFormPayCB(formName)
{
	var em = "";
	em+= trf(formName, "pay_FIO", "Плательщик");
	em+= trf(formName, "pay_address", "Адрес плательщика");
	em+= trfn(formName, "pay_summa", "Сумма платежа (руб.)"); 
	em+= tddl(formName, "pay_type", "Назначение платежа");
	if (em == "") {
		document.forms[formName].submit();				
	}
	else {
		em = "Форма заполнена неверно!\r\n" + em;
		alert(em);
	}
	return true;
}
