import utils from "hey-utils";

const rclass = /[\t\r\n\f]/g;

export default utils.extend({}, utils, {
  getClass(elem) {
    return (elem.getAttribute && elem.getAttribute("class")) || "";
  },
  hasClass(elem, selector) {
    let className;
    className = ` ${selector} `;
    if (
      elem.nodeType === 1 &&
      ` ${this.getClass(elem)} `.replace(rclass, " ").indexOf(className) > -1
    ) {
      return true;
    }

    return false;
  },
});

function formatNumber(n) {
  n = n.toString();
  return n[1] ? n : "0" + n;
}

export function getUTCDateTime(datetime) {
  var year = datetime.getUTCFullYear();
  var month = datetime.getUTCMonth() + 1;
  var day = datetime.getUTCDate();
  var hour = datetime.getUTCHours();
  var minute = datetime.getUTCMinutes();
  var second = datetime.getUTCSeconds();
  return [year, month, day, hour, minute, second].map(formatNumber);
}

export function formatDateTime(
  datetime = [],
  format = ["-", "-", " ", ":", ":"]
) {
  let result = "";
  datetime.forEach((d, i) => {
    result += i < 5 ? d + format[i] : d;
  });
  return result;
}

export function formatUTCDateTime(datetime) {
  if (!(datetime instanceof Date)) datetime = new Date(datetime);
  datetime = getUTCDateTime(datetime);
  const format = ["-", "-", " ", ":", ":"];
  let result = "";
  datetime.forEach((d, i) => {
    result += i < 5 ? d + format[i] : d;
  });
  return result;
}