| (function () {
    'use strict';
    window.addEventListener('load', function () {
      // Fetch all the forms we want to apply custom Bootstrap validation styles to
        var forms = document.getElementsByClassName('needs-validation');
      // Loop over them and prevent submission
        var validation = Array.prototype.filter.call(forms, function (form) {
          // making sure password enters the right characters
            form.validationPassword.addEventListener('keypress', function (event) {
                console.log("keypress");
                console.log("event.which: " + event.which);
                var checkx = true;
                var chr = String.fromCharCode(event.which);
                console.log("char: " + chr);
                var matchedCase = [];
                matchedCase.push("[!@#$%&*_?/]"); // Special Charector
                matchedCase.push("[A-Z]");      // Uppercase Alpabates
                matchedCase.push("[0-9]");      // Numbers
                matchedCase.push("[a-z]");
                for (var i = 0; i < matchedCase.length; i++) {
                    if (new RegExp(matchedCase[i]).test(chr)) {
                        console.log("checkx: is true");
                        checkx = false;
                    }
                }
                if (form.validationPassword.value.length >= 20) {
                    checkx = true;
                }
                if ( checkx ) {
                    event.preventDefault();
                    event.stopPropagation();
                }
            });
        //Validate Password to have more than 8 Characters and A capital Letter, small letter, number and special character
          // Create an array and push all possible values that you want in password
            var matchedCase = [];
            matchedCase.push("[$@$$!%*#?&]"); // Special Charector
            matchedCase.push("[A-Z]");      // Uppercase Alpabates
            matchedCase.push("[0-9]");      // Numbers
            matchedCase.push("[a-z]");     // Lowercase Alphabates
            form.validationPassword.addEventListener('keyup', function () {
                var messageCase = [];
                messageCase.push(" Special Charector"); // Special Charector
                messageCase.push(" Upper Case");      // Uppercase Alpabates
                messageCase.push(" Numbers");      // Numbers
                messageCase.push(" Lower Case");     // Lowercase Alphabates
                var ctr = 0;
                var rti = "";
                for (var i = 0; i < matchedCase.length; i++) {
                    if (new RegExp(matchedCase[i]).test(form.validationPassword.value)) {
                        if (i == 0) {
                            messageCase.splice(messageCase.indexOf(" Special Charector"), 1);
                        }
                        if (i == 1) {
                            messageCase.splice(messageCase.indexOf(" Upper Case"), 1);
                        }
                        if (i == 2) {
                            messageCase.splice(messageCase.indexOf(" Numbers"), 1);
                        }
                        if (i == 3) {
                            messageCase.splice(messageCase.indexOf(" Lower Case"), 1);
                        }
                        ctr++;
                        //console.log(ctr);
                        //console.log(rti);
                    }
                }
            //console.log(rti);
            // Display it
                var progressbar = 0;
                var strength = "";
                var bClass = "";
                switch (ctr) {
                    case 0:
                    case 1:
                        strength = "Way too Weak";
                        progressbar = 15;
                        bClass = "bg-danger";
                    break;
                    case 2:
                        strength = "Very Weak";
                        progressbar = 25;
                        bClass = "bg-danger";
                    break;
                    case 3:
                        strength = "Weak";
                        progressbar = 34;
                        bClass = "bg-warning";
                    break;
                    case 4:
                        strength = "Medium";
                        progressbar = 65;
                        bClass = "bg-warning";
                    break;
                }
                if (strength == "Medium" && form.validationPassword.value.length >= 8 ) {
                    strength = "Strong";
                    bClass = "bg-success";
                    form.validationPassword.setCustomValidity("");
                } else {
                    form.validationPassword.setCustomValidity(strength);
                }
                var sometext = "";
                if (form.validationPassword.value.length < 8 ) {
                    var lengthI = 8 - form.validationPassword.value.length;
                    sometext += ` ${lengthI} more Characters, `;
                }
                sometext += messageCase;
                console.log(sometext);
                console.log(sometext);
                if (sometext) {
                    sometext = " You Need" + sometext;
                }
                $("#feedbackin, #feedbackirn").text(strength + sometext);
                $("#progressbar").removeClass("bg-danger bg-warning bg-success").addClass(bClass);
                var plength = form.validationPassword.value.length ;
                if (plength > 0) {
                    progressbar += ((plength - 0) * 1.75) ;
                }
          //console.log("plength: " + plength);
                var  percentage = progressbar + "%";
                form.validationPassword.parentNode.classList.add('was-validated');
          //console.log("pacentage: " + percentage);
                $("#progressbar").width(percentage);
            });
        });
    }, false);
})();
 |