var msg = new Array(
	 'Нажмите клавишу "F1", чтобы вызвать подсказку'
	,''
	,'Ошибка ввода: одно или несколько полей содержат недопустимые значения.'
	,'Проверьте, пожалуйста, правильность заполнения поля.'
);

var $revoke_submit = false;

function doFormSubmit(f, noConfirm)
{
	if ($revoke_submit)
	{
		return confirm('Внимание: передача данных еще не завершена.\nОтправить данные еще раз?');
	}

	if (!noConfirm && !confirm('Отправить данные формы?'))
		return false;

	return $revoke_submit = !$revoke_submit;
}

function doFormCheck(f)
{
	for (var i=0;i!=f.length;i++)
	{
		if (f[i].type=='text' || f[i].type=='textarea')
		{
			if(typeof(f[i].onblur)!='function')
				continue;

			f[i].onblur();

			if (!f[i].rstate)
			{
				alert(msg[2]);

				f[i].focus();
				scrollBy(0,-33);

				if (f[i].style)
				{
					var bgColorBuf = f[i].style.backgroundColor;
					f[i].style.backgroundColor='#FFF0F0';
				}

				alert(f[i].errmsg!=null ? f[i].errmsg : msg[3]);

				if (f[i].style)
					f[i].style.backgroundColor=bgColorBuf;

				return false;
			}

			//f[i].value = replace_unwanted_chr(f[i].value);

			if (!alert_unwanted_chr(f[i].value))
				return false;
		}
	}

	return true;
}

function doFormCheckAndSubmit(f,noConfirm)
{
	if (!doFormCheck(f))
		return false;

	return doFormSubmit(f,noConfirm);
}

function hint(s)
{
	if (s) alert(s);
}

function alert_unwanted_chr(str)
{
	var rexp = new RegExp("[^\u0001-\u007F\u00A0\u00A4\u00A6\u00A7\u00A9\u00AB-\u00AE\u00B0\u00B1\u00B5-\u00B7\u00BB\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u0490\u0491\u2013\u2014\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2026\u2030\u2039\u203A\u20AC\u2116\u2122]");
	var i=str.search(rexp);

	if (i!=-1)
	{
		var ss;
		if (i>20) { ss='...' + str.substr(i-20,40) + '...'; }
		else	  { ss=str.substr(0,40) + '...'; }

		alert('Обнаружен недопустимый символ в строке\n\n"' + ss + '"\n\nСимвол "' + str.charAt(i) + '" (код символа: 0x' + str.charCodeAt(i).toString(16).toUpperCase() + ') недопустим!\n\nПожалуйста замените этот символ на другой.');
		return false;
	}

	return true;
}

function replace_unwanted_chr(str)
{
	var unwanted_chr = {
		 "\u0000" : " "
	};

	var re;
	for (var k in unwanted_chr) { re=re+k; }

	return str.replace(new RegExp("["+re+"]", "g"),
		function (str, p1, p2, offset, s)
		{
			return unwanted_chr[str];
		}
	);
}
