Ext.ns("Ext.ux.ui");Ext.ux.ui.BasketTable=Ext.extend(Ext.util.Observable,{constructor:function(c,a){a=a||{};Ext.apply(this,a);Ext.ux.ui.BasketTable.superclass.constructor.call(this);this.addEvents("apply");var d,b;this.el=Ext.get(c);this.rows=[];this.summValue=0;this.dirty=false;this.valid=false;window.unsavedData=false;this.updateTask=false;var e=this.el.query(".ui-basket-table-row");if(e&&e.length){Ext.each(e,function(f){var g=new Ext.ux.ui.BasketTableItem(f,{});g.on({changed:{fn:function(j,i,h){this.calcSumm();this.setDirty(true)},scope:this},invalid:{fn:function(){this.cancelUpdate();this.valid=false;this.markInvalid(true)},scope:this},valid:{fn:function(){this.valid=true;this.markInvalid(false)},scope:this}});this.rows.push(g)},this)}this.summ=this.el.child(".ui-basket-clmn-total .value");this.submitBtn=this.el.child(".ui-submit-button");this.el.addClass("ui-basket-table-applied");this.initEvents();this.onApply()},calcSumm:function(){var a=0;Ext.each(this.rows,function(b){a+=b.getSumm()},this);this.summ.update(this.numberFormat((a)));return this},numberFormat:function(a){return Ys.number_format(a,2,","," ")},cancelUpdate:function(){if(this.updateTask){this.updateTask.cancel()}return this},setDirty:function(a){this.dirty=a;this.cancelUpdate();if(a){this.el.addClass("ui-basket-table-dirty");window.unsavedData=true;this.updateTask=new Ext.util.DelayedTask(this.saveChanges,this);this.updateTask.delay(1000);this.fireEvent("dirty",this)}else{this.el.removeClass("ui-basket-table-dirty");Ext.each(this.rows,function(b){if(b.isDirty()){b.setDirty(false)}},this);window.unsavedData=false;this.fireEvent("clean",this)}return this},isDirty:function(){return this.dirty},saveChanges:function(){this.updateTask=false;var a=this.getDirty();if(a&&a.length){Ext.php.Shop_Basket.update(a,function(b,c){if(b&&b.success){this.setDirty(false)}},this)}},isValid:function(){return this.valid},markInvalid:function(a){if(a){this.el.addClass("ui-basket-table-invalid");this.submitBtn.dom.setAttribute("disabled","disabled")}else{this.el.removeClass("ui-basket-table-invalid");this.submitBtn.dom.removeAttribute("disabled")}return this},getDirty:function(){var a=[];Ext.each(this.rows,function(b){if(b.isDirty()&&b.isValid()){a.push({id:b.getNameIdValue(),count:b.getCountValue()})}},this);return a},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()}}}});
