/*
Функции для работы с формами
$Id: form.func.js,v 1.1.1.1 2005/01/24 09:41:03 NETKOSH Exp $
$Header: /WebManager 3.0/wm/libs/js/form.func.js 1     19.06.06 12:19 Mmx $
*/
var 
	CHK_ATTRIBUTE = 'chk';

String.prototype.trim = function()
{
	var s = this;
	s = s.replace(/^\s*/ig, "");
	s = s.replace(/\s*$/ig, "");
	return s;
}

function numVal(val)
{
	return isNaN(val) ? 0 : Number(val);
}

function isNumber(inp) 
{
	if(!inp || !inp.value) return false;
	return (isNaN(inp.value) || inp.value < 0) ? false : true;
}

function checkNumber(inp)
{
	if (!isNumber(inp)) {
		alert("Введите неотрицательное числовое значение!");
		inp.select();
		inp.focus();
		return false;
	} else
		return true;
}

function isEmail(inp)
{
	if(!inp || !inp.value) return false;
	var reg = /^[\w-](\.?[\w-])*@([A-Za-z]{2,}|[\w-](\.?[\w-])*\.[A-Za-z]{2,})$/i;
	return reg.test(inp.value) ? true : false;
}

function checkEmail(inp)
{
	if(!isEmail(inp)) {
		alert("Введите корректный адрес e-mail!");
		inp.select();
		inp.focus();
		return false;
	} else
		return true;
}

function isNotEmpty(inp)
{
	if(!inp || !inp.value) return false;
	inp.value = inp.value.trim();
	return inp.value == '' ? false : true;
}

function checkNotEmpty(inp)
{                    
	if (!isNotEmpty(inp)) {
		alert("Поле не заполнено!");
		try {
			inp.select();
			inp.focus();
		} catch(e) {}
		return false;
	} else
		return true;
}

function isPswd(inp)
{
	if(!inp || !inp.value) return false;
	return inp.value.match(/^[a-z][a-z\d\-_]{3,11}$/i) ? true : false;
}

function checkPswd(inp) 
{
	if (!isPswd(inp)) {
		alert("Поле должно состоять из латинских букв или цифр, длиной не менее 4х символов.");
		inp.select();
		inp.focus();
		return false;
	} else
		return true;
}

function frm_check(frm)
{
	var elm, state;
	if (!frm)
		return false;

	for (i = 0; i < frm.elements.length; ++i) 
	{
		elm   = frm.elements[i];
		state = elm.getAttribute(CHK_ATTRIBUTE);
		switch(state) 
		{
			case "blank":
				if (!checkNotEmpty(elm))
					return false;
			break;
			case "email":
				if (!checkEmail(elm))
					return false;
			break;
			case "int":
				if (!checkNumber(elm))
					return false;
			break;
			case "pswd":
				if (!checkPswd(elm))
					return false;
			break;
		}
	}
	return true;
}


function postValues(formObj, formAction, arrElms)
{
	if(arrElms) {
		for(var i in arrElms)
			createHiddenElm(formObj, i, arrElms[i]);
	}
	formObj.action = formAction;
	formObj.submit();
}

function createHiddenElm(parentObj, _name, _value)
{
	var elm = document.createElement("input");
	elm.type = "hidden";
	elm.name = _name;
	elm.value = _value;
	parentObj.appendChild(elm);

	return elm;
}

function frmCheckFields(frm, fields)
{
        var val, elm;
	if(!frm)
		return false;
	try 
	{
		for (i = 0; i <= fields.length; ++i) 
		{
			elm = frm.elements[fields[i]];
			val = elm.value.trim();

			if (val == '') 
			{
				alert('Неправильно введено поле');
				elm.select();
				elm.focus();
				return;
			}
		}
	} catch(e){}
	return true;
}