private void AsignarDestino(string id)
    {
        Button ibut = (Button)TEnlacesInternos.FindControl(id);

        if (ibut != null && ibut.CssClass == "BtnPanelTfAsignado")
        {
            //if (ibut != null && ibut.ImageUrl == "~/Configuracion/Images/BotonEnlaceInternoAs.jpg")
            DesasignarDestino(id);
        }
        TBoxLiteral.Text = (string)ViewState["IdDestino"];
        DListPrioridadSIP.SelectedIndex = 0;
        Panel2.Visible = true;
    }
    protected void CeldaEnlaceTelefonia_OnClick(object sender, EventArgs e)
    {
        Button ibut = (Button)TEnlacesInternos.FindControl(((Button)sender).ID);

        if (ibut != null && ibut.CssClass == "BtnPanelRadioLibre")
        {
            BtLiberar.Enabled  = false;
            BModificar.Enabled = false;

            //El botón Asignar sólo debe estar habilitado si el botón seleccionado del panel está libre y
            //se ha seleccionado algún destino de la lista
            if (LBoxDestinos.SelectedIndex >= 0)
            {
                BtAsignar.Enabled      = PermisoSegunPerfil;
                ViewState["IdDestino"] = LBoxDestinos.SelectedItem.Text;
                ViewState["IdPrefijo"] = LBoxDestinos.SelectedValue.Replace(LBoxDestinos.SelectedItem.Text, "");
            }
            else
            {
                BtAsignar.Enabled = false;
            }
        }
        else
        {
            BtLiberar.Enabled  = PermisoSegunPerfil;
            BModificar.Enabled = true;
            BtAsignar.Enabled  = false;
        }

        if (ibut.Text != "" || PermisoSegunPerfil)
        {
            ViewState["IdBoton"]     = ((Button)sender).ID;
            TEnlacesInternos.Enabled = false;
            LBoxDestinos.Enabled     = false;
            BtLC.Enabled             = false;
            BtRadio.Enabled          = false;
            IButPagAbajo.Enabled     = false;
            IButPagArriba.Enabled    = false;
            BtSector.Enabled         = false;

            Panel1.Visible = true;
        }
        else if (!PermisoSegunPerfil)
        {
            PanelNoPermissions.Visible = true;
        }
    }
    private void LimpiarPanel()
    {
        uint numFilas     = (NumPosicionesPag / NumColumnasVisibles) + 1;
        int  visibleCount = 0;

        for (int i = 1; i < numFilas * NUM_COLUMNAS_FIJAS; i++)
        {
            TableCell tCell = (TableCell)TEnlacesInternos.FindControl("TableCell" + i.ToString());
            if (tCell != null)
            {
                int fila    = (i - 1) / (int)NUM_COLUMNAS_FIJAS; //0..NUM_COLUMNAS_FIJAS
                int columna = (i - 1) % (int)NUM_COLUMNAS_FIJAS; //0..NUM_COLUMNAS_FIJAS
                if ((fila <= numFilas) && (columna < NumColumnasVisibles))
                {
                    tCell.Visible = true;
                    if (++visibleCount <= NumPosicionesPag)
                    {
                        tCell.Enabled = true;
                    }
                    else
                    {
                        tCell.Enabled = false;
                        // JOI: #4487
                        tCell.Visible = false;
                    }
                }
                else
                {
                    tCell.Visible = false;
                }
                Button ibut = (Button)TEnlacesInternos.FindControl("Button" + i.ToString());
                if (ibut != null)
                {
                    ibut.CssClass = "BtnPanelRadioLibre";
                    ibut.Text     = "";
                }
            }
        }
    }
    private void MostrarInternos()
    {
        uint posini = ((numPagActual - 1) * NumPosicionesPag) + 1;
        uint posfin = posini + NumPosicionesPag - 1;

        if (datosInternos != null)
        {
            for (int i = 0; i < datosInternos.Length; i++)
            {
                uint posHmi = ((ServiciosCD40.DestinosInternosSector)datosInternos[i]).PosHMI;
                if ((posHmi >= posini) && (posHmi <= posfin))
                {
                    uint   posenpanel = CalculatePosButton(posHmi);
                    Button ibut       = (Button)TEnlacesInternos.FindControl("Button" + posenpanel.ToString());
                    // TextBox tbox = (TextBox)TEnlacesInternos.FindControl("TextBox" + posenpanel.ToString());
                    ibut.CssClass = "BtnPanelTfAsignado";
                    //ibut.ImageUrl = "~/Configuracion/Images/BotonEnlaceInternoAs.jpg";
                    ibut.Text = ((ServiciosCD40.DestinosInternosSector)datosInternos[i]).Literal;
                    prefijosPosiciones[posHmi] = ((ServiciosCD40.DestinosInternosSector)datosInternos[i]).IdPrefijo;
                }
            }
        }
    }
    private void DesasignarDestino(string id)
    {
        try
        {
            Button ibut = (Button)TEnlacesInternos.FindControl(id);
            // TextBox tbox = (TextBox)TEnlacesInternos.FindControl("TextBox" + id.Replace("Button", ""));
            // if (ibut != null && ibut.ImageUrl == "~/Configuracion/Images/BotonEnlaceInternoAs.jpg")
            if (ibut != null && ibut.CssClass == "BtnPanelTfAsignado")
            {
                UInt16 buttonIndex  = UInt16.Parse(((string)ViewState["IdBoton"]).Replace("Button", ""));
                uint   recalcPosHMI = CalculatePosHmi(buttonIndex);
                uint   prefijo      = prefijosPosiciones[recalcPosHMI];
                if (prefijo == 2)
                {
                    for (int i = 0; i < datosInternos.Length; i++)
                    {
                        if ((((ServiciosCD40.DestinosInternosSector)datosInternos[i]).Literal == ibut.Text) &&
                            ((ServiciosCD40.DestinosInternosSector)datosInternos[i]).PosHMI == recalcPosHMI)
                        {
                            if (ServicioCD40.DeleteSQL(datosInternos[i]) < 0)
                            {
                                logDebugView.Warn("(TFTTelefonia-DesasignarDestino): Fallo en el delete enlace interno");
                            }
                            else
                            {
                                ServiciosCD40.DestinosInternosSector s = new ServiciosCD40.DestinosInternosSector();
                                s = (ServiciosCD40.DestinosInternosSector)datosInternos[i];
                                ServicioCD40.EliminaColateralEnUsuarioReciproco(ref s);

                                #region Sincronizar CD30
                                Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
                                KeyValueConfigurationElement sincronizar = config.AppSettings.Settings["SincronizaCD30"];
                                if ((sincronizar != null) && (Int32.Parse(sincronizar.Value) == 1))
                                {
                                    SincronizaCD30.SincronizaCD30 sincro = new SincronizaCD30.SincronizaCD30();

                                    switch (sincro.BajaColateralTelefonia(((ServiciosCD40.DestinosInternosSector)datosInternos[i]).IdNucleo,
                                                                          ((ServiciosCD40.DestinosInternosSector)datosInternos[i]).IdSector,
                                                                          ((ServiciosCD40.DestinosInternosSector)datosInternos[i]).PosHMI))
                                    {
                                    case 127:
                                        sincro.BajaColateralTelefonia(s.IdNucleo, s.IdSector, s.PosHMI);
                                        cMsg.alert((string)GetGlobalResourceObject("Espaniol", "Cod127"));
                                        break;

                                    case 128:
                                        cMsg.alert((string)GetGlobalResourceObject("Espaniol", "Cod128"));
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                #endregion
                            }
                            break;
                        }
                    }
                }
                else
                if (prefijo > 2)
                {
                    for (int i = 0; i < datosExternos.Length; i++)
                    {
                        if ((((ServiciosCD40.DestinosExternosSector)datosExternos[i]).Literal == ibut.Text) &&
                            ((ServiciosCD40.DestinosExternosSector)datosExternos[i]).PosHMI == recalcPosHMI)
                        {
                            if (ServicioCD40.DeleteSQL(datosExternos[i]) < 0)
                            {
                                logDebugView.Warn("(TFTTelefonia-DesasignarDestino): Fallo en el delete enlace externo");
                            }
                            else
                            {
                                #region Sincronizar CD30
                                Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
                                KeyValueConfigurationElement sincronizar = config.AppSettings.Settings["SincronizaCD30"];
                                if ((sincronizar != null) && (Int32.Parse(sincronizar.Value) == 1))
                                {
                                    SincronizaCD30.SincronizaCD30 sincro = new SincronizaCD30.SincronizaCD30();

                                    switch (sincro.BajaColateralTelefonia(((ServiciosCD40.DestinosExternosSector)datosExternos[i]).IdNucleo,
                                                                          ((ServiciosCD40.DestinosExternosSector)datosExternos[i]).IdSector,
                                                                          ((ServiciosCD40.DestinosExternosSector)datosExternos[i]).PosHMI))
                                    {
                                    case 127:
                                        cMsg.alert((string)GetGlobalResourceObject("Espaniol", "Cod127"));
                                        break;

                                    case 128:
                                        cMsg.alert((string)GetGlobalResourceObject("Espaniol", "Cod128"));
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                #endregion
                            }
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            logDebugView.Error("(TFTTelefonia-DesasignarDestino): ", ex);
        }
    }