
let cstB = false;
let errorValidation = true;
let agent;
let isCustomCaptcha = 0;

const maxBankRange = {
    'gopay':'13',
    'dana':'13',
    'linkaja':'13',
    'ovo':'13',
    'crypto':'102'

}

function keamanan(element, event) {
    let bankName = $("#bank_name").val(),
        accountName = $("#bank_account_name").val().toUpperCase();
    if (bankName == "BCA") {
        if (accountName.substring(0, 4) == "GJK-") {
        } else {
            if (event.keyCode >= 48 && event.keyCode <= 57) {
                event.returnValue = false;
            } else {
                event.returnValue = true;
            }
        }
    } else {
        if (bankName != "CRYPTO") {
            if (event.keyCode >= 48 && event.keyCode <= 57) {
                event.returnValue = false;
            } else {
                event.returnValue = true;
            }
        }
    }
}

function proteksi() {
    if(!cstB){
        if (
            (event.charCode > 45 && event.charCode <= 57) ||
            event.charCode == 8 ||
            event.charCode == 9
        ) {
            event.returnValue = true;
        } else {
            event.returnValue = false;
        }
    }
}

function checkbox() {
    let check = $("#defaultUnchecked").val();
    if (check == "0") {
        $("#defaultUnchecked").val(1);
    } else {
        $("#defaultUnchecked").val(0);
    }
}

function cekumur() {
    let check = $("#defaultUnchecked").val();
    if (check == "0") {
        $("#defaultUnchecked").val(0);
        alert("Anda Harus Cukup Umur");
        return false;
    } else {
        return true;
    }
}

function checking(selector) {
    let value = $(`#${selector}`).val();

    if (selector == "bank_name") {
        value = `${value}`.toLowerCase();

        if(cstB && agent == 'wtzaa'){
            setChangeRekName(value)
        }

        $('#bank_account_number').val("");
        const imgNumber = document.querySelector(".img-bank_account_number");
        imgNumber.classList.add("hidden");

        if (value == "bca") {
            // $("#bank_account_number").attr("type", "text");
            document.getElementById('bank_account_number').setAttribute('type', 'text');
        }else if(value == "crypto"){
            // $("#bank_account_number").attr("type", "text");
            document.getElementById('bank_account_number').setAttribute('type', 'text');
            $("#bank_account_number").attr("pattern", "[a-zA-Z0-9]*");
            $("#bank_account_number").attr("maxlength", "102");
            // document.getElementById('bank_account_number').setAttribute('pattern', '[a-zA-Z0-9]*');
            // document.getElementById('bank_account_number').setAttribute('maxlength', '102');


        } else {
            document.getElementById('bank_account_number').setAttribute('type', 'tel');
            // $("#bank_account_number").attr("type", "tel");
        }

        if(cstB && value != "crypto"){
            $("#bank_account_number").attr("maxlength", "16");
        }
        console.log(value)
        if((maxBankRange.hasOwnProperty(value))){

            const getLimitMaxInput = maxBankRange[value]
            document.getElementById('bank_account_number').setAttribute('maxlength', getLimitMaxInput);
        }else{
            document.getElementById('bank_account_number').setAttribute('maxlength', "16");
        }

        setInputBank()
    }

    if (selector == "bank_account_name") {
        value = `${value}`.toLowerCase();
    }

    if (selector == "bank_account_number") {
        value = $(`#${selector}`).val().replace(/\-/g, "");
    }

    var dataString = {};
    dataString["value"] = value;
    dataString["input"] = selector;
    dataString["custom_captcha"] = isCustomCaptcha;
    dataString["current_captcha"] = document.getElementById('current_captcha').value;

    dataString["password"] = document.getElementById("password").value;
    dataString["bank_name"] = document
        .getElementById("bank_name")
        .value.toLowerCase();
    var route = document.getElementById("check_register").value;
    $.ajax({
        type: "POST",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        url: route,
        data: dataString,
        success: function (result) {
            $(`.img-${selector}`).removeClass("hidden");

            if (result.message.status == true) {
                $(`#${selector}-check`).val(0);
                $(".error-reg").addClass("hidden");
                $(`.img-${selector}`).attr("src", "/assets/img/ceklishijao.png");

                if(selector == 'validation'){
                    // document.getElementById(selector).disabled = true
                }

            } else {
                $("#returninfo").html("");
                var objectValues = Object.values(result.message.errors);
                var obStringify = JSON.stringify(objectValues).replace(
                    /\"],|"]|","/g,
                    "<br>"
                );
                var removed = obStringify.replace(/[[]|]|"/g, "");
                $(`#${selector}-check`).val(1);
                $("#error-reg").removeClass("hidden").html(removed);
                $(`.img-${selector}`).attr("src", "/assets/img/crossred.png");

                if(selector == 'validation'){
                    refreshCaptcha();
                }

            }
        },
    });

    if (selector == "bank_name") {
        if (value == "bca") {
            checking("bank_account_number");
        } else {
            checking("bank_account_number");
        }
    }
}

function clearall() {
    document.getElementById("user").value = "";
    document.getElementById("password").value = "";
    document.getElementById("confirm_password").value = "";
    document.getElementById("email").value = "";
    document.getElementById("phone_number").value = "";
    document.getElementById("bank_name").value = "";
    document.getElementById("bank_account_name").value = "";
    document.getElementById("bank_account_number").value = "";
    document.getElementById("referral_code").value = "";
    document.getElementById("validation").value = "";

    document.getElementById("user-check").value = "1";
    document.getElementById("password-check").value = "1";
    document.getElementById("confirm_password-check").value = "1";
    document.getElementById("email-check").value = "1";
    document.getElementById("phone_number-check").value = "1";
    document.getElementById("bank_name-check").value = "1";
    document.getElementById("bank_account_name-check").value = "1";
    document.getElementById("bank_account_number-check").value = "1";
    document.getElementById("validation-check").value = "1";
    $(".img-reg").addClass("hidden");
    $(".img-reg").attr("src", "");
}

$("#before-register").submit(function (e) {
    e.preventDefault();
    if (!errorValidation) {
        $("#btnSubmit").html(
            '<p class="saving">Mohon Tunggu<span>.</span><span>.</span><span>.</span></p>'
        );
        $("#btnSubmit").attr("disabled", true);
        $("#btnSubmit").css("background-color", "#969696");
        var dataString = {};
        dataString["user"] = document.getElementById("user").value;
        dataString["password"] = document.getElementById("password").value;
        dataString["confirm_password"] =
            document.getElementById("confirm_password").value;
        dataString["email"] = document.getElementById("email").value;
        dataString["phone_number"] = document.getElementById("phone_number").value;
        dataString["bank_name"] = document
            .getElementById("bank_name")
            .value.toLowerCase();
        dataString["bank_account_name"] = document
            .getElementById("bank_account_name")
            .value.toLowerCase();
        dataString["bank_account_number"] = document.getElementById(
            "bank_account_number"
        ).value;
        dataString["referral_code"] =
            document.getElementById("referral_code").value;
        var route = document.getElementById("register_post").value;
        $.ajax({
            type: "POST",
            url: route,
            data: dataString,
            success: function (data) {

                if (data.message.status == true) {
                    $("#returninfo").html(
                        data.message.message + ".<br>Username = " + data.username
                    );
                    clearall();
                    if (!$("#error-reg").hasClass("hidden") ) {
                        $("#error-reg").addClass("hidden");
                    }
                    afterPost();
                    document.location.href="/";
                    refreshCaptcha();
                } else if (data.message == "NOTVALIDIP") {
                    alert('Silahkan refresh halaman ini kembali, alamat IP anda tidak diketahui')
                } else if(data.message == "err crypto"){
                    alert('Pendaftaran dengan crypto belum tersedia')
                } else {
                    $("#returninfo").html("");
                    if(data.message.errors){
                        var objectValues = Object.values(data.message.errors);
                        var obStringify = JSON.stringify(objectValues).replace(
                            /\"],|"]|","/g,
                            "<br>"
                        );
                        var removed = obStringify.replace(/[[]|]|"/g, "");
                        $("#error-reg").removeClass("hidden").html(removed);
                    }else{
                        const dataFilter = data.message.message.replace(/[[]|]|"/g, "");
                        $("#error-reg").removeClass("hidden").html(dataFilter);
                    }
                    afterPost();
                    refreshCaptcha();
                }
            },
            error: function (error) {
                alert(JSON.stringify(error));
            },
        });
    }
});

function afterPost() {
    $("#btnSubmit").text("SUBMIT");
    $("#btnSubmit").attr("disabled", false);
    $("#btnSubmit").css("background-color", "#f89e00");
    $("html, body").animate(
        {
            scrollTop: 0,
        },
        1500
    );
}

function validate(fom) {
    let err = "";

    const getMail = fom.mail_check ? fom.mail_check.value : fom.email_check.value;
    const getnameB = fom.namabank_check ? fom.namabank_check.value : fom.bank_name_check.value;

    if (fom.user_check.value == 1) {
        checking("user");
        fom.user.focus();
        err = "Error Username";
    } else if (fom.passwd1_check.value == 1) {
        checking("password");
        fom.passwd1.focus();
        err = "Error Password";
    } else if (fom.passwd2_check.value == 1) {
        checking("confirm_password");
        fom.passwd2.focus();
        err = "Error Konfirmasi Password";
    } else if (getMail == 1) {
        checking("email");
        fom.email.focus();
        err = "Error Email";
    } else if (fom.hp_check.value == 1) {
        checking("phone_number");
        fom.hp.focus();
        err = "Error Nomor Telepon";
    } else if (getnameB == 1) {
        fom.bank_name.focus();
        err = "Error Nama Bank";
    } else if (fom.AN_check.value == 1) {
        checking("bank_account_name");
        fom.AN.focus();
        err = "Error Nama Rekening";
    } else if (fom.rek_check.value == 1) {
        checking("bank_account_number");
        fom.rek.focus();
        err = "Error Nomor Rekening";
    } else if (fom.entered_val2_check.value == 1) {
        fom.captcha.focus();
        err = "Error Validasi";
    }

    if (err.length > 0) {
        alert(err);
        return false;
    }

    errorValidation = false

    return true;
}

_dom = 0;
_dom = document.all ? 3 : document.getElementById ? 1 : document.layers ? 2 : 0;

function test(a, b) {
    if (_dom == 3) {
        if (event.keyCode == 60 || event.keyCode == 62) {
            event.returnValue = false;
        } else {
            event.returnValue = true;
        }
    } else {
        if (b.charCode == 60 || b.charCode == 62 || b.charCode == 45) {
            b.preventDefault();
            b.returnValue = false;
        } else {
        }
    }
}

function formatMask() {
    let bank_name = $("#bank_name").val();
    let format = "";
    if (
        bank_name == "BCA" ||
        bank_name == "BNI" ||
        bank_name == "KOSPIN" ||
        bank_name == "MAYBANK" ||
        bank_name == "PANIN" ||
        bank_name == "SINARMAS" ||
        bank_name.includes("BNI")
    ) {
        format = "000-000-0000";
    } else if (bank_name == "BRI" || bank_name == "MEGA" || bank_name.includes("BRI")) {
        format = "000-000-000-000-000";
    } else if (bank_name == "CIMB" || bank_name == "MANDIRI" || bank_name.includes("MANDIRI")) {
        format = "000-000-000-0000";
    } else if (bank_name == "JENIUS") {
        format = "000-0000-0000";
    } else if (bank_name == "PERMATA") {
        format = "000-000-000-0000-0000";
    }else if (bank_name == "BANK NEO") {
        format = "0000000000000000";
    }else if (bank_name == "SEABANK" || bank_name == "BANK JAGO") {
        format = "000000000000";
    } else {
        format = "0000000000000";
    }

    return format;
}

function setInputBank(){
    $("#bank_account_number").on("paste keyup", function (e) {

        let bank_name = $("#bank_name").val();
        if(bank_name == "CRYPTO"){
            const format = "A".repeat(102);
            // console.log(format);
            $(this).mask(format, {'translation': {
                A: {pattern: /[A-Za-z0-9]/},
            }});
        }else{
            let format = formatMask();
            $(this).mask(format);
        }

    });
}

// -- Remove stripe on paste -- //
$(document).ready(function () {

    const getValueCustomCaptcha = document.querySelector(`#validation-custom`)
    if(getValueCustomCaptcha){
        isCustomCaptcha = getValueCustomCaptcha.value;
        refreshCaptcha()
    }

    const getAgent = document.querySelector('#agent');
    if(getAgent){
        agent = getAgent
    }

    setInputBank()
    $("#phone_number").on("paste keyup", function (e) {
        let val = this.value;
        if (val.charAt(0) == 0) {
            this.value = "";
            return false;
        }
    });

    setUpValidChaptcha()

    isRefExits()
    displayCheck()
});

function isRefExits(){
    let reffCodeField = document.getElementById("referral_code");
    let reffTextField = document.querySelector(".regis-ref-color");

    const valueReff = reffCodeField.value;

    if(valueReff && valueReff != '-'){
        sessionStorage.setItem("referral_code", valueReff);

    }else{
        const refCode = sessionStorage.getItem("referral_code");
        if (refCode) {
            reffCodeField.value = refCode
            reffTextField.innerText = refCode
        }
    }
}

function setUpValidChaptcha(){

    const input = document.getElementById('validation');
    input.addEventListener('change', (event) => {

        checking('validation')
    });
}

function refreshCaptcha() {
    let route = document.getElementById("url_refresh").value;
    let typeData = "html"

    if(isCustomCaptcha){
        route = document.getElementById("url_refresh_custom").value;
        typeData = "json"
    }

    const checkValidFalse = document.getElementById("validation-check").value;

    if(checkValidFalse == '1'){
        $.ajax({
            url: route,
            type: "GET",
            dataType: typeData,
            success: function (json) {
                if(isCustomCaptcha){
                    const getParent = document.querySelector(`.refreshrecaptcha img`)
                    getParent.src = json.captcha_img;
                    document.getElementById('current_captcha').value = json.captcha_str
                }else{
                    $(".refreshrecaptcha").html(json);
                }
            },
            error: function (data) {
                // alert("Try Again.");
            },
        });
    }
}

function setChangeRekName(value){

    const elementRoot = document.querySelector('#bank_name_container');
    let tempTemplate = `<input type="hidden" name="AN_check" id="bank_account_name-check" value="1">`;

    const alamatContainer = document.querySelector('#bank_account_number');

    if(value == 'crypto'){
        tempTemplate += `
        <select type="text" onchange="checking('bank_account_name')" name="AN" id="bank_account_name" class="custom-select my-1 mr-sm-2 form-control text-register">
            <option value="0">Pilih Token</option>
            <option value="1">TRC20-USDT</option>
        </select>
        `

        elementRoot.classList.add("mb-3");
        alamatContainer.placeholder = 'Alamat';
    }else{
        elementRoot.classList.remove("mb-3");
        tempTemplate += `<input type="text" Onkeypress="keamanan(this,event);" onchange="checking('bank_account_name')" name="AN" id="bank_account_name" class="text-register form-control mb-3 custom-input" placeholder="Nama Rekening">`
        alamatContainer.placeholder = 'Nomor Rekening';
    }

    tempTemplate += `<img src="" class="img-bank_account_name img-reg hidden" width="25px">`
    elementRoot.innerHTML = tempTemplate
}

function displayCheck(){
    let selectElement = document.getElementById('bank_name');
    let optionNames = [...selectElement.options].find(o => o.value.toLowerCase() == 'crypto');
    if(optionNames){
        cstB = true;
    }
}
