function ventoy_check_file_name_char(path) {
    for (var i = 0; i < path.length; i++) {
        var cc = path[i];
        if (cc === '/' || cc === '\\' || cc === '*' || cc === '?' || cc === '"' || cc === '<' || cc === '>' || cc === '|')
        {
            return false;
        }
    }

    return true;
}


(function(factory) {
    if (typeof define === "function" && define.amd) {
        define(["jquery", "../jquery.validate"], factory);
    } else {
        factory(jQuery);
    }
} (function($) {

    // 设置validator插件默认校验格式
    $.validator.setDefaults({
        highlight: function(element) {
            $(element).closest('.form-group').addClass('has-error');
        },
        success: function(label) {
            label.closest('.form-group').removeClass('has-error');
            label.remove();
        }
    });


    //密码
    $.validator.addMethod('password', function(value, element, params) {
        if (this.optional(element)) {
            return true;
        }
        var re = /^[^\u4e00-\u9fa5]{1,64}$/;
        return re.test(value);
    }, '密码不合法');

    $.validator.addMethod('utfmaxlen', function(value, element, params) {
        if (this.optional(element)) {
            return true;
        }

        if (ventoy_get_ulen(value) > 250) {
            return false;
        }

        return true;
    }, 'Input too long');

    $.validator.addMethod('start_slash', function(value, element, params) {
        if (this.optional(element)) {
            return true;
        }

        if (value.length > 0 && value.charCodeAt(0) != 47) {
            return false;
        }

        return true;
    }, 'Must start with /');

    $.validator.addMethod('noquotes', function(value, element, params) {
        if (this.optional(element)) {
            return true;
        }

        if (value.length > 0 && value.indexOf('"') >= 0) {
            return false;
        }

        return true;
    }, 'Can not contain double quotes');

    $.validator.addMethod('filenamepart', function(value, element, params) {
        if (this.optional(element)) {
            return true;
        }

        return ventoy_check_file_name_char(value);
    }, 'Invalid characters');
    

    $.validator.addMethod('printascii', function(value, element, params) {
        if (this.optional(element)) {
            return true;
        }

        for (var i = 0; i < value.length; i++) {
            if (value.charCodeAt(i) > 127) {
                return false;
            }
        }

        if (value.length > 0 && value.indexOf('"') >= 0) {
            return false;
        }

        return true;
    }, 'Can only use printable ascii code');
    
}));
