/home/hamzarou/www/wp-content/plugins/sms-alert/js/otp-sms.min.js
var sa_interval;
$sa  =jQuery;
$sa(document).on(
    "input", ".otp_input",function () {
		var otp_length     = $sa('#smsalert_customer_validation_otp_token').attr('data-max');
        enableValidateBtn(this,otp_length);
    }
);

$sa(document).on(
    'keypress', '.otp_input,.otp-number', function (e) {
        if (e.which == 13) { e.preventDefault();
        }
        var maxlength = $sa(this).attr("data-max");
    
        if($sa(this).val().length==maxlength) {
            if(event.which) {
                event.preventDefault();
            }
        }
    }
);

if((typeof sa_otp_settings  != 'undefined' && sa_otp_settings['is_checkout'])  
    && ((typeof sa_otp_settings !=  'undefined' && sa_otp_settings['login_with_otp']) 
    || (typeof sa_otp_settings !=  'undefined' && sa_otp_settings['buyer_login_otp'])) && $sa(".showlogin").parents(".woocommerce").find(".cod-showlogin").length == 0
) {
    $sa(".showlogin").parents(".woocommerce-form-login-toggle").hide();
    var content     = $sa(".showlogin").parents(".woocommerce-form-login-toggle").clone();
    
    var child_div     = $sa(".showlogin").parents(".woocommerce-form-login-toggle").after(content);

    child_div.show();
    child_div.find('.showlogin').addClass("sa-showlogin").removeClass("showlogin");

    $sa(document).on(
        "click",".sa-showlogin",function () {
            if(sa_otp_settings['hide_default_login_form'] == 'on') {
                $sa(".sa-lwo-form").first().toggle();
            }
            else
            {            
                if($sa(this).hasClass("lwo-opened")) {
                    $sa(".sa-lwo-form").hide();
                    $sa(".woocommerce-form-login,.xoo-el-form-container.xoo-el-form-inline").hide();
                    $sa(".woocommerce-form-login").removeClass('nasa-active');
                    $sa(this).removeClass("lwo-opened");
                }
                else
                {
                    $sa(".woocommerce-form-login,.xoo-el-form-container.xoo-el-form-inline,.black-window.hidden-tag").not('.sa-lwo-form').toggle();
					$sa('.woocommerce-form-login .wrap-all').before('<a class="nasa-stclose woocommerce-form-login-close" href="javascript:void(0);" rel="nofollow"></a>');
					$sa(".woocommerce-form-login").addClass('nasa-active');
                    $sa(this).addClass("lwo-opened");
                }
            }
        }
    );
}

$sa(document).on(
    "click",".sa_default_login_form,.sa_default_signup_form",function () {
		$sa('.black-window.hidden-tag').show();
        var parent_cls = $sa(this).attr("data-parentform");
        if($sa(this).parents('.smsalert-modal').length>0) {
            var id = $sa(this).parents('.smsalert-modal').attr('id');
            $sa("#"+id+" ."+parent_cls).fadeIn(1000,'linear');
        }
        else{
            $sa("form."+parent_cls).fadeIn(1000,'linear');
        }
        $sa(this).parents("form").attr("style","display:none!important");
        $sa(this).parents("form").find(".phone-valid").val("");
    }
);    
var loginelementCopy = '';
var signupelementCopy = '';
$sa(document).on(
    "click", ".sa_myaccount_btn",function (e) {
        $sa('.loginwithotp').removeAttr('inert');
        var parentForm =  $sa(this).parents("form");
        if(parentForm.parents('.um-login').length > 0 || parentForm.parents('#login').length > 0 || parentForm.parents('#tab-customlogin').length > 0 || parentForm.parents('.xoo-el-section-login').length > 0 || parentForm.hasClass('xoo-el-form-login') || parentForm.hasClass('checkoutwc') || parentForm.find('#bp-login-widget-form').length > 0 || parentForm.parents('.thim-login').length > 0) {
            parentForm.addClass('login');
        }
        if(parentForm.parents('#tab-customregister').length > 0 || parentForm.parents('.xoo-el-section-register').length > 0 || parentForm.hasClass('xoo-el-form-register') || parentForm.parents('.thim-register').length > 0) {
            parentForm.addClass('register');
        }
        if(parentForm.hasClass('login')) {
            $sa(".loginwithotp").parents("div").find('.sa_default_login_form').trigger("click");
			if(loginelementCopy == '')
			{
			 loginelementCopy = $sa(".loginwithotp").detach().clone();
			}
            parentForm.after(loginelementCopy);
            parentForm.parents("div").find('.loginwithotp').not('.loginwithotp:first').remove();
        }
        if(parentForm.hasClass('register')) {
			if(signupelementCopy == '')
			{
			 signupelementCopy = $sa(".signupwithmobile").detach().clone();
			}
            parentForm.after(signupelementCopy);
        }
		initialiseCountrySelector();
        parentForm.attr("style", "display: none !important");
        parentForm.next().find(".sa-lwo-form").fadeIn(
            200,'linear',function () {
                var mob_field = $sa(this).find('.phone-valid');if(isInputVisibleToUser(mob_field)) {          
					$sa('html').animate(
						{scrollTop: mob_field.offset().top-100}, 500, function () {            
							mob_field.focus();    
						}
					);  
				}				
            }
        );
        parentForm.parent().find(".sa-lwo-form").addClass("lwo-opened");
		$sa('.black-window.hidden-tag').hide();
    }
);

function isInputVisibleToUser(inputField) {
	
    return inputField.is(':visible') && inputField.parents().filter(function() {
        return $sa(this).css('visibility') !== 'hidden';
    }).length === inputField.parents().length;
}

$sa(document).on(
    "click", ".close",function () {
        hideOtpModal($sa(this));
    }
);

$sa(document).on(
    "click", ".back",function () {
		hideOtpModal($sa(this));
    }
);

function hideOtpModal(obj)
{
    clearInterval(sa_interval);
    var modal_style = obj.parents('.smsalertModal').attr('data-modal-close');
    obj.parents('.smsalertModal').addClass(modal_style+'Out').removeClass(modal_style+'In');
	var otp_in_popup = sa_otp_settings['otp_in_popup'];
	if ("on" === otp_in_popup ) {
	 obj.parents(".smsalertModal").not('.smsalert-modal').hide('slow');
	}
	else{
		 obj.parents('.smsalertModal').next().addClass(modal_style+"Up").removeClass(modal_style+'Down');
		if(modal_style != '' && modal_style != 'modal-slide')
		{ 
		 obj.parents('.smsalertModal').parent().css('min-height',obj.parents('.smsalertModal').next().height());
		}
		obj.parents('.smsalertModal').next().show();
	}
	if(modal_style != '')
	{
		setTimeout(
			function () {
				$sa('.smsalertModal').removeClass(modal_style+'Out').addClass(modal_style+'In');
				if ("on" !== otp_in_popup ) {	
					obj.parents(".smsalertModal").not('.smsalert-modal').hide();
				}
			}, 1000
		); 
	}
	else{
		if ("on" !== otp_in_popup ) {
		  obj.parents(".smsalertModal").not('.smsalert-modal').hide();
		}
	}
}

let saGroup = function (ele) {
    ele.value = ele.value.replace(/[^0-9]/g,'');
    var cur_class = ele.className;
    var maxlength = $sa('.'+cur_class).attr("data-max");
    var next_input = ele.id.slice(6);
    if(ele.value.length > maxlength) {
        var cur_val = ele.value.slice(0, 1);
        $sa("."+cur_class).val(cur_val);
    }
}

let tabChange = function (val,modal_id) {
   // var modal_form_class = modal_id.parentElement.parentElement.parentElement.parentElement.getAttributeNode("data-form-id").value;
    var modal_form_class = $sa(modal_id).parents('[data-form-id]').attr('data-form-id');

    let ele = '';
    if(modal_form_class == "" ) {
        ele = document.querySelectorAll('.digit-group input');
    } else {
        ele = document.querySelectorAll('.'+modal_form_class+' .digit-group input');
    }
    
    if(ele[val-1].value != '') {
        ele[val].focus();
    }else if(ele[val-1].value == '' && event.currentTarget.id != 'digit-1') {
        ele[val-2].focus();
    }     
}


$sa(document).on(
    "keyup",".smsalertModal .otp-number",function (e) {
        var otp_length     = $sa('#smsalert_customer_validation_otp_token').attr('data-max');
        var txtData     = [];
        var parent         = $sa(this).parents(".smsalertModal");
        parent.find(".otp-number").each(
            function () {
                var otp_number = $sa(this).val();
                txtData.push(otp_number);
            }
        );
        parent.find(".otp_input").val(txtData.join(""));
        enableValidateBtn(parent.find(".otp_input"),otp_length);
        e.preventDefault();
        if(e.key === "Delete" && e.target.selectionStart==0) {
            var item         = $sa(this);    
            item.val(item.next('.otp-number').val());
            item.nextAll(".otp-number").each(
                function () {
                    item[0].setSelectionRange(0,0);
                    $sa(this).val($sa(this).next('.otp-number').val());
                }
            );
            e.preventDefault();
        }
        if(e.key === "ArrowLeft" || e.key === "Backspace") {
            $sa(this).prev('.otp-number').focus();
        }
        if(e.key === "ArrowRight") {
            $sa(this).next('.otp-number').focus();
        } 
    }
);


$sa(window).ready(
    function () {
        $sa(".sa_myaccount_btn").closest("form").find('#rememberme').closest('label').each(
            function () {
                var form = $sa(this).closest('form');
                form.find('.woocommerce-LostPassword').prepend($sa(this));
            }
        );
        if((sa_otp_settings['hide_default_login_form'] == 'on' && !sa_otp_settings['is_wp_login']) || (sa_otp_settings['hide_default_admin_login_form'] == 'on' && sa_otp_settings['is_wp_login'])) {
            if($sa(".sa_myaccount_btn[name=sa_myaccount_btn_login]").parents().find('.woocommerce-form-login-toggle').length==0) {
                $sa(".sa_myaccount_btn[name=sa_myaccount_btn_login]").trigger("click");
            }
            else{
                $sa(".woocommerce-form-login-toggle").next().find('.sa_myaccount_btn[name=sa_myaccount_btn_login]').trigger("click");
            }
            setTimeout(
                function () {
                    $sa(".sa-showlogin").trigger("click")}, 10
            );
            $sa(".sa_default_login_form").hide();
            $sa(".sa_loginwithotp-form").show();
			var country_enable = sa_otp_settings['show_countrycode'];
			if (country_enable === "on" && $sa('.ct-drawer-canvas').length > 0) {
				const targetNode = document.querySelector('.ct-drawer-canvas');
				const config = { childList: true, subtree: true, characterData: true };
				
				const callback = function(mutationsList) {
					for (let mutation of mutationsList) {
						if (mutation.type === 'childList') {
						   for (let node of mutation.addedNodes) {
								if (node.id === 'account-modal') {
									initialiseCountrySelector();
									break;
								}
							}
						}
					}
				};

				const observer = new MutationObserver(callback);
				observer.observe(targetNode, config);
			}
        }		
    }
	
	
);

function pasteOtp(otp)
{
    var maxlength = $sa(".otp_input").attr("data-max");
    otp_field = $sa(".otp-number");
    var sc = [...otp];
    otp_field.val(i => sc[i]).eq(maxlength-1).focus();
    $sa(".otp-number").trigger('keyup');
}

function getCountryByCode(code)
{
    return window.intlTelInputGlobals.getCountryData().filter(
        function (data) {
            return (data.dialCode == code) ? data.iso2 : ''; }
    );
}

function enableValidateBtn(obj,otp_length)
{
	var pattern = new RegExp('^[0-9]{'+otp_length+'}$');
    if (pattern.test($sa(obj).val())) {
        $sa("#sa_verify_otp").removeAttr("style");
        $sa("#sa_verify_otp").removeAttr("disabled"); 
        var auto_validate = sa_otp_settings['auto_validate'];
        if ("on" === auto_validate && !$sa("#sa_verify_otp").hasClass("button--loading") ) {	
           $sa("#sa_verify_otp").trigger("click"); 
		}		
    }
    else
    {
        $sa("#sa_verify_otp").css({"color":"grey","pointer-events":"none"});
    }
}

function saResendOTP(obj)
{
    $sa(".sa-otp-initiated .sa-otp-btn-init").trigger("click");
    return false;
}

function sa_otp_timer(obj,otp_timer=15)
{
    initialiseAutoFillOtp();
    var timer = function (secs) {
        var sec_num = parseInt(secs, 10)    
        var hours   = Math.floor(sec_num / 3600) % 24
        var minutes = Math.floor(sec_num / 60) % 60
        var seconds = sec_num % 60    
        hours = hours < 10 ? "0" + hours : hours;
        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;
        return [hours,minutes,seconds].join(":")
    };
    obj.find(".sa_timer").show();
    obj.find(".satimer").html(timer(otp_timer));
    obj.find(".sa_forgot").hide();
	obj.find(".sa_resend_btn").addClass("anchordisabled");
    var counter = otp_timer;
    sa_interval = setInterval(
        function () {
            counter--;
            var places = (counter < 10 ? "0" : "");
            obj.find(".satimer").html(timer(counter));
            if (counter == 0) {
                   counterRunning=false;
                   obj.find(".sa_timer").hide();
                   obj.find(".sa_forgot").show(); 
				   obj.find(".sa_resend_btn").removeClass("anchordisabled");
				   obj.find(".sa_resend_btn").css("cursor","pointer");
                   clearInterval(sa_interval);
            }
        }, 1000
    );
}

function saInitOTPProcess(obj,action_url, data_obj,otp_resend_timer=15,success_cb=null,failure_cb=null,phone_selector=null,submit_selector=null)
{
    var waiting_txt     = (typeof sa_notices !=  'undefined' && sa_notices['waiting_txt']) ? sa_notices['waiting_txt'] : "Please Wait...";            
    var cur_btn            = $sa(obj);
    var prev_btn_text     = cur_btn.val();
	var otp_in_popup = sa_otp_settings['otp_in_popup'];
    if ("on" === otp_in_popup ) {
		var currentModel     = $sa(".modal.smsalertModal");
		currentModel.find(".ring").removeClass('sa-hide');    
		currentModel.find(".modal-content").css('transform', 'scale(0)');
		currentModel.show();
	}
    action_url         = (typeof sa_otp_settings['lang'] !=  'undefined' && sa_otp_settings['lang']!='') ? action_url+"&lang="+sa_otp_settings['lang'] : action_url;
    if(cur_btn.is("input")) {
        cur_btn.val(waiting_txt).attr("disabled",true);
        
    }else{
        cur_btn.addClass('button--loading').attr("disabled",true);
    }
    $sa('form').removeClass('sa-otp-initiated');
    $sa.ajax(
        {
            url:action_url,
            type:"POST",
            data:data_obj,
            cache: false,
            crossDomain:!0,
            dataType:"json",
            success:function (o) {
                if("failure"==o.result || false==o.success) {
                    showError(o,cur_btn,failure_cb,prev_btn_text);
                    return false;
                }
                showSAModal(o,cur_btn,phone_selector,submit_selector,prev_btn_text,success_cb,otp_resend_timer);
				if (typeof wpcaptcha_captcha == 'function') {
					wpcaptcha_captcha();
				}
            },
            error:function (o,e,m) {
                showError(o,cur_btn,failure_cb,prev_btn_text);
            }
        }
    );           
    return false;
}

function showSAModal(o,cur_btn,phone_selector,submit_selector,prev_btn_text,success_cb,otp_resend_timer)
{
	$sa('.smsalertModal .smsalert_validate_field,.smsalertModal .saeditphone,.smsalertModal .sa-message').show();
	$sa('.saresubmit ').removeClass('button--loading').attr("disabled",false);
    $sa('.smsalertModal .sa-edit-phone').hide();
    $sa('[tabindex="-1"]').removeAttr('tabindex');
    var currentModel     = $sa(".modal.smsalertModal");
	cur_btn.parents("form").addClass('sa-otp-initiated');
	if(($sa('.sa-otp-initiated .phone-valid').val() == undefined) || (o.message == 'Oops!!! you do not have enough credits.') || (o.message == 'There was an error in sending the OTP to the given Phone Number. Please Try Again or contact site Admin. If you are the website admin, please browse here for steps to resolve this error.'))
	{                 
        $sa('.smsalertModal .edit-user-phone').hide();        
    }
    else{    
        $sa('.smsalertModal .edit-user-phone').show();        
    }
	var $woo = $sa("div.woocommerce");
    ("success"==o.result)?(
    (cur_btn.is("input") ? cur_btn.val(prev_btn_text).attr("disabled",false) : cur_btn.removeClass('button--loading').attr("disabled",false)),
    currentModel.find(".sa-message").empty().removeClass("woocommerce-error").append(o.message).addClass("woocommerce-message"),
    currentModel.find(".otp_input,.otp-number").val(""),
    currentModel.find(".otp_input,.otp-number:visible:first").focus(),
    currentModel.find(".otp_input,.otp-number").off().on(
        "keypress", function (event) {
            if (event.which === 13) {
                event.preventDefault();
                validateOtp({data:{btn_class: submit_selector}});        
            }       
        }
    ),
    $sa("#sa_verify_otp").off().on("click",{btn_class: submit_selector}, validateOtp),
    currentModel.find(".smsalert_validate_field").show(),
    sa_otp_timer(currentModel,otp_resend_timer),
    ((typeof success_cb == "function") ? success_cb(o) : "" )
    ):
    (
    currentModel.find(".smsalert_validate_field").hide(),
    currentModel.find(".sa-message").empty().removeClass("woocommerce-message").append(o.message).addClass("woocommerce-error"),
	($sa("div.woocommerce").length > 0) ? ($sa("div.woocommerce").removeClass("processing"),(typeof $woo.unblock === "function")?$woo.unblock():'') : '',
    (cur_btn.is("input") ? cur_btn.val(prev_btn_text).attr("disabled",false) : cur_btn.removeClass('button--loading').attr("disabled",false))
    );
	$sa(".saeditphone").off().on("click",{phone_class: phone_selector}, saEditNumber);
	var otp_in_popup = sa_otp_settings['otp_in_popup'];
    if ("on" === otp_in_popup ) {
		currentModel.find(".ring").addClass('sa-hide');    
		currentModel.find(".modal-content").css('transform', 'scale(1)');
	}
	else{
		var parentForm = cur_btn.parents("form");
		if(parentForm.parents('.sa-div').length == 0)
		{
		parentForm.wrap('<div class="sa-div"></div>');
		}
		parentForm.before(currentModel.detach());
		var modal_style = currentModel.attr("data-modal-close");
		if(modal_style != '')
		{
			parentForm.addClass(modal_style+"Down").removeClass(modal_style+"Up");
			setTimeout(
			 function () {
				if(modal_style != 'modal-slide')
				{					
				parentForm.parent().animate({"min-height":currentModel.height()},200);
				}
				parentForm.hide();
			}, 1000
			); 
		}
		else
		{
			parentForm.hide();
		}
		if(modal_style != '' && modal_style != 'modal-slide')
		{
		 parentForm.parent().css('min-height',parentForm.height());
		}
		currentModel.show();
		setTimeout(function(){
           currentModel.removeClass(modal_style+"In");
        }, 1000);
	}
	var otp_field = $sa(".otp-number");
    otp_field.on(
        'paste',function (ev) { 
            var clip = ev.originalEvent.clipboardData.getData('text').trim();
            pasteOtp(clip);     
            return ev.preventDefault();
        }
    );        
    return false;
}

function showError(o,cur_btn,failure_cb,prev_btn_text)
{
    var currentModel     = $sa(".modal.smsalertModal");
    cur_btn.val(prev_btn_text).attr("disabled",false);
    cur_btn.removeClass('check').attr("disabled",false);
    cur_btn.removeClass('button--loading').attr("disabled",false);
    (typeof failure_cb == "function") ? failure_cb(o) : "" ;
    currentModel.find(".ring").addClass('sa-hide');    
    currentModel.hide();
}

function sa_validateOTP(obj,action_url,data_obj,callback)
{
    var current_btn = $sa('#sa_verify_otp');
    var current_modal = $sa(".modal.smsalertModal");
	var otp_in_popup = sa_otp_settings['otp_in_popup'];
    if ("on" === otp_in_popup ) {
     current_modal.find(".ring").removeClass('sa-hide');    
     current_modal.find(".modal-content").css('transform', 'scale(0)');
	}
    action_url         = (typeof sa_otp_settings['lang'] !=  'undefined' && sa_otp_settings['lang']!='') ? action_url+"&lang="+sa_otp_settings['lang'] : action_url;    

    $sa.ajax(
        {
            url:action_url,
            type:"POST",
            data:data_obj,
            crossDomain:!0,
            dataType:"json",
            beforeSend: function ( xhr ) {
				if ("on" === otp_in_popup ) {
                  current_modal.find(".sa-message").empty().addClass("woocommerce-message");
				}
                if(current_btn.is("input")) {
                    current_btn.attr("disabled",true);
            
                }else{
                    current_btn.addClass('button--loading').attr("disabled",true);
                }
            },
            success:function (o) {
                otpSuceess(o,current_btn,callback);
            },
            error:function (o,e,m) {
                alert("error found here");
            }
        }
    );
}

function otpSuceess(o,current_btn,callback)
{
    var current_modal = $sa(".modal.smsalertModal");
	var otp_in_popup = sa_otp_settings['otp_in_popup'];
    if ("on" === otp_in_popup ) {
      current_modal.find(".ring").addClass('sa-hide');
      current_modal.find('.modal-content').css({'transform': 'scale(1)','transition': 'all 0.5s'});
	}
    ("success"==o.result && o.message==sa_otp_settings['valid_otp'])?
    (
	current_modal.find(".smsalert_validate_field").hide(),
    current_btn.removeClass("button--loading"),
    current_modal.find(".sa-message").show().empty().addClass("woocommerce-message").append(o.message).removeClass("woocommerce-error"),
    current_modal.find(".saeditphone").hide(),
   /*  setTimeout(
        function () {
            hideOtpModal(current_btn);
        }, 1500
    ), */
    ((typeof callback == "function") ? callback() : "" )
    ):
    (
    current_btn.attr("disabled",false),
    current_btn.removeClass("button--loading"),
    current_modal.find(".sa-message").show().empty().addClass("woocommerce-error").append(o.message).removeClass("woocommerce-message"),
    current_modal.find(".otp_input").focus());
}

function add_smsalert_button(submit_selector,phone_selector,unique_id,button_text='')
{
    if(!$sa(submit_selector).hasClass("sa-default-btn-hide") && ($sa(phone_selector).attr('type') !== 'hidden' || $sa(phone_selector).parents("form").hasClass('woocommerce-post-checkout-form'))) {
		$sa(phone_selector).parents("form").addClass("sas-form");
        var button = $sa(submit_selector);
        if(!button.hasClass("cod-default-btn-hide"))
		{
          button.addClass("sa-default-btn-hide");
		}
        $sa(button.first().clone()).insertAfter(button.first()).addClass("sa-otp-btn-init smsalert_otp_btn_submit");
        $sa(submit_selector+".sa-otp-btn-init").attr("id","sa_verify_"+unique_id).attr("name","sa_verify_"+unique_id).removeAttr('onclick').removeAttr('onkeypress');
        $sa(".sa-otp-btn-init").removeClass("sa-default-btn-hide cod-default-btn-hide");
		if($sa(phone_selector).prop('nodeName') === 'INPUT')
		{
          $sa(phone_selector).addClass("phone-valid");
		}
        if($sa(submit_selector).is("button")) {
            var text = (button_text!='')?button_text:$sa(submit_selector+".sa-default-btn-hide").text();
            $sa("#sa_verify_"+unique_id).html("<span class=button__text>"+ text+"</span>");
        }
    }
}

function send_otp(obj,submit_selector,phone_selector,username_selector,password_selector)
{
    $sa(obj).parents(".smsalertModal").hide();
    var country_enable = sa_otp_settings['show_countrycode'];
    var site_url = sa_otp_settings['site_url'];
    var otp_resend_timer = sa_otp_settings['otp_time'];
	var verification_allowed = true;
	if($sa(obj).parents("form").find(phone_selector).prop('nodeName') === 'INPUT')
	{
		if ("on" !== country_enable ) {
			var e = $sa(obj).parents("form").find(phone_selector).val();
		} else {
			var e = $sa(obj).parents("form").find(phone_selector).intlTelInput("getNumber");
			var allow_otp_verification = sa_otp_settings['allow_otp_verification'];
			var allow_otp_countries = sa_otp_settings['allow_otp_countries'];
			if("on" == allow_otp_verification && "" !== allow_otp_countries)
			{
				var country_code = $sa(phone_selector).intlTelInput("getSelectedCountryData").dialCode;
                if($sa.inArray(country_code,allow_otp_countries)== -1)	{
                  var verification_allowed = false;
				}					
			}
		}
	}
	else{
		var e = $sa(obj).parents("form").find(phone_selector).text();
	}
	var u     = $sa(obj).parents("form").find(username_selector).val();
    var p            = $sa(obj).parents("form").find(password_selector).val();
    if(typeof u !== "undefined" && typeof p !== "undefined") {
        var data     = {username:u,password:p};
    }
    else
    {
        var data = $sa(obj).parents("form").serialize();
    }
    $sa(obj).parents("form").find("[aria-required=true], [required],.ff-el-is-required,.validate-required,.wpcf7-validates-as-required").not(".otp_input").each(
        function () {
            $sa(this).removeClass("sa_field_error");
            if($sa(this).is(":hidden")) {
                return true;
            }
        
            if(($sa(this).attr("aria-required") || $sa(this).attr("required")) && ($sa(this).val() === "") && $sa(this).attr("type") != 'file' && $sa(this).attr("type") != undefined){
                $sa(this).addClass("sa_field_error");
            }
        
            if($sa(this).attr("type") === "radio" || $sa(this).attr("type") === "checkbox") {
                if($sa(this).attr("name") != undefined && !$sa("[name='"+$sa(this).attr("name")+"']").is(":checked")) {
                    $sa(this).addClass("sa_field_error");
                }
                else if($sa(this).attr("id") != undefined && !$sa("#"+$sa(this).attr("id")).is(":checked") && $sa(this).attr("name") == undefined) {
                    $sa(this).addClass("sa_field_error");
                }
            }
        
            if(($sa(this).find("input").attr("type") === "radio" || $sa(this).find("input").attr("type") === "checkbox")) {
                if(!$sa("[name='"+$sa(this).find("input").attr("name")+"']").is(":checked")) {
                    $sa(this).addClass("sa_field_error");
                }
            }
        
            if($sa(this).hasClass("ff-el-is-required") && ($sa(this).next().find("input").attr("type") === "radio" || $sa(this).next().find("input").attr("type") === "checkbox")) {
                if(!$sa("[name='"+$sa(this).next().find("input").attr("name")+"']").is(":checked")) {
                    $sa(this).addClass("sa_field_error");
                }
            }
			if($sa(this).hasClass("ff-el-is-required") && $sa(this).next().find("[name=fcal_booking]").length > 0 && $sa(this).next().find("[name=fcal_booking]").val().indexOf("start_time")==-1){
                        $sa(this).addClass("sa_field_error");
            }  
            if($sa(this).prop("required") && $sa(this).next().find("input,select").val() === "") {
                if($sa(this).next().find("input").attr("type") === "file") {
                    if($sa(this).next().find(".ff-uploaded-list").find(".ff-upload-preview[data-src]").length == 0) {
                        $sa(this).addClass("sa_field_error");
                    }              
                }
                else
                {
                    $sa(this).addClass("sa_field_error");
                }
            }
            if($sa(this).hasClass("validate-required") && $sa(this).find("input,select").val() === "") {
                $sa(this).addClass("sa_field_error");
            }          
        
            if(!$sa(this).hasClass("sa_field_error") && $sa(this).attr("minlength")) {

                var char_length = $sa(this).val().length;

                if(char_length < $sa(this).attr("minlength")) {
                    $sa(this).addClass("sa_field_error");
                }
            }

            if(!$sa(this).hasClass("sa_field_error") && $sa(this).attr("maxlength")) {

                var char_length = $sa(this).val().length;

                if(char_length > $sa(this).attr("maxlength")) {
                    $sa(this).addClass("sa_field_error");
                }
            }
        }
    );

    if($sa(obj).parents("form").find(".sa_field_error").length === 0 && verification_allowed) {
        if(username_selector !="" && password_selector !="") {
            var action_url     = site_url+"/?option=smsalert_ajax_login_popup";
			if($sa(obj).parents(".nasa_login-form").length > 0)
			{
				data = data.replace(/nasa_/g, '');
			}
        }
        else if($sa(obj).parents("form").hasClass("sa_loginwithotp-form")) {
            action_url     = site_url+"/?option=smsalert_ajax_login_with_otp";
        }
        else if($sa(obj).parents("form").hasClass("sa-signupwithotp-form")) {
            action_url     = site_url+"/?option=smsalert-registration-with-mobile";
        }
        else if($sa(obj).parents("form").hasClass("woocommerce-checkout")) {
            var cartflow_param = '';
            if(typeof cartflows  != 'undefined') {
                cartflow_param = '&wcf_checkout_id='+cartflows['control_step'];
            }
            data = data+"&checkout=Checkout";
            action_url     = site_url+"/?option=smsalert-woocommerce-checkout-process&wc-ajax=checkout"+cartflow_param;
                }
        else if($sa(obj).parents("form").hasClass("woocommerce-post-checkout-form")) {
			data     = {user_phone:e};
            action_url     = site_url+"/?option=smsalert-woocommerce-post-checkout";
        }
        else if($sa(obj).parents("form").hasClass("register") || $sa(obj).parents("form").hasClass("pie_register_reg_form") || $sa(obj).parents("form").hasClass("uwp-registration-form") || $sa(obj).parents().find(".wpte-register").length > 0 || $sa(obj).parents().find(".um-register").length > 0) {
            data = data+"&register=Register";
			action_url     = site_url+"/?option=smsalert_register_with_otp";
			if($sa(obj).parents(".nasa_register-form").length > 0)
			{
				data = {
                        'action': 'nasa_process_register',
                        'data': $sa(obj).parents("form").serializeArray(),
                        'register': true
                    };
				action_url     = sa_otp_settings['ajax_url']+"?option=smsalert_register_with_otp";	
			}
            
        }
        else if($sa(obj).parents("form").hasClass("elementor-form")) {
            data = data+"&action=elementor_pro_forms_send_form";
            action_url     = sa_otp_settings['ajax_url']+"?option=smsalert_elementor_form_otp";
        }
		else if($sa(obj).parents("form").hasClass("wpcf7-form")) {
            action_url     = site_url+"/?option=smsalert_wpcf7_form_otp";
        }
		else if($sa(obj).parents("form#wpas_form_registration").length > 0) {
            action_url     = site_url+"/?option=smsalert_wpas_form_otp";
        }
		else if($sa(obj).parents("form").hasClass("frm-show-form")) {
			if ( $sa(".frm-show-form").attr( "data-token" ) && 0 === $sa(".frm-show-form [name='antispam_token']").length ) {
				antispamInput = document.createElement( 'input' );
				antispamInput.type = 'hidden';
				antispamInput.name = 'antispam_token';
				antispamInput.value = $sa(".frm-show-form").attr( 'data-token' );
				$sa('.frm-show-form').append( antispamInput );
			}
			data = data+"&antispam_token="+$sa(".frm-show-form").attr( 'data-token' );
            action_url     = site_url+"/?option=smsalert_frm_show_form_otp";
        }
        else if($sa(obj).parents("form").hasClass("wpforms-form")) 
		{
			var submitsAWpForm = function() {
				if ($sa(".wpforms-form").attr('data-token') != undefined && $sa(".wpforms-form").attr('data-token').length > 0 ) {
				  $sa( '<input type="hidden" class="wpforms-token" name="wpforms[token]" />' ).val( $sa(".wpforms-form").attr('data-token') ).appendTo( $sa(".wpforms-form") );
				  data = data+"&wpforms[token]="+$sa(".wpforms-form").attr('data-token');
				}
				data = data+"&action=wpforms_submit";
				action_url     = sa_otp_settings['ajax_url']+"/?option=smsalert_wpforms_otp";
				saInitOTPProcess(
				obj,action_url, data,otp_resend_timer,function (resp){},function () {
					$sa(obj).parents("form").find(".sa-default-btn-hide").not(".sa-otp-btn-init").trigger("click")},phone_selector,submit_selector
				 );
				 return false;
			};
			if ( typeof wpformsRecaptchaV3Execute === 'function' ) {
				return wpformsRecaptchaV3Execute( submitsAWpForm );
			}
			else{
				submitsAWpForm();
			}
        }
        else{
			data     = {user_phone:e};
            action_url     = site_url+"/?option=smsalert-shortcode-ajax-verify";
        }
		
        if(!$sa(obj).parents("form").hasClass("wpforms-form")){
			saInitOTPProcess(
			obj,action_url, data,otp_resend_timer,function (resp){},function () {
				$sa(obj).parents("form").find(".sa-default-btn-hide").not(".sa-otp-btn-init").trigger("click")},phone_selector,submit_selector
			 );
			 return false;
		}
    }
    else
    {
        clickSaFormButton($sa(obj).parents("form").find(".sa-default-btn-hide").not(".sa-otp-btn-init")[0]);
        setTimeout(
            function () {
                $sa(".wc-block-components-checkout-place-order-button").not(".sa-otp-btn-init").addClass("sa-default-btn-hide")}, 10
        );
        return false;
    }
}
function clickSaFormButton(elem)
{
    elem.classList.remove("sa-default-btn-hide");
    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent(
        "click", true, true, window,
        0, 0, 0, 0, 0, false, false, false, false, 0, null
    );
    if (document.createEvent) {
        elem.dispatchEvent(evt);
    } else {
        elem.fireEvent("on" + evt.eventType, evt); // support for IE crap
    }
    elem.classList.add("sa-default-btn-hide");
}
function validateOtp(event)
{
    var site_url = sa_otp_settings['site_url'];
    var submit_selector = event.data.btn_class;
    var c_form     = $sa(".sa-otp-initiated");
    var otp = $sa("#smsalert_customer_validation_otp_token").val();
    var action_url         = site_url+"/?option=smsalert-validate-otp-form";
	var data = '';
	if(c_form.parents().find("#wp-travel-engine-new-checkout-form").length > 0 || c_form.parents().find("#wpas_form_registration").length > 0 || c_form.parents().find("#pie_regiser_form").length > 0 || c_form.parents().find("#piereg_login_form").length > 0)
	{
		data  = "otp_type=phone&from_both=&smsalert_customer_validation_otp_token="+otp;
	}
	else{
       data  = c_form.serialize()+"&otp_type=phone&from_both=&smsalert_customer_validation_otp_token="+otp;
    }
    sa_validateOTP(
        submit_selector,action_url,data,function () {
            $sa("body").off("submit");
			hideOtpModal($sa("#sa_verify_otp"));
            $sa(submit_selector).hasClass("sa-default-btn-hide")?clickSaFormButton(c_form.find(".sa-default-btn-hide").not(".sa-otp-btn-init")[0]):$sa("#order_verify").val(otp);
        
        }
    );
}

function initialiseCountrySelector(phoneSelector='.phone-valid')
{
    var country_enable = sa_otp_settings['show_countrycode'];
    if ("on" !== country_enable ) {
        return;
    }
    var default_cc = (typeof sa_country_settings !="undefined" && sa_country_settings["sa_default_countrycode"] && sa_country_settings["sa_default_countrycode"]!="") ? sa_country_settings["sa_default_countrycode"] : "";
    var show_default_cc = "";
    var mob_field = $sa(phoneSelector);
    mob_field.addClass("phone-valid");
    mob_field.intlTelInput("destroy");
    var mob_field_name = mob_field.attr("name");
    var object = $sa(this).saIntellinput({hiddenInput:false});
    var iti = mob_field.intlTelInput(object);
    mob_field.parents(".iti--separate-dial-code").append('<input type="hidden" name="'+mob_field_name+'">');
    if(default_cc!="") {
        var selected_cc = getCountryByCode(default_cc);
        var show_default_cc = selected_cc[0].iso2.toUpperCase();
        iti.intlTelInput("setCountry",show_default_cc);
    }
    $sa(phoneSelector).on(
        "countrychange", function () {
            var default_cc = $sa(this).intlTelInput("getSelectedCountryData");
            var fullnumber =  $sa(this).intlTelInput("getNumber");
            var field_name = $sa(this).attr("name");
            $sa(this).parents("form").find('[name="'+field_name+'"]:hidden').val(fullnumber);
        }
    );
}

if ('OTPCredential' in window) {
    window.addEventListener(
        'DOMContentLoaded', e => {
            const input = document.querySelector('#smsalert_customer_validation_otp_token');
            const ac = new AbortController();
            setTimeout(
            () => {
                    ac.abort();
            }, 1 * 60 * 1000
        );
        if (!input) { return;
        }
        initialiseAutoFillOtp();
        }
    );
}

function initialiseAutoFillOtp()
{
    try {
        navigator.credentials.get(
            {
                otp: { transport:['sms'] }
            }
        ).then(
            otp => {
            if($sa(".otp-number").hasClass('hide')) {
                $sa("#smsalert_customer_validation_otp_token").val(otp.code);  
            }          
            else{
                pasteOtp(otp.code);  
            }
            $sa("#sa_verify_otp").trigger('click');
            }
        ).catch(
            err => {
            //console.log(err);
            }
        );
    }
    catch(err) {
    }
}

function saRecaptcha()
{
	var recaptcha_div = $sa(".frm-show-form .frm_button_submit").parents("form").find("[data-sitekey]");
	if(recaptcha_div.length>0 && recaptcha_div.attr("data-size") == "invisible")
	{
	  recaptcha_div.removeClass("frm-g-recaptcha").addClass("g-recaptcha").attr("id","sa-grecaptcha").html("");        
	  var site_key = recaptcha_div.attr("data-sitekey");
	  grecaptcha.ready(function() {  
			grecaptcha.render("sa-grecaptcha", {
					"sitekey" : site_key
			});
			grecaptcha.execute();
	  });          
    }
}

function saEditNumber(event){ 
    $sa(".sa-edit-phone form").html('');
    var phone_selector = event.data.phone_class+'.phone-valid';       
    $sa('.smsalertModal .sa-message').attr("style", "display: none !important");
    $sa('.saeditphone,.smsalertModal .smsalert_validate_field').hide();
    var otp_in_popup = sa_otp_settings['otp_in_popup'];
	var currentModel = $sa(".modal.smsalertModal");
	if ("on" === otp_in_popup ) {                          
		currentModel.find(".ring").removeClass('sa-hide');    
		currentModel.find(".modal-content").css('transform', 'scale(0)');
		currentModel.show();
	}
	 	
    if($sa(".sa-edit-phone "+phone_selector).length == 0)
    { 
        currentModel.find(".saeditmessage").removeClass('sa-hide'). addClass('woocommerce-message');
        var name = $sa('.sa-otp-initiated '+phone_selector).attr('name'); 
		var country_enable = sa_otp_settings['show_countrycode'];
		if ("on" !== country_enable ) {
			var phone = $sa(".sa-otp-initiated .phone-valid").val();
		} else {
			var phone = $sa(".sa-otp-initiated .phone-valid").intlTelInput("getNumber");
		}
        $sa(".sa-otp-initiated "+phone_selector).clone().appendTo(".sa-edit-phone form");
		$sa(".sa-edit-phone input[name='"+name+"']").val(phone);
        var type = $sa(".sa-edit-phone input[name='"+name+"']").attr('type');
	    if(type == 'hidden'){
			$sa(".sa-edit-phone input[name='"+name+"']").attr("type", 'text');
		}                
		initialiseCountrySelector(".sa-edit-phone input[name='"+name+"']");
		$sa(".sa-edit-phone form").append("<button type='button' class='button saresubmit smsalert_otp_btn_submit' onclick='saReSubmit(this)'>Request Otp</button>");
	}
	
	if ("on" === otp_in_popup ) {
		setTimeout(function(){
			currentModel.find(".ring").addClass('sa-hide');  
			currentModel.find(".modal-content").css('transform', 'scale(1)');
		}, 500);
	}
	else
	{
        var modal_style = currentModel.attr("data-modal-close");
        $sa(".modal.smsalertModal").addClass(modal_style+"In");
		var parentForm = $sa(".saeditphone").parent().closest('div'); 
		if(modal_style != '')
		{
			parentForm.addClass(modal_style+"Down").removeClass(modal_style+"Up");
			setTimeout(
			 function () {
				parentForm.hide();
			}, 1000
			);
		}
		else
		{
			parentForm.hide();
		}   
    }
	$sa('.sa-edit-phone,.sa-edit-phone .smsalert_otp_btn_submit').show();
	$sa(".sa-edit-phone input[name='"+name+"']").trigger('keyup');	
}
function saReSubmit(obj){
	clearInterval(sa_interval);
	$sa(obj).addClass('button--loading').attr("disabled",true); 
	var name = $sa('.sa-otp-initiated .phone-valid').attr('name');
	var country_enable = sa_otp_settings['show_countrycode'];
	if ("on" !== country_enable ) {
		var phone = $sa(".sa-edit-phone .phone-valid").val();
	} else {
		var phone = $sa(".sa-edit-phone .phone-valid").intlTelInput("getNumber");
	}        
	$sa(".sa-otp-initiated .phone-valid,.sa-otp-initiated input[name='"+name+"']").val(phone);
	$sa(".sa-otp-initiated .phone-valid").trigger('keyup');$sa('.sa-otp-initiated .sa-otp-btn-init').trigger('click');
}

$sa(document).on("keypress", ".sa-edit-phone input", function(e){
	if (e.which === 13)
	{
		e.preventDefault();
		var editform 	= $sa(this).parents(".sa-edit-phone");
		editform.find(".saresubmit ").trigger("click");
	}
});

$sa(window).ready(function() {
	if($sa.magnificPopup != undefined)
	{
		$sa.magnificPopup.instance._onFocusIn = function(e) {
			if( $sa(e.target).hasClass('otp_input') ) {
			   return true;
			} 
			$sa.magnificPopup.proto._onFocusIn.call(this,e);
		};
	}
});