
Ext.ns('Ext.ux', 'Ext.ux.layout');

Ext.layout.ScreenLayout = Ext.extend(Ext.layout.FitLayout, {

    deferredRender : false,
    layoutOnCardChange : false,
    renderHidden : true,

    constructor: function(config) {
        Ext.layout.ScreenLayout.superclass.constructor.call(this, config);
    },

    setActiveItem : function(item) {

        var me = this, ai = this.activeItem, oi = item;

        item = me.container.getComponent(item);

        if(!item) {

            me.container.activeItem = oi;
            delete me.container.items;
            me.container.items = me.container.initialConfig.items;
            item = me.container.add(me.container.initialConfig.items);
            item = item.pop();
        }

        if(ai != item) {

            if(ai) {
                ai.destroy();
            }

            var layout = item.doLayout && (me.layoutOnCardChange || !item.rendered);
            this.activeItem = item;

            if(item) {
                item.show();
            }

            this.layout();

            if(item && layout) {
                item.doLayout();
            }

            item.fireEvent('activate', item);
        }
    },

    renderAll : function(ct, target){

        var me = this;

        if(me.deferredRender){
            me.renderItem(me.activeItem, undefined, target);
        }else{
            Ext.layout.ScreenLayout.superclass.renderAll.call(me, ct, target);
        }
    }
});

Ext.Container.LAYOUTS['screen'] = Ext.layout.ScreenLayout;

