Ext.apply(Ext.form.VTypes, { 'numeric': function() {
                              return function(v) { return true; }
                           }()
            , 'numericText' : 'Not a valid numeric number. Must be numbers'
            , 'numericMask' : /[0-9]/
});

Ext.form.VTypes['floatVal'] = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
Ext.form.VTypes['floatText'] = 'Not a valid number.';
Ext.form.VTypes['floatMask'] = /[-+0-9.]/;
Ext.form.VTypes['float'] = function(v) {
 return Ext.form.VTypes['floatVal'].test(v);
};

MyDesktop.VistaPropiedades = Ext.extend(Ext.app.Module, {
    id: 'vista-propiedades-module',
    init : function(){
        this.launcher = {
            text: 'Propiedades',
            iconCls:'homeIcon',
            handler : this.createWindow,
            scope: this
        }
    },
    createWindow : function(){
        var desktop = this.app.getDesktop();
        var win = desktop.getWindow('vista-propiedades-win');
        if(!win){
            //        total:1020
            //buscar: 225
            //listado: 200
            //
            //20 de bordes
            //mapa= 595
        var formulario = new Ext.form.FormPanel({
                id: 'vista-propiedades-form-panel',
                baseCls: 'x-plain',
                region    : 'center',
                items: {
                        xtype: 'gmappanel',
                        id: 'vista-map_canvas',
                        region: 'center',
                        width: 575,
                        zoomLevel: 14,
                        gmapType: 'map',
                        mapConfOpts: ['enableScrollWheelZoom','enableDoubleClickZoom','enableDragging'],
                        mapControls: ['GSmallMapControl','GMapTypeControl','NonExistantControl']
                }
            });
            var listado = new Ext.FormPanel({
                    title       : 'listado',
                    region      : 'east',
                    split       : true,
                    width       : 200,
                    labelWidth: 65,
                    collapsible : true,
                    //collapsed:true,
                    defaultType: 'combo',
                    bodyStyle:'padding:5px;',
                    autoScroll:true,
                    items: new Ext.Panel({
                        id: 'vista-listado-propiedades-panel'
                    })
            });
            var buscar = new Ext.FormPanel({
                    title       : 'Buscador',
                    region      : 'west',
                    split       : true,
                    width       : 225,
                    labelWidth: 58,
                    collapsible : true,
                    //collapsed:true,
                    defaultType: 'combo',
                    bodyStyle:'padding:5px;',
                    items: [{
                        name: 'tipo-propiedad',
                        id: 'vista-tipo-propiedad',
                        displayField:'tipoPropiedadNombre',
                        mode: 'remote',
                        triggerAction: 'all',
                        width: 150,
                        emptyText:'Seleccione una opción...',
                        selectOnFocus:true,
                        editable : false,
                        fieldLabel: 'Tipo de Propiedad',
                        store: new Ext.data.JsonStore({
                                url: 'index.php/propiedades/ListadoTipoPropiedades',
                                root: 'tipo-propiedad',
                                fields: ['tipoPropiedadId', 'tipoPropiedadNombre'],
                                autoLoad: true
                            }),
                        listeners:{select:function(combo, record,  e){
                                var el = Ext.get("vista-listado-propiedades-panel");
                                var mgr = el.getUpdater();
                                mgr.update({
                                        url: "index.php/propiedades/listView",
                                        scripts: true,
                                        params:{
                                            start:0,
                                            limit:25,
                                            tipoPropiedadFiltro:Ext.getCmp('vista-tipo-propiedad').getValue(),
                                            tipoOperacionFiltro:Ext.getCmp('vista-tipo-operacion').getValue(),
                                            provinciaFiltro:Ext.getCmp('vista-tipo-provincia').getValue(),
                                            partidoFiltro:Ext.getCmp('vista-tipo-partido').getValue(),
                                            localidadFiltro:Ext.getCmp('vista-tipo-localidad').getValue()
                                            //tipoPropiedadFiltro:record.get('tipoPropiedadNombre')
                                        },
                                        callback: function(){
                                        }
                                });
                        }}
                    },{
                        id: 'vista-tipo-operacion',
                        name: 'tipo-operacion',
                        displayField:'tipoOperacionNombre',
                        mode: 'remote',
                        triggerAction: 'all',
                        width: 150,
                        emptyText:'Seleccione una opción...',
                        selectOnFocus:true,
                        editable : false,
                        fieldLabel: 'Tipo de Operación',
                        store: new Ext.data.JsonStore({
                                url: 'index.php/propiedades/ListadoTipoOperacion',
                                root: 'tipo-operacion',
                                fields: ['tipoOperacionId', 'tipoOperacionNombre'],
                                autoLoad: true
                            }),
                        listeners:{select:function(combo, record,  e){
                                                                var el = Ext.get("vista-listado-propiedades-panel");
                                var mgr = el.getUpdater();
                                mgr.update({
                                        url: "index.php/propiedades/listView",
                                        scripts: true,
                                        params:{
                                            start:0,
                                            limit:25,
                                            tipoPropiedadFiltro:Ext.getCmp('vista-tipo-propiedad').getValue(),
                                            tipoOperacionFiltro:Ext.getCmp('vista-tipo-operacion').getValue(),
                                            provinciaFiltro:Ext.getCmp('vista-tipo-provincia').getValue(),
                                            partidoFiltro:Ext.getCmp('vista-tipo-partido').getValue(),
                                            localidadFiltro:Ext.getCmp('vista-tipo-localidad').getValue()
                                            //tipoPropiedadFiltro:record.get('tipoPropiedadNombre')
                                        },
                                        callback: function(){
                                        }
                                });
                        }}
                    },{
                        id: 'vista-tipo-provincia',
                        name: 'tipo-provincia',
                        displayField:'provinciaNombre',
                        mode: 'remote',
                        triggerAction: 'all',
                        width: 150,
                        emptyText:'Seleccione una opción...',
                        selectOnFocus:true,
                        editable : false,
                        fieldLabel: 'Provincia',
                        store: new Ext.data.JsonStore({
                                url: 'index.php/propiedades/ListadoProvincia',
                                root: 'provincia',
                                fields: ['provinciaId', 'provinciaNombre'],
                                autoLoad: true
                            }),
                        listeners:{select:function(combo, record,  e){
                                                                var el = Ext.get("vista-listado-propiedades-panel");
                                var mgr = el.getUpdater();
                                mgr.update({
                                        url: "index.php/propiedades/listView",
                                        scripts: true,
                                        params:{
                                            start:0,
                                            limit:25,
                                            tipoPropiedadFiltro:Ext.getCmp('vista-tipo-propiedad').getValue(),
                                            tipoOperacionFiltro:Ext.getCmp('vista-tipo-operacion').getValue(),
                                            provinciaFiltro:Ext.getCmp('vista-tipo-provincia').getValue(),
                                            partidoFiltro:Ext.getCmp('vista-tipo-partido').getValue(),
                                            localidadFiltro:Ext.getCmp('vista-tipo-localidad').getValue()
                                            //tipoPropiedadFiltro:record.get('tipoPropiedadNombre')
                                        },
                                        callback: function(){
                                        }
                                });
                        }}
                    },{
                        id: 'vista-tipo-localidad',
                        name: 'tipo-localidad',
                        displayField:'localidadNombre',
                        mode: 'remote',
                        triggerAction: 'all',
                        width: 150,
                        emptyText:'Seleccione una opción...',
                        selectOnFocus:true,
                        editable : false,
                        fieldLabel: 'Localidad',
                        store: new Ext.data.JsonStore({
                                url: 'index.php/propiedades/ListadoLocalidad',
                                root: 'tipo-localidad',
                                fields: ['localidadId', 'localidadNombre'],
                                autoLoad: true
                            }),
                        listeners:{select:function(combo, record,  e){
                                                                var el = Ext.get("vista-listado-propiedades-panel");
                                var mgr = el.getUpdater();
                                mgr.update({
                                        url: "index.php/propiedades/listView",
                                        scripts: true,
                                        params:{
                                            start:0,
                                            limit:25,
                                            tipoPropiedadFiltro:Ext.getCmp('vista-tipo-propiedad').getValue(),
                                            tipoOperacionFiltro:Ext.getCmp('vista-tipo-operacion').getValue(),
                                            provinciaFiltro:Ext.getCmp('vista-tipo-provincia').getValue(),
                                            partidoFiltro:Ext.getCmp('vista-tipo-partido').getValue(),
                                            localidadFiltro:Ext.getCmp('vista-tipo-localidad').getValue()
                                            //tipoPropiedadFiltro:record.get('tipoPropiedadNombre')
                                        },
                                        callback: function(){
                                        }
                                });
                        }}
                    },{
                        id: 'vista-tipo-partido',
                        name: 'tipo-partido',
                        displayField:'partidoNombre',
                        mode: 'remote',
                        triggerAction: 'all',
                        width: 150,
                        emptyText:'Seleccione una opción...',
                        selectOnFocus:true,
                        editable : false,
                        fieldLabel: 'Partido',
                        store: new Ext.data.JsonStore({
                                url: 'index.php/propiedades/ListadoPartido',
                                root: 'tipo-partido',
                                fields: ['partidoId', 'partidoNombre'],
                                autoLoad: true
                            }),
                        listeners:{select:function(combo, record,  e){
                                                                var el = Ext.get("vista-listado-propiedades-panel");
                                var mgr = el.getUpdater();
                                mgr.update({
                                        url: "index.php/propiedades/listView",
                                        scripts: true,
                                        params:{
                                            start:0,
                                            limit:25,
                                            tipoPropiedadFiltro:Ext.getCmp('vista-tipo-propiedad').getValue(),
                                            tipoOperacionFiltro:Ext.getCmp('vista-tipo-operacion').getValue(),
                                            provinciaFiltro:Ext.getCmp('vista-tipo-provincia').getValue(),
                                            partidoFiltro:Ext.getCmp('vista-tipo-partido').getValue(),
                                            localidadFiltro:Ext.getCmp('vista-tipo-localidad').getValue()
                                            //tipoPropiedadFiltro:record.get('tipoPropiedadNombre')
                                        },
                                        callback: function(){
                                        }
                                });
                        }}
                    }]
                });
            win = desktop.createWindow({
                id: 'vista-propiedades-win',
                title:'Propiedades',
                labelWidth: 75, // label settings here cascade unless overridden
                frame:true,
                bodyStyle: 'padding:5px 5px 0',
                shim:false,
                animCollapse:false,
                constrainHeader:true,
                width: 1020,
                height: 550,
                plain    : true,
                layout   : 'border',
                items:  [buscar,formulario,listado]
            });
        }
        win.show();
    }
});