• File: registration.js
  • File size: 5.83 KB
  • MIME-type: text/plain
  • Charset: utf-8
/**
* VFM Registration js
*/
var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout(timer);
    timer = setTimeout(callback, ms);
  };
})();

function checkUserAvailable(thisinput){
    
    var gliph;
    var username = thisinput.val();
    var alias = username.replace(/\s+/g, '');
    thisinput.val(alias);

    thisinput.removeClass('is-invalid');

    delay(function(){
        if (alias.length >= 3) {
            $.ajax({
              method: "POST",
              url: "vfm-admin/ajax/usr-check.php",
              data: { user_name: alias }
            })
            .done(function( msg ) {
                thisinput.closest('.has-feedback').addClass('has-'+msg);
                if (msg == 'success') {
                    thisinput.removeClass('is-invalid');
                } else {
                    thisinput.addClass('is-invalid');
                }
            });
        } else {
            thisinput.addClass('is-invalid');
        }
    }, 1000 );
}

// PASSWORD STRENGHT
function passwordStrength(password){
    var pass = password.val();
    var minlength = password.data('length');
    var stength = 'Weak';
    var pclass = 'danger w1';
    var shortpass = true;

    if (pass.length < minlength) {
        stength = 'Weak';
        pclass = 'danger w25';
    } else {
        shortpass = false;
        // alpha and number OR special char OR Uppercase
        var good = /^(?=\S*?[a-z])((?=\S*?[0-9])|(?=\S*?[^\w\*])|(?=\S*?[A-Z]))/;

        // Must contain at least one upper case letter, one lower case letter and one number OR one special char.
        var better = /^(?=\S*?[A-Z])(?=\S*?[a-z])((?=\S*?[0-9])|(?=\S*?[^\w\*]))/;

        // Must contain at least one upper case letter, one lower case letter and one number and one special char.
        var best = /^(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])(?=\S*?[^\w\*])/;

        if (best.test(pass) == true) {
            stength = 'Very Strong';
            pclass = 'success w100';
        } else if (better.test(pass) == true) {
            stength = 'Strong';
            pclass = 'success w75';
        } else if (good.test(pass) == true) {
            stength = 'Almost Strong';
            pclass = 'warning w50';
        } else {
            stength = 'Weak';
            pclass = 'danger w25'; 
        }
    }

    var popover = bootstrap.Popover.getOrCreateInstance(password[0]); // Returns a Bootstrap popover instance
    $(popover.tip).removeClass('danger success info warning primary w1 w5 w10 w25 w30 w50 w70 w75 w100').addClass(pclass);
    return shortpass;
}


$(document).ready(function(){
    $('#user_name').on('input', function(){
        checkUserAvailable($(this));
    });

    // Call password strength
    $('#user_pass').on('keyup', function() {
        var password = $(this);
        var response = passwordStrength(password);
    });

    var popover = new bootstrap.Popover(document.querySelector('input[data-bs-toggle="popover"]'), {
        container: 'body',
        placement: 'top',
        trigger: 'focus'
    });
});

$(document).on('keyup keypress', '#regform', function(e){
    var keyCode = e.keyCode || e.which;
    if (keyCode === 13) { 
        e.preventDefault();
        return false;
    }
});

$(document).on('submit', '#regform', function (event) {  
    $regform = $(this);
    $regform.data('submitted', false);
    event.preventDefault();
    $('#regresponse').html('');

    var pwd1 = $('#user_pass').val();
    var pwd2 = $('#user_pass_check').val();

    var fillAll = true;
    $('#regform input').each(function() {
        if(!$(this).val()){
            fillAll = false;
        }
    });
    if (fillAll == false) {
        var transfill = $('#trans_fill_all').val();
        $('#regresponse').html('<div class="alert alert-warning" role="alert">'+transfill+'</div>');
        return false;
    }

    if ($('#agree').length && !$('#agree').prop('checked')){
        var transaccept = $('#trans_accept_terms').val();
        $('#regresponse').html('<div class="alert alert-warning" role="alert">'+transaccept+'</div>');
        return false;
    }

    if (pwd1 !== pwd2) {
        var transerror = $('#trans_pwd_match').val();
        $('#user_pass_check').focus();
        $('#regresponse').html('<div class="alert alert-warning" role="alert">'+transerror+'</div>');
        return false;
    }

    if (pwd1.length < $('#user_pass').data('length')){
        $('#user_pass').focus();
        return false;
    }

    $('.mailpreload').fadeIn('fast', function(){

        if ($regform.data('submitted') == false) {
            $regform.data('submitted', true);
            var now = $.now();
            var serial = $regform.serialize();
            $.ajax({
                cache: false,
                method: "POST",
                url: "vfm-admin/ajax/usr-reg.php?t=" + now,
                data: serial
            })
            .done(function( msg ) {
                $('#regresponse').html(msg);
                $('#captcha').attr('src', 'vfm-admin/captcha/img.php?' + now);
                if ($('#grecaptcha').length) {
                    grecaptcha.reset();
                }
                $('.mailpreload').fadeOut('slow', function(){
                    $regform.data('submitted', false);
                });
                $('#user_pass').val('');
                $('#user_pass_check').val('');

            }).fail(function(jqXHR, textStatus, errorThrown) {
                $('#regresponse').html('<div class="alert alert-danger" role="alert">Error connecting user-reg.php : ' + errorThrown + '</div>');
                $('#captcha').attr('src', 'vfm-admin/captcha/img.php?' + now);
                if ($('#grecaptcha').length) {
                    grecaptcha.reset();
                }
                $('.mailpreload').fadeOut('slow', function(){
                    $regform.data('submitted', false);
                });
            });
        }
    });
});