/**
 *
 * 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();
                }
            }
        }
    }
});