using LitJson;
using Newtonsoft.Json.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class LoginManager : MonoSingleton<LoginManager>
{
    public InputField usernameInput;
    public InputField passwordInput;

    public GameObject usernameError;
    public GameObject passwordError;

    public RawImage passwrodIconBtn;
    public Texture2D passwordIconClose;
    public Texture2D paswrodIconOpen;

    public Button loginBtn;

    public LoginUPError loginUpError;

    private bool isShwoPasword = false;

   
    private void Start()
    {
        passwrodIconBtn.GetComponent<Button>().onClick.AddListener(() =>
        {
            isShwoPasword = !isShwoPasword;

            if(isShwoPasword)
            {
                passwrodIconBtn.texture = paswrodIconOpen;
                passwordInput.contentType = InputField.ContentType.Standard;
            }
            else
            {
                passwrodIconBtn.texture = passwordIconClose;
                passwordInput.contentType = InputField.ContentType.Password;
            }

        });

        UserNameInputStart();

        PassWordInputStart();

        loginBtn.onClick.AddListener(() =>
        {
            bool finish = DetectionInput();

            if (finish == false)
                return;

            // ��¼
            Login();
        });
    }

    private void UserNameInputStart()
    {

        EventTrigger trigger = usernameInput.gameObject.GetComponent<EventTrigger>();
        if (trigger == null)
        {
            // ���û�� EventTrigger ���������һ��
            trigger = usernameInput.gameObject.AddComponent<EventTrigger>();
        }

        // ���� PointerEnter �¼�����
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.PointerClick;
        entry.callback.AddListener((eventData) => { 
            if (usernameError.activeSelf)
            {
                usernameInput.text = null;
                usernameInput.textComponent.color = new Color32(50, 50, 50, 255);
                usernameError.SetActive(false);
            }
            
        });
        trigger.triggers.Add(entry);
    }

    private void PassWordInputStart()
    {
        EventTrigger trigger = passwordInput.gameObject.GetComponent<EventTrigger>();
        if (trigger == null)
        {
            // ���û�� EventTrigger ���������һ��
            trigger = passwordInput.gameObject.AddComponent<EventTrigger>();
        }

        // ���� PointerEnter �¼�����
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.PointerClick;
        entry.callback.AddListener((eventData) => {
            if (passwordError.activeSelf)
            {

                passwordInput.text = null;
                passwordInput.textComponent.color = new Color32(50, 50, 50, 255);
                passwordError.SetActive(false);

                if (isShwoPasword)
                    passwordInput.contentType = InputField.ContentType.Standard;
                else
                    passwordInput.contentType = InputField.ContentType.Password;
            }
         });
        trigger.triggers.Add(entry);
    }

    private bool DetectionInput()
    {
        bool finish = true;

        Debug.Log(usernameInput.text);
        Debug.Log(passwordInput.text);

        if (usernameInput.text==""|| usernameInput.text == "�������û���")
        {
            finish = false;
            usernameError.gameObject.SetActive(true);
            usernameInput.text = "�������û���";
            usernameInput.textComponent.color = new Color32(255, 0, 0, 255);

        }

        if (passwordInput.text==""|| passwordInput.text=="����������")
        {
            finish = false;
            passwordError.gameObject.SetActive(true);
            passwordInput.contentType = InputField.ContentType.Standard;
            passwordInput.text = "����������";
            passwordInput.textComponent.color = new Color32(255, 0, 0, 255);
        }

        return finish;
    }

    private void Login()
    {
        string username = usernameInput.text;
        string password = passwordInput.text;

        //  �����Ƿ���ϻ���Ҫ��


        JsonData data = new JsonData();
        data["account"] = username;
        data["password"] = password;

        // ��¼����
        HttpToolDP.Instance.Post("https://api-fat2.ghz-tech.com" + "/cmcc-endustry/v1/user/login", data.ToJson(), (msg) =>
          {
              Debug.Log("DGJ ===> Login " + msg);

              JObject data = JObject.Parse(msg);

              if (data["code"].ToString() == "200")
              {
                  // ��¼�ɹ�

              }
              else
              {
                  // ���ݱ�������Ӧ��ʾ 

                 

                  // �Ѿ���¼


              }

              if(data["code"].ToString() == "4007")
              {
                  // �˺Ż��������

                  if (loginUpError.gameObject.activeSelf)
                  {
                      loginUpError.times = 0;
                  }
                  else
                  {
                      loginUpError.gameObject.SetActive(true);
                  }
              }
          });

    }
}