data.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. //旧版 xml的根节点
  2. var xmlDoc = null;
  3. var xmlDict = null;
  4. var gXmlOldVerData;//old ver xml file xml doc
  5. var g_filename="";//工程文件名
  6. var arrDocFileInfo=null;
  7. //全部的逐词译单词xml 节点数组
  8. var gXmlAllWordInWBW = new Array();
  9. var gXmlBookData;
  10. var gXmlBookDataHead;
  11. var gXmlBookDataHeadToc;
  12. var gXmlBookDataBody=null;
  13. var gXmlBookDataInlineDict; //内联字典数据
  14. var gXmlBookDataMsg; //消息数据
  15. var gDocMsgList=new Array();//消息数组
  16. var gXmlParIndex;//段落列表
  17. var gArrayDocParagraph=new Array();//文档中的段落列表
  18. //资源列表
  19. var lstResTranslate = new Array();
  20. var lstResNote = new Array();
  21. var lstResWbw = new Array();
  22. var lstResHeading = new Array();
  23. var doc_info = new Object();
  24. doc_info.msg_run = function(value){
  25. if(value){
  26. this.sendmsg = value;
  27. }
  28. else{
  29. return(this.sendmsg);
  30. }
  31. }
  32. function createXmlDoc(){
  33. var strXml="";
  34. strXml+="<set>\n"
  35. strXml+=" <head>\n"
  36. strXml+=" <type>pcdsset</type>\n"
  37. strXml+=" <mode>package</mode>\n"
  38. strXml+=" <ver>1</ver>\n"
  39. strXml+=" <toc></toc>\n"
  40. strXml+=" <style></style>\n"
  41. strXml+=" </head>\n"
  42. strXml+=" <dict></dict>\n"
  43. strXml+=" <message></message>\n"
  44. strXml+=" <body>\n"
  45. strXml+=" </body>\n"
  46. strXml+="</set>\n"
  47. if (window.DOMParser){
  48. parser=new DOMParser();
  49. gXmlBookData=parser.parseFromString(strXml,"text/xml");
  50. }
  51. else // Internet Explorer
  52. {
  53. gXmlBookData=new ActiveXObject("Microsoft.XMLDOM");
  54. gXmlBookData.async="false";
  55. gXmlBookData.loadXML(strXml);
  56. }
  57. if (gXmlBookData == null){
  58. alert("error:can not load book index.");
  59. return;
  60. }
  61. gXmlBookDataBody = gXmlBookData.getElementsByTagName("body")[0];
  62. gXmlBookDataHead= gXmlBookData.getElementsByTagName("head")[0];
  63. gXmlBookDataInlineDict= gXmlBookData.getElementsByTagName("dict")[0];
  64. gXmlBookDataMsg= gXmlBookData.getElementsByTagName("message")[0];
  65. gXmlBookDataHeadToc= gXmlBookDataHead.getElementsByTagName("toc")[0];
  66. }
  67. function com_XmlAllWordRefresh(){
  68. gXmlAllWordInWBW = gXmlBookDataBody.getElementsByTagName("word");
  69. }
  70. function insertBlockToXmlBookData(element){
  71. xmlParInfo = element.getElementsByTagName("info")[0];
  72. xmlParData = element.getElementsByTagName("data")[0];
  73. bookId=getNodeText(xmlParInfo,"book")
  74. paragraph=getNodeText(xmlParInfo,"paragraph")
  75. type=getNodeText(xmlParInfo,"type")
  76. switch(type){
  77. case "wbw":
  78. xWords=element.getElementsByTagName("word");
  79. for(iWord=0;iWord<xWords.length;iWord++){
  80. len=gXmlAllWordInWBW.length;
  81. gXmlAllWordInWBW[len]=xWords[iWord];
  82. }
  83. break;
  84. }
  85. gXmlBookDataBody.appendChild(element.cloneNode(true));
  86. updataDocParagraphList();
  87. }
  88. function getParIndex(bookId,parNo){
  89. for(var iPar=0;iPar<gArrayDocParagraph.length;iPar++){
  90. currBookId=gArrayDocParagraph[iPar].book
  91. currParNo=gArrayDocParagraph[iPar].paragraph
  92. if(currBookId==bookId && currParNo==parNo){
  93. return(iPar);
  94. }
  95. }
  96. return(-1);
  97. }
  98. //扫描文档 更新段落列表
  99. function updataDocParagraphList(){
  100. gArrayDocParagraph=new Array();
  101. var temp=new Array();
  102. allBlock=gXmlBookDataBody.getElementsByTagName("block")
  103. for(var iBlock=0;iBlock<allBlock.length;iBlock++){
  104. xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
  105. xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
  106. var type=getNodeText(xmlParInfo,"type")
  107. var newPar=new Object();
  108. newPar.book=getNodeText(xmlParInfo,"book")
  109. newPar.paragraph=getNodeText(xmlParInfo,"paragraph")
  110. newPar.level=getNodeText(xmlParInfo,"level");
  111. newPar.style=getNodeText(xmlParInfo,"style");
  112. if(newPar.level==""){
  113. newPar.level=100;
  114. }
  115. //如果有相同段落层级更高的记录,替换。
  116. var bookpara=newPar.book.toString()+"-"+newPar.paragraph.toString();
  117. if(temp[bookpara]){
  118. if(newPar.level>0 && newPar.level<9){
  119. if(temp[bookpara].level>0 && temp[bookpara].level<9){
  120. if(temp[bookpara].level>newPar.level){
  121. temp[bookpara].level=newPar.level;
  122. }
  123. }
  124. else{
  125. temp[bookpara].level=newPar.level;
  126. }
  127. }
  128. }
  129. else{
  130. temp[bookpara]=newPar;
  131. }
  132. }
  133. for(var iTemp in temp){
  134. gArrayDocParagraph.push(temp[iTemp]);
  135. }
  136. }
  137. function parIsSet(inBook,inPar){
  138. for(var iPar=0;iPar<gArrayDocParagraph.length;iPar++){
  139. if(gArrayDocParagraph[iPar].book==inBook && gArrayDocParagraph[iPar].paragraph==inPar){
  140. return(iPar)
  141. }
  142. }
  143. return(-1)
  144. }
  145. function doc_setWordDataById(wordId,key,value){
  146. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  147. var wordIndex=getWordIndex(wordId);
  148. setNodeText(xAllWord[wordIndex],key,value);
  149. }
  150. function doc_file_info_get(){
  151. $.post("file_index.php",
  152. {
  153. op:"getall",
  154. doc_id:g_docid
  155. },
  156. function(data,status){
  157. arrDocFileInfo = JSON.parse(data);
  158. if(arrDocFileInfo.parent_id==null){
  159. doc_info.parent_id="";
  160. }
  161. else{
  162. doc_info.parent_id=arrDocFileInfo.parent_id;
  163. }
  164. doc_info.doc_id=arrDocFileInfo.id;
  165. doc_info.share=arrDocFileInfo.share;
  166. if(arrDocFileInfo.parent_id && arrDocFileInfo.parent_id != null && arrDocFileInfo.parent_id.length > 0 ){
  167. strMsgDocList=arrDocFileInfo.parent_id;
  168. msg_start();//该文档是他人分享的文档,需要发送消息
  169. doc_info.sendmsg=true;
  170. }
  171. else{
  172. if(parseInt(arrDocFileInfo.share)==1){
  173. strMsgDocList=arrDocFileInfo.id;
  174. msg_start();
  175. doc_info.sendmsg=true;//共享给其他人,需要发送消息
  176. }
  177. else{
  178. doc_info.sendmsg=false;//无需发送消息
  179. }
  180. }
  181. });
  182. }
  183. function doc_info_change(field,value){
  184. $.post("file_index.php",
  185. {
  186. op:"set",
  187. doc_id:g_docid,
  188. field:"accese_time",
  189. value:value
  190. },
  191. function(data,status){
  192. console.log("doc_info_change",data);
  193. });
  194. }
  195. function doc_info_title_change(obj){
  196. setNodeText(gXmlBookDataHead,"doc_title",obj.value);
  197. document.getElementById("editor_doc_title").innerHTML=obj.value;
  198. document.getElementById("file_title").innerHTML=obj.value;
  199. $.post("file_index.php",
  200. {
  201. op:"set",
  202. doc_id:g_docid,
  203. field:"title",
  204. value:obj.value
  205. },
  206. function(data,status){
  207. alert("Data: " + data + "\nStatus: " + status);
  208. });
  209. }
  210. function getTranslateText(id){
  211. var xBlock=gXmlBookDataBody.getElementsByTagName("block");
  212. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  213. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  214. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  215. mId=getNodeText(xmlParInfo,"id")
  216. type=getNodeText(xmlParInfo,"type")
  217. if(type=="translate"){
  218. if(mId==id){
  219. xmlParDataSen = xmlParData.getElementsByTagName("sen");
  220. var currText="";
  221. for(iSen=0;iSen<xmlParDataSen.length;iSen++){
  222. currText += getNodeText(xmlParDataSen[iSen],"text");
  223. }
  224. var obj = new Object();
  225. obj.text = currText;
  226. obj.language = getNodeText(xmlParInfo,"language");
  227. obj.author = getNodeText(xmlParInfo,"author");
  228. return(obj);
  229. }
  230. }
  231. }
  232. return(null);
  233. }
  234. /*
  235. setTranText
  236. 功能:存储翻译文本
  237. 参数:
  238. id:数据块guid
  239. senA:句子锚点
  240. strValue:句子文本数据
  241. 返回值:
  242. */
  243. function setTranText(id,senA,strValue){
  244. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  245. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  246. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  247. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  248. let blockId=getNodeText(xmlParInfo,"id");
  249. let book=getNodeText(xmlParInfo,"book");
  250. let para=getNodeText(xmlParInfo,"paragraph");
  251. let parent_id = getNodeText(xmlParInfo,"parent");
  252. if(blockId==id){
  253. xSen=xmlParData.getElementsByTagName("sen");
  254. for(var iSen=0;iSen<xSen.length;iSen++){
  255. var aBegin=getNodeText(xSen[iSen],"begin");
  256. var aEnd=getNodeText(xSen[iSen],"end");
  257. if(aEnd==senA){
  258. //var newText=strValue.replace(/\n/g,"<br />");
  259. setNodeText(xSen[iSen],"text",strValue);
  260. ntf_show("修改:"+strValue);
  261. //准备消息数据 並發送
  262. if(doc_info.sendmsg == true){
  263. let d=new Date();
  264. let msg_doc_id;
  265. if(doc_info.parent_id!=""){
  266. msg_doc_id=doc_info.parent_id;
  267. }
  268. else{
  269. msg_doc_id=doc_info.doc_id;
  270. }
  271. let blockId ;
  272. if(parent_id.length>0){
  273. blockId = parent_id;
  274. }
  275. else{
  276. blockId = id;
  277. }
  278. let objMsg = new Object();
  279. objMsg.id=blockId;
  280. objMsg.begin=aBegin;
  281. objMsg.end = aEnd;
  282. objMsg.text = strValue;
  283. let strMsg=JSON.stringify(objMsg);
  284. msg_push(2,strMsg,msg_doc_id,d.getTime(),book,para);
  285. console.log("send mseeage:"+strMsg);
  286. }
  287. }
  288. }
  289. }
  290. }
  291. }
  292. function setNoteText(id,strValue){
  293. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  294. for(let iBlock=0;iBlock<xBlock.length;iBlock++){
  295. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  296. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  297. blockId=getNodeText(xmlParInfo,"id");
  298. if(blockId==id){
  299. xSen=xmlParData.getElementsByTagName("sen");
  300. if(xSen.length>0){
  301. newText=strValue.replace(/\n/g,"<br />");
  302. setNodeText(xSen[0],"text",strValue);
  303. //var_dump(strValue);
  304. }
  305. }
  306. }
  307. }
  308. function doc_head(key,value=null){
  309. if(value){//set
  310. setNodeText(gXmlBookDataHead,key,value);
  311. }
  312. else{//get
  313. return(getNodeText(gXmlBookDataHead,key));
  314. }
  315. }
  316. function doc_msg_push(msgobj){
  317. gDocMsgList.push(msgobj);
  318. if(gXmlBookDataMsg){
  319. var newNode=gXmlBookData.createElement("msg");
  320. setNodeText(newNode,"id",msgobj.id);
  321. setNodeText(newNode,"sender",msgobj.sender);
  322. setNodeText(newNode,"type",msgobj.type);
  323. setNodeText(newNode,"docid",msgobj.docid);
  324. setNodeText(newNode,"time",msgobj.time);
  325. setNodeText(newNode,"read",msgobj.read);
  326. setNodeText(newNode,"data",msgobj.data);
  327. gXmlBookDataMsg.appendChild(newNode);
  328. }
  329. }
  330. function doc_block(strSelector=""){
  331. if(strSelector==""){
  332. var xBlock = gXmlBookDataBody.getElementsByTagName("block");
  333. return(xBlock);
  334. }
  335. else if(strSelector.substr(0,1)=="#"){
  336. var sBlockId=strSelector.substr(1);
  337. var xBlock = gXmlBookDataBody.getElementsByTagName("block");
  338. for(let i in xBlock){
  339. let xmlParInfo = xBlock[i].getElementsByTagName("info")[0];
  340. let xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  341. let blockId=getNodeText(xmlParInfo,"id");
  342. if(blockId==sBlockId){
  343. var blockObj=new Object();
  344. blockObj.info=xmlParInfo;
  345. blockObj.data=xmlParData;
  346. blockObj.element=xAllWord[wid];
  347. return(blockObj);
  348. }
  349. }
  350. return(null);
  351. }
  352. else{
  353. return(null);
  354. }
  355. }
  356. /*
  357. word("#p34-3-3").val("mean","jiji@en")
  358. add
  359. remove
  360. .draw
  361. doc_word("#p34-3-3").block.info("id")
  362. */
  363. function doc_word(strSelector=""){
  364. if(strSelector==""){
  365. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  366. return(xAllWord);
  367. }
  368. else if(strSelector.substr(0,1)=="#"){
  369. var sWordId=strSelector.substr(1);
  370. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  371. var wid=getWordIndex(sWordId);
  372. if(xAllWord[wid]){
  373. var wordobj=new Object();
  374. wordobj.wordid=strSelector;
  375. wordobj.element=xAllWord[wid];
  376. wordobj.val=_doc_word_value;
  377. var objBlock=new Object();
  378. objBlock.element=wordobj.element.parentNode.parentNode;
  379. objBlock.info=_block_info;
  380. wordobj.block=objBlock;
  381. return(wordobj);
  382. }
  383. else{
  384. var wordobj=new Object();
  385. wordobj.wordid=strSelector;
  386. wordobj.element=null;
  387. wordobj.val=_doc_word_value;
  388. return(wordobj);
  389. }
  390. }
  391. else{
  392. }
  393. }
  394. function _doc_word_value(key,value=null){
  395. if(this.element){
  396. if(value){
  397. setNodeText(this.element,key,value);
  398. }
  399. else{
  400. var output = getNodeText(this.element,key);
  401. return(output);
  402. }
  403. }
  404. else{
  405. if(!value){
  406. return("");
  407. }
  408. }
  409. }
  410. function _block_info(key,value=null){
  411. if(this.element){
  412. let xmlParInfo = this.element.getElementsByTagName("info")[0];
  413. if(value){
  414. setNodeText(xmlParInfo,key,value);
  415. }
  416. else{
  417. var output = getNodeText(xmlParInfo,key);
  418. return(output);
  419. }
  420. }
  421. else{
  422. if(!value){
  423. return("");
  424. }
  425. }
  426. }
  427. /*
  428. doc_data_tran["guid"][2].begin=2
  429. doc_tran("guid").info("book");
  430. doc_tran("guid").info("author","new author");
  431. doc_tran("guid").text();
  432. doc_tran("guid").sen(1).begin() .end() .text()
  433. doc_tran("guid").split(array);
  434. */
  435. function doc_tran(strSelector="",search_parent=false){
  436. if(strSelector==""){
  437. let xBlock = gXmlBookDataBody.getElementsByTagName("block");
  438. return(xBlock);
  439. }
  440. else if(strSelector.substr(0,1)=="#"){
  441. var sBlockId=strSelector.substr(1);
  442. var xBlock = gXmlBookDataBody.getElementsByTagName("block");
  443. let i=0;
  444. for(i=0; i<xBlock.length;i++){
  445. let xmlParInfo = xBlock[i].getElementsByTagName("info")[0];
  446. let xmlParData = xBlock[i].getElementsByTagName("data")[0];
  447. let blockId;
  448. if(search_parent){
  449. blockId = getNodeText(xmlParInfo,"parent");
  450. }
  451. else{
  452. blockId = getNodeText(xmlParInfo,"id");
  453. }
  454. if(blockId==sBlockId){
  455. var blockObj=new Object();
  456. blockObj._info=xmlParInfo;
  457. blockObj._data=xmlParData;
  458. blockObj.text=_doc_tran_sent;
  459. blockObj.info=_doc_tran_info;
  460. blockObj.list = _doc_tran_sent_list;
  461. return(blockObj);
  462. }
  463. }
  464. }
  465. return(null);
  466. }
  467. function _doc_tran_sent(begin,end,key,value=null){
  468. if(this._data){
  469. xSen=this._data.getElementsByTagName("sen");
  470. for(let iSen = 0; iSen < xSen.length; iSen++){
  471. let aBegin=getNodeText(xSen[iSen],"begin");
  472. let aEnd=getNodeText(xSen[iSen],"end");
  473. if(aBegin==begin && aEnd==end){
  474. if(value){
  475. setNodeText(xSen[iSen],key,value);
  476. console.log("translation changed. key="+key+" value="+value);
  477. if(key=="text"){
  478. ntf_show("修改:"+key+"="+value);
  479. let blockId ;
  480. if(this.info("parent").length>0){
  481. blockId = this.info("parent");
  482. }
  483. else{
  484. blockId = this.info("id");
  485. }
  486. let book = this.info("book");
  487. let para = this.info("paragraph");
  488. update_tran_block_text(blockId);
  489. //准备消息数据 並發送
  490. if(doc_info.sendmsg){
  491. let d=new Date();
  492. let msg_doc_id;
  493. if(doc_info.parent_id!=""){
  494. msg_doc_id=doc_info.parent_id;
  495. }
  496. else{
  497. msg_doc_id=doc_info.doc_id;
  498. }
  499. let objMsg = new Object();
  500. objMsg.id=blockId;
  501. objMsg.begin=aBegin;
  502. objMsg.end = aEnd;
  503. objMsg.text = value;
  504. msg_push(2,JSON.stringify(objMsg),msg_doc_id,d.getTime(),book,para);
  505. }
  506. }
  507. }
  508. else{
  509. var output = getNodeText(xSen[iSen],key);
  510. return(output);
  511. }
  512. }
  513. }
  514. }
  515. else{
  516. if(!value){
  517. return("");
  518. }
  519. }
  520. }
  521. function _doc_tran_sent_list(){
  522. if(this._data){
  523. xSen=this._data.getElementsByTagName("sen");
  524. let output = new Array();
  525. for(let iSen = 0; iSen < xSen.length; iSen++){
  526. let objSent = new Object();
  527. objSent.begin=getNodeText(xSen[iSen],"begin");
  528. objSent.end=getNodeText(xSen[iSen],"end");
  529. objSent.text=getNodeText(xSen[iSen],"text");
  530. output.push(objSent);
  531. }
  532. return(output);
  533. }
  534. else{
  535. return(null);
  536. }
  537. }
  538. function _doc_tran_info(key,value=null){
  539. if(this._info){
  540. if(value){
  541. setNodeText(this._info,key,value);
  542. }
  543. else{
  544. var output = getNodeText(this._info,key);
  545. return(output);
  546. }
  547. }
  548. else{
  549. if(!value){
  550. return("");
  551. }
  552. }
  553. }
  554. //工程文件数据解析
  555. function projectDataParse(xmlBookData){
  556. gXmlBookDataBody = xmlBookData.getElementsByTagName("body")[0];
  557. gXmlBookDataHead= xmlBookData.getElementsByTagName("head")[0];
  558. gXmlBookDataInlineDict= xmlBookData.getElementsByTagName("dict")[0];
  559. gXmlBookDataHeadToc= xmlBookData.getElementsByTagName("toc")[0];
  560. if(xmlBookData.getElementsByTagName("message")){
  561. gXmlBookDataMsg= gXmlBookData.getElementsByTagName("message")[0];
  562. }
  563. else{
  564. gXmlBookDataMsg=null;
  565. }
  566. //解析消息队列
  567. if(gXmlBookDataMsg){
  568. var msgElements=gXmlBookDataMsg.getElementsByTagName("msg");
  569. for(var iMsg=0;iMsg<msgElements.length;iMsg++){
  570. var objMsg = new Object();
  571. objMsg.id=getNodeText(msgElements[iMsg],"id");
  572. objMsg.sender=getNodeText(msgElements[iMsg],"sender");
  573. objMsg.type=getNodeText(msgElements[iMsg],"type");
  574. objMsg.docid=getNodeText(msgElements[iMsg],"docid");
  575. objMsg.time=getNodeText(msgElements[iMsg],"time");
  576. objMsg.read=getNodeText(msgElements[iMsg],"read");
  577. strData=getNodeText(msgElements[iMsg],"data");
  578. try{
  579. objMsg.data=JSON.parse(strData);
  580. gDocMsgList.push(objMsg);//添加到消息列表数组
  581. }
  582. catch(e){
  583. }
  584. }
  585. }
  586. com_XmlAllWordRefresh();
  587. //更新工程资源列表
  588. editor_project_updataProjectInfo();
  589. //解析内联字典数据
  590. ildDataParse(gXmlBookDataInlineDict);
  591. //将内联字典数据导入已经下载的词的列表
  592. dict_inid_ild_word_list();
  593. }
  594. /*
  595. doc_block("album_id",id).each(function(e){
  596. e.info("book")
  597. });
  598. doc_block("album_id",id).info("album_id",newid);
  599. //translate
  600. doc_block("id","dd").data(1).text("new sentenc");
  601. doc_block("id","dd").data(1).begin(23);
  602. doc_block("id","dd").data().break(breakpoint);
  603. doc_block("id","dd").data().each(function(e){});
  604. doc_block().push(element);
  605. doc_block().length();
  606. var block=new Object();
  607. block.info["id"]="";
  608. block.album_id=219;
  609. block.album_guid="af023c";
  610. block.type="wbw";
  611. block.book=23;
  612. block.para=33;
  613. block.author="kosalla#kosalla@_tch;visuddhinanda;";
  614. block.editor="kosalla#kosalla@_tch;"
  615. block._data=xmlElement
  616. _blocks = new Array();
  617. _blocks.push(newblock)
  618. }
  619. */