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.Visualizacion;
using Exferia_Aplicacion.General;
using System.Text.RegularExpressions;
using System.Diagnostics;

namespace Exferia_Controles
{
    public partial class Exferia_TextBox_URL : UserControl
    {
        #region Eventos Publicos
        public event KeyPressEventHandler Exferia_TextBox_URL_Evento_KeyPress;
        public event EventHandler Exferia_TextBox_URL_Evento_TextChanged;
        #endregion

        #region Propiedades Publicas
        internal bool g_bol_Obligatorio = false;
        public bool Exferia_TextBox_URL_Obligatorio
        {
            set
            {
                g_bol_Obligatorio = value;
                if (g_bol_Obligatorio)
                {
                    ex_txt_URL.Exferia_TextBox_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                }
                else
                {
                    ex_txt_URL.Exferia_TextBox_Fondo = Color.White;
                }
            }
            get
            {
                return g_bol_Obligatorio;
            }
        }

        public int Exferia_TextBox_URL_MaxLength
        {
            get { return ex_txt_URL.Exferia_TextBox_MaxLength; }
            set { ex_txt_URL.Exferia_TextBox_MaxLength = value; }
        }

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

        public string Exferia_TextBox_URL_Valor
        {
            get { return ex_txt_URL.Text; }
            set
            {
                ex_txt_URL.Text = value;
            }
        }


        public void Exferia_TextBox_URL_Foco()
        {
            ex_txt_URL.Exferia_TextBox_Foco();
            Invalidate();
        }
        #endregion

        public Exferia_TextBox_URL()
        {
            InitializeComponent();
        }

        public bool Validar_URL()
        {
            if (ex_txt_URL.Text.Trim().Length > 0)
            {
                //Ver si hay que poner http://
                if (!ex_txt_URL.Text.Trim().Contains("http://"))
                {
                    ex_txt_URL.Text = "http://" + ex_txt_URL.Text;
                }

                bool bol_Email_Correcto = Funciones.URL_Validacion(ex_txt_URL.Text.Trim());

                if (bol_Email_Correcto)
                {
                    if (g_bol_Obligatorio)
                    {
                        ex_txt_URL.Exferia_TextBox_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ex_txt_URL.Exferia_TextBox_Fondo = Color.White;
                    }
                }
                else
                {
                    ex_txt_URL.Exferia_TextBox_Fondo = Colores.G_COLOR_FONDO_ERROR;
                }
                return bol_Email_Correcto;
            }
            else
            {
                if (g_bol_Obligatorio)
                {
                    ex_txt_URL.Exferia_TextBox_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                }
                else
                {
                    ex_txt_URL.Exferia_TextBox_Fondo = Color.White;
                }

                return true;
            }
        }
        
        private void ex_txt_URL_Exferia_TextBox_Evento_LostFocus(object sender, EventArgs e)
        {
            Validar_URL();
        }

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

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

        private void ex_btn_Ver_Click(object sender, EventArgs e)
        {
            if (Validar_URL())
            {
                try
                {
                    Process.Start(ex_txt_URL.Text);
                }
                catch (Exception ex)
                {
                    Control_Errores.Errores_Log("", ex, nameof(Exferia_TextBox_URL) + "" + nameof(ex_btn_Ver_Click));
                }
            }
        }
    }
}
