execCode A backUp
[EXEC-A-DATA]
nd = new Object;
win = window;
doc = document;
Fid = a => typeof(a) == "object" ? a : doc.getElementById(a);
Ftag = (...e) => (e.length > 1 ? Fid(e[0]) : doc).getElementsByTagName(e[e.length - 1]);
Fcn = (...e) => (e.length > 1 ? Fid(e[0]) : doc).getElementsByClassName(e[e.length - 1]);
Fce = a => doc.createElement(a);
Fap = (a,b) => Fid(a).appendChild(b);
Fev = (o,a,b) => o.addEventListener(a,b,false);
res = o => o.responseText.replace(/\r?\n/g, "\t");
enc = s => encodeURIComponent(s);
isMobile = navigator.userAgent.includes("Mobile");

Fcl = (o,s,a) => {
Fid(o).classList.toggle(s);
Fid(a).classList.toggle("se");
};

echo = (...a) => {
let n = a.length;
let o = typeof(a[0]) == "string" ? Fid(a[0]) : a[0];
if(o.tagName == "SELECT"){
if(n == 1) return o.options[o.selectedIndex].value;
else {
if(typeof(a[1]) == "string"){
if(a[1] != ""){
for(let i = o.options.length - 1; i >= 0; i--){
if(o.options[i].value == a[1]) break;
}
o.selectedIndex = i > 0 ? i : 0;
} else o.selectedIndex = 0;
} else o.selectedIndex = a[1];
}
} else {
type = o.tagName == "TEXTAREA" || o.tagName == "INPUT" ? "value" : "innerHTML";
if(n == 1) return o[type];
else {
if(n == 2){
let s = a[1];
if(typeof(s) == "object") s = s.join("");
o[type] = (s + "").replace(/\t/g, "\n");
} else {
let s = o[type];
if(a[2] == "add") o[type] = s + a[1];
if(a[2] == "math") o[type] = Number(s) + a[1];
}
}
}
return o;
};

counter = s => {
return s.replace(/\r?\n/g, " ").replace(/"/g, " ").
replace(/'/g, " ").replace(/<|>/g, " ").
replace(/\x26;/g, " ").length;
};

echoCounter = s => {
s = s.replace(/\x3cbr ?\/?>/gi, " ");
return counter(fullDec(s));
};


fs1 = () => {
return "";
};



dateToOnes = s => {
let d = new Date();
d.setTime((s - 0) * 1000);
return "/diary/" + d.getFullYear() + "/" + ("0" + (d.getMonth() + 1)).slice(-2) + "/" + s + ".html";
};

pageLogs = s => {
xhr("/cgi-bin/footprint" + "_logger" + ".cgi?oid=" + s, null, e => {});
};

/* -------- 表示領域の切り替え -------- */
dispChg = (disp,no) => {
let cnt = disp ? mmCNT : msCNT;
let tab = Fid("tab" + disp).classList;
let tar = Ftag("tab" + disp, "div");
let par = disp ? "M" : "F" ;
if(cnt == no){
tab.toggle("full");
let o = doc.body.classList;
/*
Fid("tab0").classList.contains("full") || Fid("tab1").classList.contains("full") ?
o.add("cen-harf") : o.remove("cen-harf");
*/
} else {
if(cnt != null){
tar[cnt].classList.remove("sel");
tab.remove("bg" + cnt);
}
if(cnt != null) Fid(par + cnt).classList.remove("sel");
Fid(par + no).classList.add("sel");
tar[no].classList.add("sel");
let obj = Fid("tabs" + disp);
obj.classList.add("sm");
tar[no].append(obj);
setTimeout(() => { obj.classList.remove("sm"); }, 50);
tab.add("bg" + no);
disp ? mmCNTbef = mmCNT : msCNTbef = msCNT;
disp ? mmCNT = no : msCNT = no;
if(disp == 1 && no == 4) getPcInfo();
}
};


dateEntry = () => {
let n = echo("dateIs");
if(!n.match(/^\d+$/)) return;
let d = new Date();
d.setTime(n);
let t = d.toLocaleString();
echo("dateText", t);
};


/* -------- 短縮エイリアス -------- */
/* -- リンク短縮置換 -- */
docDefaultRep = s => {
s = s.replace(/<\[([0-9a-z\- ]+):x1\]>/g, (e0,e1) =>
"<ul class='link_text'>" + e1.replace(/([0-9a-z\-]+)\s*/g,
`<li><a href="main.html?user=$1">$1</a></li>`) + "</ul>");

s = s.replace(/<\[([0-9a-z\-]+)\,(\d+)\,(.+?)\]>/g,
(e0,e1,e2,e3) => {
let dt = new Date();
dt.setTime((e2 - 0) * 1000);
const uri = "/home/" + e1 + "/diary/" + dt.getFullYear() +
"/" + ("0" + (dt.getMonth() + 1)).slice(-2) + "/" + e2 + ".html";
return `<li><a class="ax" href="${uri}" onclick="mainShow('${uri}', this); return false">${e3}</a></li>`
});
return s;
};

/* -- CSS短縮置換 -- */
cssDefaultRep = s => {
s = s.replace(/\(\s*lg\-(\d+deg)/g, "background-image:linear-gradient($1");
s = s.replace(/lg\-(\d+deg)/g, "linear-gradient($1");
s = s.replace(/ bg\-c:/g, " background-color:");
return s;
};

/* ------------ extra 拡張の定義 ----------- */
extraEntry = (obj, no) => {
extraObj = obj;
obj.classList.add("moves");
switch(no) {
case 0 :
yearListCNT = 0;
yearList = echo("yearDisp").match(/\/home\/[a-z0-9\-]+\/diary\/\d{4}/g);
yearListEntry();
break;

case 1 :
xmlCNT = 0;
createCgiCount();
break;
}
};

extraRemove = () => {
extraObj.classList.add("zero");
setTimeout(() => { extraObj.remove(); }, 1000);
};

yearListEntry = () => {
if(yearList.length == 0) extraRemove();
else {
yearListObj = yearList.shift();
yearListDate = yearListObj.replace(/.+(\d{4})/, "$1");
xhr(yearListObj + "/", null, yearListCreate);
}
};

yearListCreate = e => {
e = e.replace(/.+<div id="main">/, "").replace(/<\/div>\t*<\/div><\/body>.+/, "");
let dat = e.match(/<ul.+?<\/ul>/g);
dat = dat.join("");
let cnt = 0;
dat = dat.replace(/<!\-\-ARTICLE id="(\d+)"\-\->(<li>)/g, (e0,e1,e2) => {
cnt++;
yearListCNT++;
return `${e2}<span class="vol">${yearListCNT}</span><span class="aid">A${e1}</span>`;
});

echo(extraObj.nextSibling,
"日記投稿件数 " + yearListDate + "年 : " + cnt + "件 合計 : " + yearListCNT + "件"
);
dat = dat.replace(/<!\-\-[^>]+>/g, "");

let obj = Fce("div");
obj.id = "Y" + yearListDate;
echo(obj, axRep(dat));
Fid("indexDisp").append(obj);
if(Fid("Mon" + yearListDate + "01")){
xhr(yearListObj + "/01/", null, yearListAppend);
} setTimeout(() => { yearListEntry(); }, 500);
};

yearListAppend = e => {
e = e.replace(/.+<div id="main">/, "").replace(/<\/div>\t*<\/div><\/body>.+/, "");
e = e.replace(/title="[^"]+"/g, "");
let dat = e.match(/id="A\d+.+?<\/a>/g);
let cnt = dat.length;
dat = dat.join("");
dat = dat.replace(/<\/div>.+?entry_title">/g, "</span>");
dat = dat.replace(/id="(A\d+).+?entry_date">/g, (e0,e1) => {
yearListCNT++;
return `<li><span class="vol">${yearListCNT}</span><span class="aid">${e1}</span><span class="time">`
});
dat = dat.replace(/(<\/a>)/g, "$1</li>");
dat = "<li>" + dat + "</li>";

echo(extraObj.nextSibling,
"日記投稿件数 " + yearListDate + "年 : " + cnt + "件 合計 : " + yearListCNT + "件"
);

let obj = Fce("ul");
echo(obj, axRep(dat));
Fid("Y" + yearListDate).append(obj);
setTimeout(() => { yearListEntry(); }, 500);
};

cgiCount = e => {
const n = e.match(/\((\d+) 件\)/) ? RegExp.$1 - 0 : 0;
const d = e.match(/>(\d{4} \d\d\/\d\d \d\d:\d\d)</) ? RegExp.$1 : "";
const o = Ftag("categories", "li");
const obj = o[xmlCNT];
echo(obj.firstChild, d);
let a = Fce("span");
a.className = "len";
Fap(obj, echo(a, n + " 件"));
if(++xmlCNT < o.length) createCgiCount();
else extraRemove();
};

createCgiCount = () => {
const o = Ftag("categories", "li");
const uri = "/cgi-bin/diary.cgi?oid=" + xmlUSER + ";c=" + o[xmlCNT].className.replace(/C/, "") + ";n=1";
xhr(uri, null, cgiCount);
};

/* ----- 1月分の索引の追加 -------- */
onesData = s => {
let obj = s.match(/<div class="entry C.+?<div class=">(\d{4}).+?<\/h2>/) ? RegExp.$1 : "";
let dt = s.match(/<h2>(\d{4})(.+?)<\/h2>/) ? RegExp.$1 + RegExp.$2 + " " + num + "件 C" : "";
let node = Fid("dt" + RegExp.$1);
for(let i = 0; i < obj.length; i++){
obj[i] = obj[i].replace(/<div class="entry_body/, "</li>").
replace(/<div>/, "").
replace(/<div class="entry_date">(\d{4} \d\d\/\d\d) \d\d:\d\d<\/div>/,
"<span>$1</span>").
replace(/<div class="entry C\d+" id="A(\d+)">\s*/g,
"<li><span>A$1</span>");
}
obj.reverse();
s = obj.join("");
s = s.replace(/ title="[^"]+"|<\/?div[^>]*>|\t/g, "").replace(/ {2,}/g, " ");
s = axRep(s);
echo(node, dt);
echo(node.nextSibling, "<ul>\n" + s + "</ul>\n");
let par = Ftag(node.parentNode.previousSibling, "a")[0];
echo(par, echo(par).replace(/(\d+)件/, (e0,e1) => e1 + "+" + num + "= " + (Number(e1) + num) + "件"));

let mon = Fid("Mon" + year + "01");
mon.classList.add("ex");
let mo = echo(mon).replace(/^0/, "").replace("10", "a").replace("11", "b").replace("12", "c");
echo(mon, "<span>" + num + "</span><sup>" + mo + "</sup>");
xmlYearEntry();
};

monthPageRep = s => {
s = s.replace(/\x3c!\-\-.+?\-\->/g, "").replace(/\x3chr \/>/, "");
s = s.replace(/(\x3ch2)>(.+?)(\x3c\/h2>)(.+)/, (e0,e1,e2,e3,e4) => {
let es = e4.split("\x3chr />").reverse();
return e1 + " class=\"month_all\">\x3cdiv class=\"h2_d1\">" + e2 + "\x3cspan>全" +
es.length + "件\x3c/span>\x3c/div>\x3cdiv>.\x3c/div>" + e3 +
"\x3cdiv>"+ es.join("") + "\x3c/div>";
});
return s;
};
/* -------- 数値より投稿日取り出し -------- */
uDate = s => {
let dt = "";
if(s.match(/diary\/\d{4}\/\d\d\/(\d+).html/)){
dt = new Date();
dt.setTime((RegExp.$1 - 0) * 1000);
let d = dt.getDay();
let day = "日月火水木金土".charAt(d);
dt = dt.toLocaleString('ja-JP').replace(/\/(\d) /, "/0$1 ").
replace(/ (\d:)/, " 0$1").replace(/\/(\d\/)/, "/0$1").
replace(/(\d{4})./, "$1 ") +
" (<i class=\"day" + d + "\">" + day + "</i>)";
}
return dt;
};

modeFunc = no => {
modeFunc.bef = cMode;
modeOf(no);
setTimeout(() => { modeOf(modeFunc.bef) }, 2000);
};

/* -- モードの設定 -- */
modeOf = no => {
const o = doc.body.classList;
o.remove("cen-harf", "no-tab", "zs", "za", "zf", "zn", "toright");
let cc = 2;
switch (no % 10) {
case 0 : cc = 1; break;
case 1 : o.add("zn"); cc = 0; break;
case 2 : o.add("toright", "zn"); cc = 3; break;
case 3 : o.add("zs"); cc = 0; break;
case 4 : o.add("zs", "toright"); cc = 3; break;
case 5 : o.add("za"); break;
case 6 : o.add("za", "toright"); break;
case 7 : o.add("zf"); break;
case 8 : o.add("zf", "toright"); break;
}
if(no > 99) o.add("cen-harf");
if(no % 100 > 9) o.add("no-tab");
cMode = no;
cenImage(cc);
};

getLogs = () => {
xhr("/cgi-bin/footprint.cgi?oid=new-diary", null, e => {
const user = e.match(/href="\/home\/([\w\-]+)/) ? RegExp.$1 : "";
const since = e.match(/(\d{4} \d\d\/\d\d) \d\d:\d\d/) ? RegExp.$1 : "";
const count = e.match(/総アクセス数: (\d+)/) ? RegExp.$1 : "";
alert( user + " , " + count + " , " + since);
});
};

userVoid = () => {
if(!isLogin){
alert("管理コマンドです"); return;
}
getLogs();
};

addCssEntry = () => {
const obj = window["main_" + xmlUSER].document;
if(xmlUSER == "new-diary" || !obj) return;
if(obj.URL.includes("footprint.cgi")){
const par = Fid("M1").classList;
par.add("trim");
setTimeout(() => {
Ftag(obj, "link")[0].href =
"/home/" + (Fid("addCss").checked ? "new-diary" : xmlUSER) + "/footprint.css";
setTimeout(() => {
par.remove("trim");
}, 800);
}, 800);
}
};

[/EXEC-A-DATA]