function popup(params){
    if (params.title  == 'undefined'){ params.title  = '';  }
    if (params.name   == 'undefined'){ params.name   = '';  }
    if (params.width  == 'undefined'){ params.width  = 300; }
    if (params.height == 'undefined'){ params.height = 300; }

    var win = window.open(null, params.title, 'width=' + params.width + ',height=' + params.height);
    win.document.write('<html><body style="margin:0;padding:0;"><img src="' + params.url + '" width="' + params.width + '" height="' + params.height + '" /></body></html>');
}

function showhide(el){
	el = document.getElementById(el);
	el.style.display = (el.style.display == "none")
	   ? "" : "none";
	return false;
}

function formsErrorHandler(arrErrors)
{
    var oMessage = document.getElementById("message");
    oMessage.innerHTML = "";
    for (var i = 0, count = arrErrors.length; i < count; i ++)
    {
        oMessage.innerHTML += "Поле <b>" + arrErrors[i].title + "</b> : " + arrErrors[i].error + "<br />";
    }
    alert('Заполните все обязательные поля');
    oMessage.style.display = "";
}

function formsValidate(oForm)
{
    if (!oForms) { return false; }

    var i = 0, j = 0, k = 0, iCount = 0, jCount = 0, result = true, sParam = "", arrErrors = [], sField = "", arrValidator = [];

    for (i = 0, iCount = oForms.length; i < iCount; i ++)
    {
        sField = oForms[i].field;
        if (oForms[i].validate && document.getElementById(sField))
        {
            arrValidator = oForms[i].validate;
            if (arrValidator.length > 0 &&
                (arrValidator.indexOf("necessary") != -1 ||
                    !isNaN(document.getElementById(sField).value)))
            {
                arrValidator = arrValidator.split("|");
                arrErrorMessages = oForms[i].error.split("|");
                for (j = 0, jCount = arrValidator.length; j < jCount; j ++)
                {
                    sValidator =  arrValidator[j];
                    if (sValidator.indexOf("["))
                    {
                        sParam = sValidator.substring
                        (
                            (sValidator.indexOf("[") + 1),
                            sValidator.indexOf("]")
                        );
                        sValidator = sValidator.replace(/\[.+?\]/, "");
                    }
                    else { sParam = ""; }
                    sFunction = "_forms_" + sValidator;
                    try
                    {
                        eval("result = " + sFunction + "('" + sField + "', '" + sParam + "');");
                    }
                    catch(e) { result = false; }
                    if (!result)
                    {
                        k = arrErrors.length;
                        arrErrors[k] = {};
                        arrErrors[k].title = oForms[i].title;
                        arrErrors[k].field = sField;
                        arrErrors[k].error = (arrErrorMessages[j]) ? arrErrorMessages[j] : arrErrorMessages;
                        arrErrors[k].validator = sValidator;
                    }
                }
            }
        }
    }

	if (oForm.reglogin && oForm.reglogin.value && oForm.reglogin.value!=''){
	    var sre = /^([a-zA-Z])+([a-zA-Z0-9\_])+$/;
    	if(-1 == oForm.reglogin.value.search(sre)) {
			alert("Поле логин дожно содержать только латинские символы, цифры и знак подчеркивания. \nПервый символ должен быть буквой латинского алфавита.");
			return false;
		}
	}

    if (arrErrors.length == 0) { return true; }

    formsErrorHandler(arrErrors);

    return false;
}

function _forms_necessary(s, param)
{
    s = document.getElementById(s).value;
    return (0 != s.replace(/\s/, "").length);
}

function _forms_maxlength(s, max)
{
    s = document.getElementById(s).value;
    return (0 == s.length || max >= s.length);
}

function _forms_minlength(s, min)
{
    s = document.getElementById(s).value;
    return (min <= s.length || 0 == s.length);
}

function _forms_confirm(s1, s2)
{
    s2 = formId + s2;
    s1 = document.getElementById(s1).value;
    s2 = document.getElementById(s2).value;
    return (s1 == s2);
}

function _forms_email(s, param)
{
    s = document.getElementById(s).value;
    var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return (0 == s.length || -1 != s.search(re));
}

function _forms_file(s, param)
{
    s = document.getElementById(s).value;
    return (1 < s.length || 0 == s.length);
}

function _forms_select(s, param)
{
    s = document.getElementById(s).value;
    return (0 != s.value)
}

function _forms_checked(el, chk)
{
	el  = document.getElementById(el);
	chk = document.getElementById(formId + chk);

	return (chk.checked)
	   ? _forms_necessary(el.id, chk.id)
	   : true;
}

function _forms_unchecked(el, chk)
{
	el  = document.getElementById(el);
	chk = document.getElementById(formId + chk);

	return (chk.checked)
	   ? true
	   : _forms_necessary(el.id, chk.id);
}

function _forms_login(s, param)
{
    s = document.getElementById(s).value;
    var re = /^([^\w]+)$/i;
    return !re.test(s);
}
