(function ($, document) {
    (function ($) {
        $.UrlParam = function (name) {
            //宣告正規表達式
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            /*
             * window.location.search 獲取URL ?之後的參數(包含問號)
             * substr(1) 獲取第一個字以後的字串(就是去除掉?號)
             * match(reg) 用正規表達式檢查是否符合要查詢的參數
            */
            var r = window.location.search.substr(1).match(reg);
            //如果取出的參數存在則取出參數的值否則回穿null
            if (r != null) return unescape(r[2]); return null;
        }
    })(jQuery);

 
})(jQuery, document);

$(document).ready(function () {
    $('#token').val($.UrlParam("token"));

    $('#resetBtn').on('click', function () {
   
        var new_pwd = $('#inputNewPassword').val();
        var chk_pwd = $('#inputChkPassword').val();
        var token = $('#token').val();
        if (token === null || token === "") {
            alert("無效的密碼重設驗證，請重新申請!");
            return;
        }
        if (pwdStrengthChecke(new_pwd, 6, 2) === false) {
            alert("新密碼強度不足，請至少包含英文小寫、英文大寫、阿拉伯數字、特殊符號四項中的2項，且長度至少為6個字元!");
            return;
        }
        if (new_pwd != chk_pwd) {
            alert("新密碼與新密碼再確認不一致!");
            return;
        }

        if (!confirm('請注意，Windows的密碼與公槽密碼是連動的，更改後登入Windows與登入公槽的密碼會跟著一起改!')) {
            return;
        }

        var formData = {
            new_password: new_pwd,
            token: token
        }
        $.ajax({
            url: "/adApi/resetPassword",
            type: "POST",
            data: formData,
            success: function (data, textStatus, jqXHR) {
                if (data.ret === "yes") {
                    alert("密碼重設成功，請使用新密碼登入PC與公槽!");
               
                    $('#inputNewPassword').val('');
                    $('#inputChkPassword').val('');
        
                } else {
                    if (data.err_code == "1005") {
                        alert('無效的密碼重設驗證，請重新申請!');
                        return;
                    }
                    alert(data.message);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('網路或伺服器發生錯誤，請稍後重試!');
            }
        });
    });
});

function pwdStrengthChecke(str, length, strength) {
    if (!str || str.length < length) {
        return false
    }
    let n = 0
    const regex = [
        /[a-z]/,
        /[A-Z]/,
        /[0-9]/,
        /[`~!@#$%^&*()_+=,<>\-\[\]\{\}\:;\.'"\/\\?\|]/
    ]
    for (const r of regex) {
        if (str.match(r)) {
            n++
        }
    }
    return n >= strength
}