	function JS_checkMinLength(field_id, strBodyHeader, min_length){				
		var field = document.getElementById(field_id);
		var field_value = JS_trimRight(JS_trimLeft(field.value));
		if(field_value.length < min_length){
			alert("Значение в поле \"" + strBodyHeader + "\" не должно быть меньше " + min_length + " символов. Пожалуйста введите правильное значение.");
			field.focus();
			return false;
		}		
		return true;
	}

	function JS_checkMaxLength(field_id, strBodyHeader, max_length){			
		var field = document.getElementById(field_id);
		var field_value = JS_trimRight(JS_trimLeft(field.value));
		if(field_value.length > max_length){
			alert("Значение в поле \"" + strBodyHeader + "\" не должно быть больше " + max_length + " символов. Пожалуйста введите правильное значение.");
			field.focus();
			return false;
		}		
		return true;
	}
	
	function JS_checkRequire(field_id, strBodyHeader) {
		var field = document.getElementById(field_id);
		var strTrimmed = JS_trim(field.value);
		if (strTrimmed.length > 0) return true;
		alert("\"" + strBodyHeader + "\" это обязательное поле. Пожалуйста введите сюда значение.");
		field.focus();
		return false;
	}

	function JS_checkMail(field_id, strBodyHeader){		
		field = document.getElementById(field_id)
	    	var re,re2;
		re=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/
	    	re2=/^[_\.0-9a-zA-Z-]+@[0-9a-zA-Z][\.0-9a-zA-Z-]*\.+([a-zA-Z]{2,4}|[0-9]{1,3})$/
	    	if (field.value.search(re)==-1 ) 
	    	if (field.value.search(re2)!=-1) return true;
	    	field.focus(); 
	    	alert("Неверный формат в поле \"" + strBodyHeader + "\". Пожалуйста введите правильное значение."); 
	    	return false;
	}

	function JS_checkInt(field_id, strBodyHeader) {
		var field = document.getElementById(field_id);
		var strTrimmed = JS_trim(field.value);
		if (parseInt(strTrimmed) > 0) return true;
		alert("\"" + strBodyHeader + "\" это обязательное поле. Пожалуйста введите сюда значение.");
		field.focus();
		return false;
	}

	function JS_checkYear(field_id, strBodyHeader) {
		var field = document.getElementById(field_id);
		var strTrimmed = JS_trim(field.value);
		if (parseInt(strTrimmed) > 1900 && parseInt(strTrimmed) <= 2020) return true;
		alert("Неверный формат в поле \"" + strBodyHeader + "\". Пожалуйста введите правильное значение."); 
		field.focus();
		return false;
	}

	function JS_checkLogin(field_id, strBodyHeader){
		field = document.getElementById(field_id)
	    	var re2;
	    	re2=/^[_0-9a-zA-Z-]+$/
	    	if (field.value.search(re2)!=-1) return true;
	    	field.focus(); 
	    	alert("Неверный формат в поле \"" + strBodyHeader + "\". Значение поля должно состоять из латинских букв, цифр и/или символа подчеркивания."); 
	    	return false;
	}
	function JS_checkConfirm(field_id, field_id2, strBodyHeader, strBodyHeader2){
		field = document.getElementById(field_id)
		field2 = document.getElementById(field_id2)
	    	if (field.value == field2.value) return true;
	    	field2.focus(); 
	    	alert("Значения в полях \"" + strBodyHeader + "\" и \"" + strBodyHeader2 + "\" не совпадают."); 
	    	return false;
	}

	function JS_checkCheckbox(field_id, strBodyHeader) {
		var field = document.getElementById(field_id);
		if (field.checked) return true;
		alert(strBodyHeader);
		field.focus();
		return false;
	}

	
	function JS_trimLeft(s) {
        	var whitespaces = " \t\n\r";
        	for(n = 0; n < s.length; n++) {
        		if (whitespaces.indexOf(s.charAt(n)) == -1)
        			return (n > 0) ? s.substring(n, s.length) : s;
        	}
        	return("");
        }
        
        function JS_trimRight(s){
        	var whitespaces = " \t\n\r";
        	for(n = s.length - 1; n  > -1; n--) {
        		if (whitespaces.indexOf(s.charAt(n)) == -1)
        			return (n < (s.length - 1)) ? s.substring(0, n+1) : s;
        	}
        	return("");
        }
        function JS_trim(s) {
        	return ((s == null) ? "" : JS_trimRight(JS_trimLeft(s)));
        }

