'use strict'

// function require (file) {
//  return window[file.replace(/^\.[\/\\]/,'').replace(/.js$/,'')];
// }
function handleCardInfo() {
  // var defaultValueMap = {
  //  "rarity": "LR",
  //  "cardType": "SIGNI",
  //  "color": "white",
  //  "level": 0,
  //  "limit": 0,
  //  "power": 0,
  //  "limiting": "",
  //  "classes": [],
  //  "costWhite": 0,
  //  "costBlack": 0,
  //  "costRed": 0,
  //  "costBlue": 0,
  //  "costGreen": 0,
  //  "costColorless": 0,
  //  "guardFlag": false,
  //  "multiEner": false,
  // };
  for (var x in CardInfo) {
    var info = CardInfo[x];
    delete info.timestamp;
    delete info.kana;
    delete info.imgUrl;
    delete info.cardText;
    delete info.cardText_zh_CN;
    delete info.cardText_en;
    delete info.constEffects;
    delete info.actionEffects;
    delete info.startUpEffects;
    delete info.spellEffect;
    delete info.artsEffect;
    delete info.burstEffect
    delete info.faqs;
    delete info.cardSkills;
    delete info.growCondition;
    delete info.useCondition;
    delete info.costChange;
    delete info.costChangeBeforeUseAsyn;
    delete info.resonaPhase;
    delete info.resonaCondition;
    delete info.resonaAsyn;
    delete info.encore;
    delete info.bettedCost;
    if (info.rise) info.rise = true;
    // for (var key in defaultValueMap) {
    //  if (info[key] === defaultValueMap[key]) {
    //    delete info[key];
    //  }
    // }
  }
  // var textarea = document.createElement('textarea');
  // textarea.value = JSON.stringify(CardInfo);
  // document.body.appendChild(textarea);
  // textarea.select();
}

function handleCardInfo_ko(min, max) {
  var props = [
    "name",
    "actionEffectTexts",
    "constEffectTexts",
    "startUpEffectTexts",
    "spellEffectTexts",
    "artsEffectTexts",
    "burstEffectTexts",
    "attachedEffectTexts",
    "extraTexts",
  ];
  var suffix = [
    "",
    "_zh_CN",
    "_en"
  ]
  var arr = [];
  for (var x in CardInfo) {
    // if (x <= 1762) continue;
    if (x < min || x > max) continue;
    var info = CardInfo[x];
    var obj = {
      pid: info.pid,
      wxid: info.wxid,
    };
    props.forEach(function(rawprop) {
      // suffix.forEach(function (suf) {
      //  var prop = rawprop + suf;
      //  if (!info[prop]) return;
      //  obj[prop] = info[prop];
      // });
      obj[rawprop + "_ko"] = info[rawprop + "_en"];
    });
    arr.push(obj);
  }
  down(arr, `${min}-${max}.json`)
}

function fetchAndHandleRuJson(url) {
  let CardInfo_ru = {};
  fetch(url).then(res => res.json()).then(arr => {
    arr.forEach(info => {
      let info_ru = {};
      for (let prop in info) {
        if (!prop.match(/_ru$/)) continue;
        info_ru[prop] = info[prop];
      }
      CardInfo_ru[info.pid] = info_ru;
    });
    window.ru = JSON.stringify(CardInfo_ru);
  });
}

function getPrCards() {
  let ids = [];
  for (let pid in CardInfo) {
    let card = CardInfo[pid];
    let id = +card.wxid.replace('PR-', '');
    if (id) ids.push(id);
  }
  ids.sort((a, b) => a - b);
  let ranges = [];
  let start = ids[0];
  let end = ids[0];
  ids.slice(1).concat(0).forEach(id => {
    if ((id - end) === 1) {
      end = id;
    } else {
      let range = `${('000'+start).slice(-3)}-${('000'+end).slice(-3)}`;
      if (start === end) range = ('000' + start).slice(-3);
      ranges.push(range);
      start = end = id;
    }
  })
  return ranges;
}

function getUntestedPr() {
  let ids = [];
  for (let pid in CardInfo) {
    if (pid <= 1762) continue;
    let card = CardInfo[pid];
    if (card.pid !== card.cid) continue;
    if (/^PR-/.test(card.wxid)) ids.push(card.wxid);
  }
  return ids;
}

function getNewCardNames() {
  let names = [];
  for (let pid in CardInfo) {
    if (pid <= 1762) continue;
    let card = CardInfo[pid];
    if (card.pid !== card.cid) continue;
    names.push(card.name_zh_CN);
  }
  return names;
}

function down(content, filename = 'down.txt') {
  if (typeof content === 'object') {
    content = JSON.stringify(content, null, '  ')
  }
  let blob = new Blob([content], {
    type: 'application/octet-stream'
  })
  let url = URL.createObjectURL(blob)
  let link = document.createElement('a')
  link.href = url
  link.download = filename
  link.click()
}