package com.edufound.android.xyyf.config;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.os.Build;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.edufound.android.xyyf.R;
import com.edufound.android.xyyf.activity.MainActivity;
import com.edufound.android.xyyf.main.MainView;
import com.edufound.android.xyyf.phonelogin.PhoneLoginPersenter;
import com.edufound.android.xyyf.util.Logger;
import com.edufound.android.xyyf.util.ToastUtil;
import com.mobile.auth.gatewayauth.AuthRegisterXmlConfig;
import com.mobile.auth.gatewayauth.AuthUIConfig;
import com.mobile.auth.gatewayauth.AuthUIControlClickListener;
import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
import com.mobile.auth.gatewayauth.ui.AbstractPnsViewDelegate;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

public class DialogLandConfig extends BaseUIConfig {

    private int mOldScreenOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
    MainView mView;
    int showType = 0;
    PhoneLoginPersenter mPersenter;
    TextView title;
    TextView change;
    LinearLayout mLayout;
    EditText mPhoneNum;
    TextView mGetVer;
    EditText mInputVer;
    LinearLayout mClose;
    ImageView mHWLogin;
    boolean isCheckedUP = false;

    public DialogLandConfig(Activity activity, PhoneNumberAuthHelper authHelper, MainView view) {
        super(activity, authHelper, view);
        mView = view;
        mPersenter = new PhoneLoginPersenter(null);
    }

    public DialogLandConfig(Activity activity, PhoneNumberAuthHelper authHelper) {
        super(activity, authHelper);
        mPersenter = new PhoneLoginPersenter(null);
    }

    @Override
    public void configAuthPage() {
        mAuthHelper.removeAuthRegisterXmlConfig();
        mAuthHelper.removeAuthRegisterViewConfig();
        int authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
        if (Build.VERSION.SDK_INT == 26) {
            mOldScreenOrientation = mActivity.getRequestedOrientation();
            mActivity.setRequestedOrientation(authPageOrientation);
            authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_BEHIND;
        }
        updateScreenSize(authPageOrientation);
        final int dialogWidth = (int) (mScreenWidthDp * 1.1);
        final int dialogHeight = (int) (mScreenHeightDp * 0.4);
        mAuthHelper.addAuthRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
                .setLayout(R.layout.custom_land_dialog, new AbstractPnsViewDelegate() {
                    @Override
                    public void onViewCreated(final View view) {
                        title = view.findViewById(R.id.custom_land_login_phone_title);
                        change = view.findViewById(R.id.changePhoneNumLogin);
                        mLayout = view.findViewById(R.id.custom_land_login_phone_frame);
                        mPhoneNum = view.findViewById(R.id.phonenumber_login_number);
                        mGetVer = view.findViewById(R.id.phonenumber_getverifcation);
                        mInputVer = view.findViewById(R.id.phonenumber_login_ver);
                        mClose = view.findViewById(R.id.login_phone_landscape_close);
                        mHWLogin = view.findViewById(R.id.huawei_login);
                        mGetVer.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                            }
                        });
                        mPersenter.setVerText(mGetVer);
                        mGetVer.setOnTouchListener(new View.OnTouchListener() {
                            @Override
                            public boolean onTouch(View v, MotionEvent event) {
                                switch (event.getAction()) {
                                    case MotionEvent.ACTION_DOWN:
                                        mGetVer.setBackgroundResource(R.drawable.shape_login_phonenumber_getverification_selected);
                                        mGetVer.setTextColor(Color.WHITE);
                                        break;
                                    case MotionEvent.ACTION_CANCEL:
                                    case MotionEvent.ACTION_UP:
                                        try {
                                            mPersenter.getVCode(mPhoneNum.getText().toString());
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }

                                        break;
                                }
                                return false;
                            }
                        });
                        change.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                switch (showType) {
                                    case 0:
                                        //
                                        view.bringToFront();
                                        mLayout.setVisibility(View.VISIBLE);
                                        title.setText("登录注册解锁更多精彩内容");
                                        change.setText("一键登录");
                                        showType = 1;
                                        break;
                                    case 1:
//                                        view.bringToFront();
                                        mLayout.setVisibility(View.INVISIBLE);
                                        change.setText("切换账号");
                                        title.setText("登录");
                                        showType = 0;
                                        break;
                                }

                            }
                        });
                        mInputVer.addTextChangedListener(new TextWatcher() {
                            @Override
                            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                            }

                            @Override
                            public void onTextChanged(CharSequence s, int start, int before, int count) {
                                if (s.toString().length() == 4) {
                                    Logger.e("检查验证码并且登录");
                                    if (!isCheckedUP) {
                                        ToastUtil.showToast("请同意服务条款");
                                        return;
                                    }
                                    try {
                                        mPersenter.LoginByVCode(mPhoneNum.getText().toString(), mInputVer.getText().toString());
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }

                            @Override
                            public void afterTextChanged(Editable s) {

                            }
                        });
                        mClose.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                MainActivity.getInstance().loadJSMehtodPost("closeLogin('700000')");
                                mAuthHelper.quitLoginPage();
                            }
                        });
                        mHWLogin.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mAuthHelper.quitLoginPage();
                                mPersenter.huaweiLogin(MainActivity.getInstance(), 8888);
                            }
                        });
                    }
                }).build());
        showAllUi(dialogWidth, dialogHeight, authPageOrientation);
    }


    void showAllUi(int dialogWidth, int dialogHeight, int authPageOrientation) {
        mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setNavHidden(true)
                .setCheckboxHidden(false)
                .setLogoHidden(true)
                .setSloganHidden(true)
                .setNavReturnHidden(true)
                .setSwitchAccHidden(true)
//                .setNumberFieldOffsetX(60)
                .setNumberLayoutGravity(Gravity.CENTER)
                .setNumberSize(24)
                .setNumFieldOffsetY(10)
                .setLogBtnOffsetY(60)
                .setPrivacyOffsetY_B(10)
                .setLogBtnMarginLeftAndRight(20)
                .setLogBtnWidth(175)
                .setLogBtnHeight(35)
                .setLogBtnLayoutGravity(Gravity.CENTER)
                .setLogBtnText("本机号码一键登录")
                .setLogBtnTextSize(18)
                .setDialogWidth(dialogWidth)
                .setNavText("")
                .setDialogHeight(dialogHeight)
                .setDialogOffsetY(0)
                .setScreenOrientation(authPageOrientation)
                .setAppPrivacyOne("《隐私权限和用户协议》", "http://m-xyyf-web.ai160.com/res/protocol/protocol.htm")
                .setStatusBarHidden(true)
                .setPrivacyMargin(60)
                .setPrivacyTextSize(12)
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .create());
        mAuthHelper.setUIClickListener(new AuthUIControlClickListener() {
            @Override
            public void onClick(String s, Context context, String s1) {
                switch (Integer.valueOf(s)) {
                    case 700003:
                        JSONObject jsonObject = null;
                        try {
                            jsonObject = new JSONObject(s1);
                            isCheckedUP = jsonObject.getBoolean("isChecked");
                            if (isCheckedUP && mInputVer.getText().toString().length() == 4) {
                                mPersenter.LoginByVCode(mPhoneNum.getText().toString(), mInputVer.getText().toString());
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        break;
                }
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mOldScreenOrientation != mActivity.getRequestedOrientation()) {
            mActivity.setRequestedOrientation(mOldScreenOrientation);
        }
    }

}