/**
 *
 * This class enhances the {@link Ext.util.MixedCollection} class by allowing the
 * children objects to be destroyed on remove.
 *
 * @private
 *
 */
Ext.define('Ext.pivot.MixedCollection', {
    extend: 'Ext.util.MixedCollection',
 
    alternateClassName: [
        'Mz.aggregate.MixedCollection'
    ],
 
    removeAt: function(index) {
        Ext.destroy(this.callParent(arguments));
    },
 
    clear: function() {
        this.destroyItems();
        this.callParent(arguments);
    },
 
    removeAll: function() {
        this.destroyItems();
        this.callParent(arguments);
    },
    
    destroy: function() {
        // destroy all objects in the items array
        this.clear();
    },
 
    destroyItems: function() {
        var items = this.items,
            len, i, item;
 
        // when having hundreds of thousand of items Ext.destroy fails because
        // the "apply" function cannot accept so many arguments
        if (items) {
            len = items.length;
 
            for (= 0; i < len; i++) {
                item = items[i];
 
                if (item.destroy) {
                    item.destroy();
                }
            }
        }
    }
});