using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;

namespace Exferia_Controles
{
    public partial class Exferia_TextBox_IBAN : UserControl
    {
        #region Eventos Publicos
        public event KeyPressEventHandler Exferia_TextBox_IBAN_Evento_KeyPress;
        public event EventHandler Exferia_TextBox_IBAN_Evento_TextChanged;
        #endregion

        #region "Propiedades Publicas"

        public bool Exferia_TextBox_IBAN_ReadOnly
        {
            get { return ex_txt_IBAN.Exferia_TextBox_ConMascara_ReadOnly; }
            set { ex_txt_IBAN.Exferia_TextBox_ConMascara_ReadOnly = value; }
        }

        internal bool g_bol_Obligatorio = false;
        public bool Exferia_TextBox_IBAN_Obligatorio
        {
            set
            {
                g_bol_Obligatorio = value;
                if (g_bol_Obligatorio)
                {
                    ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                }
                else
                {
                    ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Color.White;
                }
            }
            get
            {
                return g_bol_Obligatorio;
            }
        }

        public int Exferia_TextBox_IBAN_MaxLength
        {
            get { return ex_txt_IBAN.Exferia_TextBox_ConMascara_MaxLength; }
            set { ex_txt_IBAN.Exferia_TextBox_ConMascara_MaxLength = value; }
        }

        public string Exferia_TextBox_IBAN_Titulo
        {
            get { return ex_lbl_Titulo.Text; }
            set { ex_lbl_Titulo.Text = value; }
        }

        public string Exferia_TextBox_IBAN_Valor
        {
            get { return ex_txt_IBAN.Text; }
            set
            {
                ex_txt_IBAN.Text = value;
            }
        }

        public void Exferia_TextBox_IBAN_Foco()
        {
            ex_txt_IBAN.Exferia_TextBox_ConMascara_Focus();
            Invalidate();
        }

        #endregion

        public Exferia_TextBox_IBAN()
        {
            InitializeComponent();
        }

        public bool Validar_IBAN()
        {
            bool bol_Correcto = true;
            if (ex_txt_IBAN.Text.Trim().Length > 0)
            {
                if (Funciones.Validar_IBAN(ex_txt_IBAN.Text))
                {
                    if (g_bol_Obligatorio)
                    {
                        ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Color.White;
                    }
                }
                else
                {
                    ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Colores.G_COLOR_FONDO_ERROR;
                    bol_Correcto = false;
                }
            }
            else
            {
                if (g_bol_Obligatorio)
                {
                    ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                }
                else
                {
                    ex_txt_IBAN.Exferia_TextBox_ConMascara_Fondo = Color.White;
                }
            }

            return bol_Correcto;
        }

        private void ex_txt_IBAN_Exferia_TextBox_ConMascara_Evento_LostFocus(object sender, EventArgs e)
        {
            Validar_IBAN();
        }

        private void ex_txt_IBAN_Exferia_TextBox_ConMascara_Evento_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Para que salte el evento en el otro lado
            Exferia_TextBox_IBAN_Evento_KeyPress?.Invoke(ex_txt_IBAN, e);
        }

        private void ex_txt_IBAN_Exferia_TextBox_ConMascara_Evento_TextChanged(object sender, EventArgs e)
        {
            //Para que salte el evento en el otro lado
            Exferia_TextBox_IBAN_Evento_TextChanged?.Invoke(ex_txt_IBAN, e);
        }


    }
}
