protected void DropDownList_IdActividad_SelectedIndexChanged(object sender, EventArgs e)
    {
        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        if (DropDownList_IdActividad.SelectedIndex <= 0)
        {
            DropDownList_Tipo.SelectedIndex = 0;
            DropDownList_Sector.SelectedIndex = 0;
            DropDownList_EstadoActividad.SelectedIndex = 0;
            TextBox_DescripcionActividad.Text = "";
        }
        else
        {
            Decimal ID_ACTIVIDAD = Convert.ToDecimal(DropDownList_IdActividad.SelectedValue.Split(':')[1]);

            ActividadRseGlobal _act = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaAct = _act.ObtenerActividadPorId(ID_ACTIVIDAD, AREA);

            DataRow filaAct = tablaAct.Rows[0];

            DropDownList_Tipo.SelectedValue = filaAct["TIPO"].ToString().Trim();
            DropDownList_Sector.SelectedValue = filaAct["SECTOR"].ToString().Trim();
            DropDownList_EstadoActividad.SelectedValue = filaAct["ACTIVO"].ToString().Trim();

            TextBox_DescripcionActividad.Text = filaAct["DESCRIPCION"].ToString().Trim();
        }
    }
    protected void Button_GAURDAR_ACTIVIDAD_Click(object sender, EventArgs e)
    {
        Decimal ID_PROGRAMA_GENERAL = Convert.ToDecimal(HiddenField_ID_PROGRAMA_GENERAL.Value);
        Decimal ID_ACTIVIDAD = Convert.ToDecimal(DropDownList_IdActividad.SelectedValue);

        Programa.Areas AREA_ACTIVIDAD = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        Int32 ANNO = Convert.ToInt32(HiddenField_ANNO.Value);

        ActividadRseGlobal _actividad = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable TablaActividad = _actividad.ObtenerActividadPorId(ID_ACTIVIDAD, AREA_ACTIVIDAD);
        DataRow filaActividad = TablaActividad.Rows[0];

        String NOMBRE_ACTIVIDAD = filaActividad["NOMBRE"].ToString().Trim();

        Decimal ID_SUB_PROGRAMA = 0;

        Decimal ID_DETALLE_GENERAL_PADRE = 0;
        if (HiddenField_TIPO_NODO_SELECCIONADO.Value == TiposNodo.PROGRAMA.ToString())
        {
            ID_DETALLE_GENERAL_PADRE = 0;
        }
        else
        {
            ID_DETALLE_GENERAL_PADRE = Convert.ToDecimal(HiddenField_ID_NODO_SELECCIONADO.Value);
        }

        Programa _programa = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Boolean verificado = _programa.AdicionarDetalleGeneral(ID_PROGRAMA_GENERAL, TiposNodo.ACTIVIDAD.ToString(), ID_DETALLE_GENERAL_PADRE, ID_SUB_PROGRAMA, ID_ACTIVIDAD);

        ocultar_mensaje(Panel_FONDO_ACTIVIDAD, Panel_CONTENIDO_ACTIVIDAD);

        if (verificado == true)
        {
            DataTable tablaEsquemaPrograma = ObtenerEstructuraTablaPrograma();
            Cargar(tablaEsquemaPrograma);
            Cargar_GridView_EsquemaPrograma_DesdeTabla(tablaEsquemaPrograma);

            Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, "El Programa para el año " + ANNO + " fue correctamente actualizado.", Proceso.Correcto);
        }
        else
        {
            Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, "El Programa para el año " + ANNO + " no puedo ser actualizado: " + _programa.MensajeError, Proceso.Error);
        }
    }
    private void Cargar(Listas lista, DropDownList drop)
    {
        switch (lista)
        {
            case Listas.SubProgramas:
                SubPrograma _sub = new SubPrograma(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                Programa.Areas AREA_SUBPROGRAMA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);
                DataTable tablaSubProgramas = _sub.ObtenerSubProgramasPorArea(AREA_SUBPROGRAMA);

                drop.Items.Clear();
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaSubProgramas.Rows)
                {
                    if (fila["ACTIVO"].ToString().Trim() == "True")
                    {
                        drop.Items.Add(new ListItem(fila["NOMBRE"].ToString().Trim(), fila["ID_SUB_PROGRAMA"].ToString().Trim()));
                    }
                }

                drop.DataBind();
                break;
            case Listas.Actividades:

                ActividadRseGlobal _act = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                Programa.Areas AREA_ACTIVIDAD = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);
                DataTable tablaActividad = _act.ObtenerActividadesPorArea(AREA_ACTIVIDAD);

                drop.Items.Clear();
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaActividad.Rows)
                {
                    if (fila["ACTIVO"].ToString().Trim() == "True")
                    {
                        drop.Items.Add(new ListItem(fila["NOMBRE"].ToString().Trim(), fila["ID_ACTIVIDAD"].ToString().Trim()));
                    }
                }

                drop.DataBind();
                break;
            case Listas.EstadosSubProgramas:
                drop.Items.Clear();
                parametro _parametroSP = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosSP = _parametroSP.ObtenerParametrosPorTabla(tabla.PARAMETROS_ESTADO_SUB_PROGRAMA);
                ListItem itemSP = new ListItem("Seleccione...", "");
                drop.Items.Add(itemSP);
                foreach (DataRow fila in tablaParametrosSP.Rows)
                {
                    itemSP = new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString());
                    drop.Items.Add(itemSP);
                }
                drop.DataBind();
                break;
            case Listas.EstadosActividades:
                drop.Items.Clear();
                parametro _parametroAC = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosAC = _parametroAC.ObtenerParametrosPorTabla(tabla.PARAMETROS_ESTADO_ACTIVIDAD_RSE_GLOBAL);
                ListItem itemAC = new ListItem("Seleccione...", "");
                drop.Items.Add(itemAC);
                foreach (DataRow fila in tablaParametrosAC.Rows)
                {
                    itemAC = new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString());
                    drop.Items.Add(itemAC);
                }
                drop.DataBind();
                break;
            case Listas.TiposActividad:

                Programa.Areas AREA_TIPO_ACTIVIDAD = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

                drop.Items.Clear();
                TipoActividad _tipoActividad = new TipoActividad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataTable tablaParametrosTA = _tipoActividad.ObtenerTiposActividadPorAreayEstado(AREA_TIPO_ACTIVIDAD, true);
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaParametrosTA.Rows)
                {
                    drop.Items.Add(new ListItem(fila["NOMBRE"].ToString(), fila["NOMBRE"].ToString()));
                }
                drop.DataBind();
                break;
            case Listas.SectoresActividad:
                drop.Items.Clear();
                parametro _parametroSA = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosSA = _parametroSA.ObtenerParametrosPorTabla(tabla.PARAMETROS_SECTORES_ACTIVIDAD);
                drop.Items.Add(new ListItem("Seleccione...", ""));
                foreach (DataRow fila in tablaParametrosSA.Rows)
                {
                    drop.Items.Add(new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString()));
                }
                drop.DataBind();
                break;
        }
    }
    private void Guardar()
    {
        String NOMBRE = TextBox_Nombre.Text.Trim();

        String TIPO = DropDownList_Tipo.SelectedValue;
        String SECTOR = DropDownList_Sector.SelectedValue;

        String DESCRIPCION = TextBox_Descripcion.Text.Trim();

        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        ActividadRseGlobal _actividad = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Decimal ID_ACTIVIDAD = _actividad.Adicionar(NOMBRE, DESCRIPCION, TIPO, SECTOR, AREA);

        if (ID_ACTIVIDAD <= 0)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _actividad.MensajeError, Proceso.Error);
        }
        else
        {
            Cargar(ID_ACTIVIDAD);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La Actividad " + NOMBRE + " fue creada correctamente y se le asignó el ID: " + ID_ACTIVIDAD.ToString(), Proceso.Correcto);
        }
    }
    private void cargar_GridView_RESULTADOS_BUSQUEDA()
    {
        tools _tools = new tools();
        SecureQueryString QueryStringSeguro;
        QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"]);

        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        ActividadRseGlobal _actividad = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaActividades = _actividad.ObtenerActividadesPorArea(AREA);

        if (tablaActividades.Rows.Count <= 0)
        {
            if (_actividad.MensajeError == null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron registros de Actividades.", Proceso.Advertencia);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _actividad.MensajeError, Proceso.Error);
            }

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaActividades;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }
    private void Cargar(Decimal ID_ACTIVIDAD)
    {
        HiddenField_ID_ACTIVIDAD.Value = ID_ACTIVIDAD.ToString();

        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        ActividadRseGlobal _actividad = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaActividad = _actividad.ObtenerActividadPorId(ID_ACTIVIDAD, AREA);

        if (tablaActividad.Rows.Count <= 0)
        {
            if (String.IsNullOrEmpty(_actividad.MensajeError) == false)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _actividad.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información de la actividad seleccionada", Proceso.Error);
            }
        }
        else
        {
            Ocultar(Acciones.Inicio);
            Desactivar(Acciones.Inicio);
            Mostrar(Acciones.Cargar);
            Cargar(Acciones.Cargar);

            DataRow filaActividad = tablaActividad.Rows[0];

            CargarControlRegistro(filaActividad);

            CargarInformacionActividad(filaActividad);
        }
    }
    private void Buscar()
    {
        Ocultar(Acciones.Inicio);
        Desactivar(Acciones.Inicio);
        Mostrar(Acciones.Inicio);

        String datosCapturados = HiddenField_FILTRO_DATO.Value;
        String campo = HiddenField_FILTRO_DROP.Value;

        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        ActividadRseGlobal _actividad = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaResultadosBusqueda = new DataTable();

        if (campo == "ID_ACTIVIDAD")
        {
            tablaResultadosBusqueda = _actividad.ObtenerActividadPorId(Convert.ToDecimal(datosCapturados), AREA);
        }
        else
        {
            if (DropDownList_BUSCAR.SelectedValue == "NOMBRE")
            {
                tablaResultadosBusqueda = _actividad.ObtenerActividadesPorNombre(datosCapturados, AREA);
            }
            else
            {
                if (DropDownList_BUSCAR.SelectedValue == "TIPO")
                {
                    tablaResultadosBusqueda = _actividad.ObtenerActividadesPorTipo(datosCapturados, AREA);
                }
                else
                {
                    if (DropDownList_BUSCAR.SelectedValue == "SECTOR")
                    {
                        tablaResultadosBusqueda = _actividad.ObtenerActividadesPorSector(datosCapturados, AREA);
                    }
                }
            }
        }

        if (tablaResultadosBusqueda.Rows.Count <= 0)
        {
            if (_actividad.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _actividad.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron registros que cumplieran los datos de busqueda.", Proceso.Advertencia);
            }

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            Panel_RESULTADOS_GRID.Visible = true;

            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaResultadosBusqueda;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }
    private void Actualizar()
    {
        Decimal ID_ACTIVIDAD = Convert.ToDecimal(HiddenField_ID_ACTIVIDAD.Value);

        String NOMBRE = TextBox_Nombre.Text.Trim();

        String TIPO = DropDownList_Tipo.SelectedValue;
        String SECTOR = DropDownList_Sector.SelectedValue;

        String DESCRIPCION = TextBox_Descripcion.Text.Trim();

        Boolean ACTIVO = true;

        if (DropDownList_EstadoActividad.SelectedValue == "False")
        {
            ACTIVO = false;
        }

        ActividadRseGlobal _actividad = new ActividadRseGlobal(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Boolean verificado = _actividad.Actualizar(ID_ACTIVIDAD, NOMBRE, DESCRIPCION, TIPO, SECTOR, ACTIVO);

        if (verificado == false)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _actividad.MensajeError, Proceso.Error);
        }
        else
        {
            Cargar(ID_ACTIVIDAD);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La Actividad " + NOMBRE + " fue Actualizada correctamente.", Proceso.Correcto);
        }
    }