var CONTROL = {
syncTime: "0",
browser: null,
page: null,
link: null,
memo: null,
draw: null,
responsiveUI: null
};
var getSyncData, prevTime;
function sync_data(a) {
var b = {
ebookId: String(ViewerManager.GetData.EPUB.ID),
userId: String(ViewerManager.userInfo.loginKey)
};
$.ajax({
async: false,
type: "post",
url: API.syncTime(),
data: b,
error: function(c, e, d) {
console.log("error : function (jqXHR, textStatus, errorThrown)")
},
success: function(e) {
var d = $.xml2json(e);
if (d.RESULT == "SUCCESS") {
console.log("sync_data", a, d.message);
CONTROL.syncTime = d.message;
if (a == "down") {
prevTime = CONTROL.syncTime
}
if (a == "complete") {
prevTime = CONTROL.syncTime;
return
}
var c = true;
if (CONTROL.syncTime == "0" || CONTROL.syncTime == "") {
c = false
}
updateSync(a, c)
}
}
})
}
function updateSync(d, b) {
console.log("updateSync", d, b);
var i = {};
var f = [];
var j = [];
var g = [];
var c = [];
var a = [];
var h = [];
var e = false;
console.log("function updateSync(loadtype, bool)");
if (b) {
$.ajax({
async: false,
url: "/Sviewer/user_logdata/" + String(ViewerManager.GetData.EPUB.ID) + "/" + String(ViewerManager.userInfo.loginKey) + "/mycontents.json",
success: function(k) {},
error: function(k, m, l) {
console.log("error", k, m, l);
e = true;
CONTROL.syncTime = ""
},
complete: function(k) {
if (e == true) {
updateSync(d, false);
return
}
getSyncData = k.responseText;
if (String(location.href).match("titanbooks.co.kr")) {
getSyncData = JSON.parse(getSyncData);
mix_data(d, "bookmark");
mix_data(d, "memo");
mix_data(d, "link");
mix_data(d, "draw")
} else {}
}
})
} else {
getSyncData = "";
mix_data(d, "bookmark");
mix_data(d, "memo");
mix_data(d, "link");
mix_data(d, "draw")
}
}
var uploadCount = 0;
function mix_data(b, o) {
console.log("function mix_data(loadtype, gettype)");
var x, v, t;
var u = CONTROL.save_target(o);
var c = JSON.parse(u);
if (b == "down") {
var f = c[o];
var p = getSyncData[o];
if (o == "bookmark") {
if ((p == null || p == undefined) && (f == null || f == undefined)) {
return
}
var s = parseInt(ViewerManager.PAGE_TOTAL_NUMBER);
var y = [],
l = [],
E = [],
C;
if (p != undefined && p.length > 0) {
for (x = 1; x <= s; x++) {
var B = x;
if (p[x - 1] != undefined) {
B = parseInt(p[x - 1].pageno)
}
if (p[x - 1] != undefined) {
y[B] = p[x - 1]
}
}
}
var A = 0;
if (f != undefined && f.length > 0) {
for (x = 1; x <= s; x++) {
var B = x;
if (f[x - 1] != undefined) {
B = parseInt(f[x - 1].pageno);
if (A < parseInt(f[x - 1].lastdate)) {
A = parseInt(f[x - 1].lastdate)
}
}
if (f[x - 1] != undefined) {
l[B] = f[x - 1]
}
}
}
for (x = 1; x <= s; x++) {
if (y[x] == undefined && l[x] == undefined) {
continue
} else {
if (y[x] != undefined && l[x] == undefined) {
if (A <= parseInt(CONTROL.syncTime)) {
y[x].bookId = ViewerManager.GetData.EPUB.ID;
E.push(y[x])
}
} else {
if (y[x] == undefined && l[x] != undefined) {
if (A >= parseInt(CONTROL.syncTime)) {
E.push(l[x])
}
} else {
if (y[x] != undefined && l[x] != undefined) {
if (A < parseInt(CONTROL.syncTime)) {
y[x].bookId = ViewerManager.GetData.EPUB.ID;
E.push(y[x])
} else {
E.push(l[x])
}
}
}
}
}
}
var w = JSON.parse(CONTROL.save_target("bookmark"));
w.bookmark = E;
CONTROL.save_target("bookmark", JSON.stringify(w))
}
if (o == "memo") {
if ((p == null || p == undefined) && (f == null || f == undefined)) {
return
}
var F = [];
if (p != null && p != undefined && p.length > 0) {
for (x = 0; x < p.length; x++) {
var q = false;
var r;
if (f != null && f != undefined && f.length > 0) {
for (v = 0; v < f.length; v++) {
if (p[x].createdate == f[v].createdate) {
q = true;
r = f[v];
break
} else {
q = false
}
}
if (q == true) {
if (parseInt(p[x].lastdate) <= parseInt(r.lastdate)) {
r.bookId = ViewerManager.GetData.EPUB.ID;
F.push(r)
} else {
p[x].bookId = ViewerManager.GetData.EPUB.ID;
F.push(p[x])
}
} else {
p[x].bookId = ViewerManager.GetData.EPUB.ID;
F.push(p[x])
}
} else {
if (p[x] != undefined) {
p[x].bookId = ViewerManager.GetData.EPUB.ID;
F.push(p[x])
}
}
}
}
if (f.length > 0) {
for (x = 0; x < f.length; x++) {
if (parseInt(f[x].createdate) > parseInt(CONTROL.syncTime)) {
F.push(f[x])
}
}
}
var d = JSON.parse(CONTROL.save_target("memo"));
d.memo = F;
CONTROL.save_target("memo", JSON.stringify(d))
}
if (o == "link") {
if ((p == null || p == undefined) && (f == null || f == undefined)) {
return
}
var e = [];
if (p != null && p != undefined && p.length > 0) {
for (x = 0; x < p.length; x++) {
var q = false;
var r;
if (f != null && f != undefined && f.length > 0) {
for (v = 0; v < f.length; v++) {
if (p[x] != undefined && p[x].createdate == f[v].createdate) {
q = true;
r = f[v];
break
} else {
q = false
}
}
if (q == true) {
if (parseInt(p[x].lastdate) <= parseInt(r.lastdate)) {
r.bookId = ViewerManager.GetData.EPUB.ID;
e.push(r)
} else {
p[x].bookId = ViewerManager.GetData.EPUB.ID;
e.push(p[x])
}
} else {
if (p[x] != undefined) {
p[x].bookId = ViewerManager.GetData.EPUB.ID;
e.push(p[x])
}
}
} else {
if (p[x] != undefined) {
p[x].bookId = ViewerManager.GetData.EPUB.ID;
e.push(p[x])
}
}
}
}
if (f.length > 0) {
for (x = 0; x < f.length; x++) {
if (parseInt(f[x].createdate) > parseInt(CONTROL.syncTime)) {
e.push(f[x])
}
}
}
var a = JSON.parse(CONTROL.save_target("link"));
a.link = e;
CONTROL.save_target("link", JSON.stringify(a))
}
if (o == "draw") {
if ((p == null || p == undefined) && (f == null || f == undefined)) {
return
}
var n = [],
g = [];
if (p != null && p != undefined && f != undefined) {
if (p.length > 0) {
for (x = 0; x < p.length; x++) {
var m = {
pageno: p[x].pageno,
lastdate: p[x].lastdate,
drawurl: p[x].drawurl,
svg: ""
},
h = false;
var z = "/Sviewer/user_logdata/" + String(ViewerManager.GetData.EPUB.ID) + "/" + String(ViewerManager.userInfo.loginKey) + "/" + p[x].drawurl;
$.ajax({
async: true,
url: z,
dataType: "xml",
error: function(i, k, j) {
console.log("svg load error");
h = true
},
success: function(j) {
if (h == false) {
var i = j.childNodes[0].children == undefined ? j.childNodes[0].childNodes : j.childNodes[0].children;
var k = CONTROL.draw.convertAppToWeb(i);
m.svg = k;
n.push(m);
if (x == p.length - 1) {
for (v = 0; v < n.length; v++) {
if (f.length > 0) {
for (t = 0; t < f.length; t++) {
if (n[v].pageno == f[t].pageno) {
if (parseInt(n[v].lastdate) > parseInt(f[t].lastdate)) {
g.push(n[v])
} else {
if (parseInt(n[v].lastdate) < parseInt(f[t].lastdate)) {
g.push(f[t])
} else {
g.push(f[t])
}
}
}
}
} else {
g.push(n[v])
}
}
for (v = 0; v < g.length; v++) {
for (t = 0; t < f.length; t++) {
if (g[v].pageno != f[t].pageno) {
if (parseInt(f[t].lastdate) > parseInt(CONTROL.syncTime)) {
g.push(f[t])
}
}
}
}
var G = JSON.parse(CONTROL.save_target("draw"));
G.draw = g;
CONTROL.save_target("draw", JSON.stringify(G));
CONTROL.draw._refresh()
}
}
}
})
}
}
} else {
if ((f != null || f != undefined) && (p == null && p == undefined)) {
console.log("only web");
if (f.length > 0) {
for (x = 0; x < f.length; x++) {
n.push(f[x])
}
}
} else {
if (p != undefined && f == undefined) {
console.log("only app");
if (p.length > 0) {
for (x = 0; x < p.length; x++) {
var m = {
pageno: p[x].pageno,
lastdate: p[x].lastdate,
drawurl: p[x].drawurl,
svg: ""
},
h = false;
var z = "/Sviewer/user_logdata/" + String(ViewerManager.GetData.EPUB.ID) + "/" + String(ViewerManager.userInfo.loginKey) + "/" + p[x].drawurl;
$.ajax({
async: false,
url: z,
dataType: "xml",
error: function(i, k, j) {
console.log("svg load error");
h = true
},
success: function(i) {
if (h == false) {
var j = CONTROL.draw.convertAppToWeb(i.childNodes[0].children);
m.svg = j;
n.push(m);
if (x == p.length - 1) {
var k = JSON.parse(CONTROL.save_target("draw"));
k.draw = n;
CONTROL.save_target("draw", JSON.stringify(k));
CONTROL.draw._refresh()
}
}
}
})
}
}
}
}
}
}
} else {
if (b == "up") {
if (uploadCount < 4) {
uploadCount++;
if (uploadCount == 4) {
var D = {
ebookId: String(ViewerManager.GetData.EPUB.ID),
userId: String(ViewerManager.userInfo.loginKey)
};
$.ajax({
async: false,
type: "post",
url: API.syncTime(),
data: D,
error: function(i, k, j) {
console.log("sync up error")
},
success: function(k) {
var j = $.xml2json(k);
if (j.RESULT == "SUCCESS") {
CONTROL.syncTime = j.message;
console.log("SUCCESS", prevTime, CONTROL.syncTime);
if (prevTime >= CONTROL.syncTime) {
console.log("just up");
var i = ["bookmark", "memo", "link", "draw"];
if (getSyncData == "") {
getSyncData = {}
}
for (x = 0; x < i.length; x++) {
u = CONTROL.save_target(i[x]);
c = JSON.parse(u);
getSyncData[i[x]] = [];
if (c[i[x]].length == 0) {
getSyncData[i[x]] = []
} else {
if (c[i[x]].length > 0) {
for (v = 0; v < c[i[x]].length; v++) {
getSyncData[i[x]].push(makeObject(i[x], c[i[x]][v]))
}
}
}
}
CONTROL.save_data("mycontents", JSON.stringify(getSyncData));
uploadCount = 0;
setTimeout(function() {
CONTROL.save_svg_each();
sync_data("complete")
}, 100)
} else {
console.log("remix");
mix_data("down", "bookmark");
mix_data("down", "memo");
mix_data("down", "link");
mix_data("down", "draw");
uploadCount = 0
}
}
}
})
}
}
}
}
}
function makeObject(b, c) {
var a = new Object();
switch (b) {
case "bookmark":
a.pageno = c.pageno;
a.lastdate = c.lastdate;
break;
case "memo":
a.pageno = c.pageno;
a.createdate = c.createdate;
a.lastdate = c.lastdate;
a.title = c.title;
a.memo = c.memo;
a.locx = c.locx;
a.locy = c.locy;
break;
case "link":
a.pageno = c.pageno;
a.createdate = c.createdate;
a.lastdate = c.lastdate;
a.linkname = c.linkname;
a.linkurl = c.linkurl;
a.locx = c.locx;
a.locy = c.locy;
break;
case "draw":
a.pageno = c.pageno;
a.lastdate = c.lastdate;
a.drawurl = c.drawurl;
break
}
return a
}
CONTROL.serverdata = {};
CONTROL.save_target = function(a, d) {
var f;
if (ViewerManager.VIEWER_TYPE == "TITAN") {
if (window.sessionStorage.getItem(a) == null) {
window.sessionStorage.setItem(a, e(a))
}
if (CONTROL.serverdata[a] == undefined) {
if (ViewerManager.VIEWER_TYPE == "TITAN" && (a == "draw" || a == "bookmark" || a == "memo" || a == "link")) {
var c = String(ViewerManager.GetData.EPUB.ID) + "/" + String(ViewerManager.userInfo.loginKey);
var b = {
filetype: String(a),
cntid: String(ViewerManager.GetData.EPUB.ID),
usrid: String(ViewerManager.userInfo.loginKey)
};
$.ajax({
async: false,
type: "post",
url: API.fileCheck(),
data: b,
dataType: "text",
error: function(h, j, i) {
console.log("error", h, j, i)
},
success: function(i) {
if (parseInt(i) == 1) {
var h = String(ViewerManager.GetData.EPUB.ID) + "/" + String(ViewerManager.userInfo.loginKey);
$.ajax({
async: false,
type: "post",
url: "/Sviewer/user_logdata/" + h + "/" + a + ".json",
error: function(j, l, k) {
console.log("error", j, l, k)
},
success: function(j) {
if (j.length == undefined) {
CONTROL.serverdata[a] = JSON.stringify(JSON.parse('{"' + a + '" : []}'));
CONTROL.save_data(a, CONTROL.serverdata[a]);
window.sessionStorage.setItem(a, JSON.stringify(JSON.parse('{"' + a + '" : []}')))
} else {
if (CONTROL.serverdata[a] != JSON.stringify(JSON.parse(j))) {
CONTROL.serverdata[a] = JSON.stringify(JSON.parse(j));
window.sessionStorage.setItem(a, JSON.stringify(JSON.parse(j)))
}
}
}
})
} else {
if (CONTROL.serverdata[a] != JSON.stringify(JSON.parse('{"' + a + '" : []}'))) {
CONTROL.serverdata[a] = JSON.stringify(JSON.parse('{"' + a + '" : []}'));
CONTROL.save_data(a, CONTROL.serverdata[a])
}
if (window.sessionStorage.getItem(a) != JSON.stringify(JSON.parse('{"' + a + '" : []}'))) {
window.sessionStorage.setItem(a, JSON.stringify(JSON.parse('{"' + a + '" : []}')))
}
}
}
})
}
}
if (d == undefined) {
f = window.sessionStorage.getItem(a);
return f
} else {
if (d != CONTROL.serverdata[a]) {
CONTROL.serverdata[a] = d;
window.sessionStorage.setItem(a, d);
if (String(location.href).match("titanbooks.co.kr") && String(ViewerManager.userInfo.loginKey).length > 0) {
CONTROL.save_data(a, d)
}
}
return
}
} else {
var g = window.localStorage;
if (g.getItem(a) == null) {
g.setItem(a, e(a))
}
if (d != undefined) {
CONTROL.serverdata[a] = d;
g.setItem(a, d);
return
} else {
f = g.getItem(a);
return f
}
}
function e(i) {
var h;
switch (i) {
case "draw":
h = JSON.stringify({
draw: []
});
break;
case "bookmark":
h = JSON.stringify({
bookmark: []
});
break;
case "link":
h = JSON.stringify({
link: []
});
break;
case "memo":
h = JSON.stringify({
memo: []
});
break;
case "palette":
h = JSON.stringify({
palette: []
});
break
}
return h
}
};
CONTROL.deleteContents = function(a, b, c) {
$("#dataDeleteTemplet").css("left", (window.innerWidth / 2 - 150) + "px");
$("#dataDeleteTemplet").fadeIn("fast", function() {
$(this).find("#dataDeletePopupNoBtn").on("click", function() {
$("#dataDeleteTemplet").fadeOut("fast")
});
$(this).find("#dataDeletePopupYesBtn").on("click", function() {
var e = JSON.parse(CONTROL.save_target(a));
if (e[a].length > 0) {
for (var d = 0; d < e[a].length; d++) {
if (e[a][d].lastdate == String(c)) {
console.log(CONTROL.serverdata[d], e[a][d]);
e[a].splice(d, 1);
CONTROL.save_target(a, JSON.stringify(e));
ViewerManager.pageLoading(ViewerManager.PAGE_CURRENT_NUMBER);
break
}
}
$("#dataDeleteTemplet").fadeOut("fast")
}
})
})
};
CONTROL.save_data = function(a, b, e) {
if (ViewerManager.VIEWER_TYPE == "TITAN") {
var f = e == undefined ? ".json" : e;
var d = String(ViewerManager.GetData.EPUB.ID) + "/" + String(ViewerManager.userInfo.loginKey);
var c = {
gettype: String(a),
filetype: String(f),
cntid: String(ViewerManager.GetData.EPUB.ID),
usrid: String(ViewerManager.userInfo.loginKey),
filedata: b
};
$.ajax({
type: "post",
url: API.fileSave(),
data: c,
error: function(g, i, h) {
console.log("error", g, i, h)
},
success: function(g) {}
});
return CONTROL.serverdata
}
};
CONTROL.save_svg = function(b) {
console.log("CONTROL.save_svg");
var f, e, c, g, l;
var m = JSON.parse(b);
var h = parseInt(ViewerManager.PAGE_CURRENT_NUMBER) == 1 ? parseInt(ViewerManager.PAGE_CURRENT_NUMBER) : parseInt(ViewerManager.PAGE_CURRENT_NUMBER) % 2 == 0 ? parseInt(ViewerManager.PAGE_CURRENT_NUMBER) : parseInt(ViewerManager.PAGE_CURRENT_NUMBER) - 1;
for (f = 0; f < m.draw.length; f++) {
var a = m.draw[f].pageNo == undefined ? parseInt(m.draw[f].pageNum) : parseInt(m.draw[f].pageNo);
a = m.draw[f].pageno == undefined ? a : parseInt(m.draw[f].pageno);
if (a == h) {
imgData = CONTROL.draw.convertWebToApp(m.draw[f].svg);
CONTROL.makeSVG(imgData, "svg");
break
}
}
};
CONTROL.save_svg_each = function() {
console.log("CONTROL.save_svg_each");
var f = JSON.parse(CONTROL.save_target("draw"));
var d = parseInt(ViewerManager.PAGE_CURRENT_NUMBER) == 1 ? parseInt(ViewerManager.PAGE_CURRENT_NUMBER) : parseInt(ViewerManager.PAGE_CURRENT_NUMBER) % 2 == 0 ? parseInt(ViewerManager.PAGE_CURRENT_NUMBER) : parseInt(ViewerManager.PAGE_CURRENT_NUMBER) - 1;
if (f.draw.length > 0) {
for (var c = 0; c < f.draw.length; c++) {
var e = CONTROL.draw.convertWebToApp(f.draw[c].svg);
var a = f.draw[c].drawurl;
CONTROL.makeSVG(e, "svg", a);
if (f.draw[c].pageno == d) {
var b = document.getElementById("drawingSVG");
b.innerHTML = f.draw[c].svg
}
}
}
};
CONTROL.makeSVG = function(h, c, g) {
var a, e = false;
if (ViewerManager.VIEWER_TYPE == "TITAN" || e == true) {
var b = "",
d = "",
i;
var f = parseInt(ViewerManager.PAGE_CURRENT_NUMBER) == 1 ? parseInt(ViewerManager.PAGE_CURRENT_NUMBER) : parseInt(ViewerManager.PAGE_CURRENT_NUMBER) % 2 == 0 ? parseInt(ViewerManager.PAGE_CURRENT_NUMBER) : parseInt(ViewerManager.PAGE_CURRENT_NUMBER) - 1;
if (f < 10) {
f = "000" + String(f)
} else {
if (f >= 10 && f < 100) {
f = "00" + String(f)
} else {
if (f >= 100 && f < 1000) {
f = "0" + String(f)
} else {
if (f >= 1000 && f <= 10000) {
f = String(f)
}
}
}
}
if (g != undefined) {
f = g
}
f = f.replace(".svg", "");
if (c == "delete") {
i = {
gettype: String(f),
filetype: ".svg",
cntid: String(ViewerManager.GetData.EPUB.ID),
usrid: String(ViewerManager.userInfo.loginKey)
};
$.ajax({
type: "post",
url: API.fileRemove(),
data: i,
error: function(j, l, k) {},
success: function(j) {
console.log("success delete")
}
})
} else {
if (c == "svg") {
d = '";
i = {
gettype: String(f),
filetype: ".svg",
cntid: String(ViewerManager.GetData.EPUB.ID),
usrid: String(ViewerManager.userInfo.loginKey),
filedata: d
};
$.ajax({
async: false,
type: "post",
url: API.fileSave(),
data: i,
error: function(j, l, k) {
console.log("error", j, l, k)
},
success: function(j) {
console.log(f + ".svg make success")
}
})
}
}
}
};
CONTROL.convertSVG = function(a, e) {
var b, f, c;
switch (a) {
case "path":
for (b = 0; b < e.d.length; b++) {
var g;
if (b == 0) {
g = "M" + String(e.d[b][0]);
g = g + "," + String(e.d[b][1])
} else {
if (b == 1) {
g = g + " Q" + String(e.d[b][0]);
g = g + "," + String(e.d[b][1])
} else {
g = g + " " + String(e.d[b][0]);
g = g + "," + String(e.d[b][1])
}
}
f = g
}
c = '\n';
break;
case "rect":
c = '\n';
break
}
return c
};
$("#btn_sync").on("click", function(a) {
sync_data("up")
});
CONTROL.init = function() {
setInnerHTML();
CONTROL.draw._init();
CONTROL.memo._init();
};
CONTROL.loadStart = function() {
CONTROL.draw._loadStart();
CONTROL.memo._loadStart();
CONTROL.responsiveUI._loadStart()
};
CONTROL.loadComplete = function() {
CONTROL.draw._loadComplete();
CONTROL.memo._loadComplete()
};
CONTROL.save = function() {
CONTROL.draw._save();
CONTROL.memo._save()
};
CONTROL.resize = function() {
CONTROL.draw._resize();
CONTROL.memo._resize();
CONTROL.responsiveUI._resize()
};
CONTROL.refresh = function() {
CONTROL.draw._refresh();
CONTROL.memo._refresh()
};
CONTROL.closeUtils = function(a) {
switch (a) {
case "memo":
CONTROL.link.linkIndex();
break;
case "link":
CONTROL.memo.memoIndex();
break
}
};
CONTROL.refreshAD = function() {
var a;
if (String(location.href).match("titanbooks.co.kr") && !String(location.href).match(".html")) {
if (document.getElementById("div-ad-left")) {
a = $("#div-ad-left")[0].innerHTML;
$("#div-ad-left")[0].innerHTML = "";
$("#div-ad-left")[0].innerHTML = a;
$("#img-adclose-left").css("display", "inline-block").on("click", function(b) {
$("#div-ad-left").remove()
})
}
if (document.getElementById("div-ad-right")) {
a = $("#div-ad-right")[0].innerHTML;
$("#div-ad-right")[0].innerHTML = "";
$("#div-ad-right")[0].innerHTML = a;
$("#img-adclose-right").css("display", "inline-block").on("click", function(b) {
$("#div-ad-right").remove()
})
}
}
};
String.prototype.getStringLength = function(b) {
var d = this,
g, f, e, c = "";
f = 0;
e = d.length;
for (var a = 0; a < e; a++) {
g = d.charAt(a);
f++;
if (f > b - 1) {
break
}
c += g
}
if (e > c.length) {
c = c + "..."
}
return c
};
String.prototype.replaceAt = function(a, b) {
return this.substr(0, a) + b + this.substr(a + b.length)
};
Date.prototype.yyyymmddhh24miss = function() {
var f = this.getFullYear().toString(),
e = (this.getMonth() + 1).toString(),
a = this.getDate().toString(),
b = this.getHours().toString(),
c = this.getMinutes().toString(),
d = this.getSeconds().toString();
return f + (e[1] ? e : "0" + e[0]) + (a[1] ? a : "0" + a[0]) + (b[1] ? b : "0" + b[0]) + (c[1] ? c : "0" + c[0]) + (d[1] ? d : "0" + d[0])
};
Number.prototype.setPoint = function(c) {
var a = Math.pow(10, c);
var b = this * a;
b = Math.floor(b) / a;
return b
};
function setInnerHTML() {
//if ((!CONTROL.browser.chrome && !CONTROL.browser.firefox && SVGElement.prototype.innerHTML == undefined) || CONTROL.browser.edge) {
try{
if ((!CONTROL.browser.chrome && !CONTROL.browser.firefox && SVGElement.prototype.innerHTML == undefined) || CONTROL.browser.edge) {
Object.defineProperty(SVGElement.prototype, "innerHTML", {
get: function() {
var e, b, f, d, a, c;
f = document.createElement("div");
b = this.cloneNode(true);
c = b.childNodes;
for (d = 0, a = c.length; d < a; d++) {
if (c[d].nodeType == "1") {
e = c[d].cloneNode(true);
f.appendChild(e)
}
}
return f.innerHTML
},
set: function(e) {
var d, c, f, h, b, g, a;
while (this.firstChild) {
this.firstChild.parentNode.removeChild(this.firstChild)
}
e = "";
d = document.createElement("div");
d.innerHTML = e;
f = d.querySelector("svg#wrapper");
g = f.childNodes;
a = [];
for (h = 0, b = g.length; h < b; h++) {
if (g[h].nodeType == "1") {
c = g[h].cloneNode(true);
a.push(this.appendChild(c))
}
}
return a
},
enumerable: false,
configurable: true
})
}
}catch(e){console.log(e);}
}
function new_category_open() {
var a = (screen.width / 2);
var c = (screen.height - 80);
var b = window.open(API.treeEdit() + "?epubNum=" + ViewerManager.GetData.EPUB.ID, "new_category", "scrollbars=yes,toolbar=no,location=no,status=no,menubar=no,resizable=yes,width=" + a + ",height=" + c + ",left=0,top=0");
b.focus();
return false
};