";
for (var i = 0; i < g_DictWordList.length; i++) {
if (g_DictWordList[i].Pali == inCurrWord) {
if (g_DictWordList[i].dictname == "用户字典") {
outData += "
";
//detail end
//word block end
divWord.innerHTML = txtOut;
//如果下一个词不存在。
if (element) {
element.parentNode.insertBefore(divWord, element);
} else {
parentElement.parentNode.appendChild(divWord);
}
}
function file_export_html_validate_form(thisform) {
with (thisform) {
var tocstring = document.getElementById("content").innerHTML;
var suttastring = document.getElementById("sutta_text").innerHTML;
txt_toc.value = tocstring.replace(/onclick/g, "");
txt_sutta.value = suttastring.replace(/onclick/g, "");
return true;
}
}
function show_case_input(obj) {
if (obj.checked) {
document.getElementById("input_case").style.display = "block";
} else {
document.getElementById("input_case").style.display = "none";
}
}
function edit_tran_save() {
let eBlock;
switch (gTextEditMediaType) {
case "translate":
newText = document.getElementById("id_text_edit_area").value;
newText = newText.replace(/\n\n/g, " ");
newText = term_edit_to_std_str(newText);
setTranText(gEditorTranslateEditBlockId, newText);
eBlock = document.getElementById("id_tran_" + gEditorTranslateEditBlockId);
if (eBlock) {
eBlock.innerHTML = renderTranslateParBlockInnerById(gEditorTranslateEditBlockId);
term_updata_translation();
}
break;
case "note":
setNoteText(gEditorNoteEditBlockId, document.getElementById("id_text_edit_area").value);
newText = document.getElementById("id_text_edit_area").value;
newText = newText.replace(/\n/g, " ");
eBlock = document.getElementById("note_sen_" + gEditorNoteEditBlockId + "_0");
if (eBlock) {
eBlock.innerHTML = newText;
}
break;
case "heading":
var newHeadingInfo = new Object();
newHeadingInfo.level = document.getElementById("id_heading_edit_level").value;
newHeadingInfo.language = document.getElementById("id_text_edit_language").value;
newHeadingInfo.author = document.getElementById("id_text_edit_author").value;
newHeadingInfo.text = document.getElementById("id_text_edit_area").value;
setHeadingInfo(gEditorHeadingEditBlockId, newHeadingInfo);
newText = document.getElementById("id_text_edit_area").value;
newText = newText.replace(/\n/g, " ");
eBlock = document.getElementById("id_heading_text_" + gEditorHeadingEditBlockId);
if (eBlock) {
eBlock.innerHTML = newText;
}
updataToc();
break;
case "new_heading":
var newHeadingInfo = new Object();
newHeadingInfo.book = gEditorNewHeadingBookId;
newHeadingInfo.paragraph = gEditorNewHeadingPar;
newHeadingInfo.level = document.getElementById("id_heading_edit_level").value;
newHeadingInfo.language = document.getElementById("id_text_edit_language").value;
newHeadingInfo.author = document.getElementById("id_text_edit_author").value;
newHeadingInfo.text = document.getElementById("id_text_edit_area").value;
newHeadBlock(newHeadingInfo);
updataToc();
break;
}
document.getElementById("id_text_edit_form").style.display = "none";
Dragging(getDraggingDialog).disable();
}
function edit_tran_cancal() {
document.getElementById("id_text_edit_form").style.display = "none";
Dragging(getDraggingDialog).disable();
}
function edit_tran_delete() {
switch (gTextEditMediaType) {
case "heading":
xBlock = gXmlBookDataBody.getElementsByTagName("block");
for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
mId = getNodeText(xmlParInfo, "id");
type = getNodeText(xmlParInfo, "type");
if (mId == gEditorHeadingEditBlockId) {
gXmlBookDataBody.removeChild(xBlock[iBlock]);
return;
}
}
htmlNode = document.getElementById("id_heading_" + gEditorHeadingEditBlockId);
if (htmlNode) {
htmlNode.parentNode.removeChild(htmlNode);
}
updataToc();
break;
}
document.getElementById("id_text_edit_form").style.display = "none";
}
function editor_translate_edit(id) {
gTextEditMediaType = "translate";
gEditorTranslateEditBlockId = id;
var headingObj = getTranslateText(id);
document.getElementById("id_text_edit_language").value = headingObj.language;
document.getElementById("id_text_edit_author").value = headingObj.author;
document.getElementById("id_text_edit_area").value = term_std_str_to_edit(headingObj.text);
//document.getElementById("id_heading_edit_level").style.display="none";
document.getElementById("id_text_edit_delete").style.display = "none";
document.getElementById("id_text_edit_form").style.display = "block";
Dragging(getDraggingDialog).enable();
}
function editor_note_edit(id) {
gTextEditMediaType = "note";
gEditorNoteEditBlockId = id;
var tranText = getNoteText(id);
document.getElementById("id_text_edit_area").value = tranText;
document.getElementById("id_heading_edit_level").style.display = "none";
document.getElementById("id_text_edit_delete").style.display = "none";
document.getElementById("id_text_edit_form").style.display = "block";
}
function getNoteText(id) {
xBlock = gXmlBookDataBody.getElementsByTagName("block");
for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
mId = getNodeText(xmlParInfo, "id");
type = getNodeText(xmlParInfo, "type");
if (mId == id) {
xmlParDataSen = xmlParData.getElementsByTagName("sen");
var currText = "";
for (iSen = 0; iSen < xmlParDataSen.length; iSen++) {
currText += getNodeText(xmlParDataSen[iSen], "text");
}
return currText;
}
}
return "";
}
function editor_heading_add_new(inBook, inPar) {
document.getElementById("id_text_edit_caption_text").innerHTML = gLocal.gui.newheading;
gTextEditMediaType = "new_heading";
gEditorHeadingEditBlockId = -1;
gEditorNewHeadingBookId = inBook;
gEditorNewHeadingPar = inPar;
document.getElementById("id_heading_edit_level").value = "1";
document.getElementById("id_text_edit_language").value = "pali";
document.getElementById("id_text_edit_author").value = config_user_name;
document.getElementById("id_text_edit_area").value = "";
document.getElementById("id_heading_edit_level").style.display = "flex";
document.getElementById("id_text_edit_delete").style.display = "none";
document.getElementById("id_text_edit_form").style.display = "block";
}
function editor_heading_edit(id) {
document.getElementById("id_text_edit_caption_text").innerHTML = "Heading";
gTextEditMediaType = "heading";
gEditorHeadingEditBlockId = id;
var headingObj = getHeadingText(id);
document.getElementById("id_heading_edit_level").value = headingObj.level;
document.getElementById("id_text_edit_language").value = headingObj.language;
document.getElementById("id_text_edit_author").value = headingObj.author;
document.getElementById("id_text_edit_area").value = headingObj.text;
document.getElementById("id_heading_edit_level").style.display = "flex";
document.getElementById("id_text_edit_delete").style.display = "inline";
document.getElementById("id_text_edit_form").style.display = "block";
}
function getHeadingText(id) {
xBlock = gXmlBookDataBody.getElementsByTagName("block");
for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
mId = getNodeText(xmlParInfo, "id");
type = getNodeText(xmlParInfo, "type");
if (mId == id) {
var obj = new Object();
obj.text = getNodeText(xmlParData, "text");
obj.level = getNodeText(xmlParInfo, "level");
obj.language = getNodeText(xmlParInfo, "language");
obj.author = getNodeText(xmlParInfo, "author");
return obj;
}
}
return null;
}
function setHeadingInfo(id, objValue) {
xBlock = gXmlBookDataBody.getElementsByTagName("block");
for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
blockId = getNodeText(xmlParInfo, "id");
if (blockId == id) {
newText = objValue.text.replace(/\n/g, " ");
setNodeText(xmlParData, "text", newText);
setNodeText(xmlParInfo, "level", objValue.level);
setNodeText(xmlParInfo, "author", objValue.author);
setNodeText(xmlParInfo, "language", objValue.language);
return;
}
}
}
function editor_openChannal(book, para, channal) {
$.post(
"../doc/load_channal_para.php",
{
book: book,
para: para,
channal: channal,
},
function (data) {
editor_parse_doc_xml(data);
}
);
}
//open project begin
var editor_openProjectXmlHttp = null;
function editor_openProject(strFileId, filetype) {
if (window.XMLHttpRequest) {
// code for IE7, Firefox, Opera, etc.
editor_openProjectXmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// code for IE6, IE5
editor_openProjectXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (editor_openProjectXmlHttp != null) {
var d = new Date();
var strLink = "";
if (filetype == "db") {
strLink = "project_load_db.php?id=" + strFileId;
} else {
strLink = "project_load.php?id=" + strFileId;
}
editor_openProjectXmlHttp.onreadystatechange = editor_open_project_serverResponse;
editor_openProjectXmlHttp.open("GET", strLink, true);
editor_openProjectXmlHttp.send(null);
} else {
alert("Your browser does not support XMLHTTP.");
}
}
function editor_parse_doc_xml(xmlText) {
if (window.DOMParser) {
parser = new DOMParser();
gXmlBookData = parser.parseFromString(xmlText, "text/xml");
} else {
// Internet Explorer
gXmlBookData = new ActiveXObject("Microsoft.XMLDOM");
gXmlBookData.async = "false";
gXmlBookData.loadXML(xmlText);
}
if (gXmlBookData == null) {
alert("error:can not load Project. xml obj is null.");
return;
}
projectDataParse(gXmlBookData);
doc_file_info_get();
doc_info_change("accese_time", "");
//消息系统初始化
let msg_id = doc_head("msg_db_max_id");
if (msg_id != "" && !isNaN(msg_id)) {
msg_init(msg_id);
} else {
msg_init(1);
}
updataDocParagraphList();
updataToc();
//渲染数据块
blockShow(0);
refreshResource();
editro_layout_loadStyle();
}
function editor_open_project_serverResponse() {
// 4 = "loaded"
if (editor_openProjectXmlHttp.readyState == 4) {
if (editor_openProjectXmlHttp.status == 200) {
// 200 = "OK"
var xmlText = editor_openProjectXmlHttp.responseText;
editor_parse_doc_xml(xmlText);
} else {
$("#sutta_text").html("Problem retrieving data:" + editor_openProjectXmlHttp.statusText);
}
}
}
//数据块显示
function blockShow(id) {
xmlBlock = gXmlBookDataBody.getElementsByTagName("block");
if (id < xmlBlock.length) {
insertBlockToHtml(xmlBlock[id]);
t = setTimeout("blockShow(" + (id + 1) + ")", 1);
progress = id / xmlBlock.length; //计算比例
strProgress = (progress * 100).toFixed(0) + "%"; //计算百分比,保留1位小数
document.getElementById("load_progress_num").innerHTML = strProgress; //显示计算结果
loading.setAttribute("stroke-dashoffset", 255 - progress * 140 + "%");
} else {
//文档载入完毕
strProgress = "OK";
loading.setAttribute("stroke-dashoffset", "0%");
document.getElementById("load_progress_num").innerHTML = strProgress;
setTimeout("hiddenProgressDiv()", 1000);
term_array_updata();
//单词块响应鼠标消息
word_mouse_event();
//刷新译文中的术语
term_updata_translation();
//自动将逐词译段落切分为句子
layout_wbw_auto_cut();
}
}
function word_mouse_event() {
$(".word").mouseenter(on_word_mouse_enter);
$(".word").mouseleave(on_word_mouse_leave);
}
var _curr_mouse_enter_wordid = "";
//单词快鼠标退出
function on_word_mouse_leave() {
$("#mean_" + _curr_mouse_enter_wordid).html("loading");
$("#parts_" + _curr_mouse_enter_wordid).html("loading");
$("#partmean_" + _curr_mouse_enter_wordid).html("loading");
$("#gramma_" + _curr_mouse_enter_wordid).html("loading");
relation_link_hide();
if (gRelationSelectWordBegin) {
//$(this).css(gCurrWordDivBorder);
$(this).css("border", "none");
}
gCurrMoseEnterWordId = "";
}
//单词块鼠标进入事件
var gCurrLookupWord = "";
//save the broder style when mouse leave recover
var gCurrWordDivBorder = "none";
var gWordHeadBarVisible = false;
var gCurrMoseEnterWordId = "";
function on_word_mouse_enter() {
var wordid = $(this).attr("id");
if (gCurrMoseEnterWordId == wordid) {
return;
}
gCurrMoseEnterWordId = wordid;
//remove the 'wb' in string head
_curr_mouse_enter_wordid = wordid.substr(2);
relation_link_show(_curr_mouse_enter_wordid);
var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
var iIndex = getWordIndex(_curr_mouse_enter_wordid);
if (iIndex >= 0) {
var paliword = getNodeText(xAllWord[iIndex], "real");
//如果内存里有这个词,渲染单词下拉菜单
if (mDict[paliword]) {
render_word_menu(_curr_mouse_enter_wordid);
} else {
//如果内存里没有这个词,查字典
if (!mDictQueue[paliword]) {
if (gCurrLookupWord != paliword) {
mDictQueue[paliword] = 1;
gCurrLookupWord = paliword;
$.ajax({
type: "GET",
url: "dict_find_one.php",
dataType: "json",
data: "word=" + paliword,
success: function (response) {
inline_dict_parse(response);
render_word_menu(_curr_mouse_enter_wordid);
},
error: function (xhr, ajaxOptions, thrownError) {
ntf_show(xhr.status + thrownError);
},
});
/*
$.get(
"dict_find_one.php",
{
word: paliword,
},
on_dict_lookup
);
*/
}
}
}
}
//如果显示relation
if (gRelationSelectWordBegin) {
gCurrWordDivBorder = $(this).css("border");
$(this).css("border", "1px solid #65c5bd");
let eHeadBar = document.getElementById("word_tool_bar");
if (eHeadBar) {
eHeadBar.style.display = "block";
}
let eWord = document.getElementById("ws_" + _curr_mouse_enter_wordid);
let eWordHead = document.getElementById("whead_" + _curr_mouse_enter_wordid);
eWord.insertBefore(eHeadBar, eWordHead);
gWordHeadBarVisible = true;
}
}
//解析字典数据
function inline_dict_parse(data) {
/*
if (data == "") {
return;
}
try {
var worddata = JSON.parse(data);
} catch (e) {
console.error(e + " data:" + data);
return;
}
*/
let worddata = data;
if (worddata.length > 0) {
//如果有数据 解析查询数据
let spell = new Array();
for (const iterator of worddata) {
if (mDict[iterator.pali]) {
spell[iterator.pali] = 1;
} else {
spell[iterator.pali] = 0;
}
}
for (const key in spell) {
if (spell.hasOwnProperty(key)) {
const element = spell[key];
if (element == 0) {
mDict[key] = new Array();
}
}
}
for (const iterator of worddata) {
if (spell[iterator.pali] == 0) {
mDict[iterator.pali].push(iterator);
mDictQueue[iterator.pali] = 0;
}
}
let currWordParent = new Array();
if (mDict[gCurrLookupWord]) {
for (const iterator of mDict[gCurrLookupWord]) {
if (typeof iterator.parent == "string") {
if (iterator.parent.length > 1) {
currWordParent[iterator.parent] = 1;
}
}
}
if (currWordParent.length == 0) {
//
inline_dict_auto_case(gCurrLookupWord);
}
} else {
//如果没有查到数据 添加自动格位
mDict[gCurrLookupWord] = new Array();
inline_dict_auto_case(gCurrLookupWord);
}
} else {
//如果没有查到数据 添加自动格位
mDict[gCurrLookupWord] = new Array();
inline_dict_auto_case(gCurrLookupWord);
}
}
//添加自动格位数据到内存字典
function inline_dict_auto_case(paliword) {
for (let i in gCaseTable) {
if (gCaseTable[i].type != ".v.") {
let sEnd2 = gCurrLookupWord.slice(0 - gCaseTable[i].end2.length);
if (sEnd2 == gCaseTable[i].end2) {
let wordParent = gCurrLookupWord.slice(0, 0 - gCaseTable[i].end2.length) + gCaseTable[i].end1;
let newWord = new Object();
newWord.pali = gCurrLookupWord;
newWord.type = gCaseTable[i].type;
newWord.gramma = gCaseTable[i].gramma;
newWord.parent = wordParent;
newWord.mean = "";
newWord.note = "";
newWord.parts = wordParent + "+[" + gCaseTable[i].end2 + "]";
newWord.partmean = "";
newWord.confidence = gCaseTable[i].confidence;
mDict[paliword].push(newWord);
}
}
}
}
function getAutoEnding(pali, base) {
let ending = Array();
for (let i in gCaseTable) {
if (gCaseTable[i].type != ".v.") {
let sEnd2 = pali.slice(0 - gCaseTable[i].end2.length);
if (sEnd2 == gCaseTable[i].end2) {
let wordParent = pali.slice(0, 0 - gCaseTable[i].end2.length) + gCaseTable[i].end1;
if (base == wordParent) {
ending[gCaseTable[i].end2] = 1;
}
}
}
}
return ending;
}
//查字典结果
function on_dict_lookup(data, status) {
//解析查询数据
inline_dict_parse(data);
render_word_menu(_curr_mouse_enter_wordid);
}
function render_word_menu(id) {
$("#word_mean").html(render_word_menu_mean(id));
$("#word_parts").html(render_word_menu_parts(id));
$("#word_partmean").html(render_word_menu_partmean(id));
$("#word_gramma").html(render_word_menu_gramma(id));
show_word_menu_mean(id);
show_word_menu_parts(id);
show_word_menu_partmean(id);
show_word_menu_gramma(id);
}
//根据单词长度排序 短词优先
function sortWordLen(a, b) {
return a.length - b.length;
}
//渲染单词意思下拉菜单
function render_word_menu_mean(id, target = 0) {
var output = "";
var word_real = doc_word("#" + id).val("real");
var word_parent = doc_word("#" + id).val("parent");
var arrParent = new Array();
//检索语基
if (word_parent.length > 0) {
//arrParent[word_parent]=1;
}
if (mDict[word_real]) {
for (var i in mDict[word_real]) {
if (mDict[word_real][i].parent && mDict[word_real][i].parent.length > 0) {
if (word_parent != mDict[word_real][i].parent && word_real != mDict[word_real][i].parent) {
arrParent[mDict[word_real][i].parent] = 1;
}
}
}
}
var sWord = new Array();
for (var sParent in arrParent) {
sWord.push(sParent);
}
//按照base长度升序
sWord.sort(sortWordLen);
if (word_parent.length > 0) {
sWord.unshift(word_parent);
}
sWord.unshift(word_real);
output +=
"";
output += '
';
for (var iWord in sWord) {
var pali = sWord[iWord];
//该词字典数量
var dict_count = 0;
if (mDict[pali]) {
for (iCount in mDict[pali]) {
if (mDict[pali][iCount].mean && mDict[pali][iCount].mean.length > 0) {
dict_count++;
}
}
}
if (pali == word_parent) {
output += '
";
var currWordMean = new Array();
if (mDict[pali]) {
for (var i in mDict[pali]) {
var objMean = new Object();
objMean.type = "";
objMean.gramma = "";
objMean.dict_name = "";
objMean.mean = "";
if (mDict[pali][i].type) {
objMean.type = mDict[pali][i].type;
}
if (mDict[pali][i].gramma) {
objMean.gramma = mDict[pali][i].gramma;
}
if (mDict[pali][i].dict_name) {
objMean.dict_name = mDict[pali][i].dict_name;
}
if (mDict[pali][i].mean) {
objMean.mean = mDict[pali][i].mean;
}
if (objMean.mean.length > 0) {
_mean_push(currWordMean, objMean);
}
}
}
for (var i in currWordMean) {
var htmlMean = "";
var wId = id;
output += "";
output +=
"
";
//base parts 信息
for (let sParent in arrParent) {
if (mDict[sParent]) {
let arrParts = new Array();
for (let iWord in mDict[sParent]) {
if (mDict[sParent][iWord].parts && mDict[sParent][iWord].parts != "") {
arrParts[mDict[sParent][iWord].parts] = 1;
}
}
if (arrParts.length > 0) {
output += '