const CryptoJS = require("./AES.js").CryptoJS; //引用AES源码js 
const DateFormat = function (date, fmt) { //author: meizz
  var o = {
    "M+": new Date(date).getMonth() + 1, //月份
    "d+": new Date(date).getDate(), //日
    "h+": new Date(date).getHours(), //小时
    "m+": new Date(date).getMinutes(), //分
    "s+": new Date(date).getSeconds(), //秒
    "q+": Math.floor((new Date(date).getMonth() + 3) / 3), //季度
    "S": new Date(date).getMilliseconds() //毫秒
  };
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date(date).getFullYear() + "").substr(4 - RegExp.$1.length));
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}
//加密方法
function encrypt(word) {
  var keyStr = 'SH426B787D035B7585864EF93VV30BA9'; // 密文（密钥）
  var key = CryptoJS.enc.Utf8.parse(keyStr);
  var srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  });
  return encrypted.toString();
}
//时间
function getTime() {
  var timestamp = Date.parse(new Date());  
    timestamp = timestamp / 1000;  
    //获取当前时间
    var n = timestamp * 1000;  
    var date = new Date(n);  
    //年  
    var Y = date.getFullYear();  
    //月  
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);  
    //日  
    var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();  
    //时  
    var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();  
    //分  
    var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();  
    //秒  
    var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();  
    return h + ':' + m + ':' + s;
}
function getTime1() {
  var timestamp = Date.parse(new Date());  
    timestamp = timestamp / 1000;  
    //获取当前时间
    var n = timestamp * 1000;  
    var date = new Date(n);  
    //年  
    var Y = date.getFullYear();  
    //月  
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);  
    //日  
    var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();  
    //时  
    var h = date.getHours();  
    //分  
    var m = date.getMinutes();  
    //秒  
    var s = date.getSeconds();  
    return Y + '-' + M + '-' + D;
    
}
function getTime2() {
  var timestamp = Date.parse(new Date());
    timestamp = timestamp / 1000;  
    //获取当前时间
    var n = timestamp * 1000;  
    var date = new Date(n);  
    //年  
    var Y = date.getFullYear();  
    //月  
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);  
    //日  
    var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();  
    //时  
    var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();  
    //分  
    var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();  
    //秒  
    var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();  
    return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s;
}
function throttle(fn, interval) {
  var enterTime = 0;//触发的时间
  var gapTime = interval || 300 ;//间隔时间，如果interval不传，则默认300ms
  return function() {
    var context = this;
    var backTime = new Date();//第一次函数return即触发的时间
    if (backTime - enterTime > gapTime) {
      fn.call(context,arguments);
      enterTime = backTime;//赋值给第一次触发的时间，这样就保存了第二次触发的时间
    }
  };
}

/*函数防抖*/
function debounce(fn, interval) {
  var timer;
  var gapTime = interval || 500;//间隔时间，如果interval不传，则默认1000ms
  return function() {
    clearTimeout(timer);
    var context = this;
    var args = arguments;//保存此处的arguments，因为setTimeout是全局的，arguments不是防抖函数需要的。
    timer = setTimeout(function() {
      fn.call(context,args);
    }, gapTime);
  };
}
module.exports = {
  encrypt,
  getTime,
  getTime1,
  getTime2,
  DateFormat,
  throttle,
  debounce
};
