Ext.ux.KeepActive = Ext.extend(Ext.util.Observable, {
    setup: false,
    
    init : function(pnl){
        if(pnl.layout === 'accordion') {
            pnl.on('afterlayout', this.onAfterLayout, this);
        }
    },

    onAfterLayout : function (pnl) {
        if(this.setup === false) {
            this.setup = true;
            pnl.items.each(function (item) {
                if(!item.collapsed) {
                    if(item.tools.toggle) {
                        item.tools.toggle.hide();
                    }
                }
                
                // Disable title collapse
                item.header.un('click', item.toggleCollapse, item);
                item.header.setStyle({ cursor: 'default' });
                item.header.on('click', function() {
                    if (this.collapsed) {
                        this.expand();
                    }
                }, item);
                
                item.on('beforeexpand', this.onBeforeExpand, item);
                item.on('beforecollapse', this.onBeforeCollapse, item);
            }, this);
        }
    },
    
    onBeforeExpand: function(pnl) {
        if (this.tools.toggle) {
            this.tools.toggle.hide();
            pnl.header.setStyle({ cursor: 'default' });
        }
        return true;
    },

    onBeforeCollapse: function(pnl) {
        pnl.ownerCt.items.each(function(item) {
            if (item.tools.toggle) {
                item.tools.toggle.show();
            }
        });
        pnl.header.setStyle({ cursor: 'pointer' });
        return true;
    }
});