$(function(){
    /******** Formulaire login ********/
    //gestion erreur formulaire login avec jquery validate
    $.validator.addMethod(
        "regex",
        function(value, element, regexp)
        {
            if (regexp.constructor != RegExp)
                regexp = new RegExp(regexp);
            else if (regexp.global)
                regexp.lastIndex = 0;
            return this.optional(element) || regexp.test(value);
        },
        "Please check your input."
    );

    $('.form-login').validate({
        rules: {
            login:
                {
                    required : true,
                    regex : zResourceIdPattern
                },
            mdp: "required"
        },
        messages: {
            login:
                {
                    required : emptyValueLoginMessage,
                    regex : zMsisdnErrorFormatMessage
                } ,
            mdp: emptyValueMdpMessage
        },
        submitHandler: function (form)
        {
            return true;
        }
    });

    //event input sur le champ login pour accepter seulement les chiffres
    $(document).on('input','input[name=login]',function(){
        this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
    });

    /******** Formulaire création compte ********/

    /*Init setpper form create compte*/
    var steps = $('.step-form').steps({
        showFooterButtons: false,
        onFinish: function () {

        }
    });

    steps_api = steps.data('plugin_Steps');

    //gestion erreur formulaire creation compte avec jquery validate
    $('.form-create').validate({
        rules: {
            login:
                {
                    required : true,
                    regex : zMsisdnPattern
                },
            mail:
                {
                    "required": true,
                     email: true
                },
            confirmationMail:
                {
                    "required": true ,
                    equalTo: '#mail',
                    email: true
                },
            mdp:
                {
                    required : true,
                    //regex : zPassWordPattern
                },
            confirmationMdp:
                {
                    required: true,
                    equalTo: '#mdp'
                },
            code: "required",
        },
        messages: {
            login:
                {
                    required : emptyValueLoginMessage,
                    regex : zMsisdnErrorFormatMessage
                } ,
            mail:
                {
                    required: emptyValueEmailMessage,
                    email : wrongValueEmailMessage
                },
            confirmationMail:
                {
                    required :emptyValueEmailConfirmMessage,
                    equalTo : notEqualValueEmailConfirmMessage,
                    email : wrongValueEmailConfirmMessage
                },
            mdp:
                {
                    required : emptyValueMdpMessage,
                    //regex : wrongFormatMdpMessage
                },
            confirmationMdp:
                {
                    required : emptyValueMdpConfirmMessage,
                    equalTo : notEqualValueMdpConfirmMessage
                },
            code: emptyValueCaptchaMessage,
            email : "Adresse email invalide"
        }
    });

    /*gestion erreur formulaire form code avec jquery validate*/
    $('.form-otp').validate({
        rules: {
            code1: {
                required : true,
                regex : zOneDigitPattern
            },
            code2: {
                required : true,
                regex : zOneDigitPattern
            },
            code3:{
                required : true,
                regex : zOneDigitPattern
            },
            code4: {
                required : true,
                regex : zOneDigitPattern
            },
        },
        messages: {
            code1: {
                required: "Réquis",
                regex : "Format erroné"
            },
            code2: {
                required: "Réquis",
                regex : "Format erroné"
            },
            code3:{
                required: "Réquis",
                regex : "Format erroné"
            },
            code4: {
                required: "Réquis",
                regex : "Format erroné"
            },
        }
    });

    //event input sur le champ login pour accepter seulement les chiffres
    $(document).on('input','input[name=code1]',function(){
        this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
    });

    //event input sur le champ login pour accepter seulement les chiffres
    $(document).on('input','input[name=code2]',function(){
        this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
    });

    //event input sur le champ login pour accepter seulement les chiffres
    $(document).on('input','input[name=code3]',function(){
        this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
    });

    //event input sur le champ login pour accepter seulement les chiffres
    $(document).on('input','input[name=code4]',function(){
        this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
    });

    $('body').on('focusout','#login',function(e){

        let msisdn = this.value ;

        $.ajax
        ({
            type: "POST",
            dataType: "json",
            url: zUrl_CheckAccountExist,
            data: {
                msisdn: msisdn
            },
            success: function (_oRet) {
                if (_oRet.Status_Code == "000") {
                    if (_oRet.bExiste == 1) {
                        $("#login").removeClass("valid") ;
                        $("#login").addClass("error") ;
                        //$("#login").focus() ;
                        $('#login-error').text(_oRet.Status_Reason) ;
                        $('#login-error').show() ;
                       // return false;
                    }
                }


            },
        });
        })


    $('body').on('focusout','#mail',function(e){

        let email = this.value ;

        $.ajax
        ({
            type: "POST",
            dataType: "json",
            url: zUrl_CheckValidateEmail,
            data: {
                email: email
            },
            success: function (_oRet) {
                if (_oRet.Status_Code != "000") {
                    $("#mail").removeClass("valid") ;
                    $("#mail").addClass("error") ;
                    //$("#login").focus() ;
                    $('#mail-error').text(_oRet.Status_Reason) ;
                    $('#mail-error').show() ;
                }


            },
        });
    })





    /*Personnalisation event click bouton creer mon compte*/
    $('body').on('click','.btn-create-compte',function(e){
        e.preventDefault();
        $('.input-form-code').val('') ;
        if($('.form-create').valid()){


            var msisdn = $('#login').val().trim() ;
            var email = $('#mail').val().trim() ;
            var motpass = $('#mdp').val().trim() ;
            var confirmpassword = $('#confirmationMdp').val().trim() ;
            var codevisuel = $('#code').val().trim() ;
            $("#ret-error-display").hide() ;
            $.ajax
            ({
                type: "POST",
                dataType: "json",
                url: zUrl_CreateAccount,
                data: {
                    msisdn: msisdn, email: email,password : motpass,confirmpassword:confirmpassword, captcha : codevisuel
                },
                success: function (_oRet)
                {
                    if(_oRet.status_Code != "000"){
                        if(_oRet.status_Reason !=""){
                            switch (_oRet.status_Code){
                                case 103 :
                                    $("#login").addClass("invalid") ;
                                    break ;
                                case 104:
                                    $("#mail").addClass("invalid") ;
                                    break ;
                                case 105:
                                    $("#code").addClass("invalid") ;
                                    break ;
                                case 113:
                                    $("#login").addClass("invalid") ;
                                    break ;
                                case 118:
                                    $("#mdp").addClass("error") ;
                                    break ;

                            }

                            getCapcha() ;
                            $("#general-error").text(_oRet.status_Reason) ;
                            $("#general-error").show() ;
                            $("#ret-error-display").show() ;
                        }
                    }else{
                        steps_api.next();
                        $(this).hide();
                        $('.btn-valider-compte').fadeIn();
                        $('#code1').focus();
                        /*setTimeout(function(){
                            $('#code1').focus();
                        },1000)*/
                    }

                }
            });
        }
    });

    /*Personnalisation event click bouton validation creation mon compte*/
    $('body').on('click','#valider-otp-creation',function(e){
        $('#code-notification').hide() ;
        $('.custom-msg-error').hide() ;
        $('#custom-msg-error-2').hide() ;
        $('#custom-msg-success-2').hide() ;
        $('#custom-msg-error-3').hide() ;
        $('#custom-msg-success-3').hide() ;
        e.preventDefault();
        if($('.form-otp').valid()){

            var zOtpCode = $("#code1").val().trim() + $("#code2").val().trim() + $("#code3").val().trim() + $("#code4").val().trim()
            $.ajax
            ({
                type: "POST",
                dataType: "json",
                url: zUrl_ConfirmAccountCreation,
                data: {zOtpCode:zOtpCode },
                success: function (_oRet)
                {
                    if(_oRet.status_Code != undefined){
                        if(_oRet.status_Code == "000"){
                            steps_api.next();
                        }else{
                            $('#msg-error-2').text(_oRet.status_Reason);
                            $('#custom-msg-error-2').show();
                        }

                    }
                }
            });
        }else{
            $('.custom-msg-error').show();
        }
    });

    /******** Formulaire reset compte ********/
    //gestion erreur formulaire reinitialiser mot de passe avec jquery validate
    $('.form-reset').validate({
        rules: {
            loginReset: {
                required: true,
                minlength: 10,
                maxlength: 10
            }
        },
        messages: {
            loginReset: {
                required: emptyValueLoginMessage,
                minlength: zMessageMsisdnLength,
                maxlength: zMessageMsisdnLength
            }
        }
    });

    //gestion erreur formulaire final réinitialisation mot de passe avec jquery validate
    $('.form-reset-final').validate({
        rules: {
            login: "required",
            mdp: "required",
            confirmationMdp: {
                required: true,
                equalTo: '#mdp'
            },
            code: "required"
        },
        messages: {
            login: emptyValueLoginMessage,
            mdp: emptyValueMdpMessage,
            confirmationMdp: {
                required: emptyValueMdpConfirmMessage,
                equalTo : notEqualValueMdpConfirmMessage
            },
            code: emptyValueCaptchaMessage
        }
    });

    /*Personnalisation event click bouton begin reset mot de passe*/
    $('body').on('click', '.btn-begin-reset', function(e) {
        e.preventDefault();
        resetInputOtp() ;
        if ($('.form-reset').valid()) {
            let msisdn = $('#loginReset').val().trim();
            let smsStatus = $("input[name='sms']:checked").val();
            $.ajax({
                url : zUrlResetRequest,
                type : 'post',
                dataType : 'json',
                async : false,
                data : { 'msisdn': msisdn, 'sendType': 'on' === smsStatus ? 'sms' : 'email' },
                success : response => {
                    if ('000' === response.status_Code) {
                        steps_api.next();
                        setTimeout(function() {
                            if('on' === smsStatus){
                                $('#code1').focus();
                                $('#msg-success-3').text(response.status_Reason);
                                $('#custom-msg-success-3').show();
                            }else{
                                $('.btn-next-pass').hide() ;
                                $('.group-new-code').hide() ;
                                $('.group-input-code').hide() ;
                                $('#msg-success-3').text(response.status_Reason);
                                $('#custom-msg-success-3').show();

                            }

                        },500) ;

                    } else {
                        displayInputErrorMessage($('#loginReset')[0], response.zErrorMessage);
                    }
                }
            });
        }
    });

    /*Personnalisation event click bouton validation creation mon compte*/
    $('body').on('click', '.btn-next-pass', function(e) {
        e.preventDefault();
        resetNotifications();
        let notificationNode = $('#code-notification');
        if ($('.form-otp').valid()) {
            let msisdn = $('#loginReset').val().trim();
            let code = $('.code-full').val();
            $.ajax({
                url : zUrlCheckOtpCode,
                type : 'post',
                dataType : 'json',
                async : false,
                data : { 'msisdn': msisdn, 'code': code },
                success : response => {
                    if ('000' === response.status_Code) {
                        // Get captcha
                        $.ajax({
                            url : zUrlGetCaptcha,
                            type : 'post',
                            dataType : 'json',
                            async : false,
                            success : response => {
                                if (0 === response.iErrorCode && '' !== response.zPath) {
                                    $('#login').val(msisdn);
                                    $('#captcha').attr("src", response.zPath);
                                    steps_api.next();
                                }
                            },
                            error : error => {
                                notificationNode.css('color', '#f10e34').html(error).show();
                            }
                        });
                    } else {
                        [$('#code1'), $('#code2'), $('#code3'), $('#code4')].forEach(codeNode => {
                            codeNode[0].classList.add('error');
                        });
                        $('#msg-error-3').text(response.zErrorMessage);
                        $('#custom-msg-error-3').show();
                    }
                },
                error : error => {
                    notificationNode.css('color', '#f10e34').html(error).show();
                }
            });
        }else{
            $('.custom-msg-error').show();
        }
    });

    // Event click bouton finalisation de la réinitialisation du mot de passe
    $('body').on('click', '.btn-reset-pass', function(e) {
        e.preventDefault();
        $('#custom-msg-error-4').hide() ;
        $('#custom-msg-success-4').hide() ;
        let notificationNode = $('#reset-notification');
        if ($('.form-reset-final').valid()) {
            let msisdn = $('#login').val().trim();
            let mdp = $('#mdp').val().trim();
            let confirmationMdp = $('#confirmationMdp').val().trim();
            let code = $('#code').val();
            $.ajax({
                url : zUrlPasswordReset,
                type : 'post',
                dataType : 'json',
                async : false,
                data : { 'msisdn': msisdn, 'password': mdp, 'confirmPassword': confirmationMdp, 'captcha': code },
                success : response => {
                    if ('000' === response.status_Code) {
                        $('#msg-success-4').text(response.status_Reason);
                        $('#custom-msg-success-4').show();
                        setTimeout(function() {
                            window.location.replace(zUrlLogin)
                        }, 4000);
                        //window.location.replace(zUrlLogin);
                    } else if (116 === parseInt(response.status_Code)) {
                        $('#login').addClass("error") ;
                        $('#msg-error-4').text(response.zErrorMessage);
                        $('#custom-msg-error-4').show();

                    } else if (105 === parseInt(response.status_Code)) {
                        $('#code').addClass("error") ;
                        $('#msg-error-4').text(response.zErrorMessage);
                        $('#custom-msg-error-4').show();
                    } else if ('001' === response.status_Code || 118 === response.status_Code) {
                        // Erreur mot de passe
                        $('#mdp').addClass("error") ;
                        $('#confirmationMdp').addClass("error") ;
                        $('#msg-error-4').text(response.zErrorMessage);
                        $('#custom-msg-error-4').show();
                    } else {
                        $('#msg-error-4').text(response.zErrorMessage);
                        $('#custom-msg-error-4').show();
                    }
                },
                error : error => {
                    $('#msg-error-4').text(error);
                    $('#custom-msg-error-4').show();
                    notificationNode.css('color', '#f10e34').html(error).show();
                }
            });
        }
    });
    //event input sur le champ login pour accepter seulement les chiffres
    $(document).on('input','input[name=loginReset]',function(){
        this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
    });

    /*event change sur choix code réinitialisation*/
    $('.form-reset input[type="checkbox"]').on('change', function() {
        $('.form-reset input[type="checkbox"]').not(this).prop('checked', false);
     });


     ///Variable globale val input
     let val ='';
     /*Auto focus next input quand remplissage OTP*/
    $('.input-form-code').on('input propertychange', function() {
        let val1 = $('#code1').val();
        let val2 = $('#code2').val();
        let val3 = $('#code3').val();
        let val4 = $('#code4').val();
        let valFinal = val1+val2+val3+val4;
        if (this.value.length >= this.maxLength) {
            $(this).parent().next().find('.input-form-code').focus();
            val = val + $(this).val();
            $('.code-full').val(valFinal);
        }

        if(valFinal.length === 4){
          $('.custom-msg-error').hide();
        }
    }).keyup(function(e) {
        let val1 = $('#code1').val();
        let val2 = $('#code2').val();
        let val3 = $('#code3').val();
        let val4 = $('#code4').val();
        let valFinal = val1+val2+val3+val4;
        if (e.which === 8 && !this.value ) {
            $(this).parent().prev().find('.input-form-code').focus();
            $('.code-full').val(valFinal);
            if(valFinal.length === 4){
              $('.custom-msg-error').hide();
            }
        }
    });


    /*Personnalisation event click bouton begin reset mot de passe*/
    $('body').on('click','.link-generate',function(e){
        e.preventDefault();

        resetInputOtp() ;
        $.ajax
        ({
            type: "POST",
            dataType: "json",
            url: zUrl_ResendOtp,
            data: {},
            success: function (_oRet)
            {
                if(_oRet.status_Code != "000"){
                    $('#msg-error-2').text(_oRet.status_Reason);
                    $('#custom-msg-error-2').show();
                }else{
                    $('#msg-success-2').text(_oRet.status_Reason);
                    $('#custom-msg-success-2').show();
                }
            }
        })
    });



    /* Personnalisation event click bouton génération de code OTP */
    $('body').on('click', '.link-generate-reset', function(e) {

        resetInputOtp() ;
        e.preventDefault();
        let notificationNode = $('#code-notification');
        $.ajax({
            url : zUrlGenerateOtpCode,
            type : 'post',
            dataType : 'json',
            async : false,
            success : response => {
                if ('000' === response.status_Code) {
                    $('#msg-success-3').text(response.status_Reason);
                    $('#custom-msg-success-3').show();

                    /*notificationNode.css('color', '#38b175').html(response.status_Reason).show();
                    [$('#code1'), $('#code2'), $('#code3'), $('#code4')].forEach(codeNode => {
                        codeNode[0].classList.remove('error');
                    });*/
                } else {
                    $('#msg-error-3').text(response.status_Reason);
                    $('#custom-msg-error-3').show();

                }
            },
            error : error => {
                notificationNode.css('color', '#f10e34').html(error).show();
            }
        });
    });

    $('body').on('click','.btn-interface',function(e) {
        e.preventDefault();
        window.location.replace(zUrlLogout)
    });


    /*$('body').on('click','.btn-valid-num',function(e) {
        e.preventDefault();
        window.location.replace(zUrlListFamilly)
    });*/



    //event input sur les champs numéros pour accepter seulement les chiffres
    $(document).on("input", ".input-num", function () {
        this.value = this.value
            .replace(/[^0-9.]/g, "")
            .replace(/(\..*?)\..*/g, "$1");
    });

    /*event change sur choix code réinitialisation*/
    $('.form-add-famille input[type="checkbox"]').on("change", function () {
        $('.form-add-famille input[type="checkbox"]')
            .not(this)
            .prop("checked", false);
    });

    /******* Form achat self credit ********/

    /*event click radio carte à gratter*/
    $("body").on("click", "#mvola", function () {
        $(".form-group-montant").slideDown(200);
        $(".form-group-montant .input-num").removeClass("error");
        $(".form-group-code").slideUp(200);
    });

    /*event click radio carte à gratter*/
    $("body").on("click", "#carteGratter", function () {
        $(".form-group-code").slideDown(200);
        $(".form-group-code .input-num").removeClass("error");
        $(".form-group-montant").slideUp(200);
    });

    /******* Formulaire achat autre credit *******/

    /*Fonction add Block numéro*/
    function addBlockNumero(nb, nameInput2, placeholderInput2) {
        let parentAddNumero = $(".block-add-num-bottom");
        let newElementItem = document.createElement("div");
        newElementItem.setAttribute("class", "block-add-item");
        let inputNum = document.createElement("input");
        inputNum.setAttribute("class", "input-forms input-num");
        inputNum.setAttribute("type", "text");
        if(nameInput2 == "CodeCredit"){
            inputNum.setAttribute("id", "NumCreditCAG" + nb);
        }else {
            inputNum.setAttribute("id", "NumCredit" + nb);
        }
        inputNum.setAttribute("name", "NumCredit" + nb);

        inputNum.setAttribute("placeholder", "Numéro à créditer");
        inputNum.setAttribute("maxlength", "10");
        let inputMontant = document.createElement("input");
        inputMontant.setAttribute("class", "input-forms input-num");
        inputMontant.setAttribute("type", "text");
        inputMontant.setAttribute("name", nameInput2 + nb);
        inputMontant.setAttribute("placeholder", placeholderInput2);
        if(nameInput2 == "CodeCredit"){
            inputMontant.setAttribute("MAXLENGTH", 14);
        }
        let buttonDelete = document.createElement("button");
        buttonDelete.setAttribute("class", "btn-icon btn-delete");
        let iconDelete = document.createElement("i");
        iconDelete.setAttribute("class", "icon-delete");
        newElementItem.append(inputNum);
        newElementItem.append(inputMontant);
        buttonDelete.append(iconDelete);
        newElementItem.append(buttonDelete);
        parentAddNumero.append(newElementItem);
    }

  /*Fonction add Block numéro only*/
  function addBlockOneNumero(nb) {
    let parentAddNumero = $(".block-add-num-bottom");
    let newElementItem = document.createElement("div");
    newElementItem.setAttribute("class", "block-add-item");
    let inputNum = document.createElement("input");
    inputNum.setAttribute("class", "input-forms input-num");
    inputNum.setAttribute("type", "text");
    inputNum.setAttribute("name", "NumCredit" + nb);
    inputNum.setAttribute("placeholder", "Numéro à créditer");
    inputNum.setAttribute("maxlength", "10");
    let buttonDelete = document.createElement("button");
    buttonDelete.setAttribute("class", "btn-icon btn-delete");
    let iconDelete = document.createElement("i");
    iconDelete.setAttribute("class", "icon-delete");
    newElementItem.append(inputNum);
    buttonDelete.append(iconDelete);
    newElementItem.append(buttonDelete);
    parentAddNumero.append(newElementItem);
  }

    let nb = 1;
    /*event click btn-plus-mvola*/
    $("body").on(
        "click",
        ".form-achat-other-credit .btn-plus-mvola",
        function (e) {
            e.preventDefault();
            addBlockNumero(nb, "MontantCredit", "Montant en Ariary");
            nb++;
        }
    );

    /*event click btn-plus-carte*/
    $("body").on(
        "click",
        ".form-achat-other-credit .btn-plus-carte",
        function (e) {
            e.preventDefault();
            addBlockNumero(nb, "CodeCredit", "Code (14 chiffres)");
            nb++;
        }
    );

    /*event click btn-delete*/
    $("body").on("click", ".form-achat-other-credit .btn-delete", function () {
        $(this).parents(".block-add-item").remove();
        nb--;
    });

    /*event click radio carte à gratter*/
    $("body").on("click", "#mvolaCpt", function () {
        $("#montant-error").hide() ;
        $("#codeCarte-error").hide() ;
        $(".input-montant").show(200);
        $(".input-code").hide(200);
        $(".btn-plus-mvola").show(200);
        $(".btn-plus-carte").hide(200);
        nb = 1;
        $(".block-add-num-bottom").empty();
        $(".input-montant").val('');
        $(".input-code").val('') ;
    });

    /*event click radio carte à gratter*/
    $("body").on("click", "#carteGratterCpt", function () {
        $("#montant-error").hide() ;
        $("#codeCarte-error").hide() ;
        $(".input-montant").hide(200);
        $(".input-code").show(200);
        $(".btn-plus-mvola").hide(200);
        $(".btn-plus-carte").show(200);
        nb = 1;
        $(".block-add-num-bottom").empty();
        $(".input-code").val('');
    });

    $("body").on("click", ".tab-link", function () {
        $('#btn-buy-other').removeClass('disabled') ;

        $(".input-block .input-montant").val('') ;
        $(".form-group-code .input-num").val('') ;
        let ischeckedCAG =  $('#carteGratterCpt').is(':checked') ;
        if(ischeckedCAG == true){
            $( "#carteGratterCpt" ).trigger( "click" );
        }else {
            $( "#mvolaCpt" ).trigger( "click" );
        }
    });

    let rules = new Object();
    let messages = new Object();
    $("input[name^=MontantAriary]:text").each(function () {
        rules[this.name] = { required: true };
        messages[this.name] = { required: "ce champs est requis" };
    });

    //gestion erreur formulaire numéro famille avec jquery validate
    $(".form-achat-self-credit").validate({
        rules: {
            montant: "required",
            codeCarte: "required",
        },
        messages: {
            montant: "Merci de renseigner le montant à crediter",
            codeCarte: "Merci de renseigner les codes à 14 chiffres",
        },
    });


    /*Personnalisation event click bouton validation creation mon compte*/
    $('body').on('click','#btn-buy-self',function(e){

        $('#code-notification').hide() ;
        $('.custom-msg-error').hide() ;
        $('#custom-msg-error').hide() ;
        $('#custom-msg-success').hide() ;
        $('#custom-msg-error-2').hide() ;
        $('#custom-msg-success-2').hide() ;
        e.preventDefault();
        if($('.form-achat-self-credit').valid()){
            let modePaiement;
            let radios = document.getElementsByName('modeCharge');
            for (var i = 0, length = radios.length; i < length; i++) {
                if (radios[i].checked) {
                    modePaiement = radios[i].value;
                    break;
                }
            }
            
            if(modePaiement == 'mvola'){
                $('#montant').removeClass('error') ;
                $('#btn-buy-self').addClass("disable-button") ;
                $('#btn-buy-self').prop('disabled', true).addClass('ui-state-disabled') ;
                let montant = $('#montant').val() ;
                $('.form-achat-self-credit').ajaxloader() ;
                $.ajax
                ({
                    type: "POST",
                    dataType: "json",
                    url: zUrl_selfAcheterCreditMVola,
                    data: {iAmount:montant },
                    success: function (_oRet)
                    {
                        if(_oRet.status_Code != undefined){
                            if(_oRet.status_Code == "000"){
                                $('#msg-success').text(_oRet.status_Reason);
                                $('#custom-msg-success').show();
                                $('#montant').val('') ;
                                $('.form-achat-self-credit').ajaxloader('hide') ;
                                $('#btn-buy-self').prop('disabled', false).removeClass('ui-state-disabled') ;
                                $(document).scrollTop(0);
                                setTimeout(function() {
                                    $('#custom-msg-success').hide() ;

                                },3000) ;
                            }else{
                                $('#montant').addClass('error') ;
                                $('#btn-buy-self').prop('disabled', false).removeClass('ui-state-disabled') ;
                                $('#msg-error').text(_oRet.status_Reason);
                                $('#custom-msg-error').show();
                                $('.form-achat-self-credit').ajaxloader('hide') ;
                                $(document).scrollTop(0);
                                setTimeout(function() {
                                    $('#custom-msg-error').hide() ;

                                },3000) ;
                            }

                        }
                    }
                });
            }

            if(modePaiement == 'carteGratter'){
                $('.form-achat-self-credit').ajaxloader() ;
                let zCAG = $('#codeCarte').val() ;
                $.ajax
                ({
                    type: "POST",
                    dataType: "json",
                    url: zUrl_selfAcheterCreditCAG,
                    data: {zCAG:zCAG },
                    success: function (_oRet)
                    {
                        if(_oRet.status_Code != undefined){
                            if(_oRet.status_Code == "000"){
                                $('#msg-success').text(_oRet.status_Reason);
                                $('#custom-msg-success').show();
                                $('#codeCarte').val('') ;
                                $('.form-achat-self-credit').ajaxloader('hide') ;
                                $('#btn-buy-self').prop('disabled', false).removeClass('ui-state-disabled') ;
                                $(document).scrollTop(0);
                                setTimeout(function() {
                                    $('#custom-msg-success').hide() ;
                                },3000) ;
                            }else{
                                $('#codeCarte').addClass('error') ;
                                $('#btn-buy-self').prop('disabled', false).removeClass('ui-state-disabled') ;
                                $('#msg-error').text(_oRet.status_Reason);
                                $('#custom-msg-error').show();
                                $('.form-achat-self-credit').ajaxloader('hide') ;
                                $(document).scrollTop(0);
                                setTimeout(function() {
                                    $('#custom-msg-error').hide() ;
                                },3000) ;
                            }

                        }
                    }
                });
            }


        }else{
            $('.custom-msg-error').show();
        }
    });



    /*Personnalisation event click bouton validation creation mon compte*/
    $('body').on('click','#btn-buy-other',function(e) {

        $('#code-notification').hide();
        $('.custom-msg-error').hide();
        $('#custom-msg-error').hide();
        $('#custom-msg-success').hide();
        $('#custom-msg-error-2').hide();
        $('#custom-msg-success-2').hide();
        e.preventDefault();
        if ($('.form-achat-other-credit').valid()) {
            let toInputError = [];
            let tNumeroCAG = [];
            let tNumeroMVOLA = [];
            let modePaiement;
            let isCag = $('#carteGratterCpt').is(':checked');
            let isMvola = $('#mvolaCpt').is(':checked');
            if (isCag && !isMvola) {
                modePaiement = 'carteGratter';
            } else {
                modePaiement = 'mvola';
            }

            if (modePaiement == 'mvola') {
                $('#montant').removeClass('error');
                //$('#btn-buy-other').addClass("disable-button");
                //$('#btn-buy-other').prop('disabled', true).addClass('ui-state-disabled');
                let tmontant = document.getElementsByName('MontantAriaryWallet');
                let usednum = [];
                for (var i = 0, length = tmontant.length; i < length; i++) {
                    if (tmontant[i].value != "" && tmontant[i].value != 0) {
                        let montant = tmontant[i].value;
                        let num = tmontant[i].getAttribute('id');

                        var obj = {};
                        obj.msisdn = num.substr(2);
                        obj.montant = montant;
                        tNumeroMVOLA.push(obj);
                        usednum.push(num);
                    }
                }
                $('.block-add-item').find('input*[name^="MontantCredit"]').each(function () {


                    let index = $(this).attr("name").substr(13);
                    let montant = $(this).val();
                    let num = $('#NumCredit' + index).val();

                    if (montant != '' && num != '' && $.inArray(num, usednum) == -1) {
                        var obj = {};
                        obj.msisdn = num;
                        obj.montant = montant;
                        tNumeroMVOLA.push(obj);
                    }
                });

                if (tNumeroMVOLA.length == 0) {
                    $('.input-montant').addClass('error');
                    $('#btn-buy-self').prop('disabled', false).removeClass('ui-state-disabled');
                    $('#msg-error-2').text("Merci de renseigner au moins un montant...");
                    $('#custom-msg-error-2').show();
                    $('.form-achat-other-credit').ajaxloader('hide');
                    $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                    $(document).scrollTop(0);
                    setTimeout(function () {
                        $('#custom-msg-error-2').hide();
                    }, 3000);
                } else {
                    let montant = $('#montant').val();
                    tNumeroMVOLA = JSON.stringify(tNumeroMVOLA);
                    $('.form-achat-other-credit').ajaxloader();
                    $.ajax
                    ({
                        type: "POST",
                        dataType: "json",
                        url: zUrl_AchatCreditMVolaOther,
                        data: {tdatalist: tNumeroMVOLA},
                        success: function (_oRet) {
                            if (_oRet.status_Code != undefined) {
                                if (_oRet.status_Code == "000") {
                                    $('#msg-success-2').text(_oRet.status_Reason);
                                    $('#custom-msg-success-2').show();
                                    $('.input-montant').val('');
                                    $('.form-achat-other-credit').ajaxloader('hide');
                                    $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                                    $(document).scrollTop(0);
                                    setTimeout(function () {
                                        $('#custom-msg-success-2').hide();
                                    }, 3000);

                                } else {
                                    $('.input-montant').addClass('error');
                                    $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                                    $('#msg-error-2').text(_oRet.status_Reason);
                                    $('#custom-msg-error-2').show();
                                    $('.form-achat-other-credit').ajaxloader('hide');
                                    $(document).scrollTop(0);
                                    setTimeout(function () {
                                        $('#custom-msg-error-2').hide();
                                    }, 3000);
                                }

                            } else {
                                $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                            }
                        },
                        error: function (err) {
                            console.log(err);
                            $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');

                        },
                        complete: function (cmp) {
                            $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');

                        }
                    });
                }

            }

            if (modePaiement == 'carteGratter') {
                tNumeroCAG = [];

                $('#btn-buy-other').addClass("disable-button");
                $('#btn-buy-other').prop('disabled', true).addClass('ui-state-disabled');
                let tCAG = document.getElementsByName('CodeChiffreCAG');
                let usednum = [];
                for (var i = 0, length = tCAG.length; i < length; i++) {
                    if (tCAG[i].value != "" && tCAG[i].value != 0) {
                        let zCAG = tCAG[i].value;
                        let num = tCAG[i].getAttribute('id');

                        var obj = {};
                        obj.msisdn = num.substr(2);
                        obj.Code = zCAG;
                        tNumeroCAG.push(obj);
                        usednum.push(num);
                    }
                }

                $('.block-add-item').find('input*[name^="CodeCredit"]').each(function () {


                    let index = $(this).attr("name").substr(10);
                    let CAG = $(this).val();
                    let num = $('#NumCreditCAG' + index).val();

                    if (CAG != '' && num != '' && $.inArray(num, usednum) == -1) {
                        var obj = {};
                        obj.msisdn = num;
                        obj.Code = CAG;
                        tNumeroCAG.push(obj);
                    }
                });

                if (tNumeroCAG.length == 0) {
                    $('.input-montant').addClass('error');
                    $('#btn-buy-self').prop('disabled', false).removeClass('ui-state-disabled');
                    $('#msg-error-2').text("Merci de renseigner au moins une CAG ");
                    $('#custom-msg-error-2').show();
                    $('.form-achat-other-credit').ajaxloader('hide');
                    $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                    $(document).scrollTop(0);
                    setTimeout(function () {
                        $('#custom-msg-error-2').hide();
                    }, 3000);
                } else {
                    let montant = $('#montant').val();
                    tNumeroCAG = JSON.stringify(tNumeroCAG);
                    $('.form-achat-other-credit').ajaxloader();
                    $.ajax
                    ({
                        type: "POST",
                        dataType: "json",
                        url: zUrl_AchatCreditCAGOther,
                        data: {tdatalist: tNumeroCAG},
                        success: function (_oRet) {
                            if (_oRet.status_Code != undefined) {
                                if (_oRet.status_Code === "000") {

                                    window.location.replace(zUrl_ResultDisplay)

                                } else {
                                    $('.input-montant').addClass('error');
                                    $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                                    $('#msg-error-2').text(_oRet.status_Reason);
                                    $('#custom-msg-error-2').show();
                                    $('.form-achat-other-credit').ajaxloader('hide');
                                    $(document).scrollTop(0);
                                    setTimeout(function () {
                                        $('#custom-msg-error-2').hide();
                                    }, 3000);
                                }

                            } else {
                                $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                                $('.form-achat-other-credit').ajaxloader('hide');
                            }
                        },
                        error: function (err) {
                            console.log(err);
                            $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                            $('.form-achat-other-credit').ajaxloader('hide');

                        },
                        complete: function (cmp) {
                            $('#btn-buy-other').prop('disabled', false).removeClass('ui-state-disabled');
                            $('.form-achat-other-credit').ajaxloader('hide');

                        }
                    });
                }


            }


        } else {
            $('.custom-msg-error').show();
        }
    }) ;
        /******* Formulaire achat autre offre *******/
  $("body").on(
    "click",
    ".form-achat-offre-benef .btn-plus-mvola",
    function (e) {
      e.preventDefault();
      addBlockOneNumero(nb);
      nb++;
    }
  );

  /*event click btn-delete numéro*/
  $("body").on("click", ".form-achat-offre-benef .btn-delete", function () {
    $(this).parents(".block-add-item").remove();
    nb--;
  });

  /** Formulaire modif profil**/
  $(".form-set-profil").validate({
    rules: {
        profilNom: {
            required : true,
            regex : zAlphanumPattern
        },
        profilPrenom: {
            required : false,
            regex : zAlphanumPattern
        },
        numeroProfil: {
            required : true,
            regex : zMsisdnPattern
        },
        emailProfil: {
            required : true,
            email: true
        },
    },
    messages: {
        profilNom:
            {
                required : "Le champ nom est obligatoire",
                regex : "Le champ nom doit être alphanumérique"
            } ,
        profilPrenom:
            {
                required: "",
                regex : "Le champ prénom doit être alphanumérique"
            },
        numeroProfil:
            {
                required: "Le champ numéro est obligatoire",
                regex : "Le champ numéro doit être au format 034 XX XXX XX / 038 XX XXX XX" ,
            },
        emailProfil:
            {
                required: "L' adresse email est obligatoire",
                regex : "Ce champ doit être renseigné au format email" ,
            },
    },
  });

  /*event change sur choix code réinitialisation*/
  $('.form-set-profil input[type="checkbox"]').on("change", function () {
    $('.form-set-profil input[type="checkbox"]')
      .not(this)
      .prop("checked", false);
  });

});

function getCapcha() {
    $.ajax
    ({
        type: "POST",
        dataType: "json",
        url: zUrl_getCapcha,
        data: {},
        success: function (_oRet)
        {
            console.log(_oRet) ;
            if(_oRet.iErrorCode != undefined){
                if(_oRet.iErrorCode == 0){
                    if(_oRet.zPath != undefined){
                        $('#capchaSubscription').attr("src",_oRet.zPath) ;
                    }
                }

            }
        }
    });

}

function displayInputErrorMessage(selector, message) {
    if ('input' === selector.nodeName.toLowerCase()) {
        let id = selector.getAttribute('id');
        let name = selector.getAttribute('name');
        let node = $('<label id="' + id + '-error" class="error" for="' + name + '">' + message + '</label>');

        selector.classList.add('error');
        node.insertAfter(selector);
    }
}
function resetInputOtp() {
    $('#custom-msg-error-2').hide();
    $('#custom-msg-success-2').hide();
    $('#code-notification').hide() ;
    $('.custom-msg-error').hide() ;
    $('#custom-msg-error-2').hide() ;
    $('#custom-msg-success-2').hide() ;
    $('#custom-msg-error-3').hide() ;
    $('#custom-msg-success-3').hide() ;
    $('#code1').val('') ;
    $('#code2').val('') ;
    $('#code3').val('') ;
    $('#code4').val('') ;

    $('#code1').removeClass('error') ;
    $('#code2').removeClass('error') ;
    $('#code3').removeClass('error') ;
    $('#code4').removeClass('error') ;
}

function resetNotifications() {
    $('#custom-msg-error-2').hide();
    $('#custom-msg-success-2').hide();
    $('#code-notification').hide() ;
    $('.custom-msg-error').hide() ;
    $('#custom-msg-error-2').hide() ;
    $('#custom-msg-success-2').hide() ;
    $('#custom-msg-error-3').hide() ;
    $('#custom-msg-success-3').hide() ;

}



