(function( $ ) {
    'use strict';
    var otp_div = $("#billing_phone_otp_button_field");
    var send_otp_div = $("#billing_phone_send_otp_field");
    
    otp_div.empty();
    send_otp_div.empty();

    var otp_send_button = '';
    otp_send_button += '<div class="button alt" id="otp_send_button">';
    otp_send_button += '<span class="button__text">ارسال کد تایید</span>';
    otp_send_button += '</div>';
    otp_send_button += '<div style="display: none;" id="response_message">';
    otp_send_button += '</div>';
    send_otp_div.append(otp_send_button);

    var otp_verify_button = '';
    otp_verify_button += '<div id="kerasno_woo_second_buttons"><div class="button alt" id="otp_resend">';
    otp_verify_button += '<span class="button__text">ارسال مجدد کد تایید</span>';
    otp_verify_button += '</div>';
    otp_verify_button += '<div style="display: none;" id="response_message_resend">';
    otp_verify_button += '</div>';
    otp_div.append(otp_verify_button);

    if (kerasno_woo_otp_options.verify_with_ajax == 'true') {
        var otp_verify_ajax = '';
        otp_verify_ajax += '<div id="kerasno_woo_verify_ajax"><div class="button alt" id="checkout_otp_ajax">';
        otp_verify_ajax += '<span class="button__text">اعتبارسنجی کد تایید</span>';
        otp_verify_ajax += '</div>';
        otp_verify_ajax += '<div style="display: none;" id="response_message_resend">';
        otp_verify_ajax += '</div>';
        otp_div.append(otp_verify_ajax);
    }
    

    $("#billing_phone").keyup(function (){
        var mobile = $(this).val();
        if( ! mreeir_is_mobile (mobile) ){
            $(this).parents("#billing_phone_field").addClass("woocommerce-invalid")
        }
    });

    $('#billing_phone').keypress(function (e) {
        var key = e.which;
        if(key == 13)  // the enter key code
        {
            $('#otp_send_button').click();
            return false;  
        }
    });

    $("#billing_phone_send_otp_field").on('click', '#otp_send_button', function (){
        var mobile = $("#billing_phone").val();
        $("#response_message").removeClass().hide();
        if( ! mreeir_is_mobile(mobile) ){
            $("#billing_phone_field").addClass("woocommerce-invalid");
            $("#response_message").text("لطفا شماره موبایل خود را وارد کنید").addClass("error").show();
            return;
        }
        var otp_send_button = $(this);
        otp_send_button.addClass("kerasno_woo_button--loading").prop('disabled', true);
        var data = {
            'action': 'kerasno_send_otp_code',
            'mobile': mobile,
            'security' : kerasno_woo_otp_options.sendwoootpsms,
        };
        $.post(kerasno_woo_otp_options.ajax_url, data, function (response) {
            
            if(response.success){
                otp_send_button.removeClass("kerasno_woo_button--loading").prop('disabled', false);
                otp_send_button.parent().hide()
                $("#billing_phone_otp_field,#billing_phone_otp_button_field").show();
                var seconds = kerasno_woo_otp_options.resendcodetime;
                var interval;
                var resend_code = $("#otp_resend");
                resend_code.addClass('disabled');
                interval = setInterval(function (){
                    resend_code.find("span").html('ارسال مجدد' + " (" + seconds + ")");
                    if (seconds == 0) {
                        resend_code.find("span").html('ارسال مجدد کد');
                        resend_code.removeClass('disabled');
                        clearInterval(interval);
                    }
                    seconds--;
                }, 1000);
            } else {
                otp_send_button.removeClass("kerasno_woo_button--loading");
                $("#response_message").text("خطایی رخ داد لطفا با مدیریت تماس بگیرید").addClass("error").show();
            }
        });
    })
    $("#billing_phone_otp_button_field").on('click', '#checkout_otp_ajax', function (){
        var mobile = $("#billing_phone").val();
        var code = $("#billing_phone_otp").val();

        $("#response_message").removeClass().hide();
        if( ! mreeir_is_mobile(mobile) ){
            $("#billing_phone_field").addClass("woocommerce-invalid");
            $("#response_message").text("لطفا شماره موبایل خود را وارد کنید").addClass("error").show();
            return;
        }
        if( mreeir_is_empty(code) ){
            $("#billing_phone_otp").addClass("woocommerce-invalid");
            $("#response_message").text("کد تایید معتبر نیست").addClass("error").show();
            return;
        }
        var otp_send_ajax = $(this);
        otp_send_ajax.addClass("kerasno_woo_button--loading").prop('disabled', true);
        var data = {
            'action': 'kerasno_ajax_verify_otp_code',
            'mobile': mobile,
            'code': code,
            'security' : kerasno_woo_otp_options.sendwoootpsms,
        };
        $.post(kerasno_woo_otp_options.ajax_url, data, function (response) {
            
            if(response.success) {
                otp_send_ajax.removeClass("kerasno_woo_button--loading").prop('disabled', false);
                otp_send_ajax.parent().hide()
                $("#billing_phone_field,#billing_phone_send_otp_field,#billing_phone_otp_field,#billing_phone_otp_button_field").hide();
                $("#billing_phone_verified_field").show();
                $("#billing_phone_verified").val(mobile);
                $("#billing_phone_checksum").val(response.data.checksum);
            } else {
                otp_send_ajax.removeClass("kerasno_woo_button--loading").prop('disabled', false);
                otp_send_ajax.removeClass("kerasno_woo_button--loading");
                $("#response_message").text(response.error).addClass("error").show();
            }
        });
    })


    $("#billing_phone_otp").keyup(function (){
        var mobile = $(this).val();
        if(mobile.length != kerasno_woo_otp_options.verifycodelength){
            $(this).parents(".kerasno_woo_otp_field").addClass("woocommerce-invalid")
        }
    });

    $("#billing_phone_otp_button_field").on('click', '#otp_resend', function (){
        var otp_resend_button = $(this);
        if(otp_resend_button.hasClass("disabled")){return;}
        var mobile = $("#billing_phone").val();
        $("#response_message_resend").removeClass().hide();
        if( ! mreeir_is_mobile(mobile) ) {
            $("#billing_phone_field").addClass("woocommerce-invalid");
            $("#response_message_resend").text("لطفا شماره موبایل خود را وارد کنید").addClass("error").show();
            return;
        }
        otp_resend_button.addClass("kerasno_woo_button--loading").prop('disabled', true);
        var data = {
            'action'    : 'kerasno_send_otp_code',
            'mobile'    : mobile,
            'security'  : kerasno_woo_otp_options.sendwoootpsms,
        };
        $.post(kerasno_woo_otp_options.ajax_url, data, function (response) {
            if(response.success) {
                otp_resend_button.removeClass("kerasno_woo_button--loading").prop('disabled', false);
                var seconds = kerasno_woo_otp_options.resendcodetime;
                var interval;
                otp_resend_button.addClass('disabled');
                interval = setInterval(function (){
                    otp_resend_button.find("span").html('ارسال مجدد' + " (" + seconds + ")");
                    if (seconds == 0) {
                        otp_resend_button.find("span").html('ارسال مجدد کد');
                        otp_resend_button.removeClass('disabled');
                        clearInterval(interval);
                    }
                    seconds--;
                }, 1000);
            } else {
                otp_resend_button.removeClass("kerasno_woo_button--loading");
                $("#response_message").text("خطایی رخ داد لطفا با مدیریت تماس بگیرید").addClass("error").show();
            }
        });
    })

})( jQuery );
var mreeir_is_mobile = function (mobileNumber) {
    var regex = /^09\d{9}$/;
    return regex.test(mobileNumber);
}
// check empty 
function mreeir_is_empty (data) {
    if(typeof(data) === 'object'){
        if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
            return true;
        }else if(!data){
            return true;
        }
        return false;
    }else if(typeof(data) === 'string'){
        if(!data.trim()){
            return true;
        }
        return false;
    }else if(typeof(data) === 'undefined'){
        return true;
    }else{
        return false;
    }
}