wizard.js 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851
  1. var txtXML="";
  2. var gXmlResList=null;
  3. var gTocList=new Array();//目录信息数组
  4. var gResList=new Array();
  5. var gCurrResIndex=0;
  6. var gResDownloadList = new Array()
  7. var gCurrResListArray=new Array()
  8. var gCurrResListArray2=new Array()
  9. var gTocLanguage = new Array()
  10. var gTocLanguageItem = new Array()
  11. var gTocCurrLanguage="pali";
  12. var gTocCurrRoot = -1;
  13. var gResTypeList = new Array("wbw","translate");
  14. var gCurrQueryResType=0;
  15. var gCurrBookType="";
  16. var gDownloadListString="";
  17. function editor_wizard_next(id){
  18. document.getElementById('wizard_div').style.display="none";
  19. document.getElementById(id).style.display="flex";
  20. if(id=="wizard_div_palicannon"){
  21. wizard_palicannon_init();
  22. }
  23. /*
  24. var xmlHttp=null;
  25. if (window.XMLHttpRequest)
  26. {// code for IE7, Firefox, Opera, etc.
  27. xmlHttp=new XMLHttpRequest();
  28. }
  29. else if (window.ActiveXObject)
  30. {// code for IE6, IE5
  31. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  32. }
  33. if (xmlHttp!=null)
  34. {
  35. var wizardDir="module/editor_wizard/"
  36. xmlHttp.open("POST", wizardDir+url, false);
  37. xmlHttp.send(data);
  38. document.getElementById('wizard_div').innerHTML = xmlHttp.responseText;
  39. }
  40. else
  41. {
  42. alert("Your browser does not support XMLHTTP.");
  43. }
  44. */
  45. }
  46. function wizard_new_finish(){
  47. var xmlText = txtXML;
  48. var newFileName = new_save(xmlText);
  49. if(newFileName){
  50. window.open("./editor.php?op=open&filename="+newFileName,"_blank");
  51. //window.location.assign("index_new.php");
  52. window.history.back();
  53. }
  54. }
  55. function new_save(strData){
  56. xmlHttp=null;
  57. if (window.XMLHttpRequest)
  58. {// code for IE7, Firefox, Opera, etc.
  59. xmlHttp=new XMLHttpRequest();
  60. var_dump("test XMLHttpRequest<br/>");
  61. }
  62. else if (window.ActiveXObject)
  63. {// code for IE6, IE5
  64. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  65. var_dump("testing Microsoft.XMLHTTP<br/>");
  66. }
  67. if (xmlHttp!=null)
  68. {
  69. if(g_filename.length==""){
  70. var inputFileName=prompt("Project Name","new project");
  71. if (inputFileName==null || inputFileName==""){
  72. alert("Project Name Can not Empty");
  73. return;
  74. }
  75. else{
  76. g_filename=gConfigDirMydocument+inputFileName+".pcs";
  77. }
  78. }
  79. xmlHttp.open("POST", "./dom_http.php", false);
  80. var sendHead="filename="+g_filename+"#";
  81. xmlHttp.send(sendHead+strData);
  82. var_dump(xmlHttp.responseText);
  83. return(g_filename);
  84. }
  85. else
  86. {
  87. alert("Your browser does not support XMLHTTP.");
  88. return(false);
  89. }
  90. }
  91. function wizard_new_getPaliReal(inStr){
  92. var paliletter="abcdefghijklmnoprstuvyāīūṅñṭḍṇḷṃ";
  93. var output="";
  94. inStr=inStr.toLowerCase();
  95. inStr = inStr.replace(/ṁ/g,"ṃ");
  96. inStr = inStr.replace(/ŋ/g,"ṃ");
  97. for(x in inStr){
  98. if(paliletter.indexOf(inStr[x])!=-1){
  99. output+=inStr[x];
  100. }
  101. }
  102. return(output);
  103. }
  104. function wizard_fileNewPreview(){
  105. try{
  106. var strData = document.getElementById("txtNewInput").value;
  107. var strPar1=new Array()
  108. strPar0=strData.split("\n");
  109. var strPar=new Array()
  110. for(var i=0;i<strPar0.length;i++){//增加層級信息/t分隔
  111. var Line=strPar0[i].split("\t")
  112. var newLine=new Object()
  113. newLine.lvl=Line[0]
  114. newLine.txt=Line[1]
  115. strPar.push(newLine);
  116. }
  117. var strDataTran1 = document.getElementById("txtNewInputTran1").value;
  118. strDataTran1=strDataTran1.replace(/#br#/g,"&lt;br&gt;");
  119. var strParTran1=strDataTran1.split("\n");
  120. var strDataTran2 = document.getElementById("txtNewInputTran2").value;
  121. strDataTran2=strDataTran2.replace(/#br#/g,"&lt;br&gt;");
  122. var strParTran2=strDataTran2.split("\n");
  123. var strWord;
  124. var x;
  125. var iContentStart=0;
  126. var iWordCount=0;
  127. var bookId = com_guid();
  128. txtXML="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
  129. txtXML+="<set>\n"
  130. txtXML+=" <head>\n"
  131. txtXML+=" <type>pcdsset</type>\n"
  132. txtXML+=" <mode>package</mode>\n"
  133. txtXML+=" <ver>1</ver>\n"
  134. txtXML+=" <toc></toc>\n"
  135. txtXML+=" <style></style>\n"
  136. txtXML+=" </head>\n"
  137. txtXML+=" <dict></dict>\n"
  138. txtXML+=" <body>\n"
  139. var txtHtml;
  140. txtHtml = "<div class='sutta'>";
  141. var tranlanguage1 = document.getElementById("tranlanguage1").value;
  142. var tranlanguage2 = document.getElementById("tranlanguage2").value;
  143. var tranAuthor1 = document.getElementById("tranauthor1").value;
  144. var tranAuthor2 = document.getElementById("tranauthor2").value;
  145. var paliAuthor = document.getElementById("paliauthor").value;
  146. if(document.getElementById("chk_title").checked){
  147. //txtXML += "<block>";
  148. //txtXML += "<info><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level><language>pali</language><author>author</author></info>";
  149. //txtXML += "<data><sen><a></a><text>"+strPar[0]+"</text><sen></data>";
  150. //txtXML += "</block>";
  151. txtXML += "<block>\n";
  152. txtXML += "<info><id>"+com_guid()+"</id><type>heading</type><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level>"
  153. txtXML += "<language>pali</language>\n";
  154. txtXML += "<author>"+paliAuthor+"</author>\n";
  155. txtXML += "</info>\n";
  156. txtXML += "<data><a></a><text>"+strPar[0].txt+"</text></data>\n";
  157. txtXML += "</block>\n";
  158. if(strDataTran1.length>0){
  159. //txtXML += "<block>";
  160. //txtXML += "<info><type>heading</type><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level><language>"+tranlanguage1+"</language><author>"+tranAuthor1+"</author></info>";
  161. //txtXML += "<data><sen><a></a><text>"+strParTran1[0]+"</text><sen></data>";
  162. //txtXML += "</block>";
  163. txtXML += "<block>\n";
  164. txtXML += "<info><id>"+com_guid()+"</id><type>heading</type><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level>"
  165. txtXML += "<language>"+tranlanguage1+"</language>\n";
  166. txtXML += "<author>"+tranAuthor1+"</author>\n";
  167. txtXML += "</info>\n";
  168. txtXML += "<data><a></a><text>"+strParTran1[0]+"</text></data>\n";
  169. txtXML += "</block>\n";
  170. }
  171. if(strDataTran2.length>0){
  172. //txtXML += "<block>";
  173. //txtXML += "<info><type>heading</type><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level><language>"+tranlanguage2+"</language><author>"+tranAuthor2+"</author></info>";
  174. //txtXML += "<data><sen><a></a><text>"+strParTran2[0]+"</text><sen></data>";
  175. //txtXML += "</block>";
  176. txtXML += "<block>\n";
  177. txtXML += "<info><id>"+com_guid()+"</id><type>heading</type><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level>"
  178. txtXML += "<language>"+tranlanguage2+"</language>\n";
  179. txtXML += "<author>"+tranAuthor2+"</author>\n";
  180. txtXML += "</info>\n";
  181. txtXML += "<data><a></a><text>"+strParTran2[0]+"</text></data>\n";
  182. txtXML += "</block>\n";
  183. }
  184. iContentStart=1;
  185. txtHtml = txtHtml + "<div class='sutta_title'>\n";
  186. txtHtml = txtHtml + "<h1>" + strPar[0].txt + "</h1>\n";
  187. if(strDataTran1.length>0){
  188. txtHtml = txtHtml + "<p class='tran_h1_"+tranlanguage1+"' >" + strParTran1[0] + "</p>\n";
  189. }
  190. if(strDataTran2.length>0){
  191. txtHtml = txtHtml + "<p class='tran_h1_"+tranlanguage2+"' >" + strParTran2[0] + "</p>\n";
  192. }
  193. txtHtml = txtHtml + "</div>\n";
  194. }
  195. var parCounter=1;
  196. for (var i=iContentStart;i<strPar.length;i++)
  197. {
  198. if(strPar[i].lvl>0){
  199. txtXML += "<block>\n";
  200. txtXML += "<info><id>"+com_guid()+"</id><type>heading</type><book>"+bookId+"</book><paragraph>"+parCounter+"</paragraph><type>heading</type><level>"+strPar[i].lvl+"</level>"
  201. txtXML += "<language>pali</language>\n";
  202. txtXML += "<author>"+paliAuthor+"</author>\n";
  203. txtXML += "</info>\n";
  204. txtXML += "<data><a></a><text>"+strPar[i].txt+"</text></data>\n";
  205. txtXML += "</block>\n";
  206. txtHtml = txtHtml + "<div class='sutta_title'>\n";
  207. txtHtml = txtHtml + "<h1>" + strPar[i].txt + "</h1>\n";
  208. if(strDataTran1.length>0){
  209. //txtXML += "<block>";
  210. //txtXML += "<info><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level><language>"+tranlanguage1+"</language><author>"+tranAuthor1+"</author></info>";
  211. //txtXML += "<data><sen><a></a><text>"+strParTran1[0]+"</text><sen></data>";
  212. //txtXML += "</block>";
  213. txtXML += "<block>\n";
  214. txtXML += "<info><id>"+com_guid()+"</id><type>heading</type><book>"+bookId+"</book><paragraph>"+parCounter+"</paragraph><type>heading</type><level>"+strPar[i].lvl+"</level>"
  215. txtXML += "<language>"+tranlanguage1+"</language>\n";
  216. txtXML += "<author>"+tranAuthor1+"</author>\n";
  217. txtXML += "</info>\n";
  218. txtXML += "<data><a></a><text>"+strParTran1[i]+"</text></data>\n";
  219. txtXML += "</block>\n";
  220. txtHtml = txtHtml + "<p class='tran_h1_"+tranlanguage1+"' >" + strParTran1[i] + "</p>\n";
  221. }
  222. if(strDataTran2.length>0){
  223. //txtXML += "<block>";
  224. //txtXML += "<info><book>"+bookId+"</book><paragraph>1</paragraph><type>heading</type><level>1</level><language>"+tranlanguage2+"</language><author>"+tranAuthor2+"</author></info>";
  225. //txtXML += "<data><sen><a></a><text>"+strParTran2[0]+"</text><sen></data>";
  226. //txtXML += "</block>";
  227. txtXML += "<block>\n";
  228. txtXML += "<info><id>"+com_guid()+"</id><type>heading</type><book>"+bookId+"</book><paragraph>"+parCounter+"</paragraph><type>heading</type><level>"+strPar[i].lvl+"</level>"
  229. txtXML += "<language>"+tranlanguage2+"</language>\n";
  230. txtXML += "<author>"+tranAuthor2+"</author>\n";
  231. txtXML += "</info>\n";
  232. txtXML += "<data><a></a><text>"+strParTran2[i]+"</text></data>\n";
  233. txtXML += "</block>\n";
  234. txtHtml = txtHtml + "<p class='tran_h1_"+tranlanguage2+"' >" + strParTran2[i] + "</p>\n";
  235. }
  236. txtHtml = txtHtml + "</div>\n";
  237. }
  238. else{
  239. txtHtml = txtHtml + "<div class='sutta_paragraph' >\n";
  240. txtHtml = txtHtml + "<div class='pali_par_mobile'>\n";
  241. txtXML += "<block>\n";
  242. txtXML += "<info><id>"+com_guid()+"</id><book>"+bookId+"</book><paragraph>"+parCounter+"</paragraph><type>wbw</type><language>pali</language><author>author</author></info>";
  243. txtXML += "<data>\n";
  244. strWord = strPar[i].txt.split(" ");
  245. for (var k=0;k<strWord.length;k++){
  246. sPaliWord = strWord[k];
  247. sOrgWord = "?";
  248. sMeanWord = "?";
  249. sCaseWord = "?";
  250. sIdWord = k;
  251. sWordId = iWordCount;/*自动的单词计数器*/
  252. txtXML += "<word><pali>"+sPaliWord+"</pali><real>"+wizard_new_getPaliReal(sPaliWord)+"</real><id>"+sWordId+"</id><mean>?</mean><org>?</org><om>?</om><case>?</case></word>\n";
  253. if(sPaliWord=="#br#"){
  254. txtHtml = txtHtml + "<div class=\"enter\"></div>\n";
  255. }
  256. else{
  257. /*输出Pali单词部分*/
  258. /*长度为1的为标点符号*/
  259. //if(sPaliWord.length<=1)
  260. //{
  261. // txtHtml = txtHtml + "<div id=\"wb"+sWordId+"\" class='word_punc'> ";
  262. // txtHtml = txtHtml + "<p class='pali' name='wPali'> <span name=\"spali\">";
  263. // txtHtml = txtHtml + sPaliWord;
  264. // txtHtml = txtHtml + "</span></p>\n";
  265. //}
  266. //else
  267. {
  268. txtHtml = txtHtml + "<div id=\"wb"+sWordId+"\" class='word'> ";
  269. txtHtml = txtHtml + "<p class='pali' name='wPali'>";
  270. txtHtml = txtHtml +"<a name='w"+sWordId+"' title=\""+sMeanWord+"\" >";
  271. txtHtml = txtHtml + "<span name=\"spali\">"+sPaliWord+"</span>";
  272. txtHtml = txtHtml + "</a></p>\n";
  273. }
  274. /*输出Detail块部分*/
  275. /*设置detail 块可见性。非巴利词不可见*/
  276. txtHtml = txtHtml + "<div id='detail"+sWordId+"' class='bg"+(iWordCount%2)+"'>";
  277. txtHtml = txtHtml + "<span >?</span>"
  278. txtHtml = txtHtml + "</div>";/*detail块结束*/
  279. txtHtml = txtHtml + "</div>\n";/*单词块结束*/
  280. }
  281. iWordCount = iWordCount + 1;
  282. }
  283. txtXML += "</data></block>\n";
  284. txtHtml = txtHtml + "</div>";/*end of pali par*/
  285. txtHtml = txtHtml + "<div class='clr'></div> ";
  286. /*翻译块开始*/
  287. txtHtml = txtHtml + "<div class='tran_par_mobile'>";
  288. if(strDataTran1.length>0){
  289. if(i<strParTran1.length){
  290. var strTranEn = strParTran1[i];
  291. txtHtml = txtHtml + "<p class=tran_par_"+tranlanguage1+">" + strParTran1[i] + "</p>";
  292. txtXML += "<block>\n";
  293. txtXML += "<info><id>"+com_guid()+"</id><book>"+bookId+"</book><paragraph>"+parCounter+"</paragraph><type>translate</type>"
  294. txtXML += "<language>"+tranlanguage1+"</language>\n";
  295. txtXML += "<author>"+document.getElementById("tranauthor1").value+"</author>\n";
  296. txtXML += "</info>\n";
  297. txtXML += "<data><sen><a></a><text>"+strParTran1[i]+"</text></sen></data>\n";
  298. txtXML += "</block>\n";
  299. }
  300. }
  301. if(strDataTran2.length>0){
  302. if(i<strParTran2.length){
  303. var strTranEn = strParTran2[i];
  304. txtHtml = txtHtml + "<p class=tran_par_"+tranlanguage2+">" + strParTran2[i] + "</p>";
  305. txtXML += "<block>\n";
  306. txtXML += "<info><id>"+com_guid()+"</id><book>"+bookId+"</book><paragraph>"+parCounter+"</paragraph><type>translate</type>"
  307. txtXML += "<language>"+tranlanguage2+"</language>\n";
  308. txtXML += "<author>"+document.getElementById("tranauthor2").value+"</author>\n";
  309. txtXML += "</info>\n";
  310. txtXML += "<data><sen><a></a><text>"+strParTran2[i]+"</text></sen></data>\n";
  311. txtXML += "</block>\n";
  312. }
  313. }
  314. txtHtml = txtHtml + "</div>\n";
  315. /*end of translate block*/
  316. txtHtml = txtHtml + "</div>";
  317. /*end of paragraph*/
  318. parCounter++;
  319. }
  320. }
  321. txtHtml = txtHtml + "</div>";
  322. txtXML+=" </body>\n"
  323. txtXML+="</set>\n"
  324. document.getElementById("wizard_sutta_preview").innerHTML = txtHtml;
  325. }
  326. catch(e){
  327. alert(e);
  328. }
  329. }
  330. function wizard_show_input(itemId,liTab){
  331. document.getElementById("new_input_pali").style.display="none";
  332. document.getElementById("new_input_Tran1").style.display="none";
  333. document.getElementById("new_input_Tran2").style.display="none";
  334. document.getElementById("NewFilePali").className = "common-tab_li";
  335. document.getElementById("NewFileTran1").className = "common-tab_li";
  336. document.getElementById("NewFileTran2").className = "common-tab_li";
  337. document.getElementById(itemId).style.display="block";
  338. document.getElementById(liTab).className = "common-tab_li_act";
  339. }
  340. function wizard_palicannon_index_render_c2(strParent,strSelected){
  341. var objC2 = document.getElementById("id_wizard_palicannon_index_c2");
  342. strC1=strParent;
  343. objC2.innerHTML="";
  344. var currStr="";
  345. var list= new Array();
  346. for(index in local_palicannon_index){
  347. if(local_palicannon_index[index].c1==strC1){
  348. pc_pushNewToList(list,local_palicannon_index[index].c2);
  349. }
  350. }
  351. for(index in list){
  352. if(list[index]==strSelected){
  353. var cssItem="pali_book_item selected";
  354. }
  355. else{
  356. var cssItem="pali_book_item";
  357. }
  358. objC2.innerHTML+="<div class=\""+cssItem+"\" onclick=\"wizard_palicannon_index_changed_c2('"+strC1+"','"+list[index]+"')\">"+list[index]+"</div>";
  359. }
  360. objC2.style.display="block";
  361. }
  362. function wizard_palicannon_index_changed_c2(strParent,value){
  363. wizard_palicannon_heading_div_cls(1);
  364. wizard_palicannon_palitext_div_cls();
  365. //渲染自己 增加选择状态显示
  366. wizard_palicannon_index_render_c2(strParent,value);
  367. //渲染c3
  368. wizard_palicannon_index_render_c3(value,"");
  369. }
  370. function wizard_palicannon_index_render_c3(strParent,strSelected){
  371. var objC3 = document.getElementById("id_wizard_palicannon_index_c3");
  372. strC2=strParent;
  373. objC3.innerHTML="";
  374. var currStr="";
  375. var list= new Array();
  376. for(index in local_palicannon_index){
  377. if(local_palicannon_index[index].c1==strC1 && local_palicannon_index[index].c2==strC2){
  378. if(local_palicannon_index[index].c3!=""){
  379. pc_pushNewToList(list,local_palicannon_index[index].c3);
  380. }
  381. }
  382. }
  383. if(list.length==0){
  384. wizard_palicannon_index_render_book(2,strParent,"");
  385. }
  386. else{
  387. for(index in list){
  388. if(list[index]==strSelected){
  389. var cssItem="pali_book_item selected";
  390. }
  391. else{
  392. var cssItem="pali_book_item";
  393. }
  394. objC3.innerHTML+="<div class=\""+cssItem+"\" onclick=\"wizard_palicannon_index_changed_c3('"+strC2+"','"+list[index]+"')\">"+list[index]+"</div>";
  395. }
  396. objC3.style.display="block";
  397. }
  398. }
  399. function wizard_palicannon_index_changed_c3(strParent,value){
  400. wizard_palicannon_heading_div_cls(1);
  401. wizard_palicannon_palitext_div_cls();
  402. //渲染自己 增加选择状态显示
  403. wizard_palicannon_index_render_c3(strParent,value);
  404. var objC4 = document.getElementById("id_wizard_palicannon_index_c4");
  405. strC3=value;
  406. objC4.innerHTML="";
  407. var currStr="";
  408. var list= new Array();
  409. for(index in local_palicannon_index){
  410. if(local_palicannon_index[index].c1==strC1 && local_palicannon_index[index].c2==strC2 && local_palicannon_index[index].c3==strC3){
  411. if(local_palicannon_index[index].c4!=""){
  412. pc_pushNewToList(list,local_palicannon_index[index].c4);
  413. }
  414. }
  415. }
  416. if(list.length==0){
  417. wizard_palicannon_index_render_book(3,value,"");
  418. }
  419. else{
  420. for(index in list){
  421. objC4.innerHTML+="<div class=\"pali_book_item\" onclick=\"wizard_palicannon_index_changed_book('"+list[index]+"')\">"+list[index]+"</div>";
  422. }
  423. }
  424. }
  425. function wizard_palicannon_palitext_div_cls(){
  426. //document.getElementById("wizard_palicannon_par_select_toc").innerHTML="";
  427. //document.getElementById("wizard_palicannon_par_select_text_body").innerHTML="";
  428. //document.getElementById("wizard_palicannon_par_select_text_head").style.display="none";
  429. }
  430. //当改变当前标题时 更新资源列表
  431. function wizard_palicannon_updata_res_info(base=-1){
  432. if(base==-1){
  433. var strTitle = "《"+gCurrBookTitle+"》";
  434. var iParNo = -1;
  435. }
  436. else{
  437. var strTitle = gTocList[base].title;
  438. var iParNo = gTocList[base].parNum;
  439. }
  440. document.getElementById("wizard_palicannon_par_select_text_head_bookname1").innerHTML=strTitle;
  441. document.getElementById("wizard_palicannon_par_select_text_head_res").innerHTML=wizard_palicannon_render_res_list_onepart(base,1);
  442. }
  443. //当改变当前标题时 隐藏不需要显示的巴利文本
  444. function wizard_palicannon_updata_pali_text(base=-1){
  445. if(base==-1){
  446. for(i in gTocList){
  447. parObj=document.getElementById("wizard_pali_par_"+gTocList[i].parNum);
  448. if(parObj){
  449. parObj.style.display="block";
  450. }
  451. }
  452. }
  453. else{
  454. iBegin=base;
  455. iEnd=wizard_palicannon_get_par_end_index(iBegin);
  456. for(var i=0;i<iBegin;i++){
  457. document.getElementById("wizard_pali_par_"+gTocList[i].parNum).style.display="none";
  458. }
  459. for(var i=iBegin;i<=iEnd;i++){
  460. document.getElementById("wizard_pali_par_"+gTocList[i].parNum).style.display="block";
  461. }
  462. if(iEnd<gTocList.length-1){
  463. for(var i=iEnd+1;i<gTocList.length;i++){
  464. document.getElementById("wizard_pali_par_"+gTocList[i].parNum).style.display="none";
  465. }
  466. }
  467. }
  468. }
  469. //当段落没有勾选时变成灰色
  470. function wizard_palicannon_updata_pali_par_text_enable(parNum,enable){
  471. if(document.getElementById("wizard_pali_par_"+parNum)){
  472. if(enable){
  473. document.getElementById("wizard_pali_par_text_"+parNum).style.color="#000";
  474. }
  475. else{
  476. document.getElementById("wizard_pali_par_text_"+parNum).style.color="#d6d6d6";
  477. }
  478. }
  479. }
  480. //从服务器获取书的目录
  481. var wizard_palicannon_xmlhttp;
  482. function wizard_palicannon_show_filelist(strBook){
  483. if (window.XMLHttpRequest)
  484. {// code for IE7+, Firefox, Chrome, Opera, Safari
  485. wizard_palicannon_xmlhttp=new XMLHttpRequest();
  486. }
  487. else
  488. {// code for IE6, IE5
  489. wizard_palicannon_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  490. }
  491. gCurrSelectedBook=strBook;
  492. var d=new Date();
  493. wizard_palicannon_xmlhttp.onreadystatechange=wizard_palicannon_serverResponse;
  494. wizard_palicannon_xmlhttp.open("GET","pc_get_book_index.php?t="+d.getTime()+"&book="+strBook,true);
  495. wizard_palicannon_xmlhttp.send();
  496. }
  497. function wizard_palicannon_serverResponse(){
  498. if (wizard_palicannon_xmlhttp.readyState==4)// 4 = "loaded"
  499. {
  500. if (wizard_palicannon_xmlhttp.status==200)
  501. {// 200 = "OK"
  502. var parList="";
  503. var xmlText = wizard_palicannon_xmlhttp.responseText;
  504. if (window.DOMParser)
  505. {
  506. parser=new DOMParser();
  507. xmlBookIndex=parser.parseFromString(xmlText,"text/xml");
  508. }
  509. else // Internet Explorer
  510. {
  511. xmlBookIndex=new ActiveXObject("Microsoft.XMLDOM");
  512. xmlBookIndex.async="false";
  513. xmlBookIndex.loadXML(xmlText);
  514. }
  515. if (xmlBookIndex == null){
  516. alert("error:can not load book index.");
  517. return;
  518. }
  519. //get book TOC array
  520. gXmlParIndex = xmlBookIndex.getElementsByTagName("paragraph");
  521. gTocList=new Array();
  522. for(var iPar=0;iPar<gXmlParIndex.length;iPar++){
  523. tocItem=new Object();
  524. tocItem.book=getNodeText(gXmlParIndex[iPar],"book");
  525. tocItem.parNum=getNodeText(gXmlParIndex[iPar],"par");
  526. tocItem.level=getNodeText(gXmlParIndex[iPar],"level");
  527. tocItem.type=getNodeText(gXmlParIndex[iPar],"class");
  528. tocItem.title=getNodeText(gXmlParIndex[iPar],"title");
  529. tocItem.author=getNodeText(gXmlParIndex[iPar],"author");
  530. tocItem.language=getNodeText(gXmlParIndex[iPar],"language");
  531. tocItem.edition=getNodeText(gXmlParIndex[iPar],"edition");
  532. tocItem.subver=getNodeText(gXmlParIndex[iPar],"subver");
  533. tocItem.enable=true;
  534. tocItem.visible=true;
  535. gTocList.push(tocItem);
  536. }
  537. //目录数组创建结束
  538. book_res_win_close();//关闭资源小窗口
  539. gResList=new Array();
  540. document.getElementById('wizard_palicannon_par_select_toc').innerHTML=wizard_palicannon_renderBookToc();
  541. //wizard_palicannon_pali_text_query(gCurrSelectedBook);
  542. //wizard_palicannon_add_res_wbw_templet();
  543. //wizard_palicannon_add_res_toc_templet();
  544. wizard_get_toc_from_res();
  545. //removeNavTreeButton();
  546. wizard_palicannon_heading_change();
  547. }
  548. else
  549. {
  550. document.getElementById('id_wizard_palicannon_index_filelist')="Problem retrieving data:" + xmlhttp.statusText;
  551. }
  552. }
  553. }
  554. //添加模板资源到资源列表
  555. function wizard_palicannon_add_res_wbw_templet(){
  556. for(var iPar=0;iPar<gXmlParIndex.length;iPar++){
  557. parHeadingLevel=getNodeText(gXmlParIndex[iPar],"level");
  558. parNum=getNodeText(gXmlParIndex[iPar],"par");
  559. if(parHeadingLevel>0){
  560. var newItem=new Object();
  561. newItem.type="wbw";
  562. newItem.book=getNodeText(gXmlParIndex[iPar],"book");
  563. newItem.parNum=getNodeText(gXmlParIndex[iPar],"par");
  564. newItem.parEnd=wizard_palicannon_get_par_end(newItem.parNum);
  565. newItem.parCurrLoading=newItem.parNum;
  566. newItem.author="templet";
  567. newItem.editor="templet";
  568. newItem.revision="";
  569. newItem.language="com";
  570. newItem.edition="1";
  571. newItem.subver="0";
  572. newItem.title=getNodeText(gXmlParIndex[iPar],"title");
  573. gResList.push(newItem);
  574. }
  575. }
  576. }
  577. //添加模板资源到资源列表
  578. function wizard_palicannon_add_res_toc_templet(){
  579. for(var iPar=0;iPar<gXmlParIndex.length;iPar++){
  580. parHeadingLevel=getNodeText(gXmlParIndex[iPar],"level");
  581. parNum=getNodeText(gXmlParIndex[iPar],"par");
  582. if(parHeadingLevel>0){
  583. var newItem=new Object();
  584. newItem.type="heading";
  585. newItem.book=getNodeText(gXmlParIndex[iPar],"book");
  586. newItem.parNum=getNodeText(gXmlParIndex[iPar],"par");
  587. newItem.parEnd=wizard_palicannon_get_par_end(newItem.parNum);
  588. newItem.parCurrLoading=newItem.parNum;
  589. newItem.author="templet";
  590. newItem.editor="templet";
  591. newItem.revision="";
  592. newItem.language="pali";
  593. newItem.edition="1";
  594. newItem.subver="0";
  595. newItem.title=getNodeText(gXmlParIndex[iPar],"title");
  596. gResList.push(newItem);
  597. }
  598. }
  599. }
  600. function wizard_palicannon_nav_level_change(obj){
  601. var iLevle=obj.value;
  602. iLevle++;
  603. wizard_palicannon_nav_level_show(iLevle-1);
  604. }
  605. //渲染书的目录
  606. function wizard_palicannon_renderBookToc(root=-1){
  607. /*
  608. gTocCurrRoot = root;
  609. var output="";
  610. var tocBegin=-1;
  611. var tocEnd=-1;
  612. var beginLevel=1;
  613. if(root==-1){
  614. tocBegin=0;
  615. tocEnd=gTocList.length-1;
  616. }
  617. else{
  618. tocBegin=root;
  619. tocEnd = wizard_palicannon_get_par_end_index(tocBegin);
  620. beginLevel=gTocList[tocBegin].level;
  621. }
  622. //目录上面的层级显示选项
  623. output+="<select onchange=\"wizard_palicannon_nav_level_change(this)\">";
  624. for(var iSelect=beginLevel;iSelect<8;iSelect++){
  625. output += "<option value=\""+iSelect+"\">"+local_gui.level+iSelect+"</option>";
  626. }
  627. output += "<option selected value=\""+8+"\">"+local_gui.level+8+"</option>";
  628. output += "</select>";
  629. //目录上面的语言显示选项
  630. output+="<select onchange=\"wizard_palicannon_nav_language_change(this)\">";
  631. for(var iLanguage=0;iLanguage<gTocLanguage.length;iLanguage++){
  632. if(gTocLanguage[iLanguage]==gTocCurrLanguage){
  633. var isSelect="selected";
  634. }
  635. else{
  636. var isSelect="";
  637. }
  638. output += "<option "+isSelect+" value=\""+gTocLanguage[iLanguage]+"\">"+gTocLanguage[iLanguage]+"</option>";
  639. }
  640. output += "</select>";
  641. //开始生成目录代码
  642. output += "<ul>";
  643. for(var iPar=tocBegin;iPar<=tocEnd;iPar++){
  644. parTitle=gTocList[iPar].title;
  645. parHeadingLevel=gTocList[iPar].level;
  646. parNum=gTocList[iPar].parNum;
  647. if(parTitle==""){
  648. parTitle=parNum;
  649. }
  650. if(parHeadingLevel>=0){
  651. output +="<li class=\"palicannon_nav_level_" + parHeadingLevel + "\" id=\"id_pc_nav_par_"+iPar+"\">";
  652. if(parHeadingLevel>0){
  653. output += "<span id=\"id_pc_nav_ex_"+iPar+"\" class=\"tree_expand_"+parHeadingLevel+"\" onclick=\"tree_co("+iPar+")\">▼</span>"
  654. output += "<span id=\"id_pc_nav_co_"+iPar+"\" class=\"tree_collapse_"+parHeadingLevel+"\" onclick=\"tree_expand("+iPar+")\">▶</span>";
  655. }
  656. //勾选段落有效性 Index
  657. output += "<input id='toc_par_enable_"+iPar+"' onclick='wizard_toc_par_enable(this,"+iPar+")' type=\"checkbox\" checked/>";
  658. if(parHeadingLevel>0){
  659. newTitle=wizard_ger_toc_title(iPar,gTocCurrLanguage);
  660. if(newTitle!=null){
  661. parTitle=newTitle;
  662. }
  663. }
  664. tocLink = "<a href=\"#pali_text_par_"+parNum+"\" class=\"palicannon_nav_item\">" + parTitle +"</a>";
  665. if(parHeadingLevel>0){
  666. output +="<span class=\"tooltip_menu\">"+tocLink+"<span class=\"tooltiptext tooltip_menu-bottom\"><a onclick=\"palicannon_par_toc_reset_root("+iPar+")\">进入</a><a onclick=\"palicannon_par_res_show_window("+iPar+")\">详情</a></span></span> ";
  667. }
  668. else{
  669. output +=tocLink;
  670. }
  671. output +="</li>";
  672. }
  673. }
  674. output+="</ul>";
  675. return output;
  676. */
  677. }
  678. //目录语言选择
  679. function pc_res_toc_language_change(obj){
  680. }
  681. function add_res_to_doc(resType,parNum){
  682. var iStartPar=0
  683. var iStartLevel=0
  684. for(var iPar=0;iPar<gXmlParIndex.length;iPar++){
  685. currParNum=getNodeText(gXmlParIndex[iPar],"par");
  686. if(currParNum==parNum){
  687. iStartPar=iPar;
  688. iStartLevel=getNodeText(gXmlParIndex[iPar],"level");
  689. break;
  690. }
  691. }
  692. for(var iPar=iStartPar+1;iPar<gXmlParIndex.length;iPar++){
  693. parLevel=getNodeText(gXmlParIndex[iPar],"level");
  694. if(parLevel>0){
  695. if(parLevel <= iStartLevel){
  696. iEndPar=getNodeText(gXmlParIndex[iPar],"par")
  697. palicannon_loadStream(gCurrSelectedBook,parNum,iEndPar)
  698. return;
  699. }
  700. }
  701. }
  702. }
  703. function tree_co(pid){
  704. currLevel=getNodeText(gXmlParIndex[pid],"level");
  705. document.getElementById("id_pc_nav_ex_"+pid).style.display="none"
  706. document.getElementById("id_pc_nav_co_"+pid).style.display="inline"
  707. for(var iPar=pid+1;iPar<gXmlParIndex.length;iPar++){
  708. parHeadingLevel=getNodeText(gXmlParIndex[iPar],"level");
  709. if(parHeadingLevel>0){
  710. if(parHeadingLevel > currLevel){
  711. document.getElementById("id_pc_nav_par_"+iPar).style.display="none"
  712. }
  713. else{
  714. return;
  715. }
  716. }
  717. else{
  718. document.getElementById("id_pc_nav_par_"+iPar).style.display="none"
  719. }
  720. }
  721. }
  722. function tree_expand(pid){
  723. currLevel=getNodeText(gXmlParIndex[pid],"level");
  724. document.getElementById("id_pc_nav_ex_"+pid).style.display="inline"
  725. document.getElementById("id_pc_nav_co_"+pid).style.display="none"
  726. for(var iPar=pid+1;iPar<gXmlParIndex.length;iPar++){
  727. parHeadingLevel=getNodeText(gXmlParIndex[iPar],"level");
  728. if(parHeadingLevel>0){
  729. if(parHeadingLevel > currLevel){
  730. document.getElementById("id_pc_nav_par_"+iPar).style.display="block"
  731. }
  732. else{
  733. return;
  734. }
  735. }
  736. else{
  737. document.getElementById("id_pc_nav_par_"+iPar).style.display="block"
  738. }
  739. }
  740. }
  741. //获取pali原文
  742. var wizard_palicannon_pali_text_xmlhttp;
  743. function wizard_palicannon_pali_text_query(bookId){
  744. if (window.XMLHttpRequest)
  745. {// code for IE7+, Firefox, Chrome, Opera, Safari
  746. wizard_palicannon_pali_text_xmlhttp=new XMLHttpRequest();
  747. }
  748. else
  749. {// code for IE6, IE5
  750. wizard_palicannon_pali_text_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  751. }
  752. var d=new Date();
  753. wizard_palicannon_pali_text_xmlhttp.onreadystatechange=wizard_palicannon_pali_text_serverResponse;
  754. wizard_palicannon_pali_text_xmlhttp.open("GET","pc_get_pali_text.php?t="+d.getTime()+"&book="+bookId,true);
  755. wizard_palicannon_pali_text_xmlhttp.send();
  756. }
  757. function wizard_palicannon_pali_text_serverResponse(){
  758. if (wizard_palicannon_pali_text_xmlhttp.readyState==4)// 4 = "loaded"
  759. {
  760. if (wizard_palicannon_pali_text_xmlhttp.status==200)
  761. {// 200 = "OK"
  762. var xmlText = wizard_palicannon_pali_text_xmlhttp.responseText;
  763. document.getElementById('wizard_palicannon_par_select_text_body').innerHTML=xmlText;
  764. document.getElementById('wizard_palicannon_par_select_text_head').style.display="block";
  765. //在获取pali原文后 查询资源列表
  766. wizard_palicannon_get_res_list();
  767. }
  768. else
  769. {
  770. document.getElementById('wizard_palicannon_par_select_text_body').innerHTML="Problem retrieving data:" + wizard_palicannon_pali_text_xmlhttp.statusText;
  771. }
  772. }
  773. }
  774. //get res list from database
  775. function wizard_palicannon_get_res_list(){
  776. gCurrQueryResType=0;
  777. wizard_palicannon_res_list_query(gResTypeList[gCurrQueryResType],gCurrSelectedBook);
  778. }
  779. //从服务器获取资源列表
  780. var wizard_palicannon_res_xmlhttp;
  781. function wizard_palicannon_res_list_query(resType,bookId){
  782. if (window.XMLHttpRequest)
  783. {// code for IE7+, Firefox, Chrome, Opera, Safari
  784. wizard_palicannon_res_xmlhttp=new XMLHttpRequest();
  785. }
  786. else
  787. {// code for IE6, IE5
  788. wizard_palicannon_res_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  789. }
  790. var d=new Date();
  791. var parList=wizard_palicannon_get_par_list();
  792. wizard_palicannon_res_xmlhttp.onreadystatechange=wizard_palicannon_res_serverResponse;
  793. wizard_palicannon_res_xmlhttp.open("GET","pc_get_res_list.php?t="+d.getTime()+"&book="+bookId+"&res_type="+resType+"&par_list="+parList,true);
  794. wizard_palicannon_res_xmlhttp.send();
  795. }
  796. //收到资源列表
  797. function wizard_palicannon_res_serverResponse(){
  798. if (wizard_palicannon_res_xmlhttp.readyState==4)// 4 = "loaded"
  799. {
  800. if (wizard_palicannon_res_xmlhttp.status==200)
  801. {// 200 = "OK"
  802. var parList="";
  803. var xmlText = wizard_palicannon_res_xmlhttp.responseText;
  804. if (window.DOMParser)
  805. {
  806. parser=new DOMParser();
  807. xmlBookRes=parser.parseFromString(xmlText,"text/xml");
  808. }
  809. else // Internet Explorer
  810. {
  811. xmlBookRes=new ActiveXObject("Microsoft.XMLDOM");
  812. xmlBookRes.async="false";
  813. xmlBookRes.loadXML(xmlText);
  814. }
  815. if (xmlBookRes == null){
  816. alert("error:can not load book res.");
  817. return;
  818. }
  819. gXmlResList = xmlBookRes.getElementsByTagName("res");
  820. add_new_res_list(gXmlResList);
  821. //如果还有等待加载的资源 继续加载
  822. if(gCurrQueryResType<gResTypeList.length-1){
  823. gCurrQueryResType++;
  824. wizard_palicannon_res_list_query(gResTypeList[gCurrQueryResType],gCurrSelectedBook);
  825. }
  826. else{
  827. //如果没有了 显示资源列表
  828. //wizard_palicannon_render_res_list();
  829. wizard_get_toc_from_res();
  830. document.getElementById('wizard_palicannon_par_select_toc').innerHTML=wizard_palicannon_renderBookToc(gTocCurrRoot);
  831. }
  832. }
  833. else
  834. {
  835. document.getElementById('id_wizard_palicannon_index_filelist')="Problem retrieving data:" + xmlhttp.statusText;
  836. }
  837. }
  838. }
  839. //添加新的资源 到 内存数组
  840. function add_new_res_list(xNewList){
  841. for(var iItem=0;iItem<xNewList.length;iItem++){
  842. var newItem=new Object();
  843. newItem.type=getNodeText(xNewList[iItem],"type");
  844. newItem.book=getNodeText(xNewList[iItem],"book");
  845. newItem.parNum=getNodeText(xNewList[iItem],"par");
  846. newItem.parEnd=wizard_palicannon_get_par_end(newItem.parNum);
  847. newItem.parCurrLoading=newItem.parNum;
  848. newItem.author=getNodeText(xNewList[iItem],"author");
  849. newItem.editor=getNodeText(xNewList[iItem],"editor");
  850. newItem.revision=getNodeText(xNewList[iItem],"revision");
  851. newItem.language=getNodeText(xNewList[iItem],"language");
  852. newItem.edition=getNodeText(xNewList[iItem],"edition");
  853. newItem.subver=getNodeText(xNewList[iItem],"subver");
  854. newItem.text=getNodeText(xNewList[iItem],"text");
  855. newItem.title=getNodeText(xNewList[iItem],"text");
  856. gResList.push(newItem);
  857. }
  858. }
  859. function wizard_palicannon_get_par_list(){
  860. var output="";
  861. for(var iPar=0;iPar<gXmlParIndex.length;iPar++){
  862. parTitle=getNodeText(gXmlParIndex[iPar],"title");
  863. parHeadingLevel=getNodeText(gXmlParIndex[iPar],"level");
  864. parNum=getNodeText(gXmlParIndex[iPar],"par");
  865. if(parHeadingLevel>0){
  866. output+=parNum+","
  867. }
  868. }
  869. return(output.slice(0,-1))
  870. }
  871. //获取段落终止点
  872. //输入:索引
  873. //输出:索引
  874. function wizard_palicannon_get_par_end_index(beginIndex){
  875. var iStartPar=0
  876. var iStartLevel=0
  877. if(beginIndex==-1){
  878. return(gTocList.length-1);
  879. }
  880. if(gTocList[beginIndex].level==0){
  881. return(beginIndex);
  882. }
  883. for(var iPar=beginIndex+1;iPar<gTocList.length;iPar++){
  884. parLevel=gTocList[iPar].level;
  885. if(parLevel>0){
  886. if(parLevel <= gTocList[beginIndex].level){
  887. return(iPar-1);
  888. }
  889. }
  890. }
  891. //没找到 返回数组最后一个索引号
  892. return(gTocList.length-1);
  893. }
  894. function wizard_palicannon_get_par_end(beginParNum){
  895. var iStartPar=0
  896. var iStartLevel=0
  897. for(var iPar=0;iPar<gTocList.length;iPar++){
  898. currParNum=gTocList[iPar].parNum;
  899. if(currParNum==beginParNum){
  900. iStartPar=iPar;
  901. break;
  902. }
  903. }
  904. var iEnd = wizard_palicannon_get_par_end_index(iStartPar);
  905. /*
  906. for(var iPar=iStartPar+1;iPar<gXmlParIndex.length;iPar++){
  907. parLevel=getNodeText(gXmlParIndex[iPar],"level");
  908. if(parLevel>0){
  909. if(parLevel <= iStartLevel){
  910. //iEndPar=getNodeText(gXmlParIndex[iPar],"par")
  911. return(iPar-1);
  912. }
  913. }
  914. }
  915. return(gXmlParIndex.length-1);
  916. */
  917. return(gTocList[iEnd].parNum);
  918. }
  919. function book_res_edit_now(resWin){
  920. var resNum = book_res_add_to_list(resWin);
  921. if(resNum>0){
  922. open_editor_load_stream();
  923. }
  924. }
  925. //加入到下载列表
  926. //resWin=1 主列表 resWin=2 浮动列表
  927. function book_res_add_to_list(resWin){
  928. var iCounter=0;
  929. switch(resWin){
  930. case 1:
  931. currList=gCurrResListArray;
  932. break;
  933. case 2: //for float windows
  934. currList=gCurrResListArray2;
  935. break;
  936. default:
  937. return;
  938. }
  939. if(currList){
  940. for(i in currList){
  941. if(currList[i].enable){
  942. pc_res_add_to_download_list(currList[i].res);
  943. iCounter++;
  944. }
  945. }
  946. }
  947. return(iCounter);
  948. }
  949. //勾选资源项目
  950. //resWin=1 主列表 resWin=2 浮动列表
  951. function setResEnable(obj,index,resWin){
  952. switch(resWin){
  953. case 1:
  954. gCurrResListArray[index].enable=obj.checked;
  955. break;
  956. case 2: //for float windows
  957. gCurrResListArray2[index].enable=obj.checked;
  958. break;
  959. default:
  960. return;
  961. }
  962. }
  963. //添加新的资源到下载列表
  964. function pc_res_add_to_download_list(resIndex){
  965. set_pali_loader_visible(true);
  966. var resDownloadItem=new Object();
  967. resDownloadItem.resIndex=resIndex;
  968. resDownloadItem.res=gResList[resIndex].type;
  969. resDownloadItem.book=gResList[resIndex].book;
  970. resDownloadItem.parNum=gResList[resIndex].parNum;
  971. resDownloadItem.parEnd = gResList[resIndex].parEnd;
  972. resDownloadItem.author=gResList[resIndex].author;
  973. resDownloadItem.editor=gResList[resIndex].editor;
  974. resDownloadItem.revision=gResList[resIndex].revision;
  975. resDownloadItem.language=gResList[resIndex].language;
  976. resDownloadItem.edition=gResList[resIndex].edition;
  977. resDownloadItem.subver=gResList[resIndex].subver;
  978. resDownloadItem.title=gResList[resIndex].title;
  979. var strParList="";
  980. var firstIndex=-1;
  981. var endIndex=-1
  982. for(var iPar=0;iPar<gTocList.length;iPar++){
  983. if(resDownloadItem.parNum==gTocList[iPar].parNum){
  984. firstIndex=iPar;
  985. break;
  986. }
  987. }
  988. for(var iPar=firstIndex;iPar<gTocList.length;iPar++){
  989. if(resDownloadItem.parEnd==gTocList[iPar].parNum){
  990. endIndex=iPar;
  991. break;
  992. }
  993. }
  994. if(firstIndex==-1){
  995. return;
  996. }
  997. if(endIndex==-1){
  998. return;
  999. }
  1000. for(var iPar=firstIndex;iPar<=endIndex;iPar++){
  1001. if(gTocList[iPar].enable){
  1002. strParList+=gTocList[iPar].parNum;
  1003. if(iPar<endIndex){
  1004. strParList+=",";
  1005. }
  1006. }
  1007. }
  1008. resDownloadItem.parlist=strParList;
  1009. //查询是否有重复
  1010. var isInList=false;
  1011. for(i in gResDownloadList){
  1012. if(gResDownloadList[i].resIndex==resIndex){
  1013. isInList = true;
  1014. break;
  1015. }
  1016. }
  1017. //无重复 加载
  1018. if(!isInList){
  1019. gResDownloadList.push(resDownloadItem);
  1020. pc_res_updata_download_list();
  1021. //add_pc_res_download_list_to_cookie();
  1022. }
  1023. }
  1024. function remove_pc_res_download_list_cookie(){
  1025. gDownloadListString="";
  1026. setCookie("loadlist","","1");
  1027. }
  1028. function add_pc_res_download_list_to_cookie(){
  1029. var cookieString = "{\"loadlist\": [";
  1030. for(i in gResDownloadList){
  1031. cookieString +="{";
  1032. cookieString +="\"resIndex\":\""+gResDownloadList[i].resIndex+"\" ,";
  1033. cookieString +="\"res\":\""+gResDownloadList[i].res+"\" ,";
  1034. cookieString +="\"book\":\""+gResDownloadList[i].book+"\" ,";
  1035. cookieString +="\"parNum\":\""+gResDownloadList[i].parNum+"\" ,";
  1036. cookieString +="\"parEnd\":\""+gResDownloadList[i].parEnd+"\" ,";
  1037. cookieString +="\"author\":\""+gResDownloadList[i].author+"\" ,";
  1038. cookieString +="\"editor\":\""+gResDownloadList[i].editor+"\" ,";
  1039. cookieString +="\"revision\":\""+gResDownloadList[i].revision+"\" ,";
  1040. cookieString +="\"language\":\""+gResDownloadList[i].language+"\" ,";
  1041. cookieString +="\"edition\":\""+gResDownloadList[i].edition+"\" ,";
  1042. cookieString +="\"subver\":\""+gResDownloadList[i].subver+"\" ,";
  1043. cookieString +="\"parlist\":\""+gResDownloadList[i].parlist+"\" ,";
  1044. cookieString +="\"title\":\""+gResDownloadList[i].title+"\"";
  1045. cookieString +="}";
  1046. if(i<gResDownloadList.length-1){
  1047. cookieString +=",";
  1048. }
  1049. }
  1050. cookieString +="]}";
  1051. gDownloadListString=cookieString;
  1052. setCookie("loadlist",cookieString,"1");
  1053. }
  1054. function get_pc_res_download_list_from_cookie(){
  1055. var resListString=getCookie("loadlist");
  1056. objCookieLoadList = JSON.parse(resListString);
  1057. debugOutput(resListString);
  1058. gResDownloadList = new Array();
  1059. for(i in objCookieLoadList.loadlist){
  1060. gResDownloadList.push(objCookieLoadList.loadlist[i]);
  1061. }
  1062. pc_res_updata_download_list();
  1063. }
  1064. function get_pc_res_download_list_from_string(strDownload){
  1065. objCookieLoadList = JSON.parse(strDownload);
  1066. //debugOutput(resListString);
  1067. gResDownloadList = new Array();
  1068. for(i in objCookieLoadList.loadlist){
  1069. gResDownloadList.push(objCookieLoadList.loadlist[i]);
  1070. }
  1071. pc_res_updata_download_list();
  1072. }
  1073. //显示资源预览
  1074. function pc_res_preview(resIndex){
  1075. res=gResList[resIndex].type;
  1076. book=gResList[resIndex].book;
  1077. thisParNum=gResList[resIndex].parNum;
  1078. thisParEnd = gResList[resIndex].parEnd;
  1079. author=gResList[resIndex].author;
  1080. editor=gResList[resIndex].editor;
  1081. revision=gResList[resIndex].revision;
  1082. language=gResList[resIndex].language;
  1083. edition=gResList[resIndex].edition;
  1084. subver=gResList[resIndex].subver;
  1085. var link="pc_get_res_preview.php?res_type="+res+"&book="+book+"&begin="+thisParNum+"&end="+thisParEnd+"&author="+author+"&editor="+editor+"&revision="+revision+"&language="+language+"&edition="+edition+"&subver="+subver;
  1086. return(link);
  1087. }
  1088. //删除加载列表中的一项
  1089. function pc_resListRemove(indexDelete){
  1090. gResDownloadList.splice(indexDelete,1);
  1091. pc_res_updata_download_list()
  1092. }
  1093. //清空购物车
  1094. function pc_empty_download_list(){
  1095. gResDownloadList=new Array();
  1096. pc_res_updata_download_list();
  1097. //remove_pc_res_download_list_cookie();
  1098. }
  1099. function pc_resListMove(moveFrom,moveTo){
  1100. if(moveTo<0){
  1101. moveTo=0;
  1102. }
  1103. if(moveFrom==moveTo){
  1104. return;
  1105. }
  1106. var temp=gResDownloadList[moveTo];
  1107. gResDownloadList[moveTo]=gResDownloadList[moveFrom];
  1108. for(i=moveFrom-1;i>moveTo;i--){
  1109. gResDownloadList[i+1]=gResDownloadList[i];
  1110. }
  1111. gResDownloadList[moveTo+1]=temp;
  1112. pc_res_updata_download_list()
  1113. }
  1114. function getBookTitleById(bookId){
  1115. for(index in local_palicannon_index){
  1116. if(local_palicannon_index[index].id==bookId){
  1117. return(local_palicannon_index[index].title)
  1118. }
  1119. }
  1120. return("");
  1121. }
  1122. function pc_res_updata_download_list(){
  1123. var resListString=""
  1124. for(var iRes=0;iRes<gResDownloadList.length;iRes++){
  1125. res=gResDownloadList[iRes].res;
  1126. book=gResDownloadList[iRes].book;
  1127. parNum=gResDownloadList[iRes].parNum;
  1128. parEnd=gResDownloadList[iRes].parEnd;
  1129. author=gResDownloadList[iRes].author;
  1130. editor=gResDownloadList[iRes].editor;
  1131. revision=gResDownloadList[iRes].revision;
  1132. language=gResDownloadList[iRes].language;
  1133. edition=gResDownloadList[iRes].edition;
  1134. subver=gResDownloadList[iRes].subver;
  1135. title=gResDownloadList[iRes].title;
  1136. parCount=parEnd-parNum+1
  1137. resListString+="<div class=\"res_item\">"
  1138. resListString+=" <table>"
  1139. resListString+=" <tr>"
  1140. resListString+=" <td class=\"tool_bar\">"
  1141. resListString+=" <p class=\"res_button\" onclick=\"pc_resListMove("+iRes+","+(iRes-1)+")\">▲</p>"
  1142. resListString+=" <p class=\"res_type\" >W</p>"
  1143. resListString+=" <p class=\"res_button\" onclick=\"pc_resListRemove("+iRes+")\">×</p>"
  1144. resListString+=" </td>"
  1145. resListString+=" <td class=\"res_info\" >"
  1146. resListString+=" <div class=\"res_info_1\"><span class=\"book_name\">"+gCurrBookType+"-《"+getBookTitleById(book)+"》</span><br/><span class=\"chapter\">"+title+"|</span><span class=\"author\">"+local_gui.translate1+author+"</span></div>"
  1147. resListString+=" <div class=\"res_info_2\">|"+local_gui.language+language+"|"+local_gui.totally+parCount+local_gui.para+"|"+local_gui.edit1+editor+"|"+local_gui.revision+revision+"|"+local_gui.edition+edition+"|</div>"
  1148. resListString+=" </td>"
  1149. resListString+=" </tr>"
  1150. resListString+=" </table>"
  1151. resListString+="<canvas class=\"res_load_progress_canvas\" id=\"book_res_load_progress_canvas_"+iRes+"\" width='300' height='5'></canvas>"
  1152. resListString+="</div>"
  1153. }
  1154. document.getElementById("pc_res_list_div").innerHTML=resListString;
  1155. add_pc_res_download_list_to_cookie();
  1156. if(gResDownloadList && gResDownloadList.length>0){
  1157. if(obj=document.getElementById("id_open_editor_load_stream")){obj.disabled=false;}
  1158. if(obj=document.getElementById("id_append_stream")){obj.disabled=false;}
  1159. if(obj=document.getElementById("pc_empty_download_list")){obj.disabled=false;}
  1160. if(obj=document.getElementById("id_cancel_stream")){obj.disabled=false;}
  1161. }
  1162. else{
  1163. if(obj=document.getElementById("id_open_editor_load_stream")){obj.disabled=true;}
  1164. if(obj=document.getElementById("id_append_stream")){obj.disabled=true;}
  1165. if(obj=document.getElementById("pc_empty_download_list")){obj.disabled=true;}
  1166. if(obj=document.getElementById("id_cancel_stream")){obj.disabled=true;}
  1167. }
  1168. }
  1169. function wizard_palicannon_nav_level_show(showLevel){
  1170. getStyleClass('palicannon_nav_level_0').style.display="none";
  1171. getStyleClass('palicannon_nav_level_1').style.display="none";
  1172. getStyleClass('palicannon_nav_level_2').style.display="none";
  1173. getStyleClass('palicannon_nav_level_3').style.display="none";
  1174. getStyleClass('palicannon_nav_level_4').style.display="none";
  1175. getStyleClass('palicannon_nav_level_5').style.display="none";
  1176. getStyleClass('palicannon_nav_level_6').style.display="none";
  1177. getStyleClass('palicannon_nav_level_7').style.display="none";
  1178. getStyleClass('palicannon_nav_level_8').style.display="none";
  1179. switch(showLevel){
  1180. case 0:
  1181. getStyleClass('palicannon_nav_level_0').style.display="block";
  1182. //getStyleClass('tree_expand_0').style.display="inline";
  1183. //getStyleClass('tree_collapse_0').style.display="none";
  1184. case 8:
  1185. getStyleClass('palicannon_nav_level_8').style.display="block";
  1186. getStyleClass('tree_expand_8').style.display="inline";
  1187. getStyleClass('tree_collapse_8').style.display="none";
  1188. case 7:
  1189. getStyleClass('palicannon_nav_level_7').style.display="block";
  1190. getStyleClass('tree_expand_7').style.display="inline";
  1191. getStyleClass('tree_collapse_7').style.display="none";
  1192. case 6:
  1193. getStyleClass('palicannon_nav_level_6').style.display="block";
  1194. getStyleClass('tree_expand_6').style.display="inline";
  1195. getStyleClass('tree_collapse_6').style.display="none";
  1196. case 5:
  1197. getStyleClass('palicannon_nav_level_5').style.display="block";
  1198. getStyleClass('tree_expand_5').style.display="none";
  1199. getStyleClass('tree_collapse_5').style.display="inline";
  1200. case 4:
  1201. getStyleClass('palicannon_nav_level_4').style.display="block";
  1202. getStyleClass('tree_expand_4').style.display="inline";
  1203. getStyleClass('tree_collapse_4').style.display="none";
  1204. case 3:
  1205. getStyleClass('palicannon_nav_level_3').style.display="block";
  1206. getStyleClass('tree_expand_3').style.display="inline";
  1207. getStyleClass('tree_collapse_3').style.display="none";
  1208. case 2:
  1209. getStyleClass('palicannon_nav_level_2').style.display="block";
  1210. getStyleClass('tree_expand_2').style.display="inline";
  1211. getStyleClass('tree_collapse_2').style.display="none";
  1212. case 1:
  1213. getStyleClass('palicannon_nav_level_1').style.display="block";
  1214. getStyleClass('tree_expand_1').style.display="inline";
  1215. getStyleClass('tree_collapse_1').style.display="none";
  1216. }
  1217. switch(showLevel){
  1218. case 8:
  1219. getStyleClass('tree_expand_8').style.display="none";
  1220. getStyleClass('tree_collapse_8').style.display="inline";
  1221. break;
  1222. case 7:
  1223. getStyleClass('tree_expand_7').style.display="none";
  1224. getStyleClass('tree_collapse_7').style.display="inline";
  1225. break;
  1226. case 6:
  1227. getStyleClass('tree_expand_6').style.display="none";
  1228. getStyleClass('tree_collapse_6').style.display="inline";
  1229. break;
  1230. case 5:
  1231. getStyleClass('tree_expand_5').style.display="none";
  1232. getStyleClass('tree_collapse_5').style.display="inline";
  1233. break;
  1234. case 4:
  1235. getStyleClass('tree_expand_4').style.display="none";
  1236. getStyleClass('tree_collapse_4').style.display="inline";
  1237. break;
  1238. case 3:
  1239. getStyleClass('tree_expand_3').style.display="none";
  1240. getStyleClass('tree_collapse_3').style.display="inline";
  1241. break;
  1242. case 2:
  1243. getStyleClass('tree_expand_2').style.display="none";
  1244. getStyleClass('tree_collapse_2').style.display="inline";
  1245. break;
  1246. case 1:
  1247. getStyleClass('tree_expand_1').style.display="none";
  1248. getStyleClass('tree_collapse_1').style.display="inline";
  1249. break;
  1250. }
  1251. }
  1252. function wizard_save_download_list(){
  1253. xmlHttp=null;
  1254. if (window.XMLHttpRequest)
  1255. {// code for IE7, Firefox, Opera, etc.
  1256. xmlHttp=new XMLHttpRequest();
  1257. }
  1258. else if (window.ActiveXObject)
  1259. {// code for IE6, IE5
  1260. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  1261. }
  1262. if (xmlHttp!=null)
  1263. {
  1264. xmlHttp.open("POST", "dom_http.php", false);
  1265. var sendHead="filename=dl.json#";
  1266. xmlHttp.send(sendHead+gDownloadListString);
  1267. //xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  1268. //xmlHttp.send("filename=dl.json&data="+gDownloadListString);
  1269. //var_dump(xmlHttp.responseText);
  1270. }
  1271. else
  1272. {
  1273. alert("Your browser does not support XMLHTTP.");
  1274. }
  1275. }
  1276. function open_editor_load_stream(){
  1277. wizard_save_download_list();
  1278. window.open("editor.php?op=loadlist","_blank");
  1279. }
  1280. /*
  1281. * load paragraph from database
  1282. * public
  1283. * @param book(string) book GUID
  1284. * @param parBegin(int)
  1285. * @param parEnd(int)
  1286. */
  1287. function pc_loadStream(resIndex){
  1288. document.getElementById("wizard_div_palicannon").style.display="none";
  1289. gCurrResIndex=resIndex;
  1290. gCurrBook=gResDownloadList[resIndex].book;
  1291. gCurrType=gResDownloadList[resIndex].type;
  1292. //找到第一個應該加載的段落
  1293. gCurrParBegin=gResDownloadList[resIndex].parNum;
  1294. gCurrParEnd=gResDownloadList[resIndex].parEnd;
  1295. gCurrParList=gResDownloadList[resIndex].parlist;
  1296. gCurrParBegin = find_first_enable_par(gCurrParBegin,gCurrParList);
  1297. gResDownloadList[resIndex].parCurrLoading=gCurrParBegin;
  1298. gCurrLoadPar=gCurrParBegin;
  1299. gLoadSteamCanceled=false;
  1300. //清空单词节点数组
  1301. gXmlAllWordInWBW = new Array();
  1302. var d=new Date();
  1303. loadSteamBeginTime=d.getTime();
  1304. //关闭单词修改窗口
  1305. closeModifyWindow();
  1306. //insertTocToXmlBookHead(parBegin,parEnd);
  1307. pc_load_book_par();
  1308. }
  1309. function pc_cancelSteam(){
  1310. gLoadSteamCanceled = true;
  1311. }
  1312. var pc_xmlLoadBookhttp;
  1313. function pc_load_book_par(){
  1314. if (window.XMLHttpRequest)
  1315. {// code for IE7+, Firefox, Chrome, Opera, Safari
  1316. pc_xmlLoadBookhttp=new XMLHttpRequest();
  1317. }
  1318. else
  1319. {// code for IE6, IE5
  1320. pc_xmlLoadBookhttp=new ActiveXObject("Microsoft.XMLHTTP");
  1321. }
  1322. var d=new Date();
  1323. res=gResDownloadList[gCurrResIndex].res;
  1324. book=gResDownloadList[gCurrResIndex].book;
  1325. thisParNum=gResDownloadList[gCurrResIndex].parNum;
  1326. thisParEnd = gResDownloadList[gCurrResIndex].parEnd;
  1327. gResDownloadList[gCurrResIndex].parCurrLoading=gCurrLoadPar;
  1328. author=gResDownloadList[gCurrResIndex].author;
  1329. editor=gResDownloadList[gCurrResIndex].editor;
  1330. revision=gResDownloadList[gCurrResIndex].revision;
  1331. language=gResDownloadList[gCurrResIndex].language;
  1332. edition=gResDownloadList[gCurrResIndex].edition;
  1333. subver=gResDownloadList[gCurrResIndex].subver;
  1334. var link="pc_get_book_res.php?t="+d.getTime()+"&res_type="+res+"&book="+book+"&paragraph="+gCurrLoadPar+"&author="+author+"&editor="+editor+"&revision="+revision+"&language="+language+"&edition="+edition+"&subver="+subver;
  1335. pc_xmlLoadBookhttp.onreadystatechange=pc_load_book_serverResponse;
  1336. pc_xmlLoadBookhttp.open("GET",link,true);
  1337. pc_xmlLoadBookhttp.send();
  1338. }
  1339. function pc_load_book_serverResponse(){
  1340. if (pc_xmlLoadBookhttp.readyState==4)// 4 = "loaded"
  1341. {
  1342. if (pc_xmlLoadBookhttp.status==200)
  1343. {// 200 = "OK"
  1344. var xmlText = pc_xmlLoadBookhttp.responseText;
  1345. if (window.DOMParser)
  1346. {
  1347. parser=new DOMParser();
  1348. xmlBookPar=parser.parseFromString(xmlText,"text/xml");
  1349. }
  1350. else // Internet Explorer
  1351. {
  1352. xmlBookPar=new ActiveXObject("Microsoft.XMLDOM");
  1353. xmlBookPar.async="false";
  1354. xmlBookPar.loadXML(xmlText);
  1355. }
  1356. if (xmlBookPar == null){
  1357. alert("error:can not load book index.");
  1358. return;
  1359. }
  1360. xmlParBlocks = xmlBookPar.getElementsByTagName("block");
  1361. for(iXml=0;iXml<xmlParBlocks.length;iXml++){
  1362. insertBlockToXmlBookData(xmlParBlocks[iXml])
  1363. insertBlockToHtml(xmlParBlocks[iXml])
  1364. }
  1365. if(gLoadSteamCanceled){
  1366. var_dump("load cancel");
  1367. refreshResource();
  1368. updataToc()
  1369. }
  1370. else{
  1371. var d=new Date();
  1372. loadSteamCurrTime=d.getTime()
  1373. passTime=(loadSteamCurrTime-loadSteamBeginTime)/1000;
  1374. gCurrLoadPar++;
  1375. gCurrLoadPar--;
  1376. /*
  1377. var trueLoadPar=-1;
  1378. for(var iSelectPar=gCurrLoadPar+1;iSelectPar<=gCurrParEnd;iSelectPar++){
  1379. var parVisible=document.getElementById("par_enable_"+iSelectPar).checked;
  1380. if(parVisible){
  1381. trueLoadPar=iSelectPar;
  1382. break;
  1383. }
  1384. }
  1385. */
  1386. //gCurrLoadPar=trueLoadPar;
  1387. gCurrLoadPar = find_first_enable_par(gCurrLoadPar+1,gCurrParList);
  1388. if(gCurrLoadPar<=gCurrParEnd && gCurrLoadPar!=-1){
  1389. pc_load_book_par(gCurrSelectedBook,gCurrLoadPar,"vri");
  1390. progress=(gCurrLoadPar-gCurrParBegin)/(gCurrParEnd-gCurrParBegin)
  1391. var c=document.getElementById("book_res_load_progress_canvas_"+gCurrResIndex);
  1392. var cxt=c.getContext("2d");
  1393. cxt.fillStyle="#6baaff";
  1394. cxt.fillRect(0,0,300*progress,5);
  1395. remainTime=(passTime/progress)-passTime;
  1396. strProgress=(progress*100).toFixed(1)+"%"
  1397. document.getElementById('id_book_res_load_progress').innerHTML=strProgress+"<br />pass:"+passTime.toFixed(1)+"s remain: "+remainTime.toFixed(1)+"s";
  1398. }
  1399. else{
  1400. progress=(gCurrLoadPar-gCurrParBegin)/(gCurrParEnd-gCurrParBegin)
  1401. var c=document.getElementById("book_res_load_progress_canvas_"+gCurrResIndex);
  1402. var cxt=c.getContext("2d");
  1403. cxt.fillStyle="#6baaff";
  1404. cxt.fillRect(0,0,300*progress,5);
  1405. remainTime=(passTime/progress)-passTime;
  1406. strProgress=(progress*100).toFixed(1)+"%"
  1407. document.getElementById('id_book_res_load_progress').innerHTML="Load Finished<br />耗时:"+passTime.toFixed(1)+" s";
  1408. document.getElementById('id_book_res_load_progress').innerHTML+="one res load finished";
  1409. refreshResource();
  1410. updataToc();
  1411. if(gCurrResIndex==(gResDownloadList.length-1)){
  1412. //全部资源加载完
  1413. var_dump("doc load finished");
  1414. }
  1415. else{
  1416. //一个资源加载完毕 加载另一个资源
  1417. pc_loadStream(gCurrResIndex+1);
  1418. }
  1419. }
  1420. }
  1421. }
  1422. else
  1423. {
  1424. //document.getElementById('id_palicannon_index_filelist')="Problem retrieving data:" + xmlhttp.statusText;
  1425. }
  1426. }
  1427. }
  1428. function set_pali_loader_visible(visible){
  1429. if(visible){
  1430. document.getElementById('pc_res_loader').style.display="block"
  1431. editor_show_right_tool_bar(true);
  1432. }
  1433. else{
  1434. document.getElementById('pc_res_loader').style.display="none"
  1435. editor_show_right_tool_bar(false);
  1436. }
  1437. }
  1438. //目录段落勾选动作
  1439. function wizard_toc_par_enable(obj,iParIndex){
  1440. gTocList[iParIndex].enable=obj.checked
  1441. document.getElementById("par_enable_"+gTocList[iParIndex].parNum).checked=obj.checked;
  1442. wizard_palicannon_updata_pali_par_text_enable(gTocList[iParIndex].parNum,obj.checked);
  1443. if(gTocList[iParIndex].level>0){
  1444. endIndex=wizard_palicannon_get_par_end_index(iParIndex)
  1445. for(var iPar=iParIndex+1;iPar<=endIndex;iPar++){
  1446. gTocList[iPar].enable=obj.checked
  1447. document.getElementById("toc_par_enable_"+iPar).checked=obj.checked;
  1448. document.getElementById("par_enable_"+gTocList[iPar].parNum).checked=obj.checked;
  1449. wizard_palicannon_updata_pali_par_text_enable(gTocList[iPar].parNum,obj.checked);
  1450. }
  1451. }
  1452. }
  1453. //文章段落勾选动作
  1454. function par_enable_change(iParNum,obj){
  1455. var parIndex=-1;
  1456. for(var iPar=0;iPar<gTocList.length;iPar++){
  1457. if(iParNum==gTocList[iPar].parNum){
  1458. parIndex=iPar;
  1459. break;
  1460. }
  1461. }
  1462. if(parIndex>=0){
  1463. gTocList[parIndex].enable=obj.checked;
  1464. document.getElementById("toc_par_enable_"+parIndex).checked=obj.checked;
  1465. }
  1466. wizard_palicannon_updata_pali_par_text_enable(iParNum,obj.checked);
  1467. }
  1468. //找到当前第一个可用的段落
  1469. //找到:返回段落号
  1470. //没找到:-1
  1471. function find_first_enable_par(iBeginParNum,strParList){
  1472. var arrayParList=strParList.split(",");
  1473. for(iPar in arrayParList){
  1474. curr = arrayParList[iPar];
  1475. curr++;
  1476. curr--;
  1477. if(curr>=iBeginParNum){
  1478. output = arrayParList[iPar];
  1479. output++;
  1480. output--;
  1481. return(output);
  1482. break;
  1483. }
  1484. }
  1485. return(-1);
  1486. }
  1487. //显示浮动的段落资源窗口
  1488. function palicannon_par_res_show_window(parIndex){
  1489. eWin=document.getElementById("palicannon_par_res_list");
  1490. output="";
  1491. output+="<div id=\"palicannon_par_res_list_title\">";
  1492. output+="<button onclick='book_res_edit_now(2)'>立即编辑</button><button onclick='book_res_add_to_list(2)'>加入到编辑列表</button><button onclick='book_res_win_close()'>关闭</button>"
  1493. output+="</div>"
  1494. output+="<div id=\"palicannon_par_res_list_body\">";
  1495. output+=wizard_palicannon_render_res_list_onepart(parIndex,2);
  1496. output+="</div>";
  1497. eWin.innerHTML=output;
  1498. eWin.style.display="block";
  1499. objParent=document.getElementById("id_pc_nav_par_"+parIndex);
  1500. objInsert=null;
  1501. objParent.insertBefore(eWin,objInsert);
  1502. }
  1503. function book_res_win_close(){
  1504. eWin=document.getElementById("palicannon_par_res_list");
  1505. objParent=document.getElementById("palicannon_par_res_list_shell");
  1506. objInsert=null;
  1507. objParent.insertBefore(eWin,objInsert);
  1508. }
  1509. function wizard_get_toc_from_res(){
  1510. gTocLanguage = new Array()
  1511. gTocLanguageItem = new Array()
  1512. gTocCurrLanguage="pali";
  1513. for(var iPar=0;iPar<gTocList.length;iPar++){
  1514. parTitle=gTocList[iPar].title;
  1515. parHeadingLevel=gTocList[iPar].level;
  1516. parNum=gTocList[iPar].parNum;
  1517. var newObj=Object();
  1518. newObj.par=parNum;
  1519. newObj.language="pali";
  1520. newObj.title=parTitle;
  1521. wizard_push_new_to_toc_language_list("pali");
  1522. var newArray = Array();
  1523. newArray.push(newObj);
  1524. gTocLanguageItem.push(newArray);
  1525. }
  1526. for(x in gResList){
  1527. if(gResList[x].type=="translate"){
  1528. var newObj=Object();
  1529. newObj.par=gResList[x].parNum;
  1530. newObj.language=gResList[x].language;
  1531. newObj.title=gResList[x].title;
  1532. wizard_push_new_to_toc_language_list(newObj.language);
  1533. gTocLanguageItem[newObj.par-1].push(newObj);
  1534. }
  1535. }
  1536. }
  1537. function wizard_push_new_to_toc_language_list(newLanguage){
  1538. for(x in gTocLanguage){
  1539. if(gTocLanguage[x]==newLanguage){
  1540. return;
  1541. }
  1542. }
  1543. gTocLanguage.push(newLanguage)
  1544. }
  1545. function wizard_ger_toc_title(parIndex,language){
  1546. for(var x in gTocLanguageItem[parIndex]){
  1547. if(gTocLanguageItem[parIndex][x].language==language){
  1548. return(gTocLanguageItem[parIndex][x].title);
  1549. }
  1550. }
  1551. return(null);
  1552. }
  1553. function wizard_palicannon_nav_language_change(obj){
  1554. gTocCurrLanguage=obj.value;
  1555. document.getElementById('wizard_palicannon_par_select_toc').innerHTML=wizard_palicannon_renderBookToc(gTocCurrRoot);
  1556. }
  1557. function palicannon_par_toc_reset_root(newRoot){
  1558. document.getElementById('wizard_palicannon_par_select_toc').innerHTML=wizard_palicannon_renderBookToc(newRoot);
  1559. var parentArray = new Array();
  1560. currPar=newRoot;
  1561. do{
  1562. iParent=palicannon_par_get_parent(currPar);
  1563. var objParent = new Object();
  1564. objParent.parent=iParent;
  1565. objParent.curr=currPar;
  1566. parentArray.push(objParent);
  1567. //wizard_palicannon_heading_change(iParent,currPar);
  1568. currPar=iParent;
  1569. }
  1570. while(iParent>-1)
  1571. for(var i=parentArray.length-1;i>=0;i--){
  1572. wizard_palicannon_heading_change(parentArray[i].parent,parentArray[i].curr);
  1573. }
  1574. //当改变当前标题时 更新资源列表
  1575. wizard_palicannon_updata_res_info(newRoot);
  1576. //当改变当前标题时 隐藏不需要显示的巴利文本
  1577. wizard_palicannon_updata_pali_text(newRoot);
  1578. }
  1579. function palicannon_par_get_parent(index){
  1580. var currLevel=gTocList[index].level;
  1581. for(var iPar=currLevel;iPar>=0;iPar--){
  1582. if(gTocList[iPar].level>0 && gTocList[iPar].level<currLevel){
  1583. return(iPar)
  1584. }
  1585. }
  1586. return(-1);
  1587. }
  1588. //从服务器获取段落单词数
  1589. var wizard_palicannon_res_word_num_xmlhttp;
  1590. function wizard_palicannon_res_word_num_query(bookId,begin,end){
  1591. if (window.XMLHttpRequest)
  1592. {// code for IE7+, Firefox, Chrome, Opera, Safari
  1593. wizard_palicannon_res_word_num_xmlhttp=new XMLHttpRequest();
  1594. }
  1595. else
  1596. {// code for IE6, IE5
  1597. wizard_palicannon_res_word_num_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  1598. }
  1599. var d=new Date();
  1600. wizard_palicannon_res_word_num_xmlhttp.onreadystatechange=wizard_palicannon_res_word_num_serverResponse;
  1601. wizard_palicannon_res_word_num_xmlhttp.open("GET","pc_get_word_num.php?t="+d.getTime()+"&book="+bookId+"&begin="+begin+"&end="+end,true);
  1602. wizard_palicannon_res_word_num_xmlhttp.send();
  1603. }
  1604. //收到资源列表
  1605. function wizard_palicannon_res_word_num_serverResponse(){
  1606. if (wizard_palicannon_res_word_num_xmlhttp.readyState==4)// 4 = "loaded"
  1607. {
  1608. if (wizard_palicannon_res_word_num_xmlhttp.status==200)
  1609. {// 200 = "OK"
  1610. var xmlText = wizard_palicannon_res_word_num_xmlhttp.responseText;
  1611. var wordInfo=xmlText.split(",");
  1612. document.getElementById('pc_res_par_word_num').innerHTML=wordInfo[0];//總詞數
  1613. document.getElementById('pc_res_par_vocabulary').innerHTML=wordInfo[1];//詞匯量
  1614. document.getElementById('pc_res_par_quotiety').innerHTML=Math.round(wordInfo[0]/wordInfo[1]*100)/100;//重複率,取2位小數
  1615. }
  1616. else
  1617. {
  1618. //document.getElementById('id_pc_')="Problem retrieving data:" + xmlhttp.statusText;
  1619. }
  1620. }
  1621. }