function selectText(e) { if (document.selection) { var t = document.body.createTextRange(); t.moveToElementText(document.getElementById(e)); t.select(); } else if (window.getSelection) { var t = document.createRange(); t.selectNode(document.getElementById(e)); window.getSelection().addRange(t); } } function setSelectionRange(e, t, n) { if (e.setSelectionRange) { e.focus(); e.setSelectionRange(t, n); } else if (e.createTextRange) { var r = e.createTextRange(); r.collapse(true); r.moveEnd("character", n); r.moveStart("character", t); r.select(); } } function replaceSelection(e, t) { if (e.setSelectionRange) { var n = e.selectionStart; var r = e.selectionEnd; e.value = e.value.substring(0, n) + t + e.value.substring(r); if (n !== r) { setSelectionRange(e, n, n + t.length); } else { setSelectionRange(e, n + t.length, n + t.length); } } else if (document.selection) { var i = document.selection.createRange(); if (i.parentElement() === e) { var s = i.text === ""; i.text = t; if (!s) { i.moveStart("character", -t.length); i.select(); } } } } function catchTab(e, t) { let c; if (navigator.userAgent.match("Gecko")) { c = t.which; } else { c = t.keyCode; } if (c === 9) { const n = e.scrollTop; replaceSelection(e, String.fromCharCode(9)); stopEvent(t); e.scrollTop = n; return false; } } function stopEvent(e) { if (e.preventDefault) { e.preventDefault(); } if (e.stopPropagation) { e.stopPropagation(); } e.stopped = true; } var js = { text: { lines: function (e) { return this.getLines(e).length; }, getLines: function (e) { return e.split("\n"); }, }, textElement: { value: function (e) { return e.value.replace(/\r/g, ""); }, caretPosition: function (e) { var t = {}; if (document.selection) { var n = document.selection.createRange(); var r = document.body.createTextRange(); r.moveToElementText(e); var i; for (i = 0; r.compareEndPoints("StartToStart", n) < 0; i++) { r.moveStart("character", 1); } t.start = i; t.end = i + n.text.replace(/\r/g, "").length; } else if (e.selectionStart || e.selectionStart === 0) { t.start = e.selectionStart; t.end = e.selectionEnd; } return t; }, setCaretPosition: function (e, t) { e.focus(); if (e.setSelectionRange) { e.setSelectionRange(t.start, t.end); } else if (e.createTextRange) { var n = e.createTextRange(); n.moveStart("character", t.start); n.moveEnd("character", t.end); n.select(); } }, }, }; function highlight(e) { const t = js.textElement.caretPosition(e); if (!t.start && !t.end) return; const n = js.text.getLines(js.textElement.value(e)); let r = 0, i = 0; let s = ""; let o = false; let u = 0; for (const a in n) { i = r + n[a].length; if (t.start >= r && t.start <= i) o = true; if (o) { const f = n[a].substr(0, 11) === "!highlight!"; if (!u) { if (f) u = 1; else u = 2; } if (u === 1 && f) n[a] = n[a].substr(11, n[a].length - 11); else if (u === 2 && !f) s += "!highlight!"; } s = s + n[a] + "\n"; if (t.end >= r && t.end <= i) o = false; r = i + 1; } e.value = s.substring(0, s.length - 1); const l = t.start + (u === 1 ? -11 : 11); js.textElement.setCaretPosition(e, { start: l, end: l, }); } function togglev() { if ( document.getElementsByTagName("ol")[0].style.listStyle.substr(0, 4) === "none" ) { document.getElementsByTagName("ol")[0].style.listStyle = "decimal"; } else { document.getElementsByTagName("ol")[0].style.listStyle = "none"; } }