Ext.ns("Ext.ux.ui");Ext.ux.ui.FormItem=Ext.extend(Ext.util.Observable,{constructor:function(c,a){a=a||{};this.addEvents("apply","valid","invalid","changed");Ext.apply(this,a);Ext.ux.ui.FormItem.superclass.constructor.call(this);var d,b;this.el=Ext.get(c);this.parentEl=this.el.parent(".ui-form-field");this.valid=false;this.required=(this.el.dom.getAttribute("required")?true:false);this.maxlength=(this.el.dom.hasAttribute("maxlength")?this.el.dom.getAttribute("maxlength"):false);this.name=this.el.dom.getAttribute("name");this.parentEl.addClass("ui-form-field-input-element-applied");this.initEvents();this.onApply()},isValid:function(){return this.valid},validate:function(){var a=this.getMask();if((this.required&&this.el.getValue()&&a.test(this.el.getValue()))||!this.required){this.valid=true}else{this.valid=false}return this.valid},markInvalid:function(a){if(this.required){if(a){this.parentEl.addClass("ui-form-field-invalid");this.parentEl.removeClass("ui-form-field-valid")}else{this.parentEl.removeClass("ui-form-field-invalid");this.parentEl.addClass("ui-form-field-valid")}}return this},getMask:function(){switch(this.name){case"email":return/^[a-z0-9\-\._]+@([a-z0-9\-]+\.)+[a-z]{2,4}$/i;break;case"fam":case"name":case"name2":return/[a-zа-я\-]+/i;break;case"tel":return/^[\+\(\)\-\ 0-9а-яa-z]+$/i;break;case"index":return/^[\-\ 0-9]+$/i;break;case"adr":case"metro":case"city":return/^[\-\ \.\,a-zа-я0-9]+$/i;break}},initEvents:function(){this.on("apply",this.onApply,this);this.el.on({keyup:{fn:this.onChange,scope:this},blur:{fn:this.onChange,scope:this}})},onApply:function(a){this.onChange()},onChange:function(a){if(this.validate()){this.markInvalid(false);this.fireEvent("valid",this);this.fireEvent("changed",this)}else{this.markInvalid(true);this.fireEvent("invalid",this)}}});
