let isRunning = false;
let phoneAuthYn = "N";

let userData = {};
let certCellFlag = "N";
let num = 60 * 3; // 몇분을 설정할지의 대한 변수 선언
let myVar;
let duplicateSuccess = false;

/****************************************************************************
 * 완료버튼
 ****************************************************************************/
function fn_selectUserId() {
    let userName = $("#userName").val();
    let phoneNumber = $("#phoneNumber").val().replace(/-/g, "");

    if (true != fn_emptyCheck(userName)) {
        modalEvent.warning("등록", "성함이 없습니다.");
        return;
    }
    if (true != fn_emptyCheck(phoneNumber)) {
        modalEvent.warning("등록", "휴대폰번호가 없습니다.");
        return;
    }

    if ('Y' !== phoneAuthYn) {
        modalEvent.warning("등록", "휴대폰인증을 진행하세요");
        return;
    }

    // 폼을 동적으로 생성하여 전송
    let newForm = $("<form></form>");
    newForm.attr("name", "submitForm");
    newForm.attr("method", "POST");
    newForm.attr("action", encodeURI('/mobileuser/selectUserId.do')); // 대상 URL 설정

    // 입력된 데이터 추가
    newForm.append($('<input/>', { type: 'hidden', name: 'userName', value: userName }));
    newForm.append($('<input/>', { type: 'hidden', name: 'phoneNumber', value: phoneNumber }));

    // 페이지에 폼 추가 및 제출
    newForm.appendTo('body');
    newForm.submit();
}

/****************************************************************************
 * 휴대폰 본인인증
 ****************************************************************************/
function fn_sendAuthNum(){

    let phoneNumber = $("#phoneNumber").val();
    let reg_tel = /^[0-9]{10,11}$/;

    if(true != fn_emptyCheck(phoneNumber)){
        modalEvent.warning("조회", "휴대폰번호를 입력하세요.");
        return;
    }else{
        if(reg_tel.test(phoneNumber) != true) {
            modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
            return;
        }else{
            // 인증번호 발송
            fn_insertPhoneAuth();
        }
    }
}

/****************************************************************************
 * 인증번호 등록
 ****************************************************************************/
function fn_insertPhoneAuth(){

    isRunning = false;

    let phoneNumber = $("#phoneNumber").val();
    let authType          = "ID";

    let formData = new FormData();
    formData.append("phoneNumber", phoneNumber);
    formData.append("authType", authType);

    $.ajax({
        url: encodeURI('/mobilephoneauth/insertPhoneAuth.do'),
        data: formData,
        dataType: 'json',
        processData: false,
        contentType: false,
        type: 'POST',
        async: true,
        success: function(data){
            if(data.msgCode=='0'){

                modalEvent.success("", data.msgDesc, function(){
                    isRunning = true;

                    fn_startTimer();
                    $("#sendAuthNumBtn").text("재전송");
                    $(".certification_box2").show();
                });

            }else{
                modalEvent.danger("", data.msgDesc);
            }
        },
        error : function(xhr, status, error) {
            modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
        },
        beforeSend:function(xhr){
            xhr.setRequestHeader("token", sessionStorage.getItem("token"));
        },
        complete:function(){

        }
    });
}

/****************************************************************************
 * 타이머 함수 실행
 ****************************************************************************/
function fn_startTimer() {

    // 남은 시간(초)
    let count = 180;
    let display = document.querySelector('#timer');

    let minutes, seconds;
    let timer = setInterval(function () {
        if(isRunning){
            minutes = parseInt(count / 60, 10);
            seconds = parseInt(count % 60, 10);
            minutes = minutes < 10 ? "0" + minutes : minutes;
            seconds = seconds < 10 ? "0" + seconds : seconds;
            display.textContent = "유효시간 " + minutes + ":" + seconds;
            isRunning = true;
        }else{
            clearInterval(timer);
            display.textContent = "";
            isRunning = false;
        }

        // 타이머 종료
        if (--count < 0) {
            clearInterval(timer);
            display.textContent = "";
            isRunning = false;
            $("#authNumber").val("");
        }
    }, 1000);
}

/****************************************************************************
 * 인증번호 확인 조회
 ****************************************************************************/
function fn_selectPhoneAuthCheck(){

    let phoneNumber       = $("#phoneNumber").val();
    let authNumber        = $("#authNumber").val();
    let reg_tel = /^[0-9]{10,11}$/;

    if(true != fn_emptyCheck(phoneNumber)){
        modalEvent.warning("조회", "휴대폰번호는 필수 값입니다.");
        return;
    }else{
        if(reg_tel.test(phoneNumber) != true) {
            modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
            return;
        }else{
            phoneNumber = phoneNumber.replace("-", "");
        }
    }

    if(true != fn_emptyCheck(authNumber)){
        modalEvent.warning("조회", "인증번호를 입력하세요.");
        return;
    }

    let formData = new FormData();
    formData.append("phoneNumber", phoneNumber);
    formData.append("authNumber", authNumber);

    $.ajax({
        url: encodeURI('/mobilephoneauth/selectPhoneAuthCheck.do'),
        data: formData,
        dataType: 'json',
        processData: false,
        contentType: false,
        type: 'POST',
        async: false,
        success: function(data){
            if(data.msgCode=='0'){
                modalEvent.success("", data.msgDesc, function (){
                    $(".certification_box2").hide();
                });
                phoneAuthYn = "Y";
                clearInterval(timer);
                isRunning = false;

                // checkAllFields();

                const completeButton = $('.button_box button');

                completeButton.addClass('active');
                completeButton.attr("disabled", false);
            }else{
                modalEvent.danger("조회 오류", data.msgDesc);
                phoneAuthYn = "N";
                // checkAllFields();

            }
        },
        error : function(xhr, status, error) {
            modalEvent.danger("조회 오류", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
            phoneAuthYn = "N";
            // checkAllFields();

        },
        beforeSend:function(xhr){
            xhr.setRequestHeader("token", sessionStorage.getItem("token"));
        },
        complete:function(){

        }
    });
}

function alertFunc() {
    var min = num / 60;
    min = Math.floor(min);

    var sec = num - (60 * min);
    sec = sec > 9 ? sec : "0"+sec ;

    if(num == 0){
        certCellFlag = "T";
        clearInterval(myVar) // num 이 0초가 되었을대 clearInterval로 타이머 종료
    }
    num--;
}

function fn_errorMsgPop(){
    modalEvent.warning('오류',errorMsg)
}
/****************************************************************************
 * 페이지 init
 ****************************************************************************/
function fn_pageInit() {
    if(errorMsg){
        fn_errorMsgPop()
    }
}

/****************************************************************************
 * 페이지 event
 ****************************************************************************/
function fn_pageEvent() {
    // 다음버튼
    $("#btn_selectUserId").click(function () {
        fn_selectUserId();
    });

    $("#back_btn").click(function () {
        location.href='/mobile'
    });

}

$(function () {
    // 페이지 init
    fn_pageInit();

    // 페이지 event
    fn_pageEvent();
});