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

var sesion=function(){
    Ext.Ajax.request({
        url :'ctradministrador/verificasesion',
        method  :'POST',
        success :function(response,request){
            var json=Ext.decode(response.responseText);
            if(json.sesion==0){
                acceso();
            }
        } 
    });  
};

function BuscarInfo(){
    var mascara=new Ext.LoadMask(Ext.getBody(),{msg:'Buscando reportes, espere un momento...',store: Ext.getCmp('gridadministrador').getStore()});
    mascara.show();
    Ext.getCmp('gridadministrador').getStore().load({
        params:{
            folio:Ext.getCmp('adminfolio').getValue(),
            fechainicial:Ext.getCmp('adminfechainicial').getValue(),
            fechafinal:Ext.getCmp('adminfechafinal').getValue(),
            cactividad:Ext.getCmp('admincactividad').getValue(),
            status:Ext.getCmp('combostatus').getValue(),
            usuario:Ext.getCmp('combousuarios').getValue(),
	     texto:Ext.getCmp('adminfrase').getValue()
        }
    });
    Ext.getCmp('gridadministrador').getStore().on('datachanged',function(){
        if(Ext.getCmp('gridadministrador').getStore().getCount()==0)
            msgALERTA('Aviso','No se encontraron datos con los parametros establecidos');
    });
    
    var tarea={
        run: function(){
        Ext.getCmp('gridadministrador').getStore().reload();    
        },
        interval: 120000   
    };
    var task_retarda = new Ext.util.DelayedTask(function(){
   	    Ext.TaskMgr.start(tarea);
    });
    Ext.getCmp('gridadministrador').getStore().on('load',function(){
        if(Ext.getCmp('gridadministrador').getStore().getCount()==0){
       	    msgALERTA('Aviso','No se encontraron datos con los parametros establecidos');
            Ext.TaskMgr.stop(tarea);
        }
        else
        task_retarda.delay(120000);				 
    });   
};

function reclasificacion(id_reporte,actividad){
    var formreclasifica= new Ext.form.FormPanel({
        id : 'formreclasifica',
        region  :'center',
        margins :'2 2 2 2',
        frame : false,
        border : true,
        bodyStyle:'padding:5px',
        items :[
            new Ext.form.ComboBox({
              name : 'rectipo',
              id : 'rectipo',
              allowBlank : false,
              triggerAction:'all',   //trae los datos del query
              displayField : 'descripcion',
              valueField : 'id',
              emptyText : 'Seleccione ...',
              hiddenName : 'rectipo',
              editable : false,
              width : 400,
              listeners:{
                select : function (combo,registro,indice){
                    Ext.getCmp('recfamilia').enable();
                    Ext.getCmp('recfamilia').clearValue();
                    Ext.getCmp('recactividad').clearValue();
                    Ext.getCmp('recactividad').disable();
                    Ext.getCmp('recfamilia').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 : 'ctradministrador/catalogo_tipo_total'                                           
                    },
                    method : 'post'
                    }),
                root : 'data',
                fields : [
                    {name :'id'},
                    {name :'descripcion'} 
                ]
              }) //crear nuevo objeto store de datos   
                
            }),
              new Ext.form.ComboBox({
              name : 'recfamilia',
              disabled : true,
              id : 'recfamilia',
              mode: 'local',
              allowBlank : false,
              triggerAction:'all',   //trae los datos del query
              displayField : 'descripcion',
              valueField : 'id',
              emptyText : 'Seleccione ...',
              hiddenName : 'recfamilia',
              editable : false,
              width :400,     
              listeners:{
                select : function (combo,registro,indice){
                    Ext.getCmp('recactividad').enable();
                    Ext.getCmp('recactividad').clearValue();
                    Ext.getCmp('recactividad').getStore().load({params:{id:combo.getValue()}});    
                   }                                                                                            
              },                            
              fieldLabel :'Categoria ',
              store : new Ext.data.JsonStore({
                proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                    api :{
                        read : 'ctrregistro/catalogo_familia'                                           
                    },
                    method : 'post'
                    }),
                root : 'data',
                fields : [
                    {name :'id'},
                    {name :'descripcion'} 
                ]
              }) //crear nuevo objeto store de datos   
                
            }),
               new Ext.form.ComboBox({
              name : 'recactividad',
              disabled : true,
              id : 'recactividad',
              mode: 'local',
              allowBlank : false,
              triggerAction:'all',   //trae los datos del query
              displayField : 'descripcion',
              valueField : 'id',
              emptyText : 'Seleccione ...',
              hiddenName : 'recactividad',
              editable : false,
              width : 400,                                 
              fieldLabel :'Actividad',
              store : new Ext.data.JsonStore({
                proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                    api :{
                        read : 'ctrregistro/catalogo_actividad'                                           
                    },
                    method : 'post'
                    }),
                root : 'data',
                fields : [
                    {name :'id'},
                    {name :'descripcion'} 
                ]
              }) //crear nuevo objeto store de datos   
                
            })
        ]                                                                                 
    });
    
    var gridrecactividad=new Ext.grid.GridPanel({
        title:'Buscador de actividades',
        region  :'south',
        height  :300,
        margins :'2 2 2 2',
        stripeRows  :true,
        columnLines :true,
        border  :true,
        id  :'gridrecactividad',
        tbar    :[
            {xtype:'label',text:'Actividad a buscar:'},
            {xtype:'textfield',name:'reccadena',id:'reccadena',width:250}
        ],
        tools   :[
            {id:'search',qtip:'Buscar',handler:function(){
                Ext.getCmp('gridrecactividad').getStore().load({
                    params:{cadena:Ext.getCmp('reccadena').getValue()}
                });       
            }}
        ],
        store   :new Ext.data.JsonStore({
            proxy   :new Ext.data.HttpProxy({
                api :{read:'ctrregistro/buscadoractividad'},
                method  :'POST'
                
            }),
            root    :'data',
            fields:[
                {name:'id'},
                {name:'servicio'},
                {name:'categoria'},
                {name:'actividad'},
                {name:'id_tipo'}
            ]   
        }),
        autoExpandColumn:'actividad',
        columns :[
            new Ext.grid.RowNumberer(),
            {header:'ID',dataIndex:'id',width:30},
            {header:'Servicio',dataIndex:'servicio',width:150},
            {header:'Categoria',dataIndex:'categoria',width:150},
            {header:'Actividad',id:'actividad',dataIndex:'actividad',width:150,sortable:true}
        ] 
    });
        
    var winreclasifica=new Ext.Window({
        title  :'Reclasfica reporte No. '+id_reporte,
        height  : 500,
        width : 800,
        border  :false,
        layout : 'border',
        id :'winreclasifica',
        resizable : false,
        collapsible : true,
        tbar :[
            {xtype:'label',text:'Actividad registrada: '+actividad},
            {xtype:'tbfill'},
            '-',
            {text:'Reclasificar',iconCls:'guardar',handler:function(){
               if (Ext.getCmp('formreclasifica').getForm().isValid())
                    Ext.getCmp('formreclasifica').getForm().submit({
                        url: 'ctradministrador/reclasifica',
                        waitMsg : 'Espere, reclasificando reporte...',
                        params  :{id:id_reporte},
                        success: function(form,action){
                            var json=Ext.decode(action.response.responseText);
                            Ext.getCmp('gridadministrador').getStore().reload();
                            Ext.getCmp('winreclasifica').destroy();
                            msgINFO('Información','Reporte reclasificado !!!');   
                        },
                        failure : function(){
                            msgERROR('Error ','Problema al reclasificar reporte');                                                
                        }
                        
                    });
               else
                    msgALERTA('Aviso','Debe registar datos obligatorios');
                
            }}
        ],
        items : [formreclasifica,gridrecactividad]                                                      
      });
    winreclasifica.show();    
};

function cambiaestatus(id_reporte,status,descripcion_status){
    var atencioncomentario = new Ext.Window({
        title  :'Cambio de Status...'+descripcion_status+' al reporte No.'+id_reporte,
        height  : 300,
        modal : true,
        width : 500,
        layout : 'fit',
        id :'atencioncomentario',
        resizable : true,                                                         
        tbar :[
            {xtype:'tbfill'},
            {text:'Actualizar status', iconCls:'guardar', handler:function(){
                if (Ext.getCmp('formcomentario').getForm().isValid())
                    Ext.getCmp('formcomentario').getForm().submit({
                        url : 'ctradministrador/cambiostatus',
                        params : {id:id_reporte,id_status:status,descripcion:descripcion_status},                                        
                        waitMsg : 'Registrando .....',
                        success : function(form,action){
				var json=Ext.decode(action.response.responseText);
				if (json.respuesta==1){
                           		Ext.getCmp('admingridcomentarios').getStore().reload();  
                            	msgINFO('Informacion','Cambio de estatus realizado correctamente');     
				}
                          	else
				msgERROR('Error','El reporte ya se encuentra en el STATUS deseado');

				Ext.getCmp('gridadministrador').getStore().reload();
                           Ext.getCmp('atencioncomentario').destroy();                                           
                        },
                        failure:function(){
                            msgERROR('Error','Ocurrio un error al actualizar');
                        }
                    });
                else
                    msgALERTA('Aviso','Ingrese comentario ....');                                        
            }},
        ],                          
        items :[  
            new Ext.form.FormPanel({
                id : 'formcomentario',
                frame : false,
                border : false,
                bodyStyle:'padding:5px',
                items :[                                             
                    new Ext.form.TextArea({
                        name: 'statuscomentario',
                        id  : 'statuscomentario',
                        width : 300,
                        height: 150,
                        allowBlank : false,
                        blankText : 'Ingrese comentarios ',
                        fieldLabel : 'Registre su comentario '                                  
                    })                            
                ]                                                                                                                   
            })
        ]
        });
    atencioncomentario.show();
    
};

function Administrador(){
    //** PANEL PARA ADMINISTRACION DE REPORTES **///
    var g_id_actividad;
    var comboasignacion=new Ext.form.ComboBox({
        emptyText	:'Seleccione....',
    	displayField:'nombre',
    	hiddenName	:'nemp',
    	valueField 	:'nemp',
    	triggerAction	:'all',
    	name	:'comboasignacion',
        id:'comboasignacion',
    	loadingText	:'Cargando empleados...',
    	store	:new Ext.data.JsonStore({
            proxy	:new Ext.data.HttpProxy({
    	      api: {read 	:'ctradministrador/catalogo_asignacion'},
              method:'POST'
            }),
    		root	:'data',
    		fields	:['nemp','nombre']	
    	})
    });

    var gridadministrador=new Ext.grid.EditorGridPanel({
        title:'Buscador de reportes',
        region  :'center',
        stripeRows  :true,
	 columnLines:true,
        border  :false,
        id  :'gridadministrador',
        bbar    :[
             {xtype:'combo',
                emptyText	:'Seleccione Status....',
        		displayField:'descripcion',
        		hiddenName	:'combostatus',
        		valueField 	:'id',
                width   :150,
                mode   :'local',
        		triggerAction	:'all',
        		name	:'combostatus',
                id:'combostatus',
                store: new Ext.data.ArrayStore({
                    fields  :['id','descripcion'],
                    data    :[['0','Todos'],['1','Registrado'],['2','Asignado'],['3','Atendido'],['4','Solucionado'],['5','Finalizado'],['9','Cancelado']] 
                }),    
		loadingText	:'Cargando status...'
            },
            '-',
            {xtype:'tbspacer'},
             new Ext.form.ComboBox({
              name : 'combousuarios',
              id : 'combousuarios',
              triggerAction:'all',   //trae los datos del query
              displayField : 'nombre',
              valueField : 'nemp',
              emptyText : 'Asignado a...',
              hiddenName : 'combousuarios',
              editable : false,
              width : 250,                       
              store : new Ext.data.JsonStore({
                proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                    api :{
                        read : 'ctradministrador/catalogo_usuarios'
                    },
                    method : 'post'
                    }),
                root : 'data',
                fields : [
                    {name :'nemp'},
                    {name :'nombre'} 
                ]
              }) //crear nuevo objeto store de datos   
            }),
            {text:'Reset',handler:function(){Ext.getCmp('combousuarios').clearValue()}},'-',
	      new Ext.form.ComboBox({
              name : 'admincactividad',
              id : 'admincactividad',
              triggerAction:'all',   //trae los datos del query
              displayField : 'descripcion',
              valueField : 'id',
              emptyText : 'Seleccione Servicio...',
              hiddenName : 'admincactividad',
              editable : false,
              width : 250,                       
              fieldLabel :'Actividad ',
              store : new Ext.data.JsonStore({
                proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                    api :{
                        read : 'ctradministrador/catalogo_actividades_consultas'                                          
                    },
                    method : 'post'
                    }),
                root : 'data',
                fields : [
                    {name :'id'},
                    {name :'descripcion'} 
                ]
              }) //crear nuevo objeto store de datos   
            }),
            {text:'Reset',handler:function(){Ext.getCmp('admincactividad').clearValue()}},
	     {xtype:'tbfill'},
            '-',
	       {text:'Atencion',iconCls:'atender',handler:function(){
                    var registro=Ext.getCmp('gridadministrador').getSelectionModel().getSelectedCell();	//selecciona los datos de la celda ubicada
                    if(!registro){msgALERTA('Aviso','Seleccione un reporte...');return false;}
                    var registro = Ext.getCmp('gridadministrador').store.getAt(registro[0]);
                    
                    if (registro.get('status') == 2 && registro.get('atencion')=='t' ){
                        sesion();
                        cambiaestatus(registro.get('id'),'3','ATENDIDO');}           		                   		
                    else
			           msgALERTA('Aviso','El reporte no puede ser ATENDIDO nuevamente o NO TIENE PERMISOS');             
            }},
            {text:'Solucion',iconCls:'solucion',handler:function(){
                    var registro=Ext.getCmp('gridadministrador').getSelectionModel().getSelectedCell();	//selecciona los datos de la celda ubicada
                    if(!registro){msgALERTA('Aviso','Seleccione un reporte...');return false;}
                    var registro = Ext.getCmp('gridadministrador').store.getAt(registro[0]);
                    
                    if (registro.get('status') == 3 && registro.get('solucion')=='t' ){
           		       	sesion();
           		        cambiaestatus(registro.get('id'),'4','SOLUCION');   
        		      }
                   else 
                        msgALERTA('Aviso','El reporte no puede ser SOLUCIONADO nuevamente o NO TIENE PERMISOS');
		                   
            }},
            {text:'Cancelar',iconCls:'cancelar',handler:function(){
                    var registro=Ext.getCmp('gridadministrador').getSelectionModel().getSelectedCell();	//selecciona los datos de la celda ubicada
                    if(!registro){msgALERTA('Aviso','Seleccione un reporte...');return false;}
                    var registro = Ext.getCmp('gridadministrador').store.getAt(registro[0]);
                    
                     if (registro.get('status') < 3 && registro.get('cancelacion')=='t' ){
           		        sesion();
           	 	        cambiaestatus(registro.get('id'),'9','CANCELA');  
        		        } 
                     else
                        msgALERTA('Aviso','El reporte no puede ser CANCELADO nuevamente o NO TIENE PERMISOS');
			          
            }}


        ],
        tbar :[
            {xtype:'tbspacer'},
            '-',
            {xtype:'tbspacer'},
            {xtype:'label',text:'Fecha inicial'},
            {xtype:'tbspacer'},
            new Ext.form.DateField({
                name:'adminfechainicial',
                id  :'adminfechainicial',
                width   :100,
                emptyText   :'Seleccione...',
                format  :'Y-m-d',
                value: new Date()
            }),
            {xtype:'tbspacer'},
            {xtype:'label',text:'Fecha final'},
            {xtype:'tbspacer'},
            new Ext.form.DateField({
                name:'adminfechafinal',
                id  :'adminfechafinal',
                width   :100,
                emptyText   :'Seleccione...',
                format  :'Y-m-d',
                value: new Date()
            }),
	     {xtype:'tbspacer'},
            '-',
	     {xtype:'numberfield',id  :'adminfolio',name    :'adminfolio',emptyText   :'No.Reporte',width   :75,allowDecimals   :false,allowNegative   :false},
            '-',
            {xtype:'tbspacer'},
	     {xtype:'textfield',name:'adminfrase',id:'adminfrase',width:300,emptyText:'Buscar frase...'},
            {xtype:'tbfill'},
            '-',
            {text:'Reclasificacion',iconCls:'reclasificar',handler:function(){
                	var registro=Ext.getCmp('gridadministrador').getSelectionModel().getSelectedCell();	//selecciona los datos de la celda ubicada
                    	if(!registro){msgALERTA('Aviso','Seleccione un reporte...');return false;}
                    	var registro = Ext.getCmp('gridadministrador').store.getAt(registro[0]);
                    
                    	if (registro.get('status') <= 2 && registro.get('reasignacion')=='t' ){
             		      sesion();
        			reclasificacion(registro.get('id'),registro.get('actividad')); 
       		}
			else			
				msgALERTA('Aviso','El reporte no puede ser RECLASIFICADO o NO TIENE PERMISOS');

			
            }},
            '-',
            {text:'Buscar (F2)',iconCls:'consultar',handler:function(){
               BuscarInfo();                                     
            }}
        ],
        store   :new Ext.data.JsonStore({
            proxy   :new Ext.data.HttpProxy({
                api :{read:'ctradministrador/consultas_admin'},
                method  :'POST'
                
            }),
            root    :'data',
            id:'id',
            fields:[
                {name:'id',type:'integer'},
                {name:'asignado_a',type:'string'},
                {name:'fecha_registro'},
                {name:'registrado_por'},
                {name:'actividad'},
                {name:'observaciones'},
                {name:'status'},
                {name:'fecha_asignacion'},
                {name:'fecha_atencion'},
                {name:'fecha_solucion'},
                {name:'fecha_finalizacion'},
                {name:'fecha_cancelacion'},
                {name:'cvelib'},
                {name:'id_actividad'},
		  {name:'asignacion'},
		  {name:'hora_registro'},
		  {name:'atencion'},
                {name:'solucion'},
		  {name:'cancelacion'},
		  {name:'reasignacion'},
		  {name:'adjuntos'}
            ]   
        }),
        columns :[
            new Ext.grid.RowNumberer({width:50}),
            {header:'No',dataIndex:'id',width:50,sortable:true,tooltip:'Numero de reporte',sortable:true,renderer:function(value, metaData, record, rowIndex, colIndex, store){
		if(record.get('adjuntos')==0) return value;
              else return '<img src="'+base_url+'application/extjs/resources/images/clip.png"> '+value;
	     }},
            {header:'Status',align:'center',dataIndex:'status',width:50,renderer:function(value, metaData, record, rowIndex, colIndex, store)
            {
                 switch(value){
                    case '1':return '<img src="'+base_url+'application/extjs/resources/images/registrado.png">';break;
                    case '2':return '<img src="'+base_url+'application/extjs/resources/images/asignar.png">';break;
                    case '3':return '<img src="'+base_url+'application/extjs/resources/images/atender.png">';break;
                    case '4':return '<img src="'+base_url+'application/extjs/resources/images/solucion.png">';break;
		      case '5':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                    case '9':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                }       
            },sortable:true},
            {header:'Fecha Registro',dataIndex:'fecha_registro',width:100},
	     {header:'Hora Registro',dataIndex:'hora_registro',width:100},
            {header:'Registrado por',dataIndex:'registrado_por',renderer:function(value, metaData, record, rowIndex, colIndex, store){
                if(record.get('cvelib')==null) return value;
                else return '<img src="'+base_url+'application/extjs/resources/images/libreria.png"> '+value;
                
            },width:250,sortable:true},
            {header:'Asignado a',dataIndex:'asignado_a',width:300,editor:comboasignacion,sortable:true},
            {header:'Actividad',dataIndex:'actividad',width:300,sortable:true,sortable:true},
            {header:'Fecha Asignacion',dataIndex:'fecha_asignacion',width:100},
            {header:'Fecha Atencion',dataIndex:'fecha_atencion',width:100},
            {header:'Fecha Solucion',dataIndex:'fecha_solucion',width:100},
            {header:'Fecha Finalizacion',dataIndex:'fecha_finalizacion',width:100},
            {header:'Fecha Cancelacion',dataIndex:'fecha_cancelacion',width:100}
        ]
    });
    
    Ext.getCmp('gridadministrador').on('afteredit',function(){
       var modificados=Ext.getCmp('gridadministrador').getStore().getModifiedRecords();
	var registros=[];
	Ext.each(modificados,function(record){
		registros.push(Ext.apply({id:record.id},{status:record.data['status'],asignacion:record.data['asignacion'],nemp:record.data['asignado_a']}));
   	});

	Ext.getCmp('gridadministrador').stopEditing();
	var celda=Ext.getCmp('gridadministrador').getSelectionModel().getSelectedCell();
	var celda=Ext.getCmp('gridadministrador').store.getAt(celda[0]);
	registros=Ext.encode(registros);
		Ext.Ajax.request({
			url:'ctradministrador/asignar',
			method  :'POST',
			params	:{records:registros},
			success	:function(response,request){
				var json=Ext.decode(response.responseText);
				if(json.respuesta==0){
					msgALERTA('Aviso','El reporte no puede ser asignado nuevamente o no tiene permisos ');
					Ext.getCmp('gridadministrador').getStore().rejectChanges();
				}
				else{
					Ext.getCmp('gridadministrador').getStore().commitChanges();
					Ext.getCmp('gridadministrador').getStore().reload();
					Ext.getCmp('admingridcomentarios').getStore().load({
                			params: {id:celda.get('id')}
            				}); 
				}
			},
			failure	:function(){
                	Ext.getCmp('gridadministrador').getStore().rejectChanges();
				msgERROR('Mensaje','Ocurrio un error al actualizar')
			}	
        	});    
    },this);
    
    this.admingridadjuntos=new Ext.grid.GridPanel({
        region  :'east',
        title:'Adjuntos',
        stripeRows  :true,
        margins :'2 2 2 2',
        width   :600,
        border  :true,
	 tbar    :{
            defaults	:{scope:this},
            items   :[
                {xtype:'tbfill'},
                {text:'Adjuntar',iconCls:'agregar',handler:function(){
                    var registro=Ext.getCmp('gridadministrador').getSelectionModel().getSelectedCell();	
                    if(!registro){msgALERTA('Aviso','Seleccione un reporte...');return false;}
                    var registro = Ext.getCmp('gridadministrador').store.getAt(registro[0]);
                    if (registro.get('status')=='Finalizado' || registro.get('status')=='Cancelado' ){
           		       msgALERTA('Aviso','El reporte ya esta finalizado o cancelado, NO puede adjuntar');
            		  return false;
        		      }
           	 		this.adminventanaupload=new Ext.Window({
        				title:'Adjuntar',
        				bodyStyle	:'padding: 10px',
        				width:600,
        				layout	:'fit',
        				height:200,
        				modal:true,
        				items:[
                            new Ext.FormPanel({
                                id  :'adminpaneladjunto',
                				fileUpload	:true,
                				bodyStyle	:'padding: 5px',
                				defaults	:{
                				    labelWidth  :250,
                					allowBlank	:false,
                					msgTarget	:'side'
                				},
                				items		:[
                					{xtype:'fileuploadfield',id:'userfile',anchor:'75%',emptyText:'Seleccione un archivo',fieldLabel:'Archivo',name:'userfile',buttonText:'',buttonCfg:{iconCls:'upload-icon'}},
                                    {xtype:'textarea',maxLength:60,maxLengthText:'Este campo admite solo 60 caracteres',name:'admindescripcion',anchor:'75%',height:50,fieldLabel:'Descripcion del archivo'},
                                    {xtype:'textfield',name:'adminfolio_reporte',hidden:true,value:registro.get('id')}
                				],
                				buttons		:[
                					{text:'Subir',handler:function(){
                						if(Ext.getCmp('adminpaneladjunto').getForm().isValid()){
                							Ext.getCmp('adminpaneladjunto').getForm().submit({
                								url		:'ctradjuntar/upload_admin',
                								waitMsg	:'Subiendo imagen...',
                								method	:'POST',
                								scope	:this,
                								success	:function(form,action){
                									var json=Ext.util.JSON.decode(action.response.responseText);
                									Ext.getCmp('adminpaneladjunto').getForm().reset();
                                                    Ext.getCmp('admingridadjuntos').getStore().reload();
                									msgINFO('Informacion',json.mensaje);	
                								},
                								failure	:function(form,action){
                									var json=Ext.util.JSON.decode(action.response.responseText);
                									window.msgERROR('Error','Imposible adjuntar, '+json.mensaje);
                								}	
                							});
                						}else{
                							window.msgERROR('Error','Seleccione archivo a adjuntar por favor...')
                						}
                					}
                					,scope:this},{text:'Limpiar',handler:function(){Ext.getCmp('adminpaneladjunto').getForm().reset()}}
                				]
        			         })
                        ]
        				
        			});
        			this.adminventanaupload.show();
                }}
            ]
        },
        id  :'admingridadjuntos',
        store   :new Ext.data.JsonStore({
            proxy   :new Ext.data.HttpProxy({
                api :{read:'ctradjuntar/consulta_adjuntos'},
                method  :'POST'
            }),
            root    :'data',
            fields:[
                {name:'id'},
                {name:'hora'},
                {name:'fecha'},
                {name:'adjunto'},
                {name:'id_maagtic_reportes'},
                {name:'nombre_adjunto'},
                {name:'nombre_original'},
                {name:'observaciones'}
            ]   
        }),
        columns :[
            new Ext.grid.RowNumberer(),
            {header:'Fecha',dataIndex:'fecha',width:75},
            {header:'Adjunto',dataIndex:'adjunto',width:200},
            {header:'Nombre archivo',dataIndex:'nombre_original',width:200,sortable:true},
            {header:'Observaciones',dataIndex:'observaciones',width:500}
        ]  
    });
    
   this.admingridadjuntos.on('rowdblclick',function(grid,index,e){
        var registro=grid.store.getAt(index);
        VerAdjunto(registro.data['nombre_adjunto'],registro.data['nombre_original']);
				
    });
    
    var adminpanelca=new Ext.Panel({
       region   :'south',
       split    :true,
       collapsible  :true,
       border   :false,
       height   :250,
       layout   :'border',
       items    :[
       new Ext.grid.GridPanel({
            region  :'center',
            title:'Comentarios',
            stripeRows  :true,
            border  :true,
            margins  :'2 2 2 2',
            id  :'admingridcomentarios',
            store   :new Ext.data.JsonStore({
                proxy   :new Ext.data.HttpProxy({
                    api :{read:'ctrregistro/consulta_comentarios'},
                    method  :'POST'
                }),
                root    :'data',
                id : 'hora',
                fields:[
                    {name:'id'},
                    {name:'fecha'},
                    {name:'hora'},
                    {name:'comento'},
                    {name:'descripcion'}
                ]   
            }),
            columns :[
                new Ext.grid.RowNumberer(),
                {header:'No.Reporte',dataIndex:'id',width:75,sortable:true},
                {header:'Fecha',dataIndex:'fecha',width:75,sortable:true},
                {header:'Hora',dataIndex:'hora',width:100},
                {header:'Comento',dataIndex:'comento',width:200},
                {header:'Descripcion',id:'descripcion',dataIndex:'descripcion',width:500}
            ]  
        }),
        this.admingridadjuntos
       ]
    });
    
    var panelobservaciones= new Ext.Panel({
       region: 'east',
       border:true,
       margins:'2 2 2 2',
       title:'Descripcion del problema',
       collapsible:true,
       split:true,
       id:'panelobservaciones',
       bodyStyle:'padding:5px; font-size:14px',      
       width: '40%'
    });
    var respanelca=new Ext.Panel({
       border:false,
       layout:'border',
       region:'center',
       items:[gridadministrador,panelobservaciones]
        
    });
    
    this.adminpanelconsultas=new Ext.Panel({
        title   :'Reportes',
        layout  :'border',
        border  :false,
	 id:'adminpanelconsultas',
        items   :[respanelca,adminpanelca]
    });
    
    new Ext.KeyMap(document, {
    		key: [113],
              scope   :this,
    		handler: function(k, e) {
    			switch(k) {
    		      case 113 :BuscarInfo();break;
                     }
    		},
    		stopEvent: true
    });

    Ext.getCmp('gridadministrador').on('cellclick', function(grid,index,columna,e){
        var registro=grid.store.getAt(index);
        g_id_actividad=registro.get('id_actividad');
        Ext.getCmp('comboasignacion').getStore().load({params:{id_actividad:g_id_actividad}}); 

        if(columna==1){
            if (registro.get('status')=='Finalizado' || registro.get('status')=='Cancelado' ){
                                msgALERTA('Aviso','El reporte ya esta finalizado o cancelado, NO puede agregar comentarios');
                                return false;
            }
	     Ext.getCmp('panelobservaciones').setTitle('No. Reporte'+registro.get('id')+'. Descripcion');
            Ext.getCmp('panelobservaciones').body.update(registro.get('observaciones'));
            Ext.getCmp('admingridcomentarios').getStore().load({
                params: {id:registro.get('id')}
            }); 
            Ext.getCmp('admingridadjuntos').getStore().load({
                params: {id:registro.get('id')}
            }); 
        }        
    });   
                     
    Ext.getCmp('gridadministrador').on('celldblclick',function(grid,index,columna,e){
        if(columna==1){
            var registro=grid.store.getAt(index);
            if (registro.get('status')=='Finalizado' || registro.get('status')=='Cancelado' ){
                                msgALERTA('Aviso','El reporte ya esta finalizado o cancelado, NO puede agregar comentarios');
                                return false;
            }
            Fcomentario(registro.get('id'),Ext.getCmp('admingridcomentarios'));
        }    
    },this);
    
//** TAB DE REPOSITORIO DE CONOCIMIENTO 
    
    var panelsolucion=new Ext.Panel({
        region:'east',
        width   :'40%',
        split   :true,
        layout  :'border',
        collapsible :true,
        items   :[
            new Ext.grid.GridPanel({
                title   :'Solucion de Actividades',
                id  :'gridsolconocimiento',
                region  :'center',
                margins :'2 2 2 2',
                stripeRows  :true,
                border  :true,
                store   :new Ext.data.JsonStore({
                    proxy   :new Ext.data.HttpProxy({
                        api :{read:'ctrcatalogos/soluciones'},
                        method  :'POST'
                    }),
                    root    :'data',
                    id : 'id',
                    fields:[
                        {name:'id'},
                        {name:'descripcion'},
                        {name:'nombre_solucion'},
                        {name:'fecha_solucion'}
                    ]   
                }),
                autoExpandColumn:'nombre_solucion',
                columns :[
                    new Ext.grid.RowNumberer(),
                    {header:'No.Reporte',dataIndex:'id',width:75},
                    {header:'Fecha Solucion',dataIndex:'fecha_solucion',width:100,sortable:true},
                    {header:'Soluciono',id:'nombre_solucion',dataIndex:'nombre_solucion'}
                ],
                listeners:{
                    rowclick:function(grid,index,e){
                        var registro=grid.store.getAt(index);
                        Ext.getCmp('descripcionsolucion').body.update(registro.get('descripcion'));
                    }
                }   
            }),
            new Ext.Panel({
                id:'descripcionsolucion',
                bodyStyle   :'padding:5px;font-size:14px',
                region  :'south',
                margins :'2 2 2 2',
                height  :250,
                title   :'Descripcion de solucion'
            })
        ]
    });
    
    
    var conocimiento=new Ext.grid.GridPanel({
            title   :'Listado de Actividades',
            id  :'gridactconocimiento',
            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('gridactconocimiento').getStore().load({params:{cadena:el.getValue()}});	
    				    }   
                    }
                }
            ],
            store   :new Ext.data.JsonStore({
                proxy   :new Ext.data.HttpProxy({
                    api :{read:'ctrcatalogos/catalogo_actividades_repositorio'},
                    method  :'POST'
                }),
                root    :'data',
                id : 'id',
                fields:[
                    {name:'id'},
                    {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:50},
                {header:'Actividad',dataIndex:'descripcion',width:200},
                {header:'Oficina',align:'center',dataIndex:'oficina',width:75,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,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,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,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}
            ],
            listeners:{
                rowclick:function(grid,index,e){
                    var registro=grid.store.getAt(index);
                    Ext.getCmp('descripcionsolucion').body.update('');
                    Ext.getCmp('gridsolconocimiento').getStore().load({params:{id_actividad:registro.get('id')}});
                }
            }
        });
    
    var repositorioconocimiento=new Ext.Panel({
        title:'Repositorio de conocimiento',
        id  :'repositorio',
        layout  :'border',
        items   :[conocimiento,panelsolucion]
    });
    

    //** PANEL PARA ADMINISTRACION DE REPORTES **///
    
    var Tab=new Ext.TabPanel({
        activeTab:0,
        border  :false,
        items:[this.adminpanelconsultas,mantenimiento,repositorioconocimiento],
        listeners   :{
            tabchange   :function(panel,tab){
                if(tab.id=='repositorio'){
                    var mascara=new Ext.LoadMask(Ext.getBody(),{msg:'Buscando  actividades, espere un momento...',store: Ext.getCmp('gridactconocimiento').getStore()});
                    mascara.show();
                    Ext.getCmp('gridactconocimiento').getStore().load({params:{cadena:''}});
                }
                       
            }
            
        }       
    });
    
    var VentanaAdmin=new Ext.Window({
        title:'Administrador',
        width   :800,
        height  :500,
        layout  :'fit',
        border  :true,
	 maximized:true,

        maximizable :true,
        minimizable :true,
        collapsible :true,
        iconCls :'admin2',
        items   :[Tab]
    });

     VentanaAdmin.show();
    
}
