// фишки для регистрации
// caption, input text, select
var _reg = {
    container: null,
    ff: {},
    ft: {},
    invalid: null,
    init: function(container, fields) {
        for (field in fields) {
            var fp = fields[field]; // fields parameters
            var fo = document[container][field]; // field object
            fo.row = fo.parentNode.parentNode; // parent td->tr
            fo.cf = fp.cf?fp.cf:null;
            if (fp.cp) {
                fo.vcheck = new RegExp(fp.cp);
                _ac(fo.row, fo.td_n = _td({className: 'reg_info'})); // add info field
                _ac(fo.td_n, fo.valid_img = _img({className: 'reg_img', title: fp.ci, src: '/templates/admin/img/all-fail.png'})); // add info img
                fo.onkeyup = function(evt) { _reg.check_value(this.name); };
            }
            this.ff[fo.name] = fo;
        }
        this.all_is_ok(true);
    },
    check_value: function(name) {
         var fo = _reg.ff[name];
         if (fo.row.parentNode.style.display=='none') return; // skip hidden fields
         var rc = (typeof(fo.cf)=='function')?fo.cf(fo):true;
         if (rc && fo.vcheck.test(fo.value)) {
             fo.valid_img.src = '/templates/admin/img/all-ok.png';
         } else {
             fo.valid_img.src = '/templates/admin/img/all-fail.png';
             if (!this.invalid) this.invalid = fo;
         }
    },
    all_is_ok: function(init) {
         this.invalid = null;
         for (name in this.ff) this.check_value(name);
         if (!init && this.invalid) {
             alert('Вы не заполнили все необходимые поля!');
             this.invalid.focus();
             return false;
         }
         return true;
    },
    show: function(fields, turn_on) {
         for (i in fields) {
             _reg.ff[fields[i]].row.style.display = turn_on?'block':'none';
         }
    }


}



