// функция проверки обязательных полей на заполнение
function trf (form_name, element_name, mes_text) 
{
	// trf - test required field	
	if (document.forms[form_name].elements[element_name]) {
		if (stringTrim(document.forms[form_name].elements[element_name].value) == "") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		}
		else {
			return "";
		};
	}
	else {
		return " - поле \"" + (mes_text.toUpperCase()) + "\" не найдено;\n";
	}
};

// проверка текстового поля по паттерну
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 (stringTrim(document.forms[form_name].elements[element_name].value) == "") {
			return " - поле \"" + (mes_text.toUpperCase()) + "\" не заполнено;\n";
		}
		else {
			var pat = RegExp(pattern);			
			if (pat) {
				if (pat.exec(stringTrim(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 (stringTrim(document.forms[form_name].elements[element_name].value) == "") {
			return "";
		}
		else {
			var pat = RegExp(pattern);			
			if (pat) {
				if (pat.exec(stringTrim(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";
	}
};

/* функция проверки обязательных полей на числовое значение
trfn - test required field numeric */
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 "";
		};
	};
};

/* функция проверки полей на числовое значение 
tnf - test numeric field */
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 "";
	};
};

/* функция проверки интервальных полей
tnf - test interval field */
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;
};

/* функция проверки полей на числовое значение 
tddl - test drop dawn list */
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 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();
		location.href = document.forms[formName].action;
	}
}

// функция возвращает выбранные элементы списка в виде строки с разделителем
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 setCheckedRadio(objectName, selectedValue) {
	if (objectName) {
		for (var i=0; i < objectName.length; i++) {
			objectName[i].checked = false;
			if (objectName[i].value == selectedValue) {
				objectName[i].checked = true;
			}
		}
	}	
	return true;
}

function stringTrim(str)
{
	return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

function stringTestPattern(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 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 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;
}
