Ext.ns("Ext.ux.ui");Ext.ux.ui.Form=Ext.extend(Ext.util.Observable,{constructor:function(d,b){b=b||{};Ext.apply(this,b);Ext.ux.ui.Form.superclass.constructor.call(this);this.addEvents("apply");var e,c;this.el=Ext.get(d);this.form=this.el.child("form");this.submitBtn=this.el.child(".ui-button-panel input[type=submit]");this.inputs=[];this.invalidItems=new Ext.util.MixedCollection();this.valid=false;var a=this.el.query(".ui-form-field-input-element");if(a&&a.length){Ext.each(a,function(g){var f=new Ext.ux.ui.FormItem(g,{listeners:{changed:{fn:function(h){},scope:this},invalid:{fn:function(h){if(!this.invalidItems.key(h.el.id)){this.invalidItems.add(h.el.id,true);this.valid=false;this.markInvalid(!this.isValid())}},scope:this},valid:{fn:function(h){if(this.invalidItems.key(h.el.id)){this.invalidItems.removeKey(h.el.id)}if(!this.invalidItems.getCount()){this.valid=true;this.markInvalid(!this.isValid())}},scope:this}}});this.inputs.push(f)},this)}this.el.addClass("ui-form-applied");this.initEvents();this.onApply()},setDisabled:function(a){if(a){this.submitBtn.dom.setAttribute("disabled","disabled")}else{this.submitBtn.dom.removeAttribute("disabled")}return this},cancelUpdate:function(){if(this.updateTask){this.updateTask.cancel()}return this},isValid:function(){return this.valid},markInvalid:function(a){if(a){this.el.addClass("ui-form-invalid");this.setDisabled(true)}else{this.el.removeClass("ui-form-invalid");this.setDisabled(false)}return this},initEvents:function(){this.on("apply",this.onApply,this);this.el.on("click",this.onClick,this);this.el.on("dirty",this.onDirty,this);this.el.on("clean",this.onClean,this);window.onclose=this.onClose;window.onbeforeunload=this.onClose},onApply:function(a){},onClick:function(a){this.fireEvent("click",this)},onDirty:function(a){this.fireEvent("dirty",this)},onClean:function(a){this.fireEvent("clean",this)},onClose:function(a){if(window.unsavedData){return"Есть несохранённые данные. Уйти со страницы?";if(!confirm(event.cancelable+"Есть несохранённые данные. Уйти со страницы?")){a.preventDefault();a.stopPropagation()}}}});
