let md5 = require('js-md5')
let { $d } = require('./dict')
let { zhLocale } = require('./i18n')

module.exports = {
    $validatePassword: (value) => {
        /* eslint-disable */
        var reg1 = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\(\)\\$!%#*?&])[A-Za-z0-9-_.@^+\(\)\\$!%#*?&]{8,32}$', 'g'); //密码必须是8位以上、必须含有字母、数字、特殊符号
        if (!reg1.test(value)) {
            return false
        } else {
            return true
        }
    },
    $validateUserName: (value) => {
        /* eslint-disable */
        var reg1 = new RegExp('^[a-zA-Z0-9_]{4,16}$', 'g'); //密码必须是8位以上、必须含有字母、数字、特殊符号
        if (!reg1.test(value)) {
            return false
        } else {
            return true
        }
    },
    $t: (value) => {
        console.log(zhLocale)
        return zhLocale[value]
    },
    md5: (value) => {
        return md5(value)
    },
    $fd: (code, v, type) => {
        type = type || 'Code'
        return $d[code].find(i => {
            return i[type] === v
        }) ? $d[code].find(i => {
            return i[type] === v
        }).ValueCN : ''
    },
    $d: () => {
        if ($d) {
            return true
        } else {
            return false
        }
    },
    parseTime: (time, pattern) => {
        if (arguments.length === 0 || !time) {
            return null
        }
        const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
        let date
        if (typeof time === 'object') {
            date = time
        } else {
            if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
                time = parseInt(time)
            } else if (typeof time === 'string') {
                time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
            }
            if ((typeof time === 'number') && (time.toString().length === 10)) {
                time = time * 1000
            }
            date = new Date(time)
        }
        const formatObj = {
            y: date.getFullYear(),
            m: date.getMonth() + 1,
            d: date.getDate(),
            h: date.getHours(),
            i: date.getMinutes(),
            s: date.getSeconds(),
            a: date.getDay()
        }
        const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
            let value = formatObj[key]
            // Note: getDay() returns 0 on Sunday
            if (key === 'a') {
                return ['日', '一', '二', '三', '四', '五', '六'][value]
            }
            if (result.length > 0 && value < 10) {
                value = '0' + value
            }
            return value || 0
        })
        return time_str
    }
};
