Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';


var CatTS=new Ext.Panel({ // PANEL DE SERVICIOS
    title   :'Servicios',
    bodyStyle   :'padding :5px',
    layout  :'border',
    id  :'servicios',
    border  :false,
    frame   :false,
    items   :[
        new Ext.FormPanel({ // FORM PANEL DE REGISTRO
            title   :'Alta de Servicios',
            region  :'north',
            margins :'2 2 2 2',
            id  :'formaaltaservicios',
            border  :true,
            frame   :true,
            bodyStyle   :'padding :5px',
            labelWidth  :100,
            items   :[
                {
                    xtype:'textfield',
                    name    :'servicioaltadescripcion',
                    allowBlank  :false,
                    anchor  :'75%',
                    blankText   :'Este campo es requerido',
                    fieldLabel  :'Descripcion'                    
                }
            ],
            buttons :[
                {text:'Registrar Servicio'}
            ]
        }), // FORM PANEL DE REGISTRO
        new Ext.grid.GridPanel({
            title   :'Listado de Servicios',
            id  :'catgridservicios',
            region  :'center',
            margins :'2 2 2 2',
            stripeRows  :true,
            border  :true,
            store   :new Ext.data.JsonStore({
                proxy   :new Ext.data.HttpProxy({
                    api :{read:'ctrcatalogos/catalogo_servicios'},
                    method  :'POST'
                }),
                root    :'data',
                id : 'hora',
                fields:[
                    {name:'id'},
                    {name:'descripcion'},
                    {name:'status'}
                ]   
            }),
            autoExpandColumn:'descripcion',
            columns :[
                new Ext.grid.RowNumberer(),
                {header:'Status',dataIndex:'status',width:100},
                {header:'Descripcion',dataIndex:'descripcion',id:'descripcion',sortable:true}
            ] 
        })
    ]    
}); // PANEL DE SERVICIOS

var CatFAM=new Ext.Panel({ // PANEL DE FAMILIAS
    title   :'Familias',
    bodyStyle   :'padding :5px',
    id  :'familias',
    layout  :'border',
    border  :false,
    frame   :false,
    items   :[
        new Ext.FormPanel({ // FORM PANEL DE REGISTRO
            title   :'Alta de Familias',
            region  :'north',
            margins :'2 2 2 2',
            id  :'formaaltafamilias',
            border  :true,
            height  :125,
            frame   :true,
            bodyStyle   :'padding :5px',
            labelWidth  :100,
            items   :[
                {
                    xtype:'textfield',name    :'familiaaltadescripcion',allowBlank  :false,anchor  :'75%',blankText   :'Este campo es requerido',fieldLabel  :'Descripcion'                    
                },
                {
                    xtype   :'combo',name:'familiaservicio',id  :'familiaservicio',valueField:'id',displayField:'descripcion',triggerAction:'all',editable:false,fieldLabel :'Servicio',emptyText:'Seleccione',hiddenName:'familiaservicio',
                    store : new Ext.data.JsonStore({
                        proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                        api :{read : 'ctrcatalogos/servicios_activos'},
                        method : 'post'
                        }),
                        root : 'data',
                        fields : [
                            {name :'id'},
                            {name :'descripcion'} 
                        ]
                    })
                }
            ],
            buttons :[
                {text:'Registrar Familia'}
            ]
        }), // FORM PANEL DE REGISTRO
        new Ext.grid.GridPanel({
            title   :'Listado de Familias',
            region  :'center',
            id  :'catgridfamilias',
            margins :'2 2 2 2',
            stripeRows  :true,
            border  :true,
            store   :new Ext.data.JsonStore({
                proxy   :new Ext.data.HttpProxy({
                    api :{read:'ctrcatalogos/catalogo_familias'},
                    method  :'POST'
                }),
                root    :'data',
                id : 'hora',
                fields:[
                    {name:'id'},
                    {name:'descripcion'},
                    {name:'status'},
                    {name:'servicio'}
                ]   
            }),
            autoExpandColumn:'descripcion',
            columns :[
                new Ext.grid.RowNumberer(),
                {header:'Status',dataIndex:'status',width:100},
                {header:'Servicio',dataIndex:'servicio',id:'descripcion',sortable:true},
                {header:'Descripcion',dataIndex:'descripcion',id:'descripcion',sortable:true}
            ] 
        })
    ]    
}); // PANEL DE FAMILIAS

var stcombo=new Ext.form.ComboBox({
    emptyText	:'Seleccione....',
	displayField:'descripcion',
	hiddenName	:'stactividad',
	valueField 	:'id',
    mode   :'local',
	triggerAction	:'all',
	name	:'stactividad',
    id:'stactividad',
	store	:new Ext.data.ArrayStore({
        data    :[['t','SI'],['f','NO']],
		fields	:['id','descripcion']	
	})
});

var statuscombo=new Ext.form.ComboBox({
    emptyText	:'Seleccione....',
	displayField:'descripcion',
	hiddenName	:'statusactividad',
	valueField 	:'id',
    mode   :'local',
	triggerAction	:'all',
	name	:'statusactividad',
    id:'statusactividad',
	store	:new Ext.data.ArrayStore({
        data    :[['t','Activo'],['f','Inactivo']],
		fields	:['id','descripcion']	
	})
});

var CatACT=new Ext.Panel({ // PANEL DE ACTIVIDADES
    title   :'Actividades',
    id  :'actividades',
    bodyStyle   :'padding :5px',
    layout  :'border',
    border  :false,
    frame   :false,
    items   :[
        new Ext.FormPanel({ // FORM PANEL DE REGISTRO
            title   :'Alta de Actividades',
            region  :'north',
            margins :'2 2 2 2',
            collapsible :true,
            id  :'formaaltaactividades',
            border  :true,
            height  :200,
            frame   :true,
            bodyStyle   :'padding :5px',
            labelWidth  :100,
            tools   :[
                {id:'save',qtip:'Registrar actividad',handler:function(){
                    if(Ext.getCmp('formaaltaactividades').getForm().isValid())
                        Ext.MessageBox.confirm('Confirmacion','Esta seguro de registrar la actividad?',function(btn){
                            if(btn=='yes')
                                Ext.getCmp('formaaltaactividades').getForm().submit({
                                    url :'ctrcatalogos/registra_actividad',
                                    waitMsg :'Registrando actividad ....',
                                    success :function(){
                                        msgINFO('Informacion','Actividad registrada con exito, debera parametrizarla para poderla usar');
                                        Ext.getCmp('catgridactividades').getStore().reload();
                                    },
                                    failure :function(){
                                        msgERROR('Error','Ocurrio un error al registrar');
                                    }
                                });
                    },this);    
                }}
            ],
            items   :[
                {
                    xtype:'textfield',name    :'actividadaltadescripcion',allowBlank  :false,anchor  :'75%',blankText   :'Este campo es requerido',fieldLabel  :'Descripcion'                    
                },
                new Ext.form.ComboBox({
                  name : 'actividadservicio',
                  id : 'actividadservicio',
                  allowBlank : false,
                  blankText   :'Este campo es requerido',
                  triggerAction:'all',   //trae los datos del query
                  displayField : 'descripcion',
                  valueField : 'id',
                  emptyText : 'Seleccione ...',
                  hiddenName : 'actividadservicio',
                  editable : false,
                  width : 400,
                  listeners:{
                    select : function (combo,registro,indice){
                        Ext.getCmp('actividadfamilia').enable();
                        Ext.getCmp('actividadfamilia').clearValue();
                        Ext.getCmp('actividadfamilia').getStore().load({params:{id:combo.getValue()}});    
                       }                                                                                            
                  },                                 
                  fieldLabel :'Servicio ',
                  store : new Ext.data.JsonStore({
                    proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                        api :{
                            read : 'ctrcatalogos/catalogo_tipo_activo'                                           
                        },
                        method : 'post'
                        }),
                    root : 'data',
                    fields : [
                        {name :'id'},
                        {name :'descripcion'} 
                    ]
                  }) //crear nuevo objeto store de datos   
                    
                }),
                new Ext.form.ComboBox({
                      name : 'actividadfamilia',
                      disabled : true,
                      id : 'actividadfamilia',
                      mode: 'local',
                      allowBlank : false,
                      blankText   :'Este campo es requerido',
                      triggerAction:'all',   //trae los datos del query
                      displayField : 'descripcion',
                      valueField : 'id',
                      emptyText : 'Seleccione ...',
                      hiddenName : 'actividadfamilia',
                      editable : false,
                      width :400,                             
                      fieldLabel :'Familia',
                      store : new Ext.data.JsonStore({
                        proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                            api :{
                                read : 'ctrcatalogos/catalogo_familia_activo'                                           
                            },
                            method : 'post'
                            }),
                        root : 'data',
                        fields : [
                            {name :'id'},
                            {name :'descripcion'} 
                        ]
                      }) //crear nuevo objeto store de datos   
                                    
                }),
                new Ext.form.ComboBox({
                    emptyText	:'Seleccione....',
            		displayField:'descripcion',
            		hiddenName	:'actividadcategoria',
            		valueField 	:'id',
                    fieldLabel  :'Categoria',
                    width   :300,
                    allowBlank  :false,
                    blankText   :'Este campo es requerido',
                    mode   :'local',
            		triggerAction	:'all',
            		name	:'actividadcategoria',
                    id:'actividadcategoria',
                    store: new Ext.data.ArrayStore({
                        fields  :['id','descripcion'],
                        data    :[['A','Mantenimiento del servicio'],['B','Crecimiento del servicio'],['C','Tranformacion del servicio']] 
                    }),    
    		      loadingText	:'Cargando categorias..'
                }),
                new Ext.form.ComboBox({
                    emptyText	:'Seleccione....',
            		displayField:'descripcion',
            		hiddenName	:'actividadprioridad',
            		valueField 	:'id',
                    fieldLabel  :'Prioridad',
                    width   :100,
                    allowBlank  :false,
                    blankText   :'Este campo es requerido',
                    mode   :'local',
            		triggerAction	:'all',
            		name	:'actividadprioridad',
                    id:'actividadprioridad',
                    store: new Ext.data.ArrayStore({
                        fields  :['id','descripcion'],
                        data    :[['A','Alta'],['M','Media'],['B','Baja']] 
                    }),    
    		      loadingText	:'Cargando categorias..'
                }),
                new Ext.form.TimeField({  
                    fieldLabel: 'Tiempo atencion',  
                    minValue: '00:30',  
                    maxValue: '23:00',  
                    increment: 30,  
                    format:'H:i:s',  
                    name:'actividad_atencion',
                    allowBlank  :false,
                    blankText   :'Este campo es requerido' 
                })
            ]
        }), // FORM PANEL DE REGISTRO
        new Ext.grid.EditorGridPanel({
            title   :'Listado de Actividades',
            id  :'catgridactividades',
            region  :'center',
            margins :'2 2 2 2',
            stripeRows  :true,
            border  :true,
            tbar    :[
                {xtype:'label',text:'Buscador de actividad:'},
                {xtype:'tbspacer'},
                {xtype:'textfield',name:'buscaactividad',width:200,enabledKeyEvents:true,
                    listeners   :{
                        specialkey	:function(el,e){
    					   if(e.keyCode == e.ENTER) 
    		  			     Ext.getCmp('catgridactividades').getStore().load({params:{cadena:el.getValue()}});	
    				    }   
                    }
                }
            ],
            store   :new Ext.data.JsonStore({
                proxy   :new Ext.data.HttpProxy({
                    api :{read:'ctrcatalogos/catalogo_actividades'},
                    method  :'POST'
                }),
                root    :'data',
                id : 'id',
                fields:[
                    {name:'id',type:'integer'},
                    {name:'descripcion'},
                    {name:'familia'},
                    {name:'servicio'},
                    {name:'descripcion'},
                    {name:'status'},
                    {name:'libreria'},
                    {name:'oficina'},
                    {name:'proveedor'},
                    {name:'status'}
                ]   
            }),
            columns :[
                new Ext.grid.RowNumberer(),
                {header:'Id',dataIndex:'id',width:75,sortable:true},
                {header:'Actividad',dataIndex:'descripcion',width:200},
                {header:'Oficina',align:'center',dataIndex:'oficina',width:75,editor:stcombo,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                switch(value){
                    case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                    case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                }
                }},
                {header:'Lib',align:'center',dataIndex:'libreria',width:75,editor:stcombo,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                switch(value){
                    case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                    case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                }
                }},
                {header:'Prov',align:'center',dataIndex:'proveedor',width:75,editor:stcombo,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                switch(value){
                    case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                    case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                }
                }},
                {header:'Status',dataIndex:'status',width:75,editor:statuscombo,renderer:function(value, metaData, record, rowIndex, colIndex, store){ 
                switch(value){
                    case 't':return 'Activo';break;
                    case 'f':return 'Inactivo';break;
                }           
                }},
                {header:'Servicio',dataIndex:'servicio',width:200,sortable:true},
                {header:'Familia',dataIndex:'familia',width:200,sortable:true}
            ] 
        })
    ]    
}); // PANEL DE ACTIVIDADES

    Ext.getCmp('catgridactividades').on('afteredit',function(){ 
        var modificados=Ext.getCmp('catgridactividades').getStore().getModifiedRecords();
    	var registros=[];
    	Ext.each(modificados,function(record){
    		registros.push(Ext.apply({id:record.id},{oficina:record.data['oficina'],libreria:record.data['libreria'],proveedor:record.data['proveedor'],status:record.data['status']}));
       	});
    	Ext.getCmp('gridadministrador').stopEditing();
    	registros=Ext.encode(registros);
   		Ext.Ajax.request({
    		url:'ctrcatalogos/actualizaractividad',
    		method  :'POST',
    		params	:{records:registros},
    		success	:function(response,request){
    			var json=Ext.decode(response.responseText);
                if(json.respuesta==1)
                    Ext.getCmp('catgridactividades').getStore().commitChanges();
                else{
                    Ext.getCmp('catgridactividades').getStore().rejectChanges();
                    msgERROR('Mensaje','No cuenta con permisos para actualizar actividades');  
                }
    		},
    		failure	:function(){
                Ext.getCmp('catgridactividades').getStore().rejectChanges();
                msgERROR('Mensaje','Ocurrio un error al actualizar')
    		}	
 	     });    
    },this);

var ACWin=new Ext.TabPanel({
    title   :'Catalogos',
    margins:'2 2 2 2',
    region: 'east',
    border  :true,
    width: '50%',     
    activeTab:0,
    split:true,
    collapsible:true,
    items    :[CatTS,CatFAM,CatACT],
    listeners    :{
        tabchange   :function(panel,tab){
            if(tab.id=='actividades'){
                var mascara=new Ext.LoadMask(Ext.getBody(),{msg:'Buscando  actividades, espere un momento...',store: Ext.getCmp('catgridactividades').getStore()});
                mascara.show();
                Ext.getCmp('catgridactividades').getStore().load({params:{cadena:''}});
            }
        }
   }
});
