editor.js 163 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359
  1. var g_DictWordList= new Array();
  2. var g_DocWordMean= new Array();
  3. var g_dictList = new Array();
  4. var g_DictWordNew = new Object();
  5. var g_DictWordUpdataIndex=0;//正在更新的记录在内存字典表中的索引号
  6. var g_InlineDictWordList = new Array;
  7. var g_CurrDictBuffer=null;
  8. var g_key_match_str="";
  9. var myFormula = Array();//用户词典里的格位公式
  10. var g_DictCount=0;
  11. var g_currEditWord=-1; //当前正在编辑词的id
  12. var g_eCurrWord=null; //当前正在编辑词的element对象
  13. var g_currBookMarkColor="0";
  14. var g_dictFindParentLevel=0;
  15. var g_dictFindAllDone=false;
  16. var g_currAutoMatchDictType="user";
  17. var g_caseSelect = new Array("","","","");
  18. var gEditorTranslateEditBlockId=-1;
  19. var gEditorNoteEditBlockId=-1
  20. var gEditorHeadingEditBlockId=-1
  21. var gEditorNewHeadingBookId=""
  22. var gEditorNewHeadingPar=""
  23. var g_fileid=0;
  24. var g_docid="";
  25. var g_op="";
  26. var gCurrModifyWindowParNo=-1;
  27. var gUserSetup;
  28. var mDictQueue = Array();
  29. var gNaviCurrPanalId="";
  30. function setNaviVisibility(strObjId=""){
  31. var objNave = document.getElementById('leftmenuinner');
  32. var objblack = document.getElementById('BV');
  33. if(strObjId==""){
  34. objblack.style.display = "none";
  35. objNave.className = "viewswitch_off";
  36. }
  37. else{
  38. $("#"+strObjId).show();
  39. $("#"+strObjId).siblings().hide();
  40. if(strObjId==gNaviCurrPanalId){
  41. if ( objNave.className=='viewswitch_off'){
  42. objblack.style.display = "block";
  43. objNave.className = "viewswitch_on";
  44. }
  45. else{
  46. objblack.style.display = "none";
  47. objNave.className = "viewswitch_off";
  48. }
  49. }
  50. else{
  51. objblack.style.display = "block";
  52. objNave.className = "viewswitch_on";
  53. }
  54. }
  55. gNaviCurrPanalId=strObjId;
  56. }
  57. //选项卡函数
  58. function select_modyfy_type(itemname,idname){
  59. document.getElementById("modify_detaile").style.display="none";
  60. document.getElementById("modify_bookmark").style.display="none";
  61. document.getElementById("modify_note").style.display="none";
  62. document.getElementById("modify_spell").style.display="none";
  63. document.getElementById("modify_apply").style.display="block";
  64. document.getElementById("detail_li").className = "common-tab_li";
  65. document.getElementById("mark_li").className = "common-tab_li";
  66. document.getElementById("note_li").className = "common-tab_li";
  67. document.getElementById("spell_li").className = "common-tab_li";
  68. document.getElementById(itemname).style.display="block";
  69. document.getElementById(idname).className = " common-tab_li_act";
  70. }
  71. function menuSelected(obj){
  72. var objMenuItems=document.getElementsByClassName("menu");
  73. for (var i=0;i<objMenuItems.length;i++){
  74. objMenuItems[i].style.display="none";
  75. }
  76. var objThisItem = document.getElementById(obj.value);
  77. objThisItem.style.display="block";
  78. }
  79. function menuSelected_2(obj,id_name,class_Name){
  80. var objMenuItems=document.getElementsByClassName(class_Name);
  81. var id_array=new Array()
  82. for (var i=0;i<objMenuItems.length;i++){
  83. if(objMenuItems[i].id.split("_")[0]==obj.id.split("_")[0]){
  84. objMenuItems[i].style.display="none";
  85. id_array.push(objMenuItems[i].id)
  86. }
  87. }
  88. var objThisItem = document.getElementById(obj.id);
  89. objThisItem.style.display="block";
  90. for(menu_selected_i in id_array){
  91. document.getElementById(id_array[menu_selected_i]+'_li').className = "common-tab_li";
  92. }
  93. //document.getElementById('content_menu_li').className = " common-tab_li";
  94. //document.getElementById('bookmark_menu_li').className = " common-tab_li";
  95. refreshBookMark()
  96. //document.getElementById('project_menu_li').className = " common-tab_li";
  97. //document.getElementById('dictionary_menu_li').className = " common-tab_li";
  98. //document.getElementById('layout_menu_li').className = " common-tab_li";
  99. //document.getElementById('plugin_menu_li').className = " common-tab_li";
  100. document.getElementById(id_name).className = " common-tab_li_act";
  101. }
  102. var editor_xmlhttp;
  103. var currMatchingDictNum=0; //当前正在查询的字典索引
  104. function editor_getDictFileList(){
  105. if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
  106. editor_xmlhttp=new XMLHttpRequest();
  107. }
  108. else{// code for IE6, IE5
  109. editor_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  110. }
  111. var d=new Date();
  112. editor_xmlhttp.onreadystatechange=editor_serverResponse;
  113. editor_xmlhttp.open("GET","dict_get_list.php?t="+d.getTime(),true);
  114. editor_xmlhttp.send();
  115. }
  116. function editor_serverResponse(){
  117. if (editor_xmlhttp.readyState==4)// 4 = "loaded"
  118. {
  119. if (editor_xmlhttp.status==200)
  120. {// 200 = "OK"
  121. var DictFileList = new Array;
  122. eval(editor_xmlhttp.responseText);
  123. for (x in local_dict_list)
  124. {
  125. g_dictList.push(local_dict_list[x]);
  126. }
  127. var fileList="";
  128. for (x in local_dict_list)
  129. {
  130. if(local_dict_list[x].used){
  131. fileList = fileList + "<p><input id='id_dict_file_list_"+x+"' type='checkbox' style='width: 20px; height: 20px' checked onclick='dict_active(this,"+x+")'/>"+local_dict_list[x].filename+"<span id='dict_result_"+x+"'></span></p>";
  132. }
  133. else{
  134. fileList = fileList + "<p><input id='id_dict_file_list_"+x+"' type='checkbox' style='width: 20px; height: 20px' onclick='dict_active(this,"+x+")'/>"+local_dict_list[x].filename+"<span id='dict_result_"+x+"'></span></p>";
  135. }
  136. }
  137. document.getElementById('basic_dict_list').innerHTML=fileList;
  138. }
  139. else
  140. {
  141. document.getElementById('basic_dict_list')="Problem retrieving data:" + xmlhttp.statusText;
  142. }
  143. }
  144. }
  145. function dict_active(obj,dictIndex){
  146. if(this.checked){
  147. g_dictList[dictIndex].used=true;
  148. }
  149. else{
  150. g_dictList[dictIndex].used=false;
  151. }
  152. }
  153. function editor_windowsInit(){
  154. $("see").click(function(){
  155. var to =$(this).attr("to");
  156. var link;
  157. if(to){
  158. link=to;
  159. }
  160. else{
  161. link=$(this).text();
  162. }
  163. alert(link);
  164. dict_search(link);
  165. });
  166. var strSertch = location.search;
  167. if(strSertch.length>0){
  168. strSertch = strSertch.substr(1);
  169. var sertchList=strSertch.split('&');
  170. for (x in sertchList){
  171. var item = sertchList[x].split('=');
  172. switch(item[0]){
  173. case "filename":
  174. g_filename=item[1];
  175. break;
  176. case "fileid":
  177. g_docid=item[1];
  178. break;
  179. case "doc_id":
  180. g_docid=item[1];
  181. break;
  182. case "op":
  183. g_op=item[1];
  184. break;
  185. }
  186. }
  187. }
  188. checkCookie();
  189. setUseMode("Edit");
  190. editor_getDictFileList();
  191. document.getElementById('id_info_window_select').value="view_dict_curr";
  192. windowsSelected(document.getElementById('id_info_window_select'));
  193. document.getElementById('id_info_panal').style.height="0px";
  194. palicannon_init();
  195. //载入我的术语词典
  196. term_get_my();
  197. //载入全部术语词头
  198. term_get_all_pali();
  199. //载入格位公式
  200. load_my_formula();
  201. switch(g_op){
  202. case "new":
  203. document.getElementById("wizard_div").style.display="flex";
  204. document.getElementById('id_editor_menu_select').value="menu_pali_cannon"
  205. menuSelected(document.getElementById('id_editor_menu_select'))
  206. createXmlDoc()
  207. var_dump(gLocal.gui.newproject);
  208. break;
  209. case "open":
  210. if(g_docid.length>0){
  211. editor_openProject(g_docid,"pcs");
  212. }
  213. else{
  214. alert(gLocal.gui.nofilename);
  215. }
  216. break;
  217. case "opendb":
  218. if(g_docid.length>0){
  219. editor_openProject(g_docid,"db");
  220. }
  221. else{
  222. alert("no doc id");
  223. }
  224. break;
  225. case "import":
  226. if(g_filename.length>0){
  227. editor_importOldVer(g_filename)
  228. g_filename=g_filename.substring(0,g_filename.length-4)+".pcs"
  229. }
  230. else{
  231. alert(gLocal.gui.nofilename);
  232. }
  233. break;
  234. case "loadlist":
  235. editor_show_right_tool_bar(true);
  236. //get_pc_res_download_list_from_cookie();
  237. get_pc_res_download_list_from_string(gDownloadListString);
  238. createXmlDoc();
  239. pc_loadStream(0);
  240. break;
  241. default:
  242. break;
  243. }
  244. ntf_init();
  245. }
  246. var g_dict_search_one_pass_done=null;
  247. var g_dict_search_one_dict_done=null;
  248. var g_dict_search_all_done=null;
  249. function editor_dict_all_done(){
  250. document.getElementById('editor_doc_notify').innerHTML=gLocal.gui.all_done;
  251. var t=setTimeout("document.getElementById('editor_doc_notify').innerHTML=''",5000);
  252. }
  253. function editor_dict_one_dict_done(dictIndex){
  254. document.getElementById('editor_doc_notify').innerHTML=gLocal.gui.round_1+(g_dictFindParentLevel+1)+gLocal.gui.round_2+"【"+g_dictList[dictIndex].name+"】"+gLocal.gui.done;
  255. if(dictIndex+1<g_dictList.length-1){
  256. document.getElementById('editor_doc_notify').innerHTML+="【"+g_dictList[dictIndex+1].name+"】"+ gLocal.gui.checking;
  257. }
  258. }
  259. function menu_dict_match(){
  260. g_dict_search_one_pass_done=null;
  261. g_dict_search_one_dict_done=null;
  262. g_dict_search_all_done=null;
  263. currMatchingDictNum=0;
  264. g_dictFindParentLevel=0;
  265. g_dictFindAllDone=false;
  266. g_dict_search_one_dict_done=editor_dict_one_dict_done;
  267. g_dict_search_all_done=editor_dict_all_done;
  268. dict_refresh_word_download_list();
  269. var arrBuffer=dict_get_search_list();
  270. g_CurrDictBuffer=JSON.stringify(arrBuffer);
  271. dict_mark_word_list_done();
  272. document.getElementById('id_dict_match_inner').innerHTML+="finding parent level "+g_dictFindParentLevel+" buffer:"+arrBuffer.length+"<br>";
  273. editor_dict_match();
  274. }
  275. function editor_dict_match(){
  276. if(currMatchingDictNum<g_dictList.length){
  277. if(g_dictList[currMatchingDictNum].used){
  278. editor_loadDictFromDB(g_filename,g_dictList[currMatchingDictNum]);
  279. }
  280. else{
  281. currMatchingDictNum++;
  282. editor_dict_match();
  283. }
  284. if(g_dictFindAllDone){
  285. dictMatchXMLDoc();
  286. }
  287. }
  288. else{
  289. if(g_dictFindParentLevel<3){
  290. if(g_dict_search_one_pass_done){
  291. g_dict_search_one_pass_done(g_dictFindParentLevel);
  292. }
  293. currMatchingDictNum=0;
  294. g_dictFindParentLevel++;
  295. var arrBuffer=dict_get_search_list();
  296. g_CurrDictBuffer=JSON.stringify(arrBuffer);
  297. dict_mark_word_list_done();
  298. document.getElementById('id_dict_match_inner').innerHTML+="finding parent level "+g_dictFindParentLevel+" buffer:"+arrBuffer.length+"<br>";
  299. editor_dict_match();
  300. }
  301. else{
  302. document.getElementById('id_dict_match_inner').innerHTML+="Max Parent Level "+g_dictFindParentLevel+" Stop!<br>";
  303. if(g_dict_search_all_done){
  304. g_dict_search_all_done();
  305. }
  306. dict_mark_word_list_done();
  307. dictMatchXMLDoc();
  308. }
  309. }
  310. }
  311. function dict_push_word_to_download_list(word,level){
  312. for(var i in g_InlineDictWordList){
  313. if(g_InlineDictWordList[i].word==word){
  314. return;
  315. }
  316. }
  317. var newWord = new Object();
  318. newWord.word=word;
  319. newWord.done=false;
  320. newWord.level=level;
  321. g_InlineDictWordList.push(newWord);
  322. }
  323. function dict_get_search_list(){
  324. var output = new Array()
  325. for(var i in g_InlineDictWordList){
  326. if(g_InlineDictWordList[i].done==false){
  327. output.push(g_InlineDictWordList[i]);
  328. }
  329. }
  330. return(output);
  331. }
  332. function dict_mark_word_list_done(){
  333. for(var i in g_InlineDictWordList){
  334. g_InlineDictWordList[i].done=true;
  335. }
  336. }
  337. function dict_refresh_word_download_list(){
  338. var xDict = gXmlBookDataBody.getElementsByTagName("word");
  339. for(var iword=0;iword<xDict.length;iword++)
  340. {
  341. var pali=com_getPaliReal(getNodeText(xDict[iword],"real"));
  342. var part=getNodeText(xDict[iword],"org");
  343. var type=getNodeText(xDict[iword],"case").split("#");
  344. if(pali!=""){
  345. dict_push_word_to_download_list(pali,0);
  346. }
  347. if(part!=""){
  348. var level=1;
  349. if(type==".un."){
  350. level=0;
  351. }
  352. var arrPart=part.split("+");
  353. for(var ipart in arrPart){
  354. var onePart=com_getPaliReal(arrPart[ipart]);
  355. if(onePart!=""){
  356. dict_push_word_to_download_list(onePart,level);
  357. }
  358. }
  359. }
  360. }
  361. for(var i in g_DictWordList){
  362. var pali=com_getPaliReal(g_DictWordList[i].Pali);
  363. var wparent=com_getPaliReal(g_DictWordList[i].Parent);
  364. var part=g_DictWordList[i].Factors;
  365. var type=g_DictWordList[i].Type;
  366. var level=1;
  367. if(type==".un."){
  368. level=0;
  369. }
  370. if(wparent!=""){
  371. dict_push_word_to_download_list(wparent,level);
  372. }
  373. if(part!=""){
  374. var arrPart=part.split("+");
  375. for(var ipart in arrPart){
  376. var onePart = com_getPaliReal(arrPart[ipart]);
  377. if(onePart!=""){
  378. dict_push_word_to_download_list(onePart,level);
  379. }
  380. }
  381. }
  382. }
  383. }
  384. function dict_inid_ild_word_list(){
  385. g_InlineDictWordList = new Array();
  386. for(var i in g_DictWordList){
  387. var pali=g_DictWordList[i].Pali;
  388. var wparent=g_DictWordList[i].Parent;
  389. var part=g_DictWordList[i].Factors;
  390. var type=g_DictWordList[i].Type;
  391. var level=1;
  392. dict_push_word_to_download_list(g_DictWordList[i].Pali,0);
  393. }
  394. dict_mark_word_list_done();
  395. }
  396. function getAllWordList(){
  397. var output=new Array();
  398. if(g_dictFindParentLevel==0){
  399. var xDict = gXmlBookDataBody.getElementsByTagName("word");
  400. for(iword=0;iword<xDict.length;iword++)
  401. {
  402. pali=getNodeText(xDict[iword],"real");
  403. if(isPaliWord(pali)){
  404. output.push(pali);
  405. }
  406. }
  407. }
  408. else{
  409. var currLevel=g_dictFindParentLevel-1;
  410. for(i=0;i<g_DictWordList.length;i++){
  411. if(g_DictWordList[i].ParentLevel==currLevel){
  412. if(g_DictWordList[i].Parent.length>0 && g_DictWordList[i].Parent!=g_DictWordList[i].Pali){
  413. var arrList=g_DictWordList[i].Parent.split("$");
  414. var paliInParent=false;
  415. for(x=0;x<arrList.length;x++){
  416. if(arrList[x]==g_DictWordList[i].Pali){
  417. paliInParent=true;
  418. }
  419. }
  420. if(paliInParent==false){
  421. output.push(g_DictWordList[i].Parent);
  422. }
  423. }
  424. if(g_DictWordList[i].Factors.length>0){
  425. arrList=g_DictWordList[i].Factors.split("+");
  426. for(x=0;x<arrList.length;x++){
  427. if(arrList[x]!=g_DictWordList[i].Pali){
  428. output.push(arrList[x]);
  429. }
  430. }
  431. }
  432. }
  433. }
  434. }
  435. if(output.length>0){
  436. return output.join("$");
  437. }
  438. else{
  439. return null;
  440. }
  441. }
  442. var editor_DictXmlHttp=null;
  443. function editor_loadDictFromDB(strFileName,dictName){
  444. var xmlText="";
  445. if(window.XMLHttpRequest)
  446. {// code for IE7, Firefox, Opera, etc.
  447. editor_DictXmlHttp=new XMLHttpRequest();
  448. }
  449. else if(window.ActiveXObject)
  450. {// code for IE6, IE5
  451. editor_DictXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  452. }
  453. if (editor_DictXmlHttp!=null)
  454. {
  455. var d=new Date();
  456. var strLink = "dict_find.php?mode=xml&filename="+strFileName+"&type="+dictName.type+"&dict="+dictName.filename;
  457. editor_DictXmlHttp.onreadystatechange=editor_dict_serverResponse;
  458. //var wordList=getAllWordList();
  459. var wordList=g_CurrDictBuffer;
  460. if(wordList!=null){
  461. document.getElementById('id_dict_msg').innerHTML="开始匹配字典"+dictName.name;
  462. editor_DictXmlHttp.open("POST", "dict_find2.php", true);
  463. //editor_DictXmlHttp.send(dictName.type+"$"+dictName.filename+"$"+g_dictFindParentLevel+"$"+wordList);
  464. editor_DictXmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  465. editor_DictXmlHttp.send("type="+dictName.type+"&filename="+dictName.filename+"&level="+g_dictFindParentLevel+"&data="+wordList);
  466. }
  467. else{
  468. g_dictFindAllDone=true;
  469. document.getElementById('id_dict_match_inner').innerHTML+="all done!";
  470. if(g_dict_search_all_done){
  471. g_dict_search_all_done();
  472. }
  473. }
  474. }
  475. else
  476. {
  477. alert("Your browser does not support XMLHTTP.");
  478. }
  479. }
  480. function editor_dict_serverResponse(){
  481. if (editor_DictXmlHttp.readyState==4)// 4 = "loaded"
  482. {
  483. document.getElementById('id_dict_msg').innerHTML="已经获取字典数据";
  484. if (editor_DictXmlHttp.status==200){// 200 = "OK"
  485. var xmlText = editor_DictXmlHttp.responseText;
  486. if (window.DOMParser)
  487. {
  488. parser=new DOMParser();
  489. xmlDict=parser.parseFromString(xmlText,"text/xml");
  490. }
  491. else // Internet Explorer
  492. {
  493. xmlDict=new ActiveXObject("Microsoft.XMLDOM");
  494. xmlDict.async="false";
  495. xmlDict.loadXML(xmlText);
  496. }
  497. if (xmlDict == null){
  498. alert("error:can not load dict.");
  499. return;
  500. }
  501. document.getElementById('dict_result_'+currMatchingDictNum).innerHTML=" : "+g_dictFindParentLevel+"-"+xmlDict.getElementsByTagName("word").length;
  502. dictDataParse(xmlDict,currMatchingDictNum);
  503. editor_addDictDataToXmlDoc(xmlDict);
  504. }
  505. else
  506. {
  507. document.getElementById('id_dict_match_inner').innerHTML="Problem retrieving data:" + editor_DictXmlHttp.statusText;
  508. }
  509. if(g_dict_search_one_dict_done){
  510. g_dict_search_one_dict_done(currMatchingDictNum);
  511. }
  512. currMatchingDictNum++;
  513. editor_dict_match();
  514. }
  515. }
  516. //添加字典数据到内联字典
  517. function editor_addDictDataToXmlDoc(xmlDictData){
  518. var xDict = xmlDictData.getElementsByTagName("word");
  519. for(iword=0;iword<xDict.length;iword++){
  520. gXmlBookDataInlineDict.appendChild(xDict[iword].cloneNode(true));
  521. }
  522. }
  523. /*解析字典数据*/
  524. function dictDataParse(xmlDictData,dictID){
  525. document.getElementById('id_dict_msg').innerHTML="正在解析字典数据";
  526. var xDict = xmlDictData.getElementsByTagName("word");
  527. var tOut="";
  528. var sDictPali="";
  529. var sDictId="";
  530. var sDictOrg="";
  531. var sDictMean="";
  532. var sDictCase="";
  533. for(iword=0;iword<xDict.length;iword++)
  534. {
  535. var objDictItem=new Object();/*一个字典元素*/
  536. objDictItem.Id = getNodeText(xDict[iword],"id");
  537. objDictItem.Guid = getNodeText(xDict[iword],"guid");
  538. objDictItem.Pali = getNodeText(xDict[iword],"pali");
  539. objDictItem.Mean = getNodeText(xDict[iword],"mean");
  540. objDictItem.Type = getNodeText(xDict[iword],"type");
  541. objDictItem.Gramma = getNodeText(xDict[iword],"gramma");
  542. objDictItem.Parent = getNodeText(xDict[iword],"parent");
  543. objDictItem.Factors = getNodeText(xDict[iword],"factors");
  544. objDictItem.PartId = getNodeText(xDict[iword],"part_id");
  545. objDictItem.FactorMean = getNodeText(xDict[iword],"factormean");
  546. objDictItem.Note = getNodeText(xDict[iword],"note");
  547. objDictItem.Confer = getNodeText(xDict[iword],"confer");
  548. objDictItem.Status = getNodeText(xDict[iword],"status");
  549. objDictItem.Enable = getNodeText(xDict[iword],"enable");
  550. objDictItem.Language = getNodeText(xDict[iword],"language");
  551. objDictItem.dictname = getNodeText(xDict[iword],"dict_name");
  552. //objDictItem.dictname=g_dictList[dictID].name;
  553. objDictItem.dictType=g_dictList[dictID].type;
  554. objDictItem.fileName=g_dictList[dictID].filename;
  555. objDictItem.dictID=dictID;
  556. objDictItem.ParentLevel = g_dictFindParentLevel;
  557. //插入数据到内联字典索引表
  558. var level=1;
  559. if(objDictItem.Type==".un."){
  560. level=0;
  561. }
  562. if(objDictItem.Parent!=""){
  563. dict_push_word_to_download_list(objDictItem.Parent,level);
  564. }
  565. if(objDictItem.Factors!=""){
  566. var arrPart=objDictItem.Factors.split("+");
  567. for(var ipart in arrPart){
  568. dict_push_word_to_download_list(arrPart[ipart],level);
  569. }
  570. }
  571. if(objDictItem.Case!="?" || objDictItem.Org!="?" || objDictItem.Mean!="?")
  572. {
  573. pushNewDictItem(g_DictWordList,objDictItem);
  574. }
  575. }
  576. //dict end
  577. }
  578. function pushNewDictItem(inArray,objNew){
  579. //var isExist=false;
  580. for(indexList in inArray){
  581. if(inArray[indexList].Id==objNew.Id && inArray[indexList].dictID==objNew.dictID){
  582. return;
  583. }
  584. }
  585. inArray.push(objNew);
  586. }
  587. function dictShowAsTable(){
  588. var outData="<table>";
  589. for(var i=0;i<g_DictWordList.length;i++){
  590. outData+="<tr class='dict_row"+g_DictWordList[i].ParentLevel+"'>";
  591. outData=outData+"<td>"+g_DictWordList[i].dictname+"</td>";
  592. outData=outData+"<td>"+g_DictWordList[i].Pali+"</td>";
  593. outData=outData+"<td>"+g_DictWordList[i].Type+"</td>";
  594. outData=outData+"<td>"+g_DictWordList[i].Gramma+"</td>";
  595. outData=outData+"<td>"+g_DictWordList[i].Parent+"</td>";
  596. outData=outData+"<td>"+g_DictWordList[i].Mean+"</td>";
  597. outData=outData+"<td>"+g_DictWordList[i].Factors+"</td>";
  598. outData=outData+"</tr>";
  599. }
  600. outData+="</table>";
  601. return outData;
  602. }
  603. var g_CurrActiveRecorder="new";
  604. function setCurrActiveRecorder(recorderName){
  605. g_CurrActiveRecorder=recorderName;
  606. }
  607. function updataCurrActiveRecorder(filder,value){
  608. if(filder=="all"){
  609. }
  610. else{
  611. document.getElementById(filder+"_"+g_CurrActiveRecorder).value=value;
  612. mean_change(g_CurrActiveRecorder);
  613. }
  614. }
  615. function addToCurrActiveRecorder(filder,value){
  616. if(filder=="all"){
  617. }
  618. else{
  619. meanString=document.getElementById(filder+"_"+g_CurrActiveRecorder).value;
  620. meanList=meanString.split("$");
  621. for(i in meanList)
  622. {
  623. if(meanList[i]==value){
  624. return;
  625. }
  626. }
  627. document.getElementById(filder+"_"+g_CurrActiveRecorder).value+="$"+value;
  628. mean_change(g_CurrActiveRecorder);
  629. }
  630. }
  631. function updataFactorMeanPrev(id,strNew){
  632. //if(strNew!=null){
  633. //document.getElementById("id_factormean_prev_"+id).value=strNew;
  634. //}
  635. }
  636. function factorMeanItemChange(id,iPos,count,obj){
  637. //alert(id+":"+iPos+":"+newMean);
  638. newMean=obj.value
  639. var factorMeanPrevString = document.getElementById("id_factormean_prev_"+id).value;
  640. currFactorMeanPrevList=factorMeanPrevString.split("+");
  641. currFactorMeanPrevList[iPos]=newMean;
  642. document.getElementById("id_factormean_prev_"+id).value=currFactorMeanPrevList.join("+");
  643. }
  644. function makeFactorBlock(factorStr,id){
  645. var output="";
  646. var factorList=factorStr.split("+");
  647. var defualtFactorMeanList=new Array;
  648. for(iFactor in factorList){
  649. arrFM=findAllMeanInDict(factorList[iFactor],10);
  650. if(arrFM.length==0){
  651. arrFM[0]="unkow";
  652. }
  653. output +="<select onclick=\"factorMeanItemChange('"+id+"','"+iFactor+"','"+factorList.length+"',this)\">";
  654. defualtFactorMeanList.push(arrFM[0]);
  655. for(iFM in arrFM){
  656. output+="<option value='"+arrFM[iFM]+"' >"+arrFM[iFM]+"</option>";
  657. }
  658. output+="</select>";
  659. if(iFactor<factorList.length-1){
  660. output+="+";
  661. }
  662. }
  663. //updataFactorMeanPrev(id,defualtFactorMeanList.join("+"));
  664. g_FactorMean=defualtFactorMeanList.join("+");
  665. return(output);
  666. }
  667. function factor_change(id){
  668. var factorString = document.getElementById("id_dict_user_factors_"+id).value;
  669. document.getElementById("id_factor_block_"+id).innerHTML=makeFactorBlock(factorString,id);
  670. }
  671. function makeMeanBlock(meanStr,id){
  672. var output="";
  673. var meanList=meanStr.split("$");
  674. for(i in meanList){
  675. output+="<div class=\"mean_cell\">";
  676. output+="<div class=\"button_shell\">";
  677. output+="<p class=\"mean_button\" onclick=\"meanBlockMove('"+id+"',"+i+","+(i-1)+")\">«</p>";
  678. output+="</div>";
  679. output+="<p class=\"mean_inner\" onclick=\"meanBlockMove('"+id+"',"+i+","+0+")\">"+meanList[i]+"</p>";
  680. output+="<div class=\"button_shell\">";
  681. output+="<p class=\"mean_button\" onclick=\"meanBlockDelete('"+id+"',"+i+")\">x</p>";
  682. output+="</div>";
  683. output+="</div>";
  684. }
  685. return(output);
  686. }
  687. function mean_change(id){
  688. var meanString = document.getElementById("id_dict_user_mean_"+id).value;
  689. document.getElementById("id_mean_block_"+id).innerHTML=makeMeanBlock(meanString,id);
  690. }
  691. function meanBlockDelete(id,indexDelete){
  692. var meanString = document.getElementById("id_dict_user_mean_"+id).value;
  693. var meanBlock="";
  694. var meanList=meanString.split("$");
  695. meanList.splice(indexDelete,1);
  696. var newString = meanList.join("$");
  697. document.getElementById("id_dict_user_mean_"+id).value=newString;
  698. mean_change(id);
  699. }
  700. function meanBlockMove(id,moveFrom,moveTo){
  701. var meanString = document.getElementById("id_dict_user_mean_"+id).value;
  702. var meanBlock="";
  703. var meanList=meanString.split("$");
  704. if(moveTo<0){
  705. moveTo=0;
  706. }
  707. if(moveFrom==moveTo){
  708. return;
  709. }
  710. var temp=meanList[moveTo];
  711. meanList[moveTo]=meanList[moveFrom];
  712. for(i=moveFrom-1;i>moveTo;i--){
  713. meanList[i+1]=meanList[i];
  714. }
  715. meanList[moveTo+1]=temp;
  716. var newString = meanList.join("$");
  717. /*
  718. for(x in meanList){
  719. newString+=meanList[x]+"$";
  720. }
  721. */
  722. document.getElementById("id_dict_user_mean_"+id).value=newString;
  723. mean_change(id);
  724. }
  725. function addAutoMeanToFactorMean(id){
  726. document.getElementById("id_dict_user_fm_"+id).value=document.getElementById("id_factormean_prev_"+id).value;
  727. }
  728. //show current selected word in the word window to modify
  729. var g_WordTableCurrWord="";
  730. function dictCurrWordShowAsTable(inCurrWord){
  731. g_WordTableCurrWord = inCurrWord;
  732. g_CurrActiveRecorder="new";
  733. var outData="";
  734. var listParent= new Array();
  735. var listFactors= new Array();
  736. var listChildren = new Array();
  737. outData+="<p class='word_parent'>"+gLocal.gui.parent+":";
  738. for(var i=0;i<g_DictWordList.length;i++){
  739. if(g_DictWordList[i].Pali==inCurrWord){
  740. if(g_DictWordList[i].Parent.length>0){
  741. var find=false;
  742. for(x in listParent){
  743. if(listParent[x]==g_DictWordList[i].Parent){
  744. find=true;
  745. break;
  746. }
  747. }
  748. if(!find){
  749. listParent.push(g_DictWordList[i].Parent);
  750. }
  751. }
  752. if(g_DictWordList[i].Factors.length>0){
  753. arrFactors=g_DictWordList[i].Factors.split("+");
  754. for(iFactors in arrFactors){
  755. var find=false;
  756. for(x in listFactors){
  757. if(listFactors[x]==arrFactors[iFactors]){
  758. find=true;
  759. break;
  760. }
  761. }
  762. if(!find){
  763. listFactors.push(arrFactors[iFactors]);
  764. }
  765. }
  766. }
  767. }
  768. }
  769. for(x in listParent){
  770. outData+="<a onclick=\"showCurrWordTable('"+listParent[x]+"')\">"+listParent[x]+"</a> "
  771. }
  772. for(x in listFactors){
  773. outData+="[<a onclick=\"showCurrWordTable('"+listFactors[x]+"')\">"+listFactors[x]+"</a>] "
  774. }
  775. outData+="</p>";
  776. outData=outData+"<p class=\"word_current\">└"+inCurrWord+"</p>";
  777. outData+="<p class='word_child'>└"+gLocal.gui.children+": ";
  778. for(var i=0;i<g_DictWordList.length;i++){
  779. if(g_DictWordList[i].Parent==inCurrWord){
  780. if(g_DictWordList[i].Pali.length>0){
  781. var find=false;
  782. for(x in listChildren){
  783. if(listChildren[x]==g_DictWordList[i].Pali){
  784. find=true;
  785. break;
  786. }
  787. }
  788. if(!find){
  789. listChildren.push(g_DictWordList[i].Pali);
  790. }
  791. }
  792. }
  793. }
  794. for(x in listChildren){
  795. outData+="<a onclick=\"showCurrWordTable('"+listChildren[x]+"')\">"+listChildren[x]+"</a> "
  796. }
  797. outData+="</p>";
  798. //get new recorder filder
  799. var newRecorder = new Object();
  800. newRecorder.Type="";
  801. newRecorder.Gramma="";
  802. newRecorder.Parent="";
  803. newRecorder.Mean="";
  804. newRecorder.Note="";
  805. newRecorder.Factors="";
  806. newRecorder.FactorMean="";
  807. newRecorder.Confer="";
  808. newRecorder.Status="";
  809. newRecorder.Lock="";
  810. newRecorder.Tag="";
  811. var newMeanList= new Array();
  812. for(var i=0;i<g_DictWordList.length;i++){
  813. if(g_DictWordList[i].Pali==inCurrWord){
  814. if(newRecorder.Type=="" && g_DictWordList[i].Type.length>0){
  815. newRecorder.Type=g_DictWordList[i].Type
  816. }
  817. if(newRecorder.Gramma=="" && g_DictWordList[i].Gramma.length>0){
  818. newRecorder.Gramma=g_DictWordList[i].Gramma;
  819. }
  820. if(newRecorder.Parent=="" && g_DictWordList[i].Parent.length>0){
  821. newRecorder.Parent=g_DictWordList[i].Parent;
  822. }
  823. if(g_DictWordList[i].Mean.length>0){
  824. otherMean = g_DictWordList[i].Mean.split("$");
  825. for(iMean in otherMean){
  826. pushNewToList(newMeanList,otherMean[iMean]);
  827. }
  828. newRecorder.Mean=newMeanList.join("$");
  829. }
  830. if(newRecorder.Factors=="" && g_DictWordList[i].Factors.length>0){
  831. newRecorder.Factors=g_DictWordList[i].Factors;
  832. }
  833. if(newRecorder.FactorMean=="" && g_DictWordList[i].FactorMean.length>0){
  834. newRecorder.FactorMean=g_DictWordList[i].FactorMean;
  835. }
  836. if(newRecorder.Note=="" && g_DictWordList[i].Note){
  837. if(g_DictWordList[i].Note.length>0){
  838. newRecorder.Note=g_DictWordList[i].Note;
  839. }
  840. }
  841. }
  842. }
  843. newMeanBlock=makeMeanBlock(newRecorder.Mean,"new");
  844. newFactorBlock=makeFactorBlock(newRecorder.Factors,"new");
  845. newFactorMeanPrevString=g_FactorMean;
  846. outData+="<div class=\"word_edit\">"
  847. outData+=" <div class=\"word_edit_head\">"
  848. outData+="<input type=\"input\" id=\"id_dict_user_id_new\" hidden value=\"0\" >"
  849. outData+="<input type=\"input\" id=\"id_dict_user_pali_new\" hidden value=\""+inCurrWord+"\" >"
  850. outData+=" <button type=\"button\" onclick=\"editor_UserDictUpdata('new',this)\">"+gLocal.gui.newword+"</button>"
  851. outData+=" "+gLocal.gui.wordtype+":"
  852. outData+= " <select name=\"type\" id=\"id_dict_user_type_new\" onchange=\"typeChange(this)\">";
  853. for (x in gLocal.type_str){
  854. if(gLocal.type_str[x].id==newRecorder.Type){
  855. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\" selected>"+gLocal.type_str[x].value+"</option>";
  856. }
  857. else{
  858. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\">"+gLocal.type_str[x].value+"</option>";
  859. }
  860. }
  861. outData=outData+" </select>";
  862. outData+=" "+gLocal.gui.gramma+":<input type=\"input\" id=\"id_dict_user_gramma_new\" size=\"12\" value=\""+newRecorder.Gramma+"\" />"
  863. outData+=" "+gLocal.gui.parent+":<input type=\"input\" id=\"id_dict_user_parent_new\" size=\"12\" value=\""+newRecorder.Parent+"\" />"
  864. outData+=" "+gLocal.gui.part+":<input type=\"input\" id=\"id_dict_user_factors_new\" size=\""+inCurrWord.length*1.2+"\" value=\""+newRecorder.Factors+"\" onkeyup=\"factor_change('new')\" />"
  865. outData+=" "+gLocal.gui.partmeaning+":"+newFactorBlock
  866. outData+="<button type=\"button\" onclick=\"addAutoMeanToFactorMean('new')\" >▶</button>"
  867. outData+=" <input type=\"input\" id=\"id_dict_user_fm_new\" size=\""+inCurrWord.length+"\" value=\""+newRecorder.FactorMean+"\" />"
  868. outData+=" </div>"
  869. outData+=" <div class=\"word_edit_mean\">"
  870. outData+=" "+gLocal.gui.meaning+":<input type=\"input\" size='50' id=\"id_dict_user_mean_new\" value=\""+newRecorder.Mean+"\" onkeyup=\"mean_change('new')\"/><div class='mean_block' id='id_mean_block_new'>"+newMeanBlock+"</div>"
  871. outData+=" </div>"
  872. outData+="<input type='text' id='id_factormean_prev_new' value='"+newFactorMeanPrevString+"' hidden />"
  873. outData+=" <div class=\"word_edit_note\">"
  874. outData+= gLocal.gui.note+":<br /><textarea id=\"id_dict_user_note_new\" rows='3' cols='100'>"+newRecorder.Note+"</textarea>"
  875. outData+=" </div>"
  876. outData+="</div>"
  877. //draw new
  878. /*
  879. outData=outData+"<h3>New:</h3>";
  880. outData+="<table>";
  881. outData+="<tr class='dict_row_new'><td></td><td>Type</td><td>Parent</td><td>Meaning</td></tr>";
  882. outData+="<tr class='dict_row_new'><td><input type='radio' name='dictupdata' checked onclick=\"setCurrActiveRecorder('new')\" /></td>"+
  883. "<td><input type=\"input\" id=\"id_dict_user_id_new\" hidden value=\"0\" >"+
  884. "<input type=\"input\" id=\"id_dict_user_pali_new\" hidden value=\""+inCurrWord+"\" >"+
  885. " <select name=\"type\" id=\"id_dict_user_type_new\" onchange=\"typeChange(this)\">";
  886. for (x in gLocal.type_str){
  887. if(gLocal.type_str[x].id==newRecorder.Type){
  888. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\" selected>"+gLocal.type_str[x].value+"</option>";
  889. }
  890. else{
  891. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\">"+gLocal.type_str[x].value+"</option>";
  892. }
  893. }
  894. outData=outData+" </select>";
  895. outData=outData+"</td>";
  896. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_parent_new\" size=\"12\" value=\""+newRecorder.Parent+"\" /></td>";
  897. outData=outData+"<td><input type=\"input\" size='50' id=\"id_dict_user_mean_new\" value=\""+newRecorder.Mean+"\" onkeyup=\"mean_change('new')\"/><div class='mean_block' id='id_mean_block_new'>"+newMeanBlock+"</div></td>";
  898. outData+="</tr>";
  899. outData+="<tr class='dict_row_new'><td></td><td>Gramma</td><td>Parts</td><td>Parts Meaning</td></tr>";
  900. outData+="<tr class='dict_row_new'><td><button type=\"button\" onclick=\"editor_UserDictUpdata('new',this)\">Submit</button></td>";
  901. outData+="<td><input type=\"input\" id=\"id_dict_user_gramma_new\" size=\"12\" value=\""+newRecorder.Gramma+"\" /></td>";
  902. outData+="<td><input type=\"input\" id=\"id_dict_user_factors_new\" size=\""+inCurrWord.length*1.2+"\" value=\""+newRecorder.Factors+"\" onkeyup=\"factor_change('new')\" />";
  903. outData+="<br /><input type='text' id='id_factormean_prev_new' value='"+newFactorMeanPrevString+"' hidden />";
  904. outData+="<div class='factor' id='id_factor_block_new'>"+newFactorBlock+"</div>";
  905. outData+="<button type=\"button\" onclick=\"addAutoMeanToFactorMean('new')\" >▶</button></td>";
  906. outData+="<td><input type=\"input\" id=\"id_dict_user_fm_new\" size=\""+inCurrWord.length*1.5+"\" value=\""+newRecorder.FactorMean+"\" /></td></tr>";
  907. outData+="<tr class='dict_row_new'><td>Note</td>";
  908. outData+="<td colspan=3><textarea id=\"id_dict_user_note_new\" rows='3' cols='100'>"+newRecorder.Note+"</textarea></td></tr>"
  909. outData+="</table>";
  910. */
  911. // end of New
  912. outData+="<h3>"+gLocal.gui.userdict+"</h3>";
  913. outData+="<table>";
  914. outData=outData+"<tr><th></th><th>"+gLocal.gui.dictsouce+"</th> <th>"+gLocal.gui.wordtype+"</th> <th>"+gLocal.gui.gramma+"</th> <th>"+gLocal.gui.parent+"</th> <th>"+gLocal.gui.meaning+"</th> <th>"+gLocal.gui.part+"</th> <th>"+gLocal.gui.partmeaning+"</th> <th></th> </tr>";
  915. for(var i=0;i<g_DictWordList.length;i++){
  916. if(g_DictWordList[i].Pali==inCurrWord){
  917. if(g_DictWordList[i].dictname=="用户字典"){
  918. outData+="<tr class='dict_row"+g_DictWordList[i].ParentLevel+"'>";
  919. outData+="<td><input type=radio name='dictupdata' onclick=\"setCurrActiveRecorder('"+i+"')\" /></td>";
  920. outData=outData+"<td>"+g_DictWordList[i].dictname+"</td>";
  921. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_id_"+i+"\" hidden value=\""+g_DictWordList[i].Id+"\" >";
  922. outData=outData+"<input type=\"input\" id=\"id_dict_user_pali_"+i+"\" hidden value=\""+g_DictWordList[i].Pali+"\" >";
  923. outData=outData+" <select name=\"type\" id=\"id_dict_user_type_"+i+"\" onchange=\"typeChange(this)\">";
  924. for (x in gLocal.type_str){
  925. if(gLocal.type_str[x].id==g_DictWordList[i].Type){
  926. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\" selected>"+gLocal.type_str[x].value+"</option>";
  927. }
  928. else{
  929. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\">"+gLocal.type_str[x].value+"</option>";
  930. }
  931. }
  932. outData=outData+" </select>";
  933. outData=outData+"</td>";
  934. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_gramma_"+i+"\" size=\"12\" value=\""+g_DictWordList[i].Gramma+"\" /></td>";
  935. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_parent_"+i+"\" size=\"12\" value=\""+g_DictWordList[i].Parent+"\" />";
  936. outData=outData+"<button type='button' onclick=\"showCurrWordTable('"+g_DictWordList[i].Parent+"')\">»</button></td>";
  937. outData=outData+"<td><input type=\"input\" size='50' id=\"id_dict_user_mean_"+i+"\" value=\""+g_DictWordList[i].Mean+"\" onkeyup='mean_change("+i+")' /><div class='mean_block' id='id_mean_block_"+i+"'></div></td>";
  938. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_factors_"+i+"\" size=\"15\" value=\""+g_DictWordList[i].Factors+"\" /></td>";
  939. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_fm_"+i+"\" size=\"15\" value=\""+g_DictWordList[i].FactorMean+"\" /></td>";
  940. outData=outData+"<td><button type=\"button\" onclick=\"editor_UserDictUpdata('"+i+"',this)\">Updata</button></td>";
  941. outData=outData+"</tr>";
  942. outData+="<tr ><td>Note</td>";
  943. outData+="<td colspan=3><textarea id=\"id_dict_user_note_"+i+"\" rows='3' cols='100'>"+g_DictWordList[i].Note+"</textarea></td></tr>"
  944. }
  945. }
  946. }
  947. /*
  948. for(var i=0;i<g_DictWordList.length;i++){
  949. if(g_DictWordList[i].Pali==inCurrWord){
  950. if(g_DictWordList[i].dictname=="用户字典"){
  951. outData+="<tr ><td></td><td>Type</td><td>Parent</td><td>Meaning</td></tr>";
  952. outData+="<tr ><td><input type='radio' name='dictupdata' checked onclick=\"setCurrActiveRecorder('new')\" /></td>"+
  953. "<td><input type=\"input\" id=\"id_dict_user_id_new"+i+"\" hidden value=\"0\" >"+
  954. "<input type=\"input\" id=\"id_dict_user_pali_"+i+"\" hidden value=\""+inCurrWord+"\" >"+
  955. " <select name=\"type\" id=\"id_dict_user_type_"+i+"\" onchange=\"typeChange(this)\">";
  956. for (x in gLocal.type_str){
  957. if(gLocal.type_str[x].id==g_DictWordList[i].Type){
  958. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\" selected>"+gLocal.type_str[x].value+"</option>";
  959. }
  960. else{
  961. outData=outData+"<option value=\""+gLocal.type_str[x].id+"\">"+gLocal.type_str[x].value+"</option>";
  962. }
  963. }
  964. outData=outData+" </select>";
  965. outData=outData+"</td>";
  966. outData=outData+"<td><input type=\"input\" id=\"id_dict_user_parent_"+i+"\" size=\"12\" value=\""+g_DictWordList[i].Parent+"\" /></td>";
  967. outData=outData+"<td><input type=\"input\" size='50' id=\"id_dict_user_mean_"+i+"\" value=\""+g_DictWordList[i].Mean+"\" onkeyup=\"mean_change('new')\"/><div class='mean_block' id='id_mean_block_new'>"+newMeanBlock+"</div></td>";
  968. outData+="</tr>";
  969. outData+="<tr ><td></td><td>Gramma</td><td>Parts</td><td>Parts Meaning</td></tr>";
  970. outData+="<tr ><td><button type=\"button\" onclick=\"editor_UserDictUpdata('"+i+"',this)\">Submit</button></td>";
  971. outData+="<td><input type=\"input\" id=\"id_dict_user_gramma_"+i+"\" size=\"12\" value=\""+g_DictWordList[i].Gramma+"\" /></td>";
  972. outData+="<td><input type=\"input\" id=\"id_dict_user_factors_"+i+"\" size=\""+inCurrWord.length*1.2+"\" value=\""+g_DictWordList[i].Factors+"\" onkeyup=\"factor_change('new')\" />";
  973. outData+="<br /><input type='text' id='id_factormean_prev_"+i+"' value='"+newFactorMeanPrevString+"' hidden />";
  974. outData+="<div class='factor' id='id_factor_block_"+i+"'>"+newFactorBlock+"</div>";
  975. outData+="<button type=\"button\" onclick=\"addAutoMeanToFactorMean('"+i+"')\" >▲</button></td>";
  976. outData+="<td><input type=\"input\" id=\"id_dict_user_fm_"+i+"\" size=\""+inCurrWord.length*1.5+"\" value=\""+g_DictWordList[i].FactorMean+"\" /></td></tr>";
  977. outData+="<tr ><td>Note</td>";
  978. outData+="<td colspan=3><textarea id=\"id_dict_user_note_"+i+"\" rows='3' cols='100'>"+g_DictWordList[i].Note+"</textarea></td></tr>"
  979. }
  980. }
  981. }
  982. */
  983. outData=outData+"</table>";
  984. outData+="<h3>"+gLocal.gui.otherdict+"</h3>";
  985. outData+="<table>";
  986. outData=outData+"<tr><th></th><th>"+gLocal.gui.dictsouce+"</th> <th>"+gLocal.gui.wordtype+"</th> <th>"+gLocal.gui.gramma+"</th> <th>"+gLocal.gui.parent+"</th> <th>"+gLocal.gui.meaning+"</th> <th>"+gLocal.gui.part+"</th> <th>"+gLocal.gui.partmeaning+"</th> <th></th> </tr>";
  987. for(var i=0;i<g_DictWordList.length;i++){
  988. if(g_DictWordList[i].Pali==inCurrWord){
  989. if(g_DictWordList[i].dictname=="用户字典"){
  990. }
  991. else{
  992. outData+="<tr class='dict_row"+g_DictWordList[i].ParentLevel+"'>";
  993. outData+="<td><button type=\"button\" >▲</button></td>";
  994. outData=outData+"<td>"+g_DictWordList[i].dictname+"</td>";
  995. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_type','"+g_DictWordList[i].Type+"')\" >▲</button><span id=\"id_dict_user_gramma_"+i+"\">"+g_DictWordList[i].Type+"</span></td>";
  996. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_gramma','"+g_DictWordList[i].Gramma+"')\">▲</button>"+g_DictWordList[i].Gramma+"</td>";
  997. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_parent','"+g_DictWordList[i].Parent+"')\">▲</button>"+g_DictWordList[i].Parent;
  998. outData=outData+"<button type='button' onclick=\"showCurrWordTable('"+g_DictWordList[i].Parent+"')\">»</button></td>";
  999. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_mean','"+g_DictWordList[i].Mean+"')\">▲</button>"+g_DictWordList[i].Mean+"<br />"+makeMeanLink(g_DictWordList[i].Mean)+"</td>";
  1000. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_factors','"+g_DictWordList[i].Factors+"')\">▲</button>"+g_DictWordList[i].Factors+"</td>";
  1001. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_fm','"+g_DictWordList[i].FactorMean+"')\">▲</button>"+g_DictWordList[i].FactorMean+"</td>";
  1002. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('all','"+g_DictWordList[i].Type+"')\">▲</button></td>";
  1003. outData=outData+"</tr>";
  1004. }
  1005. }
  1006. }
  1007. outData+="</table>";
  1008. //children
  1009. for(x in listChildren){
  1010. wordChildren=listChildren[x]
  1011. outData+="<h4>"+wordChildren+"</h4> ";
  1012. outData+="<table>";
  1013. outData=outData+"<tr><th></th><th>"+gLocal.gui.dictsouce+"</th> <th>"+gLocal.gui.wordtype+"</th> <th>"+gLocal.gui.gramma+"</th> <th>"+gLocal.gui.parent+"</th> <th>"+gLocal.gui.meaning+"</th> <th>"+gLocal.gui.part+"</th> <th>"+gLocal.gui.partmeaning+"</th> <th></th> </tr>";
  1014. for(var i=0;i<g_DictWordList.length;i++){
  1015. if(g_DictWordList[i].Pali==wordChildren){
  1016. {
  1017. outData+="<tr class='dict_row"+g_DictWordList[i].ParentLevel+"'>";
  1018. outData+="<td><button type=\"button\" >▲</button></td>";
  1019. outData=outData+"<td>"+g_DictWordList[i].dictname+"</td>";
  1020. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_type','"+g_DictWordList[i].Type+"')\" >▲</button><span id=\"id_dict_user_gramma_"+i+"\">"+g_DictWordList[i].Type+"</span></td>";
  1021. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_gramma','"+g_DictWordList[i].Gramma+"')\">▲</button>"+g_DictWordList[i].Gramma+"</td>";
  1022. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_parent','"+g_DictWordList[i].Parent+"')\">▲</button>"+g_DictWordList[i].Parent;
  1023. outData=outData+"<button type='button' onclick=\"showCurrWordTable('"+g_DictWordList[i].Parent+"')\">»</button></td>";
  1024. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_mean','"+g_DictWordList[i].Mean+"')\">▲</button>"+g_DictWordList[i].Mean+"<br />"+makeMeanLink(g_DictWordList[i].Mean)+"</td>";
  1025. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_factors','"+g_DictWordList[i].Factors+"')\">▲</button>"+g_DictWordList[i].Factors+"</td>";
  1026. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_fm','"+g_DictWordList[i].FactorMean+"')\">▲</button>"+g_DictWordList[i].FactorMean+"</td>";
  1027. outData=outData+"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('all','"+g_DictWordList[i].Type+"')\">▲</button></td>";
  1028. outData=outData+"</tr>";
  1029. }
  1030. }
  1031. }
  1032. outData+="</table>";
  1033. }
  1034. return outData;
  1035. }
  1036. function makeMeanLink(inStr){
  1037. var arrList=inStr.split("$");
  1038. var output="";
  1039. for(i in arrList){
  1040. output+="<a onclick=\"addToCurrActiveRecorder('id_dict_user_mean','"+arrList[i]+"')\">"+arrList[i]+"</a> "
  1041. }
  1042. return(output);
  1043. }
  1044. function showCurrWordTable(currWord){
  1045. document.getElementById('id_dict_curr_word_inner').innerHTML=dictCurrWordShowAsTable(currWord);
  1046. }
  1047. //匹配字典数据到文档
  1048. function dictMatchXMLDoc(){
  1049. document.getElementById('id_dict_msg').innerHTML=gLocal.gui.dict_match;
  1050. var docWordCounter=0;
  1051. var matchedCounter=0;
  1052. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1053. for(var iword=0;iword<xDocWords.length;iword++){
  1054. var sPaliWord = getNodeText(xDocWords[iword],"real");
  1055. var sFactorsWord = getNodeText(xDocWords[iword],"org");
  1056. var sMeanWord = getNodeText(xDocWords[iword],"mean");
  1057. var sTypeWord = getNodeText(xDocWords[iword],"case");
  1058. if(isPaliWord(sPaliWord)){
  1059. docWordCounter++;
  1060. /*将这个词与字典匹配,*/
  1061. var iDict=0;
  1062. //if(sMeanWord=="?"){
  1063. var thisWord = sPaliWord
  1064. for(iDict=0;iDict<g_DictWordList.length;iDict++){
  1065. if(thisWord==g_DictWordList[iDict].Pali && g_DictWordList[iDict].ParentLevel==0){
  1066. if(sMeanWord=="?"){
  1067. setNodeText(xDocWords[iword],"bmc","bmca");
  1068. }
  1069. modifyWordDetailByWordIndex(iword);
  1070. matchedCounter++;
  1071. break;
  1072. }
  1073. }
  1074. //}
  1075. /*
  1076. else{
  1077. if(isPaliWord(sPaliWord)){
  1078. matchedCounter++;
  1079. }
  1080. }*/
  1081. }
  1082. }
  1083. var progress=matchedCounter*100/docWordCounter;
  1084. document.getElementById('id_dict_msg').innerHTML=gLocal.gui.match_end+Math.round(progress)+"%";
  1085. }
  1086. function dictGetFirstMean(strMean){
  1087. var arrMean=strMean.split("$");
  1088. if(arrMean.length>0){
  1089. for(var i=0;i<arrMean.length;i++){
  1090. if(arrMean[i].length>0){
  1091. return(arrMean[i]);
  1092. }
  1093. else{
  1094. return "";
  1095. }
  1096. }
  1097. return "";
  1098. }
  1099. else{
  1100. return "";
  1101. }
  1102. }
  1103. //test word is pali word or not
  1104. function isPaliWord(inWord){
  1105. if(inWord.length<2){
  1106. return false;
  1107. }
  1108. if(inWord.match(/[x]/)){
  1109. return false;
  1110. }
  1111. if(inWord.match(/[q]/)){
  1112. return false;
  1113. }
  1114. if(inWord.match(/[w]/)){
  1115. return false;
  1116. }
  1117. if(inWord.match(/[a-y]/)){
  1118. return true;
  1119. }
  1120. else{
  1121. return false;
  1122. }
  1123. }
  1124. function submenu_show_detail(obj){
  1125. eParent = obj.parentNode;
  1126. //var y = obj.getElementsByTagName("svg");
  1127. var x = eParent.getElementsByTagName("div");
  1128. var o = obj.getElementsByTagName("svg");
  1129. if(x[0].style.maxHeight=="200em"){
  1130. x[0].style.maxHeight="0px";
  1131. x[0].style.padding="0px";
  1132. x[0].style.opacity="0";
  1133. o[0].style.transform="rotate(0deg)";
  1134. }
  1135. else{
  1136. x[0].style.maxHeight="200em";
  1137. x[0].style.padding="10px";
  1138. x[0].style.opacity="1";
  1139. o[0].style.transform="rotate(45deg)";
  1140. }
  1141. }
  1142. function getAutoMaxWidth() {
  1143. var Width=$('#').width
  1144. }
  1145. //在导航窗口中显示与此词匹配的字典中的词
  1146. function showMatchedWordsInNavi(wordId){
  1147. //var matchedCounter=0;
  1148. /*
  1149. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1150. for(var iWord=0;iWord<xDocWords.length;iWord++){
  1151. if(getNodeText(xDocWords[iWord],"id")==wordId){
  1152. wIndex=iWord;
  1153. }
  1154. }
  1155. var sPaliWord = getNodeText(xDocWords[wIndex],"real");
  1156. showWordInNavi(sPaliWord);
  1157. */
  1158. }
  1159. //在导航窗口中显示与此词匹配的字典中的词
  1160. function showWordInNavi(inWord){
  1161. var matchedCounter=0;
  1162. var outText="";
  1163. var sLastDict="";
  1164. var sPaliWord = inWord;
  1165. outText=outText+"<h3>"+sPaliWord+"</h3>";
  1166. /*将这个词与字典匹配,*/
  1167. var iDict=0;
  1168. var thisWord = sPaliWord;
  1169. for(iDict=0;iDict<g_DictWordList.length;iDict++){
  1170. if(thisWord==g_DictWordList[iDict].Pali){
  1171. if(g_DictWordList[iDict].dictname!=sLastDict){
  1172. outText=outText+"<dict><span>"+g_DictWordList[iDict].dictname+"<span></dict>";
  1173. sLastDict=g_DictWordList[iDict].dictname;
  1174. }
  1175. outText=outText+"<input type='input' id=\"id_dict_word_list_"+iDict+"\" size='5' value='"+g_DictWordList[iDict].Type+"' />";
  1176. outText=outText+"<input type='input' size='15' value='"+g_DictWordList[iDict].Gramma+"' /><br />";
  1177. outText=outText+"<input type='input' size='20' value='"+g_DictWordList[iDict].Parent+"' /> <button type='button' onclick=\"showWordInNavi('"+g_DictWordList[iDict].Parent+"')\">»</button><br />";
  1178. outText=outText+"<textarea name=\"dict_mean\" rows=\"3\" col=\"25\" style=\"width:20em;\">"+g_DictWordList[iDict].Mean+"</textarea>"
  1179. outText=outText+"<input type='input' size='20' value='"+g_DictWordList[iDict].Factors+"' /><br />";
  1180. outText=outText+"<input type='input' size='20' value='"+g_DictWordList[iDict].FactorMean+"' /><br />";
  1181. outText=outText+"<button type='button' onclick=\"updataDict('"+iDict+"','userdict')\">Modify</button><br />";
  1182. /*
  1183. outText=outText+"<mean onclick=\"updataWordFromDict(this,'mean')\">"+g_DictWordList[iDict].Mean+"</mean>";
  1184. outText=outText+"<org onclick=\"updataWordFromDict(this,'org')\">"+g_DictWordList[iDict].Factors+"</org>";
  1185. outText=outText+"<om onclick=\"updataWordFromDict(this,'om')\">"+g_DictWordList[iDict].FactorMean+"</om>";
  1186. outText=outText+"<case onclick=\"updataWordFromDict(this,'case')\">"+g_DictWordList[iDict].Type+"#"+g_DictWordList[iDict].Gramma+"</case>";
  1187. */
  1188. matchedCounter++;
  1189. }
  1190. }
  1191. document.getElementById("id_dict_matched").innerHTML=outText;
  1192. document.getElementById('id_dict_curr_word_inner').innerHTML=dictCurrWordShowAsTable(inWord);
  1193. }
  1194. function updataWordFromDict(obj,field){
  1195. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1196. var strValue = obj.innerHTML;
  1197. var applayTo = document.getElementById("id_dict_applay_to").value;
  1198. var strCurrPali=getNodeText(xDocWords[g_currEditWord],"pali");
  1199. switch(applayTo)
  1200. {
  1201. case "current":
  1202. setNodeText(xDocWords[g_currEditWord],field,strValue);
  1203. modifyWordDetailByWordIndex(g_currEditWord);
  1204. break;
  1205. case "sys":
  1206. for(i=0;i<xDocWords.length;i++){
  1207. var strPali=getNodeText(xDocWords[i],"pali");
  1208. if(strCurrPali==strPali){
  1209. var isAuto = getNodeText(xDocWords[i],"bmc");
  1210. if(isAuto=="bmca"){
  1211. setNodeText(xDocWords[g_currEditWord],field,strValue);
  1212. modifyWordDetailByWordIndex(i);
  1213. }
  1214. }
  1215. }
  1216. break;
  1217. case "all":
  1218. for(i=0;i<xDocWords.length;i++){
  1219. var strPali=getNodeText(xDocWords[i],"pali");
  1220. if(strCurrPali==strPali){
  1221. setNodeText(xDocWords[g_currEditWord],field,strValue);
  1222. modifyWordDetailByWordIndex(i);
  1223. }
  1224. }
  1225. break;
  1226. }
  1227. }
  1228. function setBookMarkColor(obj,strColor){
  1229. var items = obj.parentNode.getElementsByTagName("li");
  1230. for(var i=0;i<items.length;i++)
  1231. {
  1232. items[i].style.outline= "0px solid";
  1233. }
  1234. if(g_currBookMarkColor==strColor || strColor=="bmc0"){
  1235. g_currBookMarkColor="bmc0"
  1236. }
  1237. else{
  1238. obj.style.outline= "0.2em solid";
  1239. g_currBookMarkColor=strColor;
  1240. }
  1241. //apply_button_lock();
  1242. }
  1243. function getBookMarkColor(idColor){
  1244. var items = document.getElementById("id_book_mark_color_select").getElementsByTagName("li");
  1245. for(var i=0;i<items.length;i++)
  1246. {
  1247. items[i].style.outline= "0px solid";
  1248. }
  1249. if(document.getElementById("id_"+idColor)){
  1250. document.getElementById("id_"+idColor).style.outline= "0.2em solid";
  1251. }
  1252. }
  1253. function match_key(obj){
  1254. g_key_match_str = obj.value;
  1255. for(unicode_key_i in local_code_str){
  1256. g_key_match_str=g_key_match_str.replace(/\+/g,"");
  1257. g_key_match_str=g_key_match_str.replace(/\[/g,"");
  1258. g_key_match_str=g_key_match_str.replace(/\]/g,"");
  1259. }
  1260. }
  1261. function unicode_key(obj){
  1262. var strNew = obj.value;
  1263. var key_match_str=strNew;
  1264. var replace_judge=0;
  1265. key_match_str=key_match_str.replace(/\+/g,"");
  1266. key_match_str=key_match_str.replace(/\[/g,"");
  1267. key_match_str=key_match_str.replace(/\]/g,"");
  1268. for(unicode_key_i in local_code_str){
  1269. if(strNew.lastIndexOf(local_code_str[unicode_key_i].id)!=-1){
  1270. replace_judge=1;
  1271. break;
  1272. }
  1273. }
  1274. if(key_match_str!=g_key_match_str && replace_judge==1 && document.getElementById("input_smart_switch").checked){
  1275. for(unicode_key_i in local_code_str){
  1276. strNew=strNew.replace(local_code_str[unicode_key_i].id,local_code_str[unicode_key_i].value);
  1277. }
  1278. obj.value=strNew;
  1279. }
  1280. }
  1281. function input_key(obj){
  1282. var strNew = obj.value;
  1283. for(input_key_i in local_codestr_sinhala){
  1284. strNew=strNew.replace(local_codestr_sinhala[input_key_i].id,local_codestr_sinhala[input_key_i].value);
  1285. }
  1286. for(input_key_i in local_codestr_sinhala){
  1287. strNew=strNew.replace(local_codestr_sinhala[input_key_i].id,local_codestr_sinhala[input_key_i].value);
  1288. }
  1289. obj.value=strNew;
  1290. }
  1291. function getPaliReal(inStr){
  1292. var paliletter="abcdefghijklmnoprstuvyāīūṅñṭḍṇḷṃ";
  1293. var output="";
  1294. inStr=inStr.toLowerCase();
  1295. inStr = inStr.replace(/ṁ/g,"ṃ");
  1296. inStr = inStr.replace(/ŋ/g,"ṃ");
  1297. for(x in inStr){
  1298. if(paliletter.indexOf(inStr[x])!=-1){
  1299. output+=inStr[x];
  1300. }
  1301. }
  1302. return(output);
  1303. }
  1304. function menu_file_convert(){
  1305. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1306. var outText="";
  1307. var sLastDict="";
  1308. for(var iword=0;iword<xDocWords.length;iword++){
  1309. var sPaliWord = getNodeText(xDocWords[iword],"pali");
  1310. var sPaliMean = getNodeText(xDocWords[iword],"mean");
  1311. /*var thisWord = sPaliWord.toLowerCase();
  1312. thisWord = thisWord.replace(/-/g,"");
  1313. thisWord = thisWord.replace(/'/g,"");
  1314. thisWord = thisWord.replace(/’/g,"");*/
  1315. setNodeText(xDocWords[iword],"real",getPaliReal(sPaliWord));
  1316. setNodeText(xDocWords[iword],"om",sPaliMean);
  1317. }
  1318. alert("convert "+xDocWords.length+"words.");
  1319. }
  1320. function editor_save(){
  1321. $.post("dom_http.php",
  1322. {
  1323. fileid:g_docid,
  1324. xmldata:com_xmlToString(gXmlBookData)
  1325. },
  1326. function(data,status){
  1327. ntf_show("Data: " + data + "\nStatus: " + status);
  1328. });
  1329. }
  1330. /*Parse csv data and fill this document*/
  1331. function csvDataParse(xmlCSVData){
  1332. document.getElementById('id_csv_msg_inner').innerHTML="Parseing CSV Data";
  1333. var xCSV = xmlCSVData.getElementsByTagName("word");
  1334. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1335. for(iword=0;iword<xCSV.length;iword++){
  1336. setNodeText(xDocWords[iword],"pali",getNodeText(xCSV[iword],"pali"));
  1337. setNodeText(xDocWords[iword],"real",getNodeText(xCSV[iword],"real"));
  1338. setNodeText(xDocWords[iword],"id",getNodeText(xCSV[iword],"id"));
  1339. setNodeText(xDocWords[iword],"mean",getNodeText(xCSV[iword],"mean"));
  1340. setNodeText(xDocWords[iword],"org",getNodeText(xCSV[iword],"org"));
  1341. setNodeText(xDocWords[iword],"om",getNodeText(xCSV[iword],"om"));
  1342. setNodeText(xDocWords[iword],"case",getNodeText(xCSV[iword],"case"));
  1343. setNodeText(xDocWords[iword],"bmc",getNodeText(xCSV[iword],"bmc"));
  1344. setNodeText(xDocWords[iword],"bmt",getNodeText(xCSV[iword],"bmt"));
  1345. setNodeText(xDocWords[iword],"note",getNodeText(xCSV[iword],"note"));
  1346. setNodeText(xDocWords[iword],"lock",getNodeText(xCSV[iword],"lock"));
  1347. modifyWordDetailByWordIndex(iword);
  1348. }
  1349. document.getElementById('id_csv_msg_inner').innerHTML="Updata Document Data OK!";
  1350. }
  1351. //import csv end
  1352. //export cav begin
  1353. function menu_file_export_ild(){
  1354. xmlHttp=null;
  1355. var_dump(gLocal.gui.loading);
  1356. if (window.XMLHttpRequest)
  1357. {// code for IE7, Firefox, Opera, etc.
  1358. xmlHttp=new XMLHttpRequest();
  1359. var_dump("test XMLHttpRequest<br/>");
  1360. }
  1361. else if (window.ActiveXObject)
  1362. {// code for IE6, IE5
  1363. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  1364. var_dump("testing Microsoft.XMLHTTP<br/>");
  1365. }
  1366. if (xmlHttp!=null){
  1367. var_dump(gLocal.gui.ok);
  1368. xmlHttp.open("POST", "export_ild.php", false);
  1369. var sendHead="filename="+g_filename+"#";
  1370. var dictDataString="<dict>";
  1371. for(iDict in g_DictWordList){
  1372. dictDataString+="<word>";
  1373. dictDataString+="<recorderId>"+g_DictWordList[iDict].Id+"</recorderId>";
  1374. dictDataString+="<pali>"+g_DictWordList[iDict].Pali+"</pali>";
  1375. dictDataString+="<mean>"+g_DictWordList[iDict].Mean+"</mean>";
  1376. dictDataString+="<type>"+g_DictWordList[iDict].Type+"</type>";
  1377. dictDataString+="<gramma>"+g_DictWordList[iDict].Gramma+"</gramma>";
  1378. dictDataString+="<parent>"+g_DictWordList[iDict].Parent+"</parent>";
  1379. dictDataString+="<factors>"+g_DictWordList[iDict].Factors+"</factors>";
  1380. dictDataString+="<factorMean>"+g_DictWordList[iDict].FactorMean+"</factorMean>";
  1381. dictDataString+="<note>"+g_DictWordList[iDict].Note+"</note>";
  1382. dictDataString+="<confer>"+g_DictWordList[iDict].Confer+"</confer>";
  1383. dictDataString+="<status>"+g_DictWordList[iDict].Status+"</status>";
  1384. dictDataString+="<delete>"+g_DictWordList[iDict].Delete+"</delete>";
  1385. dictDataString+="<dictname>"+g_DictWordList[iDict].dictname+"</dictname>";
  1386. dictDataString+="<dictType>"+g_DictWordList[iDict].dictType+"</dictType>";
  1387. dictDataString+="<fileName>"+g_DictWordList[iDict].fileName+"</fileName>";
  1388. dictDataString+="<parentLevel>"+g_DictWordList[iDict].ParentLevel+"</parentLevel>";
  1389. dictDataString+="</word>";
  1390. }
  1391. dictDataString+="</dict>";
  1392. xmlHttp.send(sendHead+dictDataString);
  1393. var_dump(xmlHttp.responseText);
  1394. }
  1395. else
  1396. {
  1397. alert("Your browser does not support XMLHTTP.");
  1398. }
  1399. }
  1400. function menu_file_tools_empty(opt){
  1401. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1402. if(opt=='all'){
  1403. for(var iword=0;iword<xDocWords.length;iword++){
  1404. setNodeText(xDocWords[iword],"mean","?");
  1405. setNodeText(xDocWords[iword],"org","?");
  1406. setNodeText(xDocWords[iword],"om","?");
  1407. setNodeText(xDocWords[iword],"case","?");
  1408. setNodeText(xDocWords[iword],"bmc","");
  1409. setNodeText(xDocWords[iword],"bmt","");
  1410. setNodeText(xDocWords[iword],"note","");
  1411. setNodeText(xDocWords[iword],"lock","FALSE");
  1412. modifyWordDetailByWordIndex(iword);
  1413. }
  1414. }
  1415. else if(opt=='mean'){
  1416. for(var iword=0;iword<xDocWords.length;iword++){
  1417. setNodeText(xDocWords[iword],"mean","[]");
  1418. //setNodeText(xDocWords[iword],"org","?");
  1419. setNodeText(xDocWords[iword],"om","");
  1420. //setNodeText(xDocWords[iword],"case","?");
  1421. //setNodeText(xDocWords[iword],"bmc","");
  1422. //setNodeText(xDocWords[iword],"bmt","");
  1423. //setNodeText(xDocWords[iword],"note","");
  1424. //setNodeText(xDocWords[iword],"lock","FALSE");
  1425. modifyWordDetailByWordIndex(iword);
  1426. }
  1427. }
  1428. else if(opt=='case'){
  1429. for(var iword=0;iword<xDocWords.length;iword++){
  1430. //setNodeText(xDocWords[iword],"mean","[]");
  1431. //setNodeText(xDocWords[iword],"org","?");
  1432. //setNodeText(xDocWords[iword],"om","");
  1433. setNodeText(xDocWords[iword],"case","?#?");
  1434. //setNodeText(xDocWords[iword],"bmc","");
  1435. //setNodeText(xDocWords[iword],"bmt","");
  1436. //setNodeText(xDocWords[iword],"note","");
  1437. //setNodeText(xDocWords[iword],"lock","FALSE");
  1438. modifyWordDetailByWordIndex(iword);
  1439. }
  1440. }
  1441. else if(opt=='bookmark'){
  1442. for(var iword=0;iword<xDocWords.length;iword++){
  1443. //setNodeText(xDocWords[iword],"mean","[]");
  1444. //setNodeText(xDocWords[iword],"org","?");
  1445. //setNodeText(xDocWords[iword],"om","");
  1446. //setNodeText(xDocWords[iword],"case","?#?");
  1447. setNodeText(xDocWords[iword],"bmc","");
  1448. setNodeText(xDocWords[iword],"bmt","");
  1449. //setNodeText(xDocWords[iword],"note","");
  1450. //setNodeText(xDocWords[iword],"lock","FALSE");
  1451. modifyWordDetailByWordIndex(iword);
  1452. }
  1453. }
  1454. else if(opt=='note'){
  1455. for(var iword=0;iword<xDocWords.length;iword++){
  1456. //setNodeText(xDocWords[iword],"mean","[]");
  1457. //setNodeText(xDocWords[iword],"org","?");
  1458. //setNodeText(xDocWords[iword],"om","");
  1459. //setNodeText(xDocWords[iword],"case","?#?");
  1460. //setNodeText(xDocWords[iword],"bmc","");
  1461. //setNodeText(xDocWords[iword],"bmt","");
  1462. setNodeText(xDocWords[iword],"note","");
  1463. //setNodeText(xDocWords[iword],"lock","FALSE");
  1464. modifyWordDetailByWordIndex(iword);
  1465. }
  1466. }
  1467. }
  1468. function menu_file_tools_GUID(){
  1469. var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
  1470. for(var iword=0;iword<xDocWords.length;iword++){
  1471. setNodeText(xDocWords[iword],"id",com_guid());
  1472. modifyWordDetailByWordIndex(iword);
  1473. }
  1474. var_dump("reset id finished!");
  1475. }
  1476. function showDebugPanal(){
  1477. var w=window.innerWidth
  1478. || document.documentElement.clientWidth
  1479. || document.body.clientWidth;
  1480. var h=window.innerHeight
  1481. || document.documentElement.clientHeight
  1482. || document.body.clientHeight;
  1483. }
  1484. function show_popup(strMsg)
  1485. {
  1486. var p=window.createPopup()
  1487. var pbody=p.document.body
  1488. pbody.style.backgroundColor="red"
  1489. pbody.style.border="solid black 1px"
  1490. pbody.innerHTML=strMsg+"<br />外面点击,即可关闭它!"
  1491. p.show(150,150,200,50,document.body)
  1492. }
  1493. //Info_Panal顯示 begin
  1494. function setInfoPanalVisibility(){
  1495. if(document.getElementById("id_info_panal").style.height == "0px")
  1496. {
  1497. setInfoPanalSize('half');
  1498. }
  1499. else{
  1500. setInfoPanalSize('hidden');
  1501. }
  1502. }
  1503. //Info_Panal顯示尺寸
  1504. function setInfoPanalSize(inSize){
  1505. var h=window.innerHeight
  1506. || document.documentElement.clientHeight
  1507. || document.body.clientHeight;
  1508. var objInfoPanal = document.getElementById("id_info_panal");
  1509. //show_popup(w);
  1510. //alert(objInfoPanal.style.right);
  1511. switch(inSize){
  1512. case "hidden"://min
  1513. objInfoPanal.style.height=0+"px";
  1514. //setTimeout("hiddenPanal()",400);
  1515. break;
  1516. case "min"://min
  1517. objInfoPanal.style.height=(30)+"px";
  1518. break;
  1519. case "half"://half
  1520. objInfoPanal.style.height=h/2+"px";
  1521. break;
  1522. case "0.6"://2/3
  1523. objInfoPanal.style.height=(h*0.6)+"px";
  1524. break;
  1525. case "max"://max
  1526. objInfoPanal.style.height=(h)+"px";
  1527. break;
  1528. }
  1529. }
  1530. function hiddenPanal(){
  1531. document.getElementById("id_info_panal").style.display="none";
  1532. }
  1533. //Info_Panal顯示 end
  1534. function windowsSelected(obj){
  1535. document.getElementById('word_table').style.display = "none";
  1536. document.getElementById('id_dict_match_result').style.display = "none";
  1537. document.getElementById('id_dict_curr_word').style.display = "none";
  1538. document.getElementById('id_debug').style.display = "none";
  1539. switch(obj.value){
  1540. case "view_vocabulary":
  1541. document.getElementById('word_table').style.display = "block";
  1542. break;
  1543. case "view_dict_all":
  1544. document.getElementById('id_dict_match_result').style.display = "block";
  1545. break;
  1546. case "view_dict_curr":
  1547. document.getElementById('id_dict_curr_word').style.display = "block";
  1548. break;
  1549. case "view_debug":
  1550. document.getElementById('id_debug').style.display = "block";
  1551. break;
  1552. }
  1553. }
  1554. function userDictUpdata(){
  1555. }
  1556. var editor_DictUpdataXmlHttp=null;
  1557. function editor_UserDictUpdata(recorderName,thisObj){
  1558. thisObj.disabled=true;
  1559. var xmlText="";
  1560. if(window.XMLHttpRequest)
  1561. {// code for IE7, Firefox, Opera, etc.
  1562. editor_DictUpdataXmlHttp=new XMLHttpRequest();
  1563. }
  1564. else if(window.ActiveXObject)
  1565. {// code for IE6, IE5
  1566. editor_DictUpdataXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  1567. }
  1568. if (editor_DictUpdataXmlHttp!=null)
  1569. {
  1570. var queryString="<wordlist>";
  1571. queryString+="<word>";
  1572. var d_id=document.getElementById('id_dict_user_id_'+recorderName).value;
  1573. var d_pali=document.getElementById('id_dict_user_pali_'+recorderName).value;
  1574. var d_type=document.getElementById('id_dict_user_type_'+recorderName).value;
  1575. var d_gramma=document.getElementById('id_dict_user_gramma_'+recorderName).value;
  1576. var d_parent=document.getElementById('id_dict_user_parent_'+recorderName).value;
  1577. var d_mean=document.getElementById('id_dict_user_mean_'+recorderName).value;
  1578. var d_note=document.getElementById('id_dict_user_note_'+recorderName).value;
  1579. var d_factors=document.getElementById('id_dict_user_factors_'+recorderName).value;
  1580. var d_fm=document.getElementById('id_dict_user_fm_'+recorderName).value;
  1581. var d_confer="";
  1582. var d_status="";
  1583. var d_delete="";
  1584. var d_tag="";
  1585. var d_language=language_translation;
  1586. queryString+="<id>"+d_id+"</id>";
  1587. queryString+="<pali>"+d_pali+"</pali>";
  1588. queryString+="<type>"+d_type+"</type>";
  1589. queryString+="<gramma>"+d_gramma+"</gramma>";
  1590. queryString+="<parent>"+d_parent+"</parent>";
  1591. queryString+="<mean>"+d_mean+"</mean>";
  1592. queryString+="<note>"+d_note+"</note>";
  1593. queryString+="<factors>"+d_factors+"</factors>";
  1594. queryString+="<fm>"+d_fm+"</fm>";
  1595. queryString+="<confer>"+d_confer+"</confer>";
  1596. queryString+="<status>"+d_status+"</status>";
  1597. queryString+="<enable>TRUE</enable>";
  1598. queryString+="<language>"+d_language+"</language>";
  1599. queryString+="</word>";
  1600. queryString+="</wordlist>";
  1601. editor_DictUpdataXmlHttp.onreadystatechange=editor_UserDictUpdata_serverResponse;
  1602. debugOutput("updata user dict start.",0);
  1603. editor_DictUpdataXmlHttp.open("POST", "dict_updata_user.php", true);
  1604. editor_DictUpdataXmlHttp.send(queryString);
  1605. var i=recorderName;
  1606. g_DictWordUpdataIndex=i;
  1607. g_DictWordNew.Id = d_id;
  1608. g_DictWordNew.Pali = d_pali;
  1609. g_DictWordNew.Mean = d_mean;
  1610. g_DictWordNew.Type = d_type;
  1611. g_DictWordNew.Gramma = d_gramma;
  1612. g_DictWordNew.Parent = d_parent;
  1613. g_DictWordNew.Factors = d_factors;
  1614. g_DictWordNew.FactorMean = d_fm;
  1615. g_DictWordNew.Note = d_note;
  1616. g_DictWordNew.Confer = d_confer;
  1617. g_DictWordNew.Status = d_status;
  1618. g_DictWordNew.Delete = d_delete;
  1619. g_DictWordNew.dictname="用户字典";
  1620. g_DictWordNew.dictType="user";
  1621. g_DictWordNew.fileName="user_default";
  1622. g_DictWordNew.ParentLevel=0;
  1623. }
  1624. else
  1625. {
  1626. alert("Your browser does not support XMLHTTP.");
  1627. }
  1628. }
  1629. function editor_UserDictUpdata_serverResponse(){
  1630. if (editor_DictUpdataXmlHttp.readyState==4)// 4 = "loaded"
  1631. {
  1632. debugOutput("server response.",0);
  1633. if (editor_DictUpdataXmlHttp.status==200)
  1634. {// 200 = "OK"
  1635. var serverText = editor_DictUpdataXmlHttp.responseText;
  1636. debugOutput(serverText,0);
  1637. obj = JSON.parse(serverText);
  1638. if(obj.msg[0].server_return==-1){
  1639. alert(obj.msg[0].server_error);
  1640. }
  1641. else{
  1642. var_dump(gLocal.gui.userdict+obj.msg[0].server_op+" "+gLocal.gui.ok);
  1643. switch(obj.msg[0].server_op){
  1644. case "insert":
  1645. g_DictWordNew.Id=obj.msg[0].server_return;
  1646. g_DictWordNew.dictID=1;/*temp code*/
  1647. var inDict=false;
  1648. for(iFindNew in g_DictWordList){
  1649. if(g_DictWordList[iFindNew].Id==g_DictWordNew.Id && g_DictWordList[iFindNew].fileName=="user_default"){
  1650. inDict=true;
  1651. break;
  1652. }
  1653. }
  1654. //if recorder in list don't add to list
  1655. if(!inDict){
  1656. g_DictWordList.unshift(g_DictWordNew);
  1657. editor_insertNewWordToInlineDict(g_DictWordNew);
  1658. }
  1659. break;
  1660. case "update":
  1661. g_DictWordList[g_DictWordUpdataIndex]=g_DictWordNew;
  1662. editor_updataInlineDict(g_DictWordUpdataIndex,g_DictWordNew)
  1663. break;
  1664. }
  1665. }
  1666. showCurrWordTable(g_WordTableCurrWord);
  1667. modifyWordDetailByWordId(g_currEditWord);
  1668. }
  1669. else
  1670. {
  1671. debugOutput(xmlhttp.statusText,0);
  1672. }
  1673. }
  1674. }
  1675. function editor_insertNewWordToInlineDict(newWord){
  1676. var xAllWord=gXmlBookDataInlineDict.getElementsByTagName("word");
  1677. var newElement=gXmlBookData.createElement("word");
  1678. setNodeText(newElement,"id",newWord.Id.toString());
  1679. setNodeText(newElement,"guid",newWord.Guid);
  1680. setNodeText(newElement,"pali",newWord.Pali);
  1681. setNodeText(newElement,"mean",newWord.Mean);
  1682. setNodeText(newElement,"type",newWord.Type);
  1683. setNodeText(newElement,"gramma",newWord.Gramma);
  1684. setNodeText(newElement,"parent",newWord.Parent);
  1685. setNodeText(newElement,"parentid",newWord.ParentId);
  1686. setNodeText(newElement,"factors",newWord.Factors);
  1687. setNodeText(newElement,"factorMean",newWord.FactorMean);
  1688. setNodeText(newElement,"partid",newWord.PartId);
  1689. setNodeText(newElement,"note",newWord.Note);
  1690. setNodeText(newElement,"confer",newWord.Confer);
  1691. setNodeText(newElement,"status",newWord.Status);
  1692. setNodeText(newElement,"enable",newWord.Enable);
  1693. setNodeText(newElement,"dictname",newWord.dictname);
  1694. setNodeText(newElement,"dictType",newWord.dictType);
  1695. setNodeText(newElement,"fileName",newWord.fileName);
  1696. setNodeText(newElement,"parentLevel",newWord.ParentLevel.toString());
  1697. if(xAllWord.length>0){
  1698. gXmlBookDataInlineDict.insertBefore(newElement,xAllWord[0]);
  1699. }
  1700. else{
  1701. gXmlBookDataInlineDict.insertBefore(newElement,null);
  1702. }
  1703. }
  1704. function editor_updataInlineDict(iword,newWord){
  1705. var xILD=gXmlBookDataInlineDict.getElementsByTagName("word")
  1706. if(xILD==null){
  1707. return;
  1708. }
  1709. setNodeText(xILD[iword],"id",newWord.Id);
  1710. setNodeText(xILD[iword],"pali",newWord.Pali);
  1711. setNodeText(xILD[iword],"mean",newWord.Mean);
  1712. setNodeText(xILD[iword],"type",newWord.Type);
  1713. setNodeText(xILD[iword],"gramma",newWord.Gramma);
  1714. setNodeText(xILD[iword],"parent",newWord.Parent);
  1715. setNodeText(xILD[iword],"factors",newWord.Factors);
  1716. setNodeText(xILD[iword],"factorMean",newWord.FactorMean);
  1717. setNodeText(xILD[iword],"note",newWord.Note);
  1718. setNodeText(xILD[iword],"confer",newWord.Confer);
  1719. setNodeText(xILD[iword],"status",newWord.Status);
  1720. setNodeText(xILD[iword],"delete",newWord.Delete);
  1721. setNodeText(xILD[iword],"dictname",newWord.dictname);
  1722. setNodeText(xILD[iword],"dictType",newWord.dictType);
  1723. setNodeText(xILD[iword],"fileName",newWord.fileName);
  1724. setNodeText(xILD[iword],"parentLevel",newWord.ParentLevel);
  1725. }
  1726. /*
  1727. 上传到我的字典
  1728. */
  1729. function upload_to_my_dict(wordIdFrom=-1,wordIdTo=-1){
  1730. let queryString = "<wordlist>";
  1731. let x = gXmlBookDataBody.getElementsByTagName("word");
  1732. let iCount=0;
  1733. let wordNode ;
  1734. let d_pali;
  1735. let d_guid;
  1736. let d_mean;
  1737. let d_parent;
  1738. let d_parent_id;
  1739. let d_parentmean;
  1740. let d_factors;
  1741. let d_fm;
  1742. let d_part_id;
  1743. let d_case ;
  1744. let d_note;
  1745. let formula;
  1746. for(let wordID=wordIdFrom; wordID<=wordIdTo;wordID++)
  1747. {
  1748. if(wordIdFrom==-1){
  1749. d_pali=doc_word("#"+g_currEditWord).val("real");
  1750. d_guid="";
  1751. d_mean=$("#input_meaning").val();
  1752. d_parent=$("#id_text_parent").val();
  1753. d_parent_id="";
  1754. d_parent=com_getPaliReal(d_parent);
  1755. d_parentmean=removeFormulaB(d_mean,'[',']');
  1756. d_parentmean=removeFormulaB(d_parentmean,'{','}');
  1757. //if(d_parentmean.substr())
  1758. d_factors=$("#input_org").val();
  1759. d_fm=$("#input_om").val();//g_arrPartMean.join("+");
  1760. d_part_id="";
  1761. d_case = $("#input_case").val();
  1762. d_note = $("#id_text_note").val();
  1763. }
  1764. else{
  1765. wordNode = x[wordID];
  1766. d_pali=getNodeText(wordNode,"real");
  1767. d_guid=getNodeText(wordNode,"guid");
  1768. d_mean=getNodeText(wordNode,"mean");
  1769. d_parent=getNodeText(wordNode,"parent");
  1770. d_parent_id=getNodeText(wordNode,"parent_id");
  1771. d_parent=com_getPaliReal(d_parent);
  1772. d_parentmean=removeFormulaB(d_mean,'[',']');
  1773. d_parentmean=removeFormulaB(d_parentmean,'{','}');
  1774. d_factors=getNodeText(wordNode,"org");
  1775. d_fm=getNodeText(wordNode,"om");
  1776. d_part_id=getNodeText(wordNode,"part_id");
  1777. d_case = getNodeText(wordNode,"case");
  1778. d_note=getNodeText(wordNode,"note");
  1779. }
  1780. var iPos=d_case.indexOf("#");
  1781. if(iPos>=0){
  1782. var d_type=d_case.substring(0,iPos);
  1783. if(iPos<d_case.length-1){
  1784. var d_gramma=d_case.substring(iPos+1);
  1785. }
  1786. else{
  1787. var d_gramma="";
  1788. }
  1789. }
  1790. else{
  1791. var d_type="";
  1792. var d_gramma=d_case;
  1793. }
  1794. formula=getFormulaFromMeaning(d_mean,"[","]");
  1795. let d_language=get_string_lang(d_mean);
  1796. if(d_mean=="?"){
  1797. d_mean="";
  1798. }
  1799. if(d_factors=="?"){
  1800. d_factors="";
  1801. }
  1802. if(d_fm=="?" || d_fm=="[a]?"){
  1803. d_fm="";
  1804. }
  1805. if((d_type==".un." || d_type==".comp.") && (d_mean=="" && d_factors=="" && d_fm=="")){
  1806. }
  1807. else if(d_pali.length>0 && !(d_mean=="" && d_factors=="" && d_fm=="" && d_case=="")){
  1808. //parent gramma infomation
  1809. switch(d_type){
  1810. case ".n.":
  1811. d_parentType=".n:base.";
  1812. d_parentGramma=d_gramma.split("$")[0];
  1813. if(d_parentGramma==".m." || d_parentGramma==".f." || d_parentGramma==".nt."){
  1814. d_parentGramma=d_parentGramma;
  1815. }
  1816. else{
  1817. d_parentGramma="";
  1818. }
  1819. break;
  1820. case ".adj.":
  1821. d_parentType=".ti:base.";
  1822. d_parentGramma=".adj.";
  1823. break;
  1824. case ".ti.":
  1825. d_parentType=".ti:base.";
  1826. d_parentGramma="";
  1827. break;
  1828. case ".pron.":
  1829. d_parentType=".pron:base.";
  1830. d_parentGramma="";
  1831. break;
  1832. case ".num.":
  1833. d_parentType=".num:base.";
  1834. d_parentGramma="";
  1835. break;
  1836. case ".v.":
  1837. d_parentType=".v:base.";
  1838. d_parentGramma="";
  1839. break;
  1840. case ".v:ind.":
  1841. d_parentType=".v:base.";
  1842. d_parentGramma="";
  1843. break;
  1844. case ".ind.":
  1845. d_parentType=".ind.";
  1846. d_parentGramma="";
  1847. break;
  1848. default:
  1849. d_parentType="";
  1850. d_parentGramma="";
  1851. break;
  1852. }
  1853. let d_confer="";
  1854. let d_status="512";
  1855. let d_enable="TRUE";
  1856. queryString+="<word>";
  1857. queryString+="<pali>"+d_pali+"</pali>";
  1858. queryString+="<guid>"+d_guid+"</guid>";
  1859. queryString+="<type>"+d_type+"</type>";
  1860. queryString+="<gramma>"+d_gramma+"</gramma>";
  1861. queryString+="<parent>"+d_parent+"</parent>";
  1862. queryString+="<parent_id>"+d_parent_id+"</parent_id>";
  1863. queryString+="<mean>"+d_mean+"</mean>";
  1864. queryString+="<note>"+d_note+"</note>";
  1865. queryString+="<factors>"+d_factors+"</factors>";
  1866. queryString+="<fm>"+d_fm+"</fm>";
  1867. queryString+="<part_id>"+d_part_id+"</part_id>";
  1868. queryString+="<confer>"+d_confer+"</confer>";
  1869. queryString+="<status>"+d_status+"</status>";
  1870. queryString+="<enable>"+d_enable+"</enable>";
  1871. queryString+="<language>"+d_language+"</language>";
  1872. queryString+="</word>";
  1873. iCount++;
  1874. //formula
  1875. if(formula!="~"){
  1876. queryString+="<word>";
  1877. queryString+="<pali>_formula_</pali>";
  1878. queryString+="<guid></guid>";
  1879. queryString+="<type>"+d_type+"</type>";
  1880. queryString+="<gramma>"+d_gramma+"</gramma>";
  1881. queryString+="<parent></parent>";
  1882. queryString+="<parent_id></parent_id>";
  1883. queryString+="<mean>"+formula+"</mean>";
  1884. queryString+="<note></note>";
  1885. queryString+="<factors></factors>";
  1886. queryString+="<fm></fm>";
  1887. queryString+="<part_id></part_id>";
  1888. queryString+="<confer></confer>";
  1889. queryString+="<status>"+d_status+"</status>";
  1890. queryString+="<enable>"+d_enable+"</enable>";
  1891. queryString+="<language>"+d_language+"</language>";
  1892. queryString+="</word>";
  1893. iCount++;
  1894. }
  1895. //parent recorder
  1896. if(d_parent.length>0){
  1897. queryString+="<word>";
  1898. queryString+="<pali>"+d_parent+"</pali>";
  1899. queryString+="<guid></guid>";
  1900. queryString+="<type>"+d_parentType+"</type>";
  1901. queryString+="<gramma>"+d_parentGramma+"</gramma>";
  1902. queryString+="<parent></parent>";
  1903. queryString+="<parent_id></parent_id>";
  1904. queryString+="<mean>"+d_parentmean+"</mean>";
  1905. queryString+="<note></note>";
  1906. let fc=d_factors.split("+");
  1907. if(fc.length>0 && (fc[fc.length-1].slice(0,1)=="[" && fc[fc.length-1].slice(-1)=="]")){
  1908. fc.pop();
  1909. }
  1910. queryString+="<factors>"+fc.join("+")+"</factors>";
  1911. let fm=d_fm.split("+");
  1912. fm.length=fc.length;
  1913. queryString+="<fm>"+fm.join("+")+"</fm>";
  1914. queryString+="<part_id></part_id>";
  1915. queryString+="<confer></confer>";
  1916. queryString+="<status>512</status>";
  1917. queryString+="<enable>TRUE</enable>";
  1918. queryString+="<language>"+d_language+"</language>";
  1919. queryString+="</word>";
  1920. iCount++;
  1921. }
  1922. //part recorder
  1923. if(d_fm.slice(0,3)!="[a]"){
  1924. let arrPart = d_factors.split('+');
  1925. let arrPartMean = d_fm.split('+');
  1926. if(arrPart.length>0 && arrPart.length==arrPartMean.length){
  1927. for(iPart in arrPart){
  1928. if(arrPartMean[iPart]!="" && arrPartMean[iPart]!="?")
  1929. arrPart[iPart]=arrPart[iPart].replace("(","");
  1930. arrPart[iPart]=arrPart[iPart].replace(")","");
  1931. queryString+="<word>";
  1932. queryString+="<guid></guid>";
  1933. queryString+="<pali>"+arrPart[iPart]+"</pali>";
  1934. queryString+="<type>.part.</type>";
  1935. queryString+="<gramma></gramma>";
  1936. queryString+="<parent></parent>";
  1937. queryString+="<parent_id></parent_id>";
  1938. queryString+="<mean>"+arrPartMean[iPart]+"</mean>";
  1939. queryString+="<note></note>";
  1940. queryString+="<factors></factors>";
  1941. queryString+="<fm></fm>";
  1942. queryString+="<part_id></part_id>";
  1943. queryString+="<confer></confer>";
  1944. queryString+="<status>512</status>";
  1945. queryString+="<enable>TRUE</enable>";
  1946. queryString+="<language>"+d_language+"</language>";
  1947. queryString+="</word>";
  1948. iCount++
  1949. }
  1950. }
  1951. }
  1952. }
  1953. }
  1954. queryString+="</wordlist>";
  1955. if(iCount==0){
  1956. ntf_show("no word update");
  1957. }
  1958. else{
  1959. $.post("dict_updata_wbw.php",
  1960. queryString,
  1961. function(data,status){
  1962. ntf_show("Data: " + data + "\nStatus: " + status);
  1963. });
  1964. }
  1965. }
  1966. // word by word dict updata
  1967. var editor_wbwUpdataXmlHttp=null;
  1968. function editor_WbwUpdata(wordIdFrom,wordIdTo){
  1969. var xmlText="";
  1970. if(window.XMLHttpRequest)
  1971. {// code for IE7, Firefox, Opera, etc.
  1972. editor_wbwUpdataXmlHttp=new XMLHttpRequest();
  1973. }
  1974. else if(window.ActiveXObject)
  1975. {// code for IE6, IE5
  1976. editor_wbwUpdataXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  1977. }
  1978. if (editor_wbwUpdataXmlHttp!=null)
  1979. {
  1980. let queryString="<wordlist>";
  1981. let x = gXmlBookDataBody.getElementsByTagName("word");
  1982. let iCount=0;
  1983. let d_language=language_translation;
  1984. for(let wordID=wordIdFrom; wordID<=wordIdTo;wordID++){
  1985. let wordNode = x[wordID];
  1986. let d_pali = getNodeText(wordNode,"real");
  1987. let d_guid = getNodeText(wordNode,"guid");
  1988. let d_mean = getNodeText(wordNode,"mean");
  1989. let d_parent = getNodeText(wordNode,"parent");
  1990. let d_parent_id = getNodeText(wordNode,"parent_id");
  1991. d_parent = com_getPaliReal(d_parent);
  1992. let d_parentmean = removeFormulaB(d_mean,'[',']');
  1993. d_parentmean = removeFormulaB(d_parentmean,'{','}');
  1994. let formula=getFormulaFromMeaning(d_mean);
  1995. let d_factors = getNodeText(wordNode,"org");
  1996. let d_fm = getNodeText(wordNode,"om");
  1997. let d_part_id = getNodeText(wordNode,"part_id");
  1998. let d_case = getNodeText(wordNode,"case");
  1999. let d_note = getNodeText(wordNode,"note");
  2000. if(d_pali.length>0 && !(d_mean=="?" && d_factors=="?" && d_fm=="?" && d_case=="?")){
  2001. let iPos=d_case.indexOf("#");
  2002. if(iPos>=0){
  2003. let d_type=d_case.substring(0,iPos);
  2004. if(iPos<d_case.length-1){
  2005. let d_gramma=d_case.substring(iPos+1);
  2006. }
  2007. else{
  2008. let d_gramma="";
  2009. }
  2010. }
  2011. else{
  2012. let d_type="";
  2013. let d_gramma=d_case;
  2014. }
  2015. //parent gramma infomation
  2016. switch(d_type){
  2017. case ".n.":
  2018. d_parentType=".n:base.";
  2019. d_parentGramma=d_gramma.split("$")[0];
  2020. if(d_parentGramma==".m." || d_parentGramma==".f." || d_parentGramma==".nt."){
  2021. d_parentGramma=d_parentGramma;
  2022. }
  2023. else{
  2024. d_parentGramma="";
  2025. }
  2026. break;
  2027. case ".adj.":
  2028. d_parentType=".adj:base.";
  2029. d_parentGramma="";
  2030. break;
  2031. case ".ti.":
  2032. d_parentType=".ti:base.";
  2033. d_parentGramma="";
  2034. break;
  2035. case ".pron.":
  2036. d_parentType=".pron:base.";
  2037. d_parentGramma="";
  2038. break;
  2039. case ".num.":
  2040. d_parentType=".num:base.";
  2041. d_parentGramma="";
  2042. break;
  2043. case ".v.":
  2044. d_parentType=".v:base.";
  2045. d_parentGramma="";
  2046. break;
  2047. case ".ind.":
  2048. d_parentType=".ind.";
  2049. d_parentGramma="";
  2050. break;
  2051. default:
  2052. d_parentType="";
  2053. d_parentGramma="";
  2054. break;
  2055. }
  2056. let d_confer="";
  2057. let d_status="512";
  2058. let d_enable="TRUE";
  2059. queryString+="<word>";
  2060. queryString+="<pali>"+d_pali+"</pali>";
  2061. queryString+="<guid>"+d_guid+"</guid>";
  2062. queryString+="<type>"+d_type+"</type>";
  2063. queryString+="<gramma>"+d_gramma+"</gramma>";
  2064. queryString+="<parent>"+d_parent+"</parent>";
  2065. queryString+="<parent_id>"+d_parent_id+"</parent_id>";
  2066. queryString+="<mean>"+d_mean+"</mean>";
  2067. queryString+="<note>"+d_note+"</note>";
  2068. queryString+="<factors>"+d_factors+"</factors>";
  2069. queryString+="<fm>"+d_fm+"</fm>";
  2070. queryString+="<part_id>"+d_part_id+"</part_id>";
  2071. queryString+="<confer>"+d_confer+"</confer>";
  2072. queryString+="<status>"+d_status+"</status>";
  2073. queryString+="<enable>"+d_enable+"</enable>";
  2074. queryString+="<language>"+d_language+"</language>";
  2075. queryString+="</word>";
  2076. iCount++;
  2077. //formula
  2078. queryString+="<word>";
  2079. queryString+="<pali>_formula_</pali>";
  2080. queryString+="<guid></guid>";
  2081. queryString+="<type>"+d_type+"</type>";
  2082. queryString+="<gramma>"+d_gramma+"</gramma>";
  2083. queryString+="<parent></parent>";
  2084. queryString+="<parent_id></parent_id>";
  2085. queryString+="<mean>"+formula+"</mean>";
  2086. queryString+="<note></note>";
  2087. queryString+="<factors></factors>";
  2088. queryString+="<fm></fm>";
  2089. queryString+="<part_id></part_id>";
  2090. queryString+="<confer></confer>";
  2091. queryString+="<status>"+d_status+"</status>";
  2092. queryString+="<enable>"+d_enable+"</enable>";
  2093. queryString+="<language>"+d_language+"</language>";
  2094. queryString+="</word>";
  2095. iCount++;
  2096. //parent recorder
  2097. if(d_parent.length>0){
  2098. queryString+="<word>";
  2099. queryString+="<pali>"+d_parent+"</pali>";
  2100. queryString+="<guid></guid>";
  2101. queryString+="<type>"+d_parentType+"</type>";
  2102. queryString+="<gramma>"+d_parentGramma+"</gramma>";
  2103. queryString+="<parent></parent>";
  2104. queryString+="<parent_id></parent_id>";
  2105. queryString+="<mean>"+d_parentmean+"</mean>";
  2106. queryString+="<note></note>";
  2107. queryString+="<factors></factors>";
  2108. queryString+="<fm></fm>";
  2109. queryString+="<part_id></part_id>";
  2110. queryString+="<confer></confer>";
  2111. queryString+="<status>512</status>";
  2112. queryString+="<enable>TRUE</enable>";
  2113. queryString+="<language>"+d_language+"</language>";
  2114. queryString+="</word>";
  2115. iCount++;
  2116. }
  2117. //part recorder
  2118. arrPart = d_factors.split('+');
  2119. arrPartMean = d_fm.split('+');
  2120. if(arrPart.length>0 && arrPart.length==arrPartMean.length){
  2121. for(iPart in arrPart){
  2122. if(arrPartMean[iPart]!="?" && arrPartMean[iPart]!="" && arrPartMean[iPart]!=""){
  2123. arrPart[iPart]=arrPart[iPart].replace("(","");
  2124. arrPart[iPart]=arrPart[iPart].replace(")","");
  2125. queryString+="<word>";
  2126. queryString+="<guid></guid>";
  2127. queryString+="<pali>"+arrPart[iPart]+"</pali>";
  2128. queryString+="<type>.part.</type>";
  2129. queryString+="<gramma></gramma>";
  2130. queryString+="<parent></parent>";
  2131. queryString+="<parent_id></parent_id>";
  2132. queryString+="<mean>"+arrPartMean[iPart]+"</mean>";
  2133. queryString+="<note></note>";
  2134. queryString+="<factors></factors>";
  2135. queryString+="<fm></fm>";
  2136. queryString+="<part_id></part_id>";
  2137. queryString+="<confer></confer>";
  2138. queryString+="<status>512</status>";
  2139. queryString+="<enable>TRUE</enable>";
  2140. queryString+="<language>"+d_language+"</language>";
  2141. queryString+="</word>";
  2142. iCount++
  2143. }
  2144. }
  2145. }
  2146. }
  2147. }
  2148. queryString+="</wordlist>";
  2149. if(iCount>0){
  2150. editor_wbwUpdataXmlHttp.onreadystatechange=editor_wbwDictUpdata_serverResponse;
  2151. console.log("updata user dict start.",0);
  2152. editor_wbwUpdataXmlHttp.open("POST", "dict_updata_wbw.php", true);
  2153. editor_wbwUpdataXmlHttp.send(queryString);
  2154. }
  2155. else{
  2156. console.log("no user dicttionary data need updata.",0);
  2157. }
  2158. }
  2159. else
  2160. {
  2161. alert("Your browser does not support XMLHTTP.");
  2162. }
  2163. }
  2164. function editor_wbwDictUpdata_serverResponse(){
  2165. if (editor_wbwUpdataXmlHttp.readyState==4)// 4 = "loaded"
  2166. {
  2167. debugOutput("server response.",0);
  2168. if (editor_wbwUpdataXmlHttp.status==200)
  2169. {// 200 = "OK"
  2170. let serverText = editor_wbwUpdataXmlHttp.responseText;
  2171. var_dump(serverText);
  2172. debugOutput(serverText,0);
  2173. }
  2174. else
  2175. {
  2176. debugOutput(xmlhttp.statusText,0);
  2177. }
  2178. }
  2179. }
  2180. function uploadAllWordData(){
  2181. let x = gXmlBookDataBody.getElementsByTagName("word");
  2182. if(x.length>0){
  2183. editor_WbwUpdata(0,x.length-1);
  2184. }
  2185. else{
  2186. }
  2187. }
  2188. function renderCaseSelect(type,case1,case2,case3,unique_id,padding_width){
  2189. eCaseTable=document.getElementById("input_select_case");
  2190. eCaseItems = eCaseTable.getElementsByTagName("span");
  2191. if(type){
  2192. strTypeSelect="<div id=\"id_case_dropdown_0_"+unique_id+"\" class=\"case_dropdown gramma_selector\" style='min-width: unset;padding-right: "+padding_width+"em;'>";
  2193. strTypeSelect+="<p class=\"case_dropbtn cell\" style='line-height: 1.2em;'>"+getLocalGrammaStr(type)+"</p>";
  2194. }
  2195. else{
  2196. strTypeSelect="<div id=\"id_case_dropdown_0_"+unique_id+"\" class=\"case_dropdown gramma_selector\" style='min-width: unset;padding-right: "+padding_width+"em;'>";
  2197. strTypeSelect+="<p class=\"case_dropbtn cell\" style='line-height: 1.2em;'>?</p>";
  2198. }
  2199. strTypeSelect+="<div class=\"case_dropdown-content\">";
  2200. for(iType=0;iType<gLocal.type_str.length;iType++){
  2201. strTypeSelect+="<a onclick=\"caseChanged(0,'"+gLocal.type_str[iType].id+"')\">"+gLocal.type_str[iType].value+"</a>"
  2202. }
  2203. strTypeSelect+="</div>";
  2204. strTypeSelect+="</div>";
  2205. eCaseItems[0].innerHTML=strTypeSelect;
  2206. for(iType=0;iType<gramma_str.length;iType++){
  2207. if(gramma_str[iType].id==type){
  2208. var strTypeSelect="";
  2209. gramma=gramma_str[iType].a;
  2210. if(gramma.length>0){
  2211. items=gramma.split("$");
  2212. if(case1==""){
  2213. case1=items[0];
  2214. g_caseSelect[1]=case1;
  2215. }
  2216. strTypeSelect="<div id=\"id_case_dropdown_1_"+unique_id+"\" class=\"case_dropdown gramma_selector\" style='min-width: unset;padding-right: "+padding_width+"em;'><p class=\"case_dropbtn\" style='line-height: 1.2em;'>"+getLocalGrammaStr(case1)+"</p>";
  2217. strTypeSelect+="<div class=\"case_dropdown-content\">";
  2218. for(iItem=0;iItem<items.length;iItem++){
  2219. strTypeSelect+="<a onclick=\"caseChanged(1,'"+items[iItem]+"')\">"+getLocalGrammaStr(items[iItem])+"</a>"
  2220. }
  2221. strTypeSelect+="</div>";
  2222. strTypeSelect+="</div>";
  2223. }
  2224. else{
  2225. g_caseSelect[1]="";
  2226. }
  2227. eCaseItems[1].innerHTML=strTypeSelect;
  2228. strTypeSelect="";
  2229. gramma=gramma_str[iType].b;
  2230. if(gramma.length>0){
  2231. items=gramma.split("$");
  2232. if(case2==""){
  2233. case2=items[0];
  2234. g_caseSelect[2]=case2;
  2235. }
  2236. strTypeSelect="<div id=\"id_case_dropdown_2_"+unique_id+"\" class=\"case_dropdown gramma_selector\" style='min-width: unset;padding-right: "+padding_width+"em;'><p class=\"case_dropbtn\" style='line-height: 1.2em;'>"+getLocalGrammaStr(case2)+"</p>";
  2237. strTypeSelect+="<div class=\"case_dropdown-content\">";
  2238. for(iItem=0;iItem<items.length;iItem++){
  2239. strTypeSelect+="<a onclick=\"caseChanged(2,'"+items[iItem]+"')\">"+getLocalGrammaStr(items[iItem])+"</a>"
  2240. }
  2241. strTypeSelect+="</div>";
  2242. strTypeSelect+="</div>";
  2243. }
  2244. else{
  2245. g_caseSelect[2]="";
  2246. }
  2247. eCaseItems[2].innerHTML=strTypeSelect;
  2248. strTypeSelect="";
  2249. gramma=gramma_str[iType].c;
  2250. if(gramma.length>0){
  2251. items=gramma.split("$");
  2252. if(case3==""){
  2253. case3=items[0];
  2254. g_caseSelect[3]=case3;
  2255. }
  2256. strTypeSelect="<div id=\"id_case_dropdown_3_"+unique_id+"\" class=\"case_dropdown gramma_selector\" style='min-width: unset;padding-right: "+padding_width+"em;'><p class=\"case_dropbtn\" style='line-height: 1.2em;'>"+getLocalGrammaStr(case3)+"</p>";
  2257. strTypeSelect+="<div class=\"case_dropdown-content\">";
  2258. for(iItem=0;iItem<items.length;iItem++){
  2259. strTypeSelect+="<a onclick=\"caseChanged(3,'"+items[iItem]+"')\">"+getLocalGrammaStr(items[iItem])+"</a>"
  2260. }
  2261. strTypeSelect+="</div>";
  2262. strTypeSelect+="</div>";
  2263. }
  2264. else{
  2265. g_caseSelect[3]="";
  2266. }
  2267. eCaseItems[3].innerHTML=strTypeSelect;
  2268. }
  2269. }
  2270. }
  2271. function refreshCaseSelect(){
  2272. renderCaseSelect(g_caseSelect[0],g_caseSelect[1],g_caseSelect[2],g_caseSelect[3],"wbw",1);
  2273. var newCaseString=g_caseSelect[0]+"#";
  2274. if(g_caseSelect[1].length>0){
  2275. newCaseString+=g_caseSelect[1];
  2276. }
  2277. if(g_caseSelect[2].length>0){
  2278. newCaseString+="$"+g_caseSelect[2];
  2279. }
  2280. if(g_caseSelect[3].length>0){
  2281. newCaseString+="$"+g_caseSelect[3];
  2282. }
  2283. document.getElementById("input_case").value=newCaseString;
  2284. rela_refresh(g_currEditWord);
  2285. }
  2286. function caseChanged(index,newValue){
  2287. g_caseSelect[index]=newValue;
  2288. refreshCaseSelect();
  2289. refreshPartMeaningSelect();
  2290. }
  2291. function removeFormula_B(inStr){
  2292. pos=0;
  2293. copy=true;
  2294. var output="";
  2295. for(i=0;i<inStr.length;i++){
  2296. if(inStr[i]=="{" || inStr[i]=="["){
  2297. copy=false;
  2298. }
  2299. if(copy){
  2300. output+=inStr[i];
  2301. }
  2302. if(inStr[i]=="}" || inStr[i]=="]"){
  2303. copy=true;
  2304. }
  2305. }
  2306. return output;
  2307. }
  2308. function removeFormula(inStr){
  2309. if(inStr.indexOf("[")>=0){
  2310. return(inStr);
  2311. }
  2312. pos=0;
  2313. copy=true;
  2314. var output="";
  2315. for(i=0;i<inStr.length;i++){
  2316. if(inStr[i]=="{"){
  2317. copy=false;
  2318. }
  2319. if(copy){
  2320. output+=inStr[i];
  2321. }
  2322. if(inStr[i]=="}"){
  2323. copy=true;
  2324. }
  2325. }
  2326. return output;
  2327. }
  2328. //移除字符串中的格位公式
  2329. //input:[zzz]xxx[yyy]
  2330. //output:xxx
  2331. function removeFormulaB(inStr,sBegin,sEnd){
  2332. pos=0;
  2333. copy=true;
  2334. var output="";
  2335. for(i=0;i<inStr.length;i++){
  2336. if(inStr[i]==sBegin){
  2337. copy=false;
  2338. }
  2339. if(copy){
  2340. output+=inStr[i];
  2341. }
  2342. if(inStr[i]==sEnd){
  2343. copy=true;
  2344. }
  2345. }
  2346. return output;
  2347. }
  2348. function getFormulaFromMeaning(inStr,sBegin,sEnd){
  2349. let pos=0;
  2350. let fromulaBegin=false;
  2351. let meaningBegin=false;
  2352. let output="";
  2353. let meaningExisted=false;
  2354. for(i=0;i<inStr.length;i++){
  2355. if(inStr[i]==sBegin){
  2356. fromulaBegin=true;
  2357. meaningBegin=false;
  2358. }
  2359. else if(inStr[i]==sEnd){
  2360. fromulaBegin=false;
  2361. meaningBegin=true;
  2362. output+=inStr[i];
  2363. }
  2364. else{
  2365. if(!fromulaBegin){
  2366. meaningBegin=true;
  2367. }
  2368. }
  2369. if(meaningBegin && !meaningExisted){
  2370. output+="~";
  2371. meaningExisted = true ;
  2372. }
  2373. if(fromulaBegin){
  2374. output+=inStr[i];
  2375. }
  2376. }
  2377. return output;
  2378. }
  2379. //关闭单词修改窗口
  2380. function closeModifyWindow(){
  2381. var eWin = document.getElementById("modifywin");
  2382. if(eWin){
  2383. eWin.style.display="none";
  2384. document.getElementById("modifyDiv").appendChild(eWin);
  2385. gCurrModifyWindowParNo=-1;
  2386. }
  2387. else{
  2388. }
  2389. }
  2390. //取消对单个词的修改
  2391. function modifyCancel(){
  2392. //关闭单词修改窗口
  2393. closeModifyWindow();
  2394. //??????
  2395. getStyleClass("debug_info").style.display="none";
  2396. document.getElementById("debug").style.display="-webkit-flex";
  2397. document.getElementById("debug").style.display="-moz-flex";
  2398. document.getElementById("debug").style.display="-webkit-flex";
  2399. }
  2400. //获取某词的段落索引
  2401. function getParIndexByWordId(wordId){
  2402. //遍历所有块,找到这个单词
  2403. var bookId="";
  2404. var parNo="";
  2405. var allBlock=gXmlBookDataBody.getElementsByTagName("block")
  2406. for(var iBlock=0;iBlock<allBlock.length;iBlock++){
  2407. xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
  2408. xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
  2409. type=getNodeText(xmlParInfo,"type");
  2410. if(type=="wbw"){
  2411. words=xmlParData.getElementsByTagName("word");
  2412. for(var iWord=0;iWord<words.length;iWord++){
  2413. wId=getNodeText(words[iWord],"id");
  2414. if(wId==wordId){
  2415. bookId=getNodeText(xmlParInfo,"book");
  2416. parNo=getNodeText(xmlParInfo,"paragraph");
  2417. break;
  2418. }
  2419. }
  2420. }
  2421. }
  2422. if(bookId=="" || parNo==""){
  2423. return(false);
  2424. }
  2425. else{
  2426. for(var iPar=0;iPar<gArrayDocParagraph.length;iPar++){
  2427. currBookId=gArrayDocParagraph[iPar].book
  2428. currParNo=gArrayDocParagraph[iPar].paragraph
  2429. if(currBookId==bookId && currParNo==parNo){
  2430. return(iPar);
  2431. }
  2432. }
  2433. }
  2434. return(false);
  2435. }
  2436. var mouse_action_edit=true;
  2437. var mouse_action_lookup=true;
  2438. var mouse_action_translate=false;
  2439. function lock_key(obj,key,check_id,svg_id){
  2440. var lock_key_str=""
  2441. switch(key){
  2442. case "off":
  2443. lock_key_str+="<input id='"+check_id+"' type=\"checkbox\" style=\"display:none; \" />";
  2444. lock_key_str+="<svg class=\"icon\" onclick=lock_key('"+obj+"','on','"+check_id+"','"+svg_id+"')>";
  2445. lock_key_str+="<use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_"+svg_id+"_off\">";
  2446. lock_key_str+="</use></svg>";
  2447. document.getElementById(obj).innerHTML=lock_key_str;
  2448. break;
  2449. case "on":
  2450. lock_key_str+="<input id='"+check_id+"' type=\"checkbox\" style=\"display:none; \" checked/>";
  2451. lock_key_str+="<svg class=\"icon\" onclick=lock_key('"+obj+"','off','"+check_id+"','"+svg_id+"')>";
  2452. lock_key_str+="<use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_"+svg_id+"_on \">";
  2453. lock_key_str+="</use></svg>";
  2454. document.getElementById(obj).innerHTML=lock_key_str;
  2455. break;
  2456. }
  2457. }
  2458. function set_word_click_action(obj,item){
  2459. switch(item){
  2460. case "normal":
  2461. if(document.getElementById(obj).checked==true){
  2462. document.getElementById(obj).checked=false;
  2463. document.getElementById("icon_"+obj+"_on").style.display="none";
  2464. document.getElementById("icon_"+obj+"_off").style.display="block";
  2465. }
  2466. else{
  2467. document.getElementById(obj).checked=true;
  2468. document.getElementById("icon_"+obj+"_on").style.display="block";
  2469. document.getElementById("icon_"+obj+"_off").style.display="none";
  2470. }
  2471. break;
  2472. case "edit":
  2473. if(document.getElementById(obj).checked==true){
  2474. document.getElementById(obj).checked=false;
  2475. document.getElementById("icon_"+obj+"_on").style.display="none";
  2476. document.getElementById("icon_"+obj+"_off").style.display="block";
  2477. mouse_action_edit=document.getElementById(obj).checked;
  2478. }
  2479. else{
  2480. document.getElementById(obj).checked=true;
  2481. document.getElementById("icon_"+obj+"_on").style.display="block";
  2482. document.getElementById("icon_"+obj+"_off").style.display="none";
  2483. document.getElementById("icon_Trans_as_on").style.display="none";
  2484. document.getElementById("icon_Trans_as_off").style.display="block";
  2485. document.getElementById("Trans_as").checked=false;
  2486. mouse_action_translate=false;
  2487. mouse_action_edit=document.getElementById(obj).checked;
  2488. }
  2489. break;
  2490. case "lookup":
  2491. if(document.getElementById(obj).checked==true){
  2492. document.getElementById(obj).checked=false;
  2493. document.getElementById("icon_"+obj+"_on").style.display="none";
  2494. document.getElementById("icon_"+obj+"_off").style.display="block";
  2495. mouse_action_lookup=document.getElementById(obj).checked;
  2496. }
  2497. else{
  2498. document.getElementById(obj).checked=true;
  2499. document.getElementById("icon_"+obj+"_on").style.display="block";
  2500. document.getElementById("icon_"+obj+"_off").style.display="none";
  2501. document.getElementById("icon_Trans_as_on").style.display="none";
  2502. document.getElementById("icon_Trans_as_off").style.display="block";
  2503. document.getElementById("Trans_as").checked=false;
  2504. mouse_action_translate=false;
  2505. mouse_action_lookup=document.getElementById(obj).checked;
  2506. }
  2507. break;
  2508. case "translate":
  2509. if(document.getElementById(obj).checked==true){
  2510. document.getElementById(obj).checked=false;
  2511. document.getElementById("icon_"+obj+"_on").style.display="none";
  2512. document.getElementById("icon_"+obj+"_off").style.display="block";
  2513. mouse_action_translate=document.getElementById(obj).checked;
  2514. }
  2515. else{
  2516. document.getElementById(obj).checked=true;
  2517. document.getElementById("icon_"+obj+"_on").style.display="block";
  2518. document.getElementById("icon_"+obj+"_off").style.display="none";
  2519. document.getElementById("icon_Look_Up_on").style.display="none";
  2520. document.getElementById("icon_Look_Up_off").style.display="block";
  2521. document.getElementById("icon_Edit_Dialog_on").style.display="none";
  2522. document.getElementById("icon_Edit_Dialog_off").style.display="block";
  2523. document.getElementById("Edit_Dialog").checked=false;
  2524. document.getElementById("Look_Up").checked=false;
  2525. mouse_action_edit=false;
  2526. mouse_action_lookup=false;
  2527. mouse_action_translate=document.getElementById(obj).checked;
  2528. }
  2529. break;
  2530. }
  2531. }
  2532. //鼠标点击词头
  2533. function on_word_click(sWordId){
  2534. g_currEditWord=sWordId;
  2535. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  2536. var wid=getWordIndex(sWordId);
  2537. g_eCurrWord=xAllWord[wid];
  2538. var sReal = getNodeText(xAllWord[wid],"real");
  2539. var sParent = getNodeText(xAllWord[wid],"parent");
  2540. var sMeaning = getNodeText(xAllWord[wid],"mean");
  2541. //显示修改单个词的窗口
  2542. if(mouse_action_edit){
  2543. showModifyWin(sWordId)
  2544. }
  2545. //word Message
  2546. msg_show_content(1,sWordId);
  2547. msg_show_content_panal();
  2548. //术语
  2549. note_lookup(sParent,"term_dict");
  2550. //参考字典
  2551. if(mouse_action_lookup){
  2552. dict_search(sReal);
  2553. }
  2554. //添加词到翻译框
  2555. //if(mouse_action_translate){
  2556. // add_word_to_tran_win(sMeaning);
  2557. //}
  2558. }
  2559. function note_apply(guid){
  2560. }
  2561. /*
  2562. function apply_button_lock(){
  2563. if($("#input_lock")[0].checked){// || g_currBookMarkColor!="bmc0"
  2564. $("#apply_to_down")[0].disabled=true;
  2565. $("#apply_to_up")[0].disabled=true;
  2566. $("#apply_to_all")[0].disabled=true;
  2567. }
  2568. else{
  2569. $("#apply_to_down")[0].disabled=false;
  2570. $("#apply_to_up")[0].disabled=false;
  2571. $("#apply_to_all")[0].disabled=false;
  2572. }
  2573. }
  2574. */
  2575. function mdf_win_data_change(key,value){
  2576. $("#"+key).val(value);
  2577. }
  2578. function mdf_win_part_change(strPart){
  2579. $("#input_org").val(strPart);
  2580. input_org_change();
  2581. }
  2582. function mdf_win_case_change(strCase){
  2583. let aCase=strCase.split("#");
  2584. let type="";
  2585. let gramma="";
  2586. if(aCase[0]){
  2587. type=aCase[0];
  2588. }
  2589. if(aCase[0]){
  2590. type=aCase[0];
  2591. }
  2592. if(aCase[1]){
  2593. gramma=aCase[1];
  2594. }
  2595. $("#input_case").val(strCase);
  2596. let arrGramma=gramma.split("$");
  2597. g_caseSelect[0]=type;
  2598. if(arrGramma[0]){
  2599. g_caseSelect[1]=arrGramma[0];
  2600. }
  2601. else{
  2602. g_caseSelect[1]="";
  2603. }
  2604. if(arrGramma[1]){
  2605. g_caseSelect[2]=arrGramma[1];
  2606. }
  2607. else{
  2608. g_caseSelect[2]="";
  2609. }
  2610. if(arrGramma[2]){
  2611. g_caseSelect[3]=arrGramma[2];
  2612. }
  2613. else{
  2614. g_caseSelect[3]="";
  2615. }
  2616. refreshCaseSelect();
  2617. }
  2618. //显示修改单个词的窗口
  2619. function showModifyWin(sWordId){
  2620. //获取当前编辑的单词所在的段的索引号
  2621. gCurrModifyWindowParNo=getParIndexByWordId(sWordId);
  2622. let xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  2623. let wid=getWordIndex(sWordId);
  2624. let tWin="";
  2625. let tApply = "";
  2626. let eWord=document.getElementById("wb"+sWordId);
  2627. let eWin = document.getElementById("modifywin");
  2628. let eWordInfo = document.getElementById("modify_detaile");
  2629. let eApply = document.getElementById("modify_apply");
  2630. let sReal = getNodeText(xAllWord[wid],"real");
  2631. let sParent = getNodeText(xAllWord[wid],"parent");
  2632. let sMeaning = getNodeText(xAllWord[wid],"mean");
  2633. let sOrg = getNodeText(xAllWord[wid],"org");
  2634. let sOm = getNodeText(xAllWord[wid],"om");
  2635. let sCase = getNodeText(xAllWord[wid],"case");
  2636. let sParentGrammar = getNodeText(xAllWord[wid],"pg");
  2637. let sParent2 = getNodeText(xAllWord[wid],"parent2");
  2638. //showCurrWordTable(sReal);
  2639. if(g_useMode=="edit"){
  2640. $("#input_meaning").val(sMeaning);
  2641. $("#input_org").val(sOrg);
  2642. $("#input_om").val(sOm);
  2643. $("#input_case").val(sCase);
  2644. if(sParentGrammar!="" || sParent2!=""){
  2645. document.getElementById("edit_detail_prt_prt").style.display="flex";
  2646. document.getElementById("svg_parent2").style.transform="rotate(90deg)";
  2647. }
  2648. else{
  2649. document.getElementById("edit_detail_prt_prt").style.display="none";
  2650. document.getElementById("svg_parent2").style.transform="rotate(0deg)";
  2651. }
  2652. document.getElementById("parent_grammar").innerHTML=sParentGrammar;
  2653. $("#id_text_prt_prt").val(sParent2);
  2654. //右侧修改菜单
  2655. $("#word_mdf_mean_dropdown").html(render_word_menu_mean(g_currEditWord,1));
  2656. $("#word_mdf_parts_dropdown").html(render_word_menu_parts(sWordId,1));
  2657. $("#word_mdf_case_dropdown").html(render_word_menu_gramma(sWordId,1));
  2658. $("#word_mdf_parent_dropdown").html(render_word_menu_parent(sWordId));
  2659. let typeAndGramma=sCase.split("#");
  2660. if(typeAndGramma.length>1){
  2661. sType=typeAndGramma[0];
  2662. sGramma=typeAndGramma[1];
  2663. }
  2664. else{
  2665. sType="";
  2666. sGramma=typeAndGramma[0];
  2667. }
  2668. g_caseSelect[0]=sType;
  2669. aGramma=sGramma.split("$");
  2670. lenGramma=aGramma.length;
  2671. if(lenGramma>3){
  2672. lenGramma=3;
  2673. }
  2674. for(iGramma=0;iGramma<lenGramma;iGramma++){
  2675. g_caseSelect[iGramma+1]=aGramma[iGramma];
  2676. }
  2677. //刷新type and gramma 下拉菜单选项
  2678. refreshCaseSelect();
  2679. //刷新part meaning 下拉菜单选项
  2680. g_currPartMeaning="";
  2681. g_initPartMeaning=true;
  2682. refreshPartMeaningSelect();
  2683. if(sOrg!="?" && sOrg!=""){
  2684. input_org_change(document.getElementById("input_org"));
  2685. }
  2686. tApply += "<div class=\"modifybutton\">";
  2687. tApply += "<p style='display: flex' >"//onclick=apply_button_lock()
  2688. if (getNodeText(xAllWord[wid], "lock") == "true") {
  2689. tApply += "<span class='apply_to' id='edit_lock' align=\"left\">";
  2690. tApply += "<input type=\"checkbox\" style=\" display:none;\" align=\"left\" id='input_lock' checked />"
  2691. tApply += "<svg class=\"icon\" onclick=lock_key('edit_lock','off','input_lock','lock')><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_lock_on \"></use></svg>";
  2692. tApply += "</span>"
  2693. }
  2694. else{
  2695. tApply += "<span class='apply_to' id='edit_lock' align=\"left\">";
  2696. tApply += "<input type=\"checkbox\" style=\" display:none;\" align=\"left\" id='input_lock' />";
  2697. tApply += "<svg class=\"icon\" onclick=lock_key('edit_lock','on','input_lock','lock')><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_lock_off\"></use></svg>";
  2698. tApply += "</span>";
  2699. }
  2700. //tApply += "<button onclick=\"upload_to_my_dict()\">上传到我的字典</button>";
  2701. let allword=doc_word();
  2702. let sameCount=0;
  2703. for(let i=0 ; i<allword.length;i++){
  2704. if(sReal == getNodeText(allword[i],"real") || (sParent!="" && sParent==getNodeText(allword[i],"parent"))){
  2705. sameCount++;
  2706. }
  2707. }
  2708. if(sameCount>1){
  2709. tApply += "<span>";
  2710. }
  2711. else{
  2712. tApply += "<span style='display:none'>";
  2713. }
  2714. tApply += "<input id='checkbox_apply_same' type=\"checkbox\" style=\" width:14px; height:14px; margin-left:10px;\" align=\"left\"/>"+gLocal.gui.applyto+"&nbsp;<span id='same_word_count' >"+(sameCount+1)+"&nbsp;"+gLocal.gui.same_word+"</span>";
  2715. tApply += "</span>";
  2716. tApply += "<span class='apply_to' id='upload_lock' align=\"left\">";
  2717. tApply += "<input type=\"checkbox\" style=\"display:none; width:14px; height:14px; margin-left:10px;\" align=\"left\" id='input_to_db' />";
  2718. //tApply += "<svg class=\"icon\" onclick=lock_key('upload_lock','on','input_to_db','cloud')><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_cloud_off\"></span>";
  2719. tApply += "</span>";
  2720. tApply += "</p>";
  2721. tApply+= "</div>";
  2722. tApply+= "<div class=\"modifycancel\" align=\"right\">";
  2723. /*
  2724. tApply += "<span class='apply_to'>"
  2725. tApply+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_format_paint\">";
  2726. tApply += "</span>";
  2727. tApply+= "<button class='apply_to' id='apply_to_down' onclick=\"modifyApply('" + sWordId + "','down')\" title='向下填充'>";
  2728. tApply+= "<svg style='transform: rotate(180deg)' class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_file_upload\">";
  2729. tApply+= "</button>";
  2730. tApply+= "<button class=' apply_to' id='apply_to_up' onclick=\"modifyApply('" + sWordId + "','up')\" title='向上填充'>";
  2731. tApply+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_file_upload\">";
  2732. tApply+= "</button>";
  2733. tApply+= "<button class=' apply_to' id='apply_to_all' onclick=\"modifyApply('" + sWordId + "','all')\" title='更新全部'>";
  2734. tApply+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_format_line_spacing\">";
  2735. tApply+= "</button>";
  2736. */
  2737. tApply+= "<button class=' apply_to' id='apply_to_this' onclick=\"modifyApply('" + sWordId + "',true)\" title='Save and Favorite'>";
  2738. tApply+= gLocal.gui.save;
  2739. tApply+= "</button>";
  2740. tApply+= "<button class=' apply_to' id='apply_to_this' onclick=\"modifyApply('" + sWordId + "',false)\" title='Save Draft'>";
  2741. tApply+= gLocal.gui.draft;
  2742. tApply+= "</button>";
  2743. tApply+= "<button class=' apply_to' onclick=\"modifyCancel()\">";
  2744. tApply+= gLocal.gui.cancel;
  2745. tApply+= "</button>";
  2746. tApply+= "</div>";
  2747. eApply.innerHTML = tApply;
  2748. document.getElementById("id_text_bookmark").value=getNodeText(xAllWord[wid],"bmt");
  2749. document.getElementById("id_text_note").value=getNodeText(xAllWord[wid],"note");
  2750. document.getElementById("id_text_id").innerHTML=get_book_name_by_id(getNodeText(xAllWord[wid],"id"));
  2751. document.getElementById("id_text_pali").value=getNodeText(xAllWord[wid],"pali");
  2752. document.getElementById("id_text_real").value=getNodeText(xAllWord[wid],"real");
  2753. document.getElementById("id_text_parent").value=getNodeText(xAllWord[wid],"parent");
  2754. $("#id_relation_text").val(getNodeText(xAllWord[wid],"rela"));
  2755. rela_refresh(sWordId);
  2756. if(getNodeText(xAllWord[wid],"bmc")==""){
  2757. g_currBookMarkColor="bmc0";
  2758. }
  2759. else{
  2760. g_currBookMarkColor=getNodeText(xAllWord[wid],"bmc");
  2761. }
  2762. getBookMarkColor(g_currBookMarkColor);
  2763. eWin.style.display="block";
  2764. var sDetail="detail"+sWordId;
  2765. var eDetail=document.getElementById(sDetail);
  2766. eWord.insertBefore(eWin,eDetail);
  2767. document.getElementById("dict_ref_search_input").value=sReal;
  2768. //editor_refresh_inline_dict(sReal);
  2769. }
  2770. }
  2771. function get_book_name_by_id(bookid){
  2772. var book_id=bookid.split("-")[0];
  2773. var book_id2=bookid.slice(book_id.length);
  2774. for(i_bookname in local_palicannon_index){
  2775. if(book_id==local_palicannon_index[i_bookname].id){
  2776. book_id2=local_palicannon_index[i_bookname].title+book_id2;
  2777. }
  2778. }
  2779. return(book_id2);
  2780. }
  2781. function add_word_to_tran_win(sMeaning){
  2782. var tranObj=document.getElementById("id_text_edit_form");
  2783. if(tranObj && tranObj.style.display!="none"){
  2784. var textObj=document.getElementById("id_text_edit_area");
  2785. if(textObj){
  2786. textObj.value += sMeaning;
  2787. }
  2788. }
  2789. }
  2790. //编辑窗口拆分改变
  2791. var g_arrPartMean=null;
  2792. var g_initPartMeaning=true;
  2793. var mDict=new Array();
  2794. function input_org_change(){
  2795. g_arrPartMean=null;
  2796. g_initPartMeaning=true;
  2797. var arrPart=$("#input_org").val().split("+");
  2798. var arrNewPart=new Array();
  2799. var i;
  2800. for(i in arrPart){
  2801. if(!mDict[arrPart[i]]){
  2802. arrNewPart.push(arrPart[i]);
  2803. }
  2804. }
  2805. if(arrNewPart.length>0){
  2806. //如果有内存字典里面没有的单词,查询
  2807. $.get("dict_find_one.php",
  2808. {
  2809. word:arrNewPart.join(),
  2810. type:"part"
  2811. },
  2812. function(data,status){
  2813. try{
  2814. var worddata=JSON.parse(data);
  2815. }
  2816. catch(e){
  2817. console.error(e.error);
  2818. }
  2819. if(worddata.length>0){
  2820. var spell=new Array();
  2821. for(var i in worddata){
  2822. if(mDict[worddata[i].pali]){
  2823. spell[worddata[i].pali]=1;
  2824. }
  2825. else{
  2826. spell[worddata[i].pali]=0;
  2827. }
  2828. }
  2829. for(var word in spell){
  2830. if(spell[word]==0){
  2831. mDict[word]=new Array();
  2832. }
  2833. }
  2834. for(var i in worddata){
  2835. if(spell[worddata[i].pali]==0){
  2836. mDict[worddata[i].pali].push(worddata[i]);
  2837. }
  2838. }
  2839. }
  2840. else{
  2841. }
  2842. refreshPartMeaningSelect();
  2843. });
  2844. }
  2845. else{
  2846. refreshPartMeaningSelect();
  2847. }
  2848. }
  2849. function load_my_formula(){
  2850. //如果有内存字典里面没有的单词,查询
  2851. console.log("load_my_formula - dict_find_one.php");
  2852. $.get("dict_find_one.php",
  2853. {
  2854. word:"_formula_",
  2855. dict_name:"../../user/wbw.db3",
  2856. deep:1
  2857. },
  2858. function(data,status){
  2859. try{
  2860. myFormula=JSON.parse(data);
  2861. }
  2862. catch(e){
  2863. console.error(e.error);
  2864. }
  2865. });
  2866. }
  2867. function part_mean_ok(){
  2868. var part_mean_ok_str=g_arrPartMean.join("+");
  2869. part_mean_ok_str="#"+part_mean_ok_str+"#"
  2870. part_mean_ok_str=part_mean_ok_str.replace(/\+ /g,"+");
  2871. part_mean_ok_str=part_mean_ok_str.replace(/ \+/g,"+");
  2872. part_mean_ok_str=part_mean_ok_str.replace(/\# /g,"");
  2873. part_mean_ok_str=part_mean_ok_str.replace(/ \#/g,"");
  2874. part_mean_ok_str=part_mean_ok_str.replace(/\#/g,"");
  2875. document.getElementById("input_om").value=part_mean_ok_str;//.slice(0,-1);
  2876. }
  2877. /*
  2878. 编辑窗口中拆分下拉菜单改变
  2879. */
  2880. function meaningPartChange(index,newValue){
  2881. g_initPartMeaning=false;
  2882. g_arrPartMean[index]=newValue;
  2883. part_mean_ok()
  2884. refreshPartMeaningSelect();
  2885. }
  2886. function input_org_switch(id_1,id_2){
  2887. document.getElementById(id_1).style.display="none";
  2888. document.getElementById(id_2).style.display="inline-flex";
  2889. document.getElementById(id_2).focus();
  2890. refreshPartMeaningSelect();
  2891. }
  2892. function refreshPartMeaningSelect(){
  2893. var part = document.getElementById("input_org").value;
  2894. var arrPart = new Array;
  2895. if(part=="" || part.lastIndexOf("+")==-1){
  2896. arrPart.push(part);
  2897. }
  2898. else{
  2899. arrPart=part.split("+");
  2900. }
  2901. if(g_initPartMeaning){
  2902. g_arrPartMean=part.split("+");
  2903. }
  2904. var output="";
  2905. //output="<span style='width:90%' onclick=\"input_org_switch('input_org_select','input_om')\"></span><br/>"
  2906. for(iPart in arrPart){
  2907. output+=getMeaningMenuList(iPart,arrPart[iPart])
  2908. if(arrPart.length==1){
  2909. break;
  2910. }
  2911. else if(iPart<arrPart.length-1){
  2912. output+="+";
  2913. }
  2914. }
  2915. output += "<div>";
  2916. output+= "<button style='margin-left:auto; padding: 1px 6px;' onclick=\"copy_part_mean_to_mean()\">";
  2917. output+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_vertical_align_top\">";
  2918. output+= "</button>";
  2919. output+= "<button style='margin-left:auto; padding: 1px 6px;' onclick=\"input_org_switch('input_org_select','input_om')\">";
  2920. output+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_mode_edit\">";
  2921. output+= "</button>";
  2922. output+= "</div>";
  2923. document.getElementById("input_org_select").innerHTML=output;
  2924. //增加拆分意思所见即所得
  2925. var part_mean_display_str=document.getElementById("input_om").value;
  2926. var part_mean_display_array=new Array;
  2927. if(part_mean_display_str.lastIndexOf("+")!=-1){
  2928. part_mean_display_array=part_mean_display_str.split("+");
  2929. }
  2930. else{
  2931. part_mean_display_array.push(part_mean_display_str);
  2932. }
  2933. if(part_mean_display_array.length<=arrPart.length){
  2934. for(i_display in part_mean_display_array){
  2935. document.getElementById("org_part_mean_"+i_display).innerHTML=part_mean_display_array[i_display];
  2936. }
  2937. if(part_mean_display_array.length<arrPart.length){
  2938. for(i_display=part_mean_display_array.length;i_display<arrPart.length; i_display++){
  2939. document.getElementById("org_part_mean_"+i_display).innerHTML="↓↓";
  2940. }
  2941. }
  2942. }
  2943. else{
  2944. for(i_display in arrPart){
  2945. if(i_display==arrPart.length-1){
  2946. var part_mean_display_str_last=""
  2947. for(j_display=i_display;j_display<part_mean_display_array.length;j_display++){
  2948. part_mean_display_str_last+=part_mean_display_array[j_display];
  2949. }
  2950. document.getElementById("org_part_mean_"+i_display).innerHTML=part_mean_display_str_last;
  2951. }
  2952. else{
  2953. document.getElementById("org_part_mean_"+i_display).innerHTML=part_mean_display_array[i_display];
  2954. }
  2955. }
  2956. }
  2957. }
  2958. //编辑窗口拆分意思复制到整体意思
  2959. function copy_part_mean_to_mean(){
  2960. $("#input_meaning").val(removeFormulaB(g_arrPartMean.join(""),"[","]"));
  2961. }
  2962. //编辑窗口拆分意思下拉菜单
  2963. function getMeaningMenuList(index,word){
  2964. var currMeaningList0=getWordMeaningList(word);
  2965. var currMeaningList=new Array;
  2966. var part_mean_display_str=document.getElementById("input_om").value;
  2967. var part_mean_display_array=new Array;
  2968. if(part_mean_display_str.lastIndexOf("+")!=-1){
  2969. part_mean_display_array=part_mean_display_str.split("+");
  2970. }
  2971. else{
  2972. part_mean_display_array.push(part_mean_display_str);
  2973. }
  2974. if(part_mean_display_array.length-1>=index){
  2975. currMeaningList.push(part_mean_display_array[index]);
  2976. }
  2977. else{
  2978. currMeaningList.push("↓↓");
  2979. }
  2980. for(MeaningList_i in currMeaningList0){
  2981. currMeaningList.push(currMeaningList0[MeaningList_i]);
  2982. }
  2983. var output="";
  2984. output +="<div class=\"case_dropdown\" style='display:inline-block;'>";
  2985. output += "<p id='org_part_mean_"+index+"' class='case_dropbtn' >";
  2986. if(g_initPartMeaning){
  2987. output += currMeaningList[0];
  2988. g_arrPartMean[index]=currMeaningList[0];
  2989. }
  2990. else{
  2991. output += g_arrPartMean[index];
  2992. }
  2993. output +="</p>";
  2994. output +="<div class=\"case_dropdown-content\" id='part_mean_menu_"+index+"'>";
  2995. //直列菜单
  2996. for(i in currMeaningList){
  2997. output +="<a onclick='meaningPartChange("+index+",\""+currMeaningList[i]+"\")'>"+currMeaningList[i]+"</a>";
  2998. }
  2999. //带字典名的菜单
  3000. /*
  3001. if(mDict[word]){
  3002. for(var j=0;j<mDict[word].length;j++){
  3003. //
  3004. output += "<div class='om_menu'>";
  3005. var dictName = mDict[word][j].dict_name;
  3006. if(dictName==""){
  3007. dictName="未知";
  3008. }
  3009. output += "<span>"+dictName+"</span>";
  3010. var currOM=mDict[word][j].mean.split("$");
  3011. for(var iMean in currOM){
  3012. if(currOM[iMean].length>0 && currOM[iMean]!="?"){
  3013. output +="<a onclick='meaningPartChange("+index+",\""+currOM[iMean]+"\")'>"+currOM[iMean]+"</a>";
  3014. }
  3015. }
  3016. output +="</div>";
  3017. }
  3018. }
  3019. else{
  3020. output += "未知";
  3021. }
  3022. */
  3023. output +="</div>";
  3024. output +="</div>";
  3025. return(output);
  3026. }
  3027. function getWordMeaningList(word){
  3028. var currOM="";
  3029. var arrOM = new Array();
  3030. var thisWord=word;
  3031. //新的方法 内存字典用索引数组
  3032. if(mDict[word]){
  3033. for(var j=0;j<mDict[word].length;j++){
  3034. if(mDict[word][j].mean){
  3035. var currOM=mDict[word][j].mean.split("$");
  3036. for(iMean in currOM){
  3037. if(currOM[iMean].length>0 && currOM[iMean]!="?"){
  3038. pushNewToList(arrOM,currOM[iMean]);
  3039. }
  3040. }
  3041. }
  3042. }
  3043. }
  3044. if(arrOM.length==0){
  3045. arrOM.push("?");
  3046. }
  3047. return(arrOM);
  3048. }
  3049. function edit_un_remove(parentId){
  3050. edit_un_RemoveHtmlNode(parentId);
  3051. var xWord = gXmlBookDataBody.getElementsByTagName("word");
  3052. var count=0;
  3053. for(iWord=xWord.length-1;iWord>=0;iWord--){
  3054. if(getNodeText(xWord[iWord],"un")==parentId){
  3055. xWord[iWord].parentNode.removeChild(xWord[iWord]);
  3056. count++;
  3057. }
  3058. }
  3059. var parentElement = document.getElementById('wb'+parentId);
  3060. if(parentElement){
  3061. parentElement.classList.remove("un_parent");
  3062. parentElement.classList.remove("comp_parent");
  3063. }
  3064. user_wbw_push_word(parentId);
  3065. user_wbw_commit();
  3066. com_XmlAllWordRefresh();
  3067. modifyWordDetailByWordId(parentId);
  3068. var_dump(gLocal.gui.removeword+": "+count);
  3069. }
  3070. function edit_un_RemoveHtmlNode(parentId){
  3071. var xAllWord=gXmlBookDataBody.getElementsByTagName("word");
  3072. for(wordIndex=0;wordIndex<xAllWord.length;wordIndex++){
  3073. if(getNodeText(xAllWord[wordIndex],"un")==parentId){
  3074. var childId=getNodeText(xAllWord[wordIndex],"id");
  3075. var element=document.getElementById("wb"+childId);
  3076. element.parentNode.removeChild(element);
  3077. }
  3078. }
  3079. }
  3080. /*
  3081. 拆连读词
  3082. */
  3083. function edit_un_split(parentId){
  3084. var xBlock = gXmlBookDataBody.getElementsByTagName("block");
  3085. var iWordCount=0;
  3086. for(iBlock=0;iBlock<xBlock.length;iBlock++){
  3087. var xData=xBlock[iBlock].getElementsByTagName("data")[0]
  3088. xWord = xData.getElementsByTagName("word");
  3089. for(iWord=0;iWord<xWord.length;iWord++){
  3090. if(getNodeText(xWord[iWord],"id")==parentId){
  3091. mType=getNodeText(xWord[iWord],"case").split("#")[0];
  3092. if(mType==".un." || mType==".comp."){
  3093. nextElement=com_get_nextsibling(xWord[iWord]);
  3094. if(nextElement!=null){//下一个元素存在
  3095. if(getNodeText(nextElement,"un")==parentId){//若有孩子則不进行任何处理,直接返回
  3096. return;
  3097. }
  3098. }
  3099. }
  3100. else{//若不是连读词則不进行任何处理,直接返回
  3101. return;
  3102. }
  3103. if(getNodeText(xWord[iWord],"mean")=="?"){
  3104. setNodeText(xWord[iWord],"mean","_un_auto_mean_");
  3105. }
  3106. if(getNodeText(xWord[iWord],"om")=="?"){
  3107. setNodeText(xWord[iWord],"om","_un_auto_factormean_");
  3108. }
  3109. var parentElement = document.getElementById('wb'+parentId);
  3110. if(parentElement){
  3111. if(mType==".un."){
  3112. parentElement.classList.add("un_parent");
  3113. }
  3114. else{
  3115. parentElement.classList.add("comp_parent");
  3116. }
  3117. }
  3118. var nextWordNodeId=getNodeText(xWord[iWord+1],"id")
  3119. if(mType==".un."){
  3120. var org="[+"+getNodeText(xWord[iWord],"org")+"+]";
  3121. }
  3122. else{
  3123. var org=getNodeText(xWord[iWord],"org").replace(/\+/g,"+-+");
  3124. }
  3125. var sSubPali=org.split("+");
  3126. var orgReal=org.replace(/n\+/g,"ṃ+");//智能識別結尾為n的拆分
  3127. orgReal=orgReal.replace(/ñ\+/g,"ṃ+");//智能識別結尾為n的拆分
  3128. orgReal=orgReal.replace(/m\+/g,"ṃ+");//智能識別結尾為n的拆分
  3129. orgReal=orgReal.replace(/d\+/g,"ṃ+");//智能識別結尾為n的拆分
  3130. var sSubReal=orgReal.split("+");
  3131. for(iNewWord=0;iNewWord<sSubPali.length;iNewWord++){
  3132. var newNode=gXmlBookData.createElement("word");
  3133. setNodeText(newNode,"pali",sSubPali[iNewWord]);
  3134. var newGUID=parentId+"-"+iNewWord;
  3135. setNodeText(newNode,"id",newGUID);
  3136. setNodeText(newNode,"un",parentId);
  3137. let newPali = sSubReal[iNewWord].toLowerCase();
  3138. if(sSubPali[iNewWord]=="[" ){
  3139. setNodeText(newNode,"real","");
  3140. setNodeText(newNode,"case",".un:begin.");
  3141. }
  3142. else if( sSubPali[iNewWord]=="]"){
  3143. setNodeText(newNode,"real","");
  3144. setNodeText(newNode,"case",".un:end.");
  3145. }
  3146. else{
  3147. setNodeText(newNode,"real",newPali);//real转换为小写
  3148. setNodeText(newNode,"case","?");
  3149. }
  3150. let newMeaning=findFirstMeanInDict(newPali);
  3151. let newParts = findFirstPartInDict(newPali);
  3152. let newPartMean = findFirstPartMeanInDict(newPali);
  3153. let newCase = findFirstCaseInDict(newPali);
  3154. setNodeText(newNode,"mean",newMeaning);
  3155. setNodeText(newNode,"org",newParts);
  3156. setNodeText(newNode,"om",newPartMean);
  3157. setNodeText(newNode,"case",newCase);
  3158. if(iWord==xWord.length-1){
  3159. xData.insertBefore(newNode,null);
  3160. edit_un_AddNewHtmlNode(nextWordNodeId,sSubPali[iNewWord],newGUID,iWordCount+iNewWord+1);
  3161. }
  3162. else{
  3163. xData.insertBefore(newNode,xWord[iWord+iNewWord+1]);
  3164. edit_un_AddNewHtmlNode(nextWordNodeId,sSubPali[iNewWord],newGUID,iWordCount+iNewWord+1);
  3165. }
  3166. }
  3167. modifyWordDetailByWordId(parentId);
  3168. word_mouse_event();//添加鼠标事件,每次都执行效率低以后需要修改
  3169. var_dump(gLocal.gui.unsplit+" "+gLocal.gui.ok);
  3170. user_wbw_push_word(parentId);
  3171. user_wbw_commit();
  3172. return;
  3173. }
  3174. iWordCount++;
  3175. }
  3176. }
  3177. }
  3178. function edit_un_AddNewHtmlNode(nextNodeId,strInsert,guid,id){
  3179. var xWord = gXmlBookDataBody.getElementsByTagName("word");
  3180. var iWordIndex=getWordIndex(guid);
  3181. var parentId=guid.split("_")[0];
  3182. var parentElement=document.getElementById("wb"+parentId);
  3183. var element=document.getElementById("wb"+nextNodeId);
  3184. var divWord=document.createElement("div");
  3185. var typ=document.createAttribute("class");
  3186. if(strInsert.length<=1){
  3187. typ.nodeValue="word_punc";
  3188. }
  3189. else{
  3190. typ.nodeValue="word";
  3191. }
  3192. divWord.attributes.setNamedItem(typ);
  3193. var typId=document.createAttribute("id");
  3194. typId.nodeValue="wb"+guid;
  3195. divWord.attributes.setNamedItem(typId);
  3196. var txtOut="";
  3197. /*word block begin*/
  3198. //add more class string for union word
  3199. sUnParent=getNodeText(xWord[iWordIndex],"un");
  3200. sWordCase=getNodeText(xWord[iWordIndex],"case");
  3201. txtUnClass="";
  3202. if(sUnParent.length>0){
  3203. switch(sWordCase){
  3204. case ".un:begin.":
  3205. txtUnClass=" un_begin";
  3206. break;
  3207. case ".un:begin.":
  3208. txtUnClass=" un_end";
  3209. break;
  3210. default:
  3211. txtUnClass=" un_pali";
  3212. break;
  3213. }
  3214. }
  3215. //word head being
  3216. /*长度为1的为标点符号*/
  3217. if(strInsert.length<=1){
  3218. txtOut = txtOut + "<p class='pali "+txtUnClass+"' name='wPali'>";
  3219. txtOut = txtOut + "<span class='paliword' name=\"spali\">" + strInsert+ "</span>";
  3220. txtOut = txtOut + "<span class='paliword2' name=\"spali\"></span>";
  3221. txtOut = txtOut + "</p>\n";
  3222. }
  3223. else{
  3224. txtOut = txtOut + "<p class='pali "+txtUnClass+"' name='wPali'>";
  3225. txtOut = txtOut +"<a name='w"+guid+"' title=\"\" onclick='on_word_click(\""+guid+"\")'>";
  3226. txtOut = txtOut + "<span class='paliword' name=\"spali\">"+strInsert+"</span>";
  3227. txtOut = txtOut + "<span class='paliword2' name=\"spali\"></span>";
  3228. txtOut = txtOut + "</a>";
  3229. txtOut = txtOut + "</p>\n";
  3230. }
  3231. //word head end
  3232. /*Detail being*/
  3233. txtOut = txtOut + "<div id='detail"+guid+"'>";
  3234. txtOut = txtOut + renderWordDetailById(guid);
  3235. txtOut = txtOut + "</div>";
  3236. //detail end
  3237. //word block end
  3238. divWord.innerHTML=txtOut;
  3239. //如果下一个词不存在。
  3240. if(element){
  3241. element.parentNode.insertBefore(divWord,element);
  3242. }
  3243. else{
  3244. parentElement.parentNode.appendChild(divWord);
  3245. }
  3246. }
  3247. function file_export_html_validate_form(thisform)
  3248. {
  3249. with (thisform)
  3250. {
  3251. var tocstring=document.getElementById("content").innerHTML;
  3252. var suttastring=document.getElementById("sutta_text").innerHTML;
  3253. txt_toc.value=tocstring.replace(/onclick/g,"");
  3254. txt_sutta.value=suttastring.replace(/onclick/g,"");
  3255. return true;
  3256. }
  3257. }
  3258. function show_case_input(obj){
  3259. if(obj.checked){
  3260. document.getElementById("input_case").style.display="block";
  3261. }
  3262. else{
  3263. document.getElementById("input_case").style.display="none";
  3264. }
  3265. }
  3266. function edit_tran_save(){
  3267. let eBlock;
  3268. switch(gTextEditMediaType){
  3269. case "translate" :
  3270. newText=document.getElementById("id_text_edit_area").value;
  3271. newText=newText.replace(/\n\n/g,"<br />");
  3272. newText=term_edit_to_std_str(newText);
  3273. setTranText(gEditorTranslateEditBlockId,newText);
  3274. eBlock=document.getElementById("id_tran_"+gEditorTranslateEditBlockId);
  3275. if(eBlock){
  3276. eBlock.innerHTML=renderTranslateParBlockInnerById(gEditorTranslateEditBlockId);
  3277. term_updata_translation();
  3278. }
  3279. break;
  3280. case "note":
  3281. setNoteText(gEditorNoteEditBlockId,document.getElementById("id_text_edit_area").value);
  3282. newText=document.getElementById("id_text_edit_area").value;
  3283. newText=newText.replace(/\n/g,"<br />");
  3284. eBlock=document.getElementById("note_sen_"+gEditorNoteEditBlockId+"_0");
  3285. if(eBlock){
  3286. eBlock.innerHTML=newText;
  3287. }
  3288. break;
  3289. case "heading":
  3290. var newHeadingInfo=new Object();
  3291. newHeadingInfo.level=document.getElementById("id_heading_edit_level").value
  3292. newHeadingInfo.language=document.getElementById("id_text_edit_language").value
  3293. newHeadingInfo.author=document.getElementById("id_text_edit_author").value
  3294. newHeadingInfo.text=document.getElementById("id_text_edit_area").value
  3295. setHeadingInfo(gEditorHeadingEditBlockId,newHeadingInfo);
  3296. newText=document.getElementById("id_text_edit_area").value;
  3297. newText=newText.replace(/\n/g,"<br />");
  3298. eBlock=document.getElementById("id_heading_text_"+gEditorHeadingEditBlockId);
  3299. if(eBlock){
  3300. eBlock.innerHTML=newText;
  3301. }
  3302. updataToc()
  3303. break;
  3304. case "new_heading":
  3305. var newHeadingInfo = new Object();
  3306. newHeadingInfo.book=gEditorNewHeadingBookId;
  3307. newHeadingInfo.paragraph=gEditorNewHeadingPar;
  3308. newHeadingInfo.level=document.getElementById("id_heading_edit_level").value
  3309. newHeadingInfo.language=document.getElementById("id_text_edit_language").value
  3310. newHeadingInfo.author=document.getElementById("id_text_edit_author").value
  3311. newHeadingInfo.text=document.getElementById("id_text_edit_area").value
  3312. newHeadBlock(newHeadingInfo)
  3313. updataToc()
  3314. break;
  3315. }
  3316. document.getElementById("id_text_edit_form").style.display="none";
  3317. Dragging(getDraggingDialog).disable()
  3318. }
  3319. function edit_tran_cancal(){
  3320. document.getElementById("id_text_edit_form").style.display="none";
  3321. Dragging(getDraggingDialog).disable()
  3322. }
  3323. function edit_tran_delete(){
  3324. switch(gTextEditMediaType){
  3325. case "heading" :
  3326. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  3327. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  3328. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  3329. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  3330. mId=getNodeText(xmlParInfo,"id")
  3331. type=getNodeText(xmlParInfo,"type")
  3332. if(mId==gEditorHeadingEditBlockId){
  3333. gXmlBookDataBody.removeChild(xBlock[iBlock]);
  3334. return
  3335. }
  3336. }
  3337. htmlNode=document.getElementById("id_heading_"+gEditorHeadingEditBlockId);
  3338. if(htmlNode){
  3339. htmlNode.parentNode.removeChild(htmlNode);
  3340. }
  3341. updataToc()
  3342. break;
  3343. }
  3344. document.getElementById("id_text_edit_form").style.display="none";
  3345. }
  3346. function editor_translate_edit(id){
  3347. gTextEditMediaType="translate";
  3348. gEditorTranslateEditBlockId=id;
  3349. var headingObj = getTranslateText(id);
  3350. document.getElementById("id_text_edit_language").value=headingObj.language;
  3351. document.getElementById("id_text_edit_author").value=headingObj.author;
  3352. document.getElementById("id_text_edit_area").value=term_std_str_to_edit(headingObj.text);
  3353. //document.getElementById("id_heading_edit_level").style.display="none";
  3354. document.getElementById("id_text_edit_delete").style.display="none";
  3355. document.getElementById("id_text_edit_form").style.display="block";
  3356. Dragging(getDraggingDialog).enable();
  3357. }
  3358. function editor_note_edit(id){
  3359. gTextEditMediaType="note";
  3360. gEditorNoteEditBlockId=id;
  3361. var tranText = getNoteText(id);
  3362. document.getElementById("id_text_edit_area").value=tranText;
  3363. document.getElementById("id_heading_edit_level").style.display="none";
  3364. document.getElementById("id_text_edit_delete").style.display="none";
  3365. document.getElementById("id_text_edit_form").style.display="block";
  3366. }
  3367. function getNoteText(id){
  3368. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  3369. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  3370. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  3371. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  3372. mId=getNodeText(xmlParInfo,"id");
  3373. type=getNodeText(xmlParInfo,"type");
  3374. if(mId==id){
  3375. xmlParDataSen = xmlParData.getElementsByTagName("sen");
  3376. var currText="";
  3377. for(iSen=0;iSen<xmlParDataSen.length;iSen++){
  3378. currText += getNodeText(xmlParDataSen[iSen],"text");
  3379. }
  3380. return(currText);
  3381. }
  3382. }
  3383. return("");
  3384. }
  3385. function editor_heading_add_new(inBook,inPar){
  3386. document.getElementById("id_text_edit_caption_text").innerHTML=gLocal.gui.newheading;
  3387. gTextEditMediaType="new_heading";
  3388. gEditorHeadingEditBlockId=-1;
  3389. gEditorNewHeadingBookId=inBook;
  3390. gEditorNewHeadingPar=inPar;
  3391. document.getElementById("id_heading_edit_level").value="1";
  3392. document.getElementById("id_text_edit_language").value="pali";
  3393. document.getElementById("id_text_edit_author").value=config_user_name;
  3394. document.getElementById("id_text_edit_area").value="";
  3395. document.getElementById("id_heading_edit_level").style.display="flex";
  3396. document.getElementById("id_text_edit_delete").style.display="none";
  3397. document.getElementById("id_text_edit_form").style.display="block";
  3398. }
  3399. function editor_heading_edit(id){
  3400. document.getElementById("id_text_edit_caption_text").innerHTML="Heading";
  3401. gTextEditMediaType="heading";
  3402. gEditorHeadingEditBlockId=id;
  3403. var headingObj = getHeadingText(id);
  3404. document.getElementById("id_heading_edit_level").value=headingObj.level;
  3405. document.getElementById("id_text_edit_language").value=headingObj.language;
  3406. document.getElementById("id_text_edit_author").value=headingObj.author;
  3407. document.getElementById("id_text_edit_area").value=headingObj.text;
  3408. document.getElementById("id_heading_edit_level").style.display="flex";
  3409. document.getElementById("id_text_edit_delete").style.display="inline";
  3410. document.getElementById("id_text_edit_form").style.display="block";
  3411. }
  3412. function getHeadingText(id){
  3413. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  3414. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  3415. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  3416. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  3417. mId=getNodeText(xmlParInfo,"id")
  3418. type=getNodeText(xmlParInfo,"type")
  3419. if(mId==id){
  3420. var obj = new Object();
  3421. obj.text = getNodeText(xmlParData,"text");
  3422. obj.level = getNodeText(xmlParInfo,"level");
  3423. obj.language = getNodeText(xmlParInfo,"language");
  3424. obj.author = getNodeText(xmlParInfo,"author");
  3425. return(obj);
  3426. }
  3427. }
  3428. return(null);
  3429. }
  3430. function setHeadingInfo(id,objValue){
  3431. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  3432. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  3433. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  3434. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  3435. blockId=getNodeText(xmlParInfo,"id")
  3436. if(blockId==id){
  3437. newText=objValue.text.replace(/\n/g,"<br />");
  3438. setNodeText(xmlParData,"text",newText);
  3439. setNodeText(xmlParInfo,"level",objValue.level);
  3440. setNodeText(xmlParInfo,"author",objValue.author);
  3441. setNodeText(xmlParInfo,"language",objValue.language);
  3442. return;
  3443. }
  3444. }
  3445. }
  3446. //open project begin
  3447. var editor_openProjectXmlHttp=null;
  3448. function editor_openProject(strFileId,filetype){
  3449. if(window.XMLHttpRequest){// code for IE7, Firefox, Opera, etc.
  3450. editor_openProjectXmlHttp=new XMLHttpRequest();
  3451. }
  3452. else if(window.ActiveXObject){// code for IE6, IE5
  3453. editor_openProjectXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  3454. }
  3455. if (editor_openProjectXmlHttp!=null){
  3456. var d=new Date();
  3457. var strLink ="";
  3458. if(filetype=="db"){
  3459. strLink = "project_load_db.php?id="+strFileId;
  3460. }
  3461. else{
  3462. strLink = "project_load.php?id="+strFileId;
  3463. }
  3464. editor_openProjectXmlHttp.onreadystatechange=editor_open_project_serverResponse;
  3465. editor_openProjectXmlHttp.open("GET", strLink, true);
  3466. editor_openProjectXmlHttp.send(null);
  3467. }
  3468. else{
  3469. alert("Your browser does not support XMLHTTP.");
  3470. }
  3471. }
  3472. function editor_open_project_serverResponse(){
  3473. // 4 = "loaded"
  3474. if (editor_openProjectXmlHttp.readyState==4){
  3475. if (editor_openProjectXmlHttp.status==200){// 200 = "OK"
  3476. var xmlText = editor_openProjectXmlHttp.responseText;
  3477. if (window.DOMParser){
  3478. parser=new DOMParser();
  3479. gXmlBookData=parser.parseFromString(xmlText,"text/xml");
  3480. }
  3481. else{ // Internet Explorer
  3482. gXmlBookData=new ActiveXObject("Microsoft.XMLDOM");
  3483. gXmlBookData.async="false";
  3484. gXmlBookData.loadXML(xmlText);
  3485. }
  3486. if (gXmlBookData == null){
  3487. alert("error:can not load Project. xml obj is null.");
  3488. return;
  3489. }
  3490. projectDataParse(gXmlBookData);
  3491. doc_file_info_get();
  3492. doc_info_change("accese_time","");
  3493. //消息系统初始化
  3494. let msg_id=doc_head("msg_db_max_id");
  3495. if(msg_id!="" && !isNaN(msg_id)){
  3496. msg_init(msg_id);
  3497. }
  3498. else{
  3499. msg_init(1);
  3500. }
  3501. updataDocParagraphList();
  3502. updataToc();
  3503. //渲染数据块
  3504. blockShow(0);
  3505. refreshResource()
  3506. editro_layout_loadStyle();
  3507. }
  3508. else{
  3509. document.getElementById('sutta_text').innerHTML="Problem retrieving data:" + editor_openProjectXmlHttp.statusText;
  3510. }
  3511. }
  3512. }
  3513. //数据块显示
  3514. function blockShow(id)
  3515. {
  3516. xmlBlock=gXmlBookDataBody.getElementsByTagName("block")
  3517. if(id<xmlBlock.length){
  3518. insertBlockToHtml(xmlBlock[id]);
  3519. t=setTimeout("blockShow("+(id+1)+")",1)
  3520. progress=id/xmlBlock.length//计算比例
  3521. strProgress=(progress*100).toFixed(0)+"%"//计算百分比,保留1位小数
  3522. document.getElementById("load_progress_num").innerHTML=strProgress;//显示计算结果
  3523. loading.setAttribute("stroke-dashoffset", (255 - progress*140)+ "%");
  3524. }
  3525. else{
  3526. //文档载入完毕
  3527. strProgress="OK";
  3528. loading.setAttribute("stroke-dashoffset", "0%");
  3529. document.getElementById("load_progress_num").innerHTML=strProgress;
  3530. setTimeout("hiddenProgressDiv()",1000);
  3531. term_array_updata();
  3532. //单词块响应鼠标消息
  3533. word_mouse_event();
  3534. //刷新译文中的术语
  3535. term_updata_translation();
  3536. //自动将逐词译段落切分为句子
  3537. layout_wbw_auto_cut();
  3538. }
  3539. }
  3540. function word_mouse_event(){
  3541. $(".word").mouseenter(on_word_mouse_enter);
  3542. $(".word").mouseleave(on_word_mouse_leave);
  3543. }
  3544. var _curr_mouse_enter_wordid = "";
  3545. //单词快鼠标退出
  3546. function on_word_mouse_leave(){
  3547. $("#mean_"+_curr_mouse_enter_wordid).html("loading");
  3548. $("#parts_"+_curr_mouse_enter_wordid).html("loading");
  3549. $("#partmean_"+_curr_mouse_enter_wordid).html("loading");
  3550. $("#gramma_"+_curr_mouse_enter_wordid).html("loading");
  3551. relation_link_hide();
  3552. if(gRelationSelectWordBegin){
  3553. //$(this).css(gCurrWordDivBorder);
  3554. $(this).css("border","none");
  3555. }
  3556. gCurrMoseEnterWordId = "";
  3557. }
  3558. //单词块鼠标进入事件
  3559. var gCurrLookupWord="";
  3560. //save the broder style when mouse leave recover
  3561. var gCurrWordDivBorder="none";
  3562. var gWordHeadBarVisible=false;
  3563. var gCurrMoseEnterWordId="";
  3564. function on_word_mouse_enter(){
  3565. var wordid = $(this).attr("id");
  3566. if(gCurrMoseEnterWordId==wordid){
  3567. return;
  3568. }
  3569. gCurrMoseEnterWordId = wordid;
  3570. //remove the 'wb' in string head
  3571. _curr_mouse_enter_wordid=wordid.substr(2);
  3572. relation_link_show(_curr_mouse_enter_wordid);
  3573. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  3574. var iIndex = getWordIndex(_curr_mouse_enter_wordid);
  3575. if(iIndex>=0){
  3576. var paliword=getNodeText(xAllWord[iIndex],"real");
  3577. //如果内存里有这个词,渲染单词下拉菜单
  3578. if(mDict[paliword]){
  3579. render_word_menu(_curr_mouse_enter_wordid);
  3580. }
  3581. else{
  3582. //如果内存里没有这个词,查字典
  3583. if(!mDictQueue[paliword]){
  3584. if(gCurrLookupWord!=paliword){
  3585. mDictQueue[paliword]=1;
  3586. gCurrLookupWord=paliword;
  3587. $.get("dict_find_one.php",
  3588. {
  3589. word:paliword
  3590. },
  3591. on_dict_lookup
  3592. );
  3593. }
  3594. }
  3595. }
  3596. }
  3597. //如果显示relation
  3598. if(gRelationSelectWordBegin ){
  3599. gCurrWordDivBorder = $(this).css("border");
  3600. $(this).css("border","1px solid #65c5bd");
  3601. let eHeadBar = document.getElementById("word_tool_bar");
  3602. if(eHeadBar){
  3603. eHeadBar.style.display="block";
  3604. }
  3605. let eWord=document.getElementById("ws_"+_curr_mouse_enter_wordid);
  3606. let eWordHead=document.getElementById("whead_"+_curr_mouse_enter_wordid);
  3607. eWord.insertBefore(eHeadBar,eWordHead);
  3608. gWordHeadBarVisible = true;
  3609. }
  3610. }
  3611. //解析字典数据
  3612. function inline_dict_parse(data){
  3613. if(data == ""){
  3614. return;
  3615. }
  3616. try{
  3617. var worddata=JSON.parse(data);
  3618. }
  3619. catch(e){
  3620. console.error(e+" data:"+data);
  3621. return;
  3622. }
  3623. if(worddata.length>0){
  3624. //如果有数据 解析查询数据
  3625. let spell=new Array();
  3626. for(let i in worddata){
  3627. if(mDict[worddata[i].pali]){
  3628. spell[worddata[i].pali]=1;
  3629. }
  3630. else{
  3631. spell[worddata[i].pali]=0;
  3632. }
  3633. }
  3634. for(let word in spell){
  3635. if(spell[word]==0){
  3636. mDict[word]=new Array();
  3637. }
  3638. }
  3639. for(let i in worddata){
  3640. if(spell[worddata[i].pali]==0){
  3641. mDict[worddata[i].pali].push(worddata[i]);
  3642. mDictQueue[worddata[i].pali]=0;
  3643. }
  3644. }
  3645. let type = new Array();
  3646. if(mDict[gCurrLookupWord]){
  3647. for(let i in mDict[gCurrLookupWord]){
  3648. type[mDict[gCurrLookupWord][i].type]=1;
  3649. }
  3650. if(type.length==1 && type[".comp."]){
  3651. inline_dict_auto_case(gCurrLookupWord);
  3652. }
  3653. }
  3654. else{
  3655. //如果没有查到数据 添加自动格位
  3656. mDict[gCurrLookupWord]=new Array();
  3657. inline_dict_auto_case(gCurrLookupWord);
  3658. }
  3659. }
  3660. else{
  3661. //如果没有查到数据 添加自动格位
  3662. mDict[gCurrLookupWord]=new Array();
  3663. inline_dict_auto_case(gCurrLookupWord);
  3664. }
  3665. }
  3666. //添加自动格位数据到内存字典
  3667. function inline_dict_auto_case(paliword){
  3668. for(let i in gCaseTable){
  3669. if(gCaseTable[i].type!=".v."){
  3670. let sEnd2 = gCurrLookupWord.slice(0-gCaseTable[i].end2.length);
  3671. if(sEnd2==gCaseTable[i].end2){
  3672. let wordParent=gCurrLookupWord.slice(0,0-gCaseTable[i].end2.length)+gCaseTable[i].end1;
  3673. let newWord=new Object();
  3674. newWord.pali=gCurrLookupWord;
  3675. newWord.type=gCaseTable[i].type;
  3676. newWord.gramma=gCaseTable[i].gramma;
  3677. newWord.parent=wordParent;
  3678. newWord.mean="";
  3679. newWord.note="";
  3680. newWord.parts= wordParent + "+["+gCaseTable[i].end2+"]";
  3681. newWord.partmean="";
  3682. newWord.confidence=gCaseTable[i].confidence;
  3683. mDict[paliword].push(newWord);
  3684. }
  3685. }
  3686. }
  3687. }
  3688. function getAutoEnding(pali,base){
  3689. let ending=Array();
  3690. for(let i in gCaseTable){
  3691. if(gCaseTable[i].type!=".v."){
  3692. let sEnd2 = pali.slice(0-gCaseTable[i].end2.length);
  3693. if(sEnd2==gCaseTable[i].end2){
  3694. let wordParent=pali.slice(0,0-gCaseTable[i].end2.length)+gCaseTable[i].end1;
  3695. if(base == wordParent){
  3696. ending[gCaseTable[i].end2]=1;
  3697. }
  3698. }
  3699. }
  3700. }
  3701. return(ending);
  3702. }
  3703. //查字典结果
  3704. function on_dict_lookup(data,status){
  3705. //解析查询数据
  3706. inline_dict_parse(data);
  3707. render_word_menu(_curr_mouse_enter_wordid);
  3708. }
  3709. function render_word_menu(id){
  3710. $("#word_mean").html(render_word_menu_mean(id));
  3711. $("#word_parts").html(render_word_menu_parts(id));
  3712. $("#word_partmean").html(render_word_menu_partmean(id));
  3713. $("#word_gramma").html(render_word_menu_gramma(id));
  3714. show_word_menu_mean(id);
  3715. show_word_menu_parts(id)
  3716. show_word_menu_partmean(id)
  3717. show_word_menu_gramma(id)
  3718. }
  3719. //根据单词长度排序 短词优先
  3720. function sortWordLen(a, b)
  3721. {
  3722. return(a.length - b.length);
  3723. }
  3724. //渲染单词意思下拉菜单
  3725. function render_word_menu_mean(id,target=0){
  3726. var output="";
  3727. var word_real=doc_word("#"+id).val("real");
  3728. var word_parent=doc_word("#"+id).val("parent");
  3729. var arrParent=new Array();
  3730. //检索语基
  3731. if(word_parent.length>0){
  3732. //arrParent[word_parent]=1;
  3733. }
  3734. if(mDict[word_real]){
  3735. for(var i in mDict[word_real]){
  3736. if(mDict[word_real][i].parent && mDict[word_real][i].parent.length>0){
  3737. if(word_parent!=mDict[word_real][i].parent && word_real!=mDict[word_real][i].parent){
  3738. arrParent[mDict[word_real][i].parent]=1;
  3739. }
  3740. }
  3741. }
  3742. }
  3743. var sWord = new Array();
  3744. for(var sParent in arrParent){
  3745. sWord.push(sParent);
  3746. }
  3747. //按照base长度升序
  3748. sWord.sort(sortWordLen);
  3749. if(word_parent.length>0){
  3750. sWord.unshift(word_parent);
  3751. }
  3752. sWord.unshift(word_real);
  3753. output +="<button style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' onclick='fieldListChanged(\""+id+"\",\"mean\",\"\")'>"+gLocal.gui.empty1+"</button>";
  3754. output +="<div class=\"case_dropdown-org\">";
  3755. for(var iWord in sWord){
  3756. var pali = sWord[iWord];
  3757. //该词字典数量
  3758. var dict_count=0;
  3759. if(mDict[pali]){
  3760. for(iCount in mDict[pali]){
  3761. if(mDict[pali][iCount].mean && mDict[pali][iCount].mean.length>0){
  3762. dict_count++;
  3763. }
  3764. }
  3765. }
  3766. if(pali==word_parent){
  3767. output +="<div class=\"case_dropdown-base\">";
  3768. }
  3769. else{
  3770. output +="<div class=\"case_dropdown-first\">";
  3771. }
  3772. output +="<a style=\"z-index:250; position:absolute; margin-right:2em;\" onclick='dict_search(\""+pali+"\")'>";
  3773. if(pali==word_parent){
  3774. output +="<b>·"+pali+"·</b>";
  3775. }
  3776. else{
  3777. output +=pali;
  3778. }
  3779. output +="-"+dict_count+"</a>"
  3780. output +="<span style=\"z-index:220\" class=\"case_dropdown-title\" onclick=\"submenu_show_detail(this)\">";
  3781. output +="<svg class=\"icon\" style=\"fill:var(--main-color)\"><use xlink:href=\"svg/icon.svg#ic_add\"></use></svg>";
  3782. output +="</span>";
  3783. output +="<div class=\"case_dropdown-detail\" style='display:block;'>";
  3784. var currWordMean=new Array();
  3785. if(mDict[pali]){
  3786. for(var i in mDict[pali]){
  3787. var objMean=new Object();
  3788. objMean.type="";
  3789. objMean.gramma="";
  3790. objMean.dict_name="";
  3791. objMean.mean="";
  3792. if(mDict[pali][i].type){
  3793. objMean.type=mDict[pali][i].type;
  3794. }
  3795. if(mDict[pali][i].gramma){
  3796. objMean.gramma=mDict[pali][i].gramma;
  3797. }
  3798. if(mDict[pali][i].dict_name){
  3799. objMean.dict_name=mDict[pali][i].dict_name;
  3800. }
  3801. if(mDict[pali][i].mean ){
  3802. objMean.mean = mDict[pali][i].mean;
  3803. }
  3804. if(objMean.mean.length>0){
  3805. _mean_push(currWordMean,objMean);
  3806. }
  3807. }
  3808. }
  3809. for(var i in currWordMean){
  3810. var htmlMean="";
  3811. var wId=id;
  3812. output +="<a style='display:flex; flex-wrap: wrap;'>";
  3813. output +="<div id='div_dictname_"+wId+"_"+iWord+"_"+i+"' style='margin-right: auto; display:flex;'>"
  3814. output +="<span id='span_dictname_"+wId+"_"+iWord+"_"+i+"' style='height: 1.5em;' class='wm_dictname' >";
  3815. output +=getLocalDictname(currWordMean[i].dict_name)+"</span>"
  3816. output +="</div>"
  3817. output +="<div id='div_type_"+wId+"_"+iWord+"_"+i+"' style='margin-left: 0.4em; display:flex'>"
  3818. output +="<span id='span_type_"+wId+"_"+iWord+"_"+i+"' style='height: 1.5em;' class='wm_wordtype'>"+getLocalGrammaStr(currWordMean[i].type)+"</span>"
  3819. for(var iMean in currWordMean[i].mean){
  3820. if(currWordMean[i].mean[iMean]!=""){
  3821. if(target==0){
  3822. htmlMean += "<span class='wm_one_mean' onclick='fieldListChanged(\""+wId+"\",\"mean\",\""+currWordMean[i].mean[iMean]+"\" ";
  3823. //parent 与意思联动
  3824. if(iWord>0){
  3825. htmlMean += ",\""+pali+"\"";
  3826. }
  3827. htmlMean += " )'>"+currWordMean[i].mean[iMean]+"</span>";
  3828. }
  3829. else{
  3830. htmlMean += "<span class='wm_one_mean' onclick='_win_mean_change(\""+currWordMean[i].mean[iMean]+"\" )'>"+currWordMean[i].mean[iMean]+"</span>";
  3831. }
  3832. }
  3833. }
  3834. output +="</div>";
  3835. output +="<div style='width:15em; display:flex; flex-wrap: wrap;'>"+htmlMean+"</div>";
  3836. output +="</a>";
  3837. }
  3838. output +="</div></div>";
  3839. }
  3840. output+="</div>";
  3841. return(output);
  3842. }
  3843. function _win_mean_change(newmean){
  3844. $("#input_meaning").val(newmean);
  3845. }
  3846. function _mean_push(arr,obj){
  3847. var arrMean=obj.mean.split("$");
  3848. var strIndex=obj.dict_name+"-"+obj.type+"-"+obj.gramma;
  3849. if(arr[strIndex]==null){
  3850. arr[strIndex]=new Object();
  3851. arr[strIndex].dict_name=obj.dict_name;
  3852. arr[strIndex].type=obj.type
  3853. arr[strIndex].gramma=obj.gramma;
  3854. arr[strIndex].mean=new Array();
  3855. }
  3856. for(var i=0;i<arrMean.length;i++){
  3857. var found=false;
  3858. for(var j=0;j<arr[strIndex].mean.length;j++){
  3859. if(arr[strIndex].mean[j]==arrMean[i]){
  3860. found=true;
  3861. break;
  3862. }
  3863. }
  3864. if(!found){
  3865. arr[strIndex].mean.push(arrMean[i]);
  3866. }
  3867. }
  3868. }
  3869. function show_word_menu_mean(id){
  3870. var word_menu_div=document.getElementById("mean_"+id);
  3871. if(word_menu_div){
  3872. var menu_div=document.getElementById("word_mean");
  3873. if(menu_div){
  3874. $("#mean_"+id).html($("#word_mean").html());
  3875. }
  3876. }
  3877. }
  3878. /*
  3879. 渲染单词拆分下拉菜单
  3880. id 单词id
  3881. target 默认渲染目标
  3882. 0:主编辑窗口下拉菜
  3883. 1:编辑窗口下拉菜单
  3884. 返回值 无
  3885. */
  3886. function render_word_menu_parts(id,target=0){
  3887. let output="";
  3888. let wordID=id;
  3889. output += "<div>";
  3890. output +="<button style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' onclick='fieldListChanged(\""+wordID+"\",\"org\",\"\")'>"+gLocal.gui.empty1+"</button>"
  3891. output +="<button style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' onclick='show_word_map(\""+wordID+"\")'>"+gLocal.gui.wordmap+"</button>";
  3892. output += "</div>";
  3893. let pali=doc_word("#"+id).val("real");
  3894. let wParent=doc_word("#"+id).val("parent");
  3895. let wParts=doc_word("#"+id).val("org");
  3896. let arrParts=new Array();
  3897. let arrParent=new Array();
  3898. if(wParent!=""){
  3899. arrParts[wParent]=1;
  3900. }
  3901. if(target==1){
  3902. arrParts[pali]=1;
  3903. }
  3904. if(mDict[pali]){
  3905. for(let iWord in mDict[pali]){
  3906. if(mDict[pali][iWord].parts && mDict[pali][iWord].parts!=""){
  3907. arrParts[mDict[pali][iWord].parts]=1;
  3908. }
  3909. if(mDict[pali][iWord].parent && mDict[pali][iWord].parent!=""){
  3910. arrParent[mDict[pali][iWord].parent]=1;
  3911. }
  3912. }
  3913. }
  3914. //加入base拆分
  3915. if(mDict[wParent]){
  3916. let ending=getAutoEnding(pali,wParent);
  3917. for(let iWord in mDict[wParent]){
  3918. if(mDict[wParent][iWord].parts && mDict[wParent][iWord].parts!=""){
  3919. arrParts[mDict[wParent][iWord].parts]=1;
  3920. {
  3921. for(let end in ending){
  3922. arrParts[mDict[wParent][iWord].parts+"+["+end+"]"]=1;
  3923. }
  3924. }
  3925. }
  3926. }
  3927. }
  3928. output += "<div>";
  3929. let outputPart="";
  3930. for(let sPart in arrParts){
  3931. if(wParts == sPart){
  3932. outputPart = "<b>"+sPart+"</b>";
  3933. }
  3934. else{
  3935. outputPart = sPart;
  3936. }
  3937. if(target==0){
  3938. output += "<a onclick='fieldListChanged(\""+wordID+"\",\"org\",\""+sPart+"\")'>"+outputPart+"</a>";
  3939. }
  3940. else{
  3941. output += "<a onclick='mdf_win_part_change(\""+sPart+"\")'>"+outputPart+"</a>";
  3942. }
  3943. }
  3944. output += "</div>";
  3945. //base parts 信息
  3946. for(let sParent in arrParent){
  3947. if(mDict[sParent]){
  3948. let arrParts = new Array();
  3949. for(let iWord in mDict[sParent]){
  3950. if(mDict[sParent][iWord].parts && mDict[sParent][iWord].parts!=""){
  3951. arrParts[mDict[sParent][iWord].parts]=1;
  3952. }
  3953. }
  3954. if(arrParts.length>0){
  3955. output +="<div class=\"case_dropdown-org\">";
  3956. output +="<div class=\"case_dropdown-first\">";
  3957. output +="<a style='z-index:250; position:absolute; margin-right:2em;'>";
  3958. output +=sParent+"</a>";
  3959. output +="<span style='z-index:220' class='case_dropdown-title'>";
  3960. output +=gLocal.gui.more+"»</span>";
  3961. output +="</div>";
  3962. output += "<div>";
  3963. for(let sPart in arrParts){
  3964. output +="<a onclick='fieldListChanged(\""+wordID+"\",\"org\",\""+sPart+"\")'>"+sPart+"</a>";
  3965. }
  3966. output += "</div>";
  3967. output +="</div>";
  3968. }
  3969. }
  3970. }
  3971. return(output);
  3972. }
  3973. function show_word_menu_parts(id){
  3974. var word_parts_div=document.getElementById("parts_"+id);
  3975. if(word_parts_div){
  3976. var parts_div=document.getElementById("word_parts");
  3977. if(parts_div){
  3978. //word_menu_div.appendChild(menu_div);
  3979. $("#parts_"+id).html($("#word_parts").html());
  3980. }
  3981. }
  3982. }
  3983. //渲染单词拆分意思下拉菜单
  3984. function render_word_menu_partmean(id){
  3985. var wordID=id;
  3986. var sHtml="";
  3987. var pali = doc_word("#"+id).val("real");
  3988. var sOrg = doc_word("#"+id).val("org");
  3989. var listFactorForFactorMean = sOrg.split("+");
  3990. var currDefualtFM="";
  3991. for(iFactor in listFactorForFactorMean){
  3992. currDefualtFM+=findFirstMeanInDict(listFactorForFactorMean[iFactor])+"+";//拆分元素加号分隔
  3993. }
  3994. currDefualtFM=currDefualtFM.replace(/" "/g," ");
  3995. currDefualtFM=currDefualtFM.replace(/"+ "/g,"+");
  3996. currDefualtFM=currDefualtFM.replace(/" +"/g,"+");
  3997. currDefualtFM=currDefualtFM.substring(0,currDefualtFM.length-1);//去掉尾部的加号 kosalla
  3998. if(currDefualtFM.slice(-1,-2)=="+"){
  3999. currDefualtFM=currDefualtFM.substring(0,currDefualtFM.length-1);
  4000. }
  4001. sHtml +="<button style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' onclick='fieldListChanged(\""+wordID+"\",\"om\",\"\")'>"+gLocal.gui.empty1+"</button>";
  4002. sHtml +="<a onclick='fieldListChanged(\""+wordID+"\",\"om\",\"[a]"+currDefualtFM+"\")'>["+gLocal.gui.auto+"]"+currDefualtFM+"</a>";
  4003. var arrPartMean=new Array();
  4004. if(mDict[pali]){
  4005. for(var i in mDict[pali]){
  4006. if(mDict[pali][i].partmean && mDict[pali][i].partmean.length>0){
  4007. arrPartMean[mDict[pali][i].partmean]=1;
  4008. }
  4009. }
  4010. }
  4011. for(var sPM in arrPartMean){
  4012. sHtml +="<a onclick='fieldListChanged(\""+wordID+"\",\"om\",\""+sPM+"\")'>"+sPM+"</a>";
  4013. }
  4014. return(sHtml);
  4015. }
  4016. /*
  4017. 渲染单词语基下拉菜单
  4018. id 单词id
  4019. return 无
  4020. */
  4021. function render_word_menu_parent(id){
  4022. let output="";
  4023. let word_real=doc_word("#"+id).val("real");
  4024. let word_parent=doc_word("#"+id).val("parent");
  4025. let arrParent=new Array();
  4026. //检索语基
  4027. if(word_parent!=""){
  4028. arrParent[word_parent]=1;
  4029. }
  4030. if(mDict[word_real]){
  4031. for(let i in mDict[word_real]){
  4032. if(mDict[word_real][i].parent &&
  4033. mDict[word_real][i].parent.length>0){
  4034. arrParent[mDict[word_real][i].parent]=1;
  4035. }
  4036. }
  4037. }
  4038. let sWord = new Array();
  4039. for(let sParent in arrParent){
  4040. sWord.push(sParent);
  4041. }
  4042. //按照base长度升序
  4043. sWord.sort(sortWordLen);
  4044. if(!str_in_array(word_real,sWord)){
  4045. sWord.push(word_real);
  4046. }
  4047. for(var iWord in sWord){
  4048. var pali = sWord[iWord];
  4049. output += "<a onclick=\"mdf_win_data_change('id_text_parent','"+pali+"')\">";
  4050. if(word_parent==pali){
  4051. output += "<b>"+pali+"</b>";
  4052. }
  4053. else{
  4054. output += pali;
  4055. }
  4056. output += "</a>";
  4057. }
  4058. return(output);
  4059. }
  4060. function show_word_menu_partmean(id){
  4061. var word_partmean_div=document.getElementById("partmean_"+id);
  4062. if(word_partmean_div){
  4063. var partmean_div=document.getElementById("word_partmean");
  4064. if(partmean_div){
  4065. //word_menu_div.appendChild(menu_div);
  4066. $("#partmean_"+id).html($("#word_partmean").html());
  4067. }
  4068. }
  4069. }
  4070. //语法按照信心指数排序
  4071. function sortWordConfidence(a, b)
  4072. {
  4073. return(b-a);
  4074. }
  4075. /*渲染语法菜单
  4076. //@param
  4077. target
  4078. 0:主窗口
  4079. 1:编辑窗口
  4080. */
  4081. function render_word_menu_gramma(id,target=0){
  4082. var wordID=id;
  4083. var sHtml="";
  4084. var pali = doc_word("#"+id).val("real");
  4085. var arrGramma=new Array();
  4086. if(mDict[pali]){
  4087. for(var i in mDict[pali]){
  4088. var type = mDict[pali][i].type;
  4089. var gramma = mDict[pali][i].gramma;
  4090. if((type && type.length>0) || (gramma && gramma.length>0)){
  4091. var sCase=type+"#"+gramma;
  4092. if(arrGramma[sCase]){
  4093. if(mDict[pali][i].confidence>arrGramma[sCase]){
  4094. arrGramma[sCase]=mDict[pali][i].confidence;
  4095. }
  4096. }
  4097. else{
  4098. arrGramma[sCase]=1;
  4099. }
  4100. }
  4101. }
  4102. }
  4103. arrGramma.sort(sortWordConfidence);
  4104. for(var sGramma in arrGramma){
  4105. var sLocalCase= getLocalGrammaStr(sGramma);
  4106. if(target==0){
  4107. sHtml +="<a onclick='fieldListChanged(\""+wordID+"\",\"case\",\""+sGramma+"\")'>"+cutString(sLocalCase,30)+"</a>";
  4108. }
  4109. else{
  4110. sHtml += "<a onclick='mdf_win_case_change(\""+sGramma+"\")'>"+cutString(sLocalCase,30)+"</a>";
  4111. }
  4112. }
  4113. return(sHtml);
  4114. }
  4115. function show_word_menu_gramma(id){
  4116. var gramma_div=document.getElementById("gramma_"+id);
  4117. if(gramma_div){
  4118. var word_gramma_div=document.getElementById("word_gramma");
  4119. if(word_gramma_div){
  4120. //word_menu_div.appendChild(menu_div);
  4121. $("#gramma_"+id).html($("#word_gramma").html());
  4122. }
  4123. }
  4124. }
  4125. function hiddenProgressDiv(){
  4126. document.getElementById("loading_bar").style.animation="opacityGo 1s both";
  4127. }
  4128. function editor_project_updataProjectInfo(){
  4129. var strInfo="";
  4130. var iInlineDictCount=gXmlBookDataInlineDict.getElementsByTagName("word").length;
  4131. var iWordCount=gXmlBookDataBody.getElementsByTagName("word").length;
  4132. strInfo+=gLocal.gui.wordnum+iWordCount+"<br />";
  4133. strInfo+=gLocal.gui.para+":"+gArrayDocParagraph.length+"<br />";
  4134. strInfo+=gLocal.gui.innerdict+":"+iInlineDictCount+"<br />";
  4135. strInfo+=gLocal.gui.vocabulary+CountVocabulary()+"<br />";
  4136. document.getElementById("id_editor_project_infomation").innerHTML=strInfo;
  4137. document.getElementById("doc_info_title").value=getNodeText(gXmlBookDataHead,"doc_title");
  4138. document.getElementById("editor_doc_title").innerHTML=getNodeText(gXmlBookDataHead,"doc_title");
  4139. document.getElementById("file_title").innerHTML=getNodeText(gXmlBookDataHead,"doc_title");
  4140. }
  4141. //import old ver file
  4142. var editor_importOldVerXmlHttp=null;
  4143. function editor_importOldVer(strFileName){
  4144. if(window.XMLHttpRequest){// code for IE7, Firefox, Opera, etc.
  4145. editor_importOldVerXmlHttp=new XMLHttpRequest();
  4146. }
  4147. else if(window.ActiveXObject){// code for IE6, IE5
  4148. editor_importOldVerXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  4149. }
  4150. if (editor_importOldVerXmlHttp!=null){
  4151. var d=new Date();
  4152. var strLink ="";
  4153. strLink = "com_fileopen.php?filename="+strFileName;
  4154. if(strLink.length>0){
  4155. editor_importOldVerXmlHttp.onreadystatechange=editor_import_old_ver_serverResponse;
  4156. editor_importOldVerXmlHttp.open("GET", strLink, true);
  4157. editor_importOldVerXmlHttp.send(null);
  4158. //document.getElementById('sutta_text').innerHTML="Importing..."+strFileName;
  4159. }
  4160. else{
  4161. //document.getElementById('sutta_text').innerHTML="无法识别的文件类型";
  4162. }
  4163. }
  4164. else{
  4165. alert("Your browser does not support XMLHTTP.");
  4166. }
  4167. }
  4168. function editor_import_old_ver_serverResponse(){
  4169. // 4 = "loaded"
  4170. if (editor_importOldVerXmlHttp.readyState==4){
  4171. document.getElementById('sutta_text').innerHTML="<div class=\"sutta_top_blank\"></div>";
  4172. if (editor_importOldVerXmlHttp.status==200){// 200 = "OK"
  4173. var xmlText = editor_importOldVerXmlHttp.responseText;
  4174. if (window.DOMParser){
  4175. parser=new DOMParser();
  4176. gXmlOldVerData=parser.parseFromString(xmlText,"text/xml");
  4177. }
  4178. else{ // Internet Explorer
  4179. gXmlOldVerData=new ActiveXObject("Microsoft.XMLDOM");
  4180. gXmlOldVerData.async="false";
  4181. gXmlOldVerData.loadXML(xmlText);
  4182. }
  4183. if (gXmlOldVerData == null){
  4184. alert("error:can not load. xml obj is null.");
  4185. return;
  4186. }
  4187. oldVerDataParse(gXmlOldVerData);
  4188. }
  4189. else{
  4190. document.getElementById('sutta_text').innerHTML="Problem retrieving data:" + editor_openProjectXmlHttp.statusText;
  4191. }
  4192. }
  4193. }
  4194. //在段落前设置或取消分页
  4195. function editor_page_break(obj,book,par){
  4196. if(obj.checked){
  4197. document.getElementById("par_"+book+"_"+par).style.pageBreakBefore="always"
  4198. }
  4199. else{
  4200. document.getElementById("par_"+book+"_"+par).style.pageBreakBefore="auto"
  4201. }
  4202. }
  4203. function editor_heading_change(obj,book,par){
  4204. document.getElementById("content").innerHTML="";
  4205. allBlock=gXmlBookDataBody.getElementsByTagName("block")
  4206. for(var iBlock=0;iBlock<allBlock.length;iBlock++){
  4207. xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
  4208. xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
  4209. bookId=getNodeText(xmlParInfo,"book")
  4210. paragraph=getNodeText(xmlParInfo,"paragraph")
  4211. type=getNodeText(xmlParInfo,"type")
  4212. if(bookId==book && paragraph==par && type=="heading"){
  4213. setNodeText(xmlParInfo,"level",obj.value)
  4214. }
  4215. }
  4216. updataHeadingBlockInHtml(book,par)
  4217. updataToc();
  4218. }
  4219. function editor_par_show(obj,book,par){
  4220. parId="par_"+book+"_"+(par-1);
  4221. if(obj.checked){
  4222. document.getElementById(parId).style.display="block";
  4223. }
  4224. else{
  4225. document.getElementById(parId).style.display="none";
  4226. }
  4227. var rootIndex=-1
  4228. var rootLevel=-1
  4229. allBlock=gXmlBookDataBody.getElementsByTagName("block")
  4230. for(var iBlock=0;iBlock<allBlock.length;iBlock++){
  4231. xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
  4232. xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
  4233. bookId=getNodeText(xmlParInfo,"book")
  4234. paragraph=getNodeText(xmlParInfo,"paragraph")
  4235. type=getNodeText(xmlParInfo,"type")
  4236. if(bookId==book && paragraph==par && type=="heading"){
  4237. rootIndex=iBlock;
  4238. rootLevel=getNodeText(xmlParInfo,"level")
  4239. break;
  4240. }
  4241. }
  4242. var opBegin=false;
  4243. for(var iBlock=rootIndex+1;iBlock<allBlock.length;iBlock++){
  4244. xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
  4245. xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
  4246. bookId=getNodeText(xmlParInfo,"book")
  4247. paragraph=getNodeText(xmlParInfo,"paragraph")
  4248. type=getNodeText(xmlParInfo,"type")
  4249. if(type=="heading"){
  4250. currLevel=getNodeText(xmlParInfo,"level")
  4251. if(currLevel==0 || currLevel>rootLevel){
  4252. opBegin=true;
  4253. parId="par_"+bookId+"_"+(paragraph-1);
  4254. if(obj.checked){
  4255. document.getElementById(parId).style.display="block";
  4256. }
  4257. else{
  4258. document.getElementById(parId).style.display="none";
  4259. }
  4260. }
  4261. else{
  4262. if(opBegin){
  4263. break;
  4264. }
  4265. }
  4266. }
  4267. }
  4268. }
  4269. function editor_right_tool_bar_slide_toggle(){
  4270. if(document.getElementById("right_tool_bar").style.left=="100%"){
  4271. document.getElementById("right_tool_bar").style.display="block";
  4272. document.getElementById("right_tool_bar").style.left="calc(100% - 25em)";
  4273. }
  4274. else{
  4275. document.getElementById("right_tool_bar").style.left="100%";
  4276. }
  4277. }
  4278. function right_panal_slide_toggle(idPanal){
  4279. if($("#"+idPanal).hasClass("act")){
  4280. document.getElementById("right_tool_bar").style.display="block";
  4281. document.getElementById("right_tool_bar").style.left="calc(100% - 25em)";
  4282. }
  4283. else{
  4284. document.getElementById("right_tool_bar").style.left="100%";
  4285. }
  4286. }
  4287. function editor_show_right_tool_bar(visible){
  4288. if(visible){
  4289. document.getElementById("right_tool_bar").style.display="block";
  4290. document.getElementById("right_tool_bar").style.left="calc(100% - 25em)";
  4291. }
  4292. else{
  4293. document.getElementById("right_tool_bar").style.left="100%";
  4294. }
  4295. }
  4296. function editor_goto_link(bookId,parNo,strLink=""){
  4297. parIndex = getParIndex(bookId,parNo);
  4298. scrollEventLock=true;
  4299. setNewView(parIndex-3,parIndex+6);
  4300. scrollEventLock=false;
  4301. if(strLink==""){
  4302. window.location.assign("#par_begin_"+bookId+"_"+(parNo-1));
  4303. }
  4304. else{
  4305. window.location.assign("#"+strLink);
  4306. }
  4307. }
  4308. function get_language_order(strLanguage){
  4309. for(iLan in dict_language_order){
  4310. if(dict_language_order[iLan]==strLanguage){
  4311. return(iLan);
  4312. }
  4313. }
  4314. return(1000);
  4315. }
  4316. function removeAllInlinDictItem(){
  4317. var count;
  4318. var xAllWord=gXmlBookDataInlineDict.getElementsByTagName("word");
  4319. count=xAllWord.length;
  4320. while(xAllWord.length){
  4321. gXmlBookDataInlineDict.removeChild(xAllWord[0]);
  4322. }
  4323. g_DictWordList=new Array();
  4324. return(count);
  4325. }
  4326. function editor_refresh_inline_dict(word){
  4327. currMatchingDictNum=0;
  4328. g_dictFindParentLevel=0;
  4329. g_dictFindAllDone=false;
  4330. g_dict_search_one_dict_done=editor_dict_one_dict_done;
  4331. g_dict_search_all_done=editor_dict_all_done;
  4332. g_dict_search_one_pass_done=null;
  4333. dict_mark_word_list_done();
  4334. dict_push_word_to_download_list(word,0);
  4335. var arrBuffer=dict_get_search_list();
  4336. if(arrBuffer.length>0){
  4337. g_CurrDictBuffer=JSON.stringify(arrBuffer);
  4338. dict_mark_word_list_done();
  4339. editor_dict_match();
  4340. }
  4341. else{
  4342. document.getElementById('editor_doc_notify').innerHTML="no new part";
  4343. }
  4344. }
  4345. function win_close(id){
  4346. document.getElementById(id).style.display="none";
  4347. }
  4348. //利用下拉菜单修改单词信息
  4349. function fieldListChanged(inWordId,inField,inChangeTo,sParent=null){
  4350. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  4351. var wordIndex=getWordIndex(inWordId);
  4352. let arr_id_word = inWordId.split("-");
  4353. let book=arr_id_word[0].slice(1);
  4354. let paragraph = arr_id_word[1];
  4355. setNodeText(xAllWord[wordIndex],"status","7");
  4356. setNodeAttr(xAllWord[wordIndex],inField,"status","7");
  4357. if(inField=="om"){/*拆分意思去掉开头的[a]*/
  4358. inChangeTo=inChangeTo.replace("[a]","");
  4359. }
  4360. setNodeText(xAllWord[wordIndex],inField,inChangeTo);
  4361. if(sParent){
  4362. setNodeText(xAllWord[wordIndex],"parent",sParent);
  4363. }
  4364. //提交用户逐词解析数据库
  4365. user_wbw_push_word(inWordId);
  4366. user_wbw_commit();
  4367. //准备消息数据
  4368. let d=new Date();
  4369. let msg_doc_id;
  4370. if(doc_info.sendmsg){
  4371. if(doc_info.parent_id!=""){
  4372. msg_doc_id=doc_info.parent_id;
  4373. }
  4374. else{
  4375. msg_doc_id=doc_info.doc_id;
  4376. }
  4377. msg_push(1,"{\"id\":\""+inWordId+"\",\""+inField+"\":\""+inChangeTo+"\",\"status\":\"7\"}",msg_doc_id,d.getTime(),book,paragraph);
  4378. }
  4379. modifyWordDetailByWordIndex(wordIndex);
  4380. //modify other same word with auto-mark
  4381. var word = getNodeText(xAllWord[wordIndex],"real");
  4382. for(var i=wordIndex+1;i<xAllWord.length;i++){
  4383. let status = getNodeText(xAllWord[i],"status");
  4384. if(status!=7){
  4385. if(getNodeText(xAllWord[i],"real")==word){
  4386. setNodeText(xAllWord[i],inField,inChangeTo);
  4387. if(sParent){
  4388. setNodeText(xAllWord[i],"parent",sParent);
  4389. }
  4390. setNodeText(xAllWord[i],"status","5");
  4391. //准备消息数据
  4392. if(doc_info.sendmsg){
  4393. let wordid=getNodeText(xAllWord[i],"id");
  4394. msg_push(1,"{\"id\":\""+wordid+"\",\""+inField+"\":\""+inChangeTo+"\",\"status\":\"5\"}",msg_doc_id,d.getTime(),book,paragraph);
  4395. }
  4396. modifyWordDetailByWordIndex(i);
  4397. }
  4398. }
  4399. }
  4400. }
  4401. function show_tran_msg(bid,begin,end){
  4402. msg_show_msg_content(2,bid+"-"+begin+"-"+end);
  4403. }
  4404. function word_msg_counter_click(wordId){
  4405. msg_show_content(1,wordId);
  4406. msg_show_content_panal();
  4407. tab_click('msg_panal_right','rb_msg');
  4408. editor_show_right_tool_bar(true);
  4409. }
  4410. function msg_show_msg_content(type,id){
  4411. msg_show_content(type,id);
  4412. msg_show_content_panal();
  4413. tab_click('msg_panal_right','rb_msg');
  4414. }
  4415. function msg_show_list_panal(){
  4416. $("#msg_panal_content_toolbar").hide();
  4417. $("#msg_panal_content").hide();
  4418. $("#msg_panal_list_toolbar").show();
  4419. $("#msg_panal_list").show();
  4420. }
  4421. function msg_show_content_panal(){
  4422. $("#msg_panal_content_toolbar").show();
  4423. $("#msg_panal_content").show();
  4424. $("#msg_panal_list_toolbar").hide();
  4425. $("#msg_panal_list").hide();
  4426. }
  4427. function editor_word_status_by_id(id,newStatus=null){
  4428. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  4429. return(editor_word_status(xAllWord[getWordIndex(wordId)]),newStatus);
  4430. }
  4431. function editor_word_status(wElement,newStatus=null){
  4432. if(newStatus==null){
  4433. var wStatus=getNodeText(wElement,"status");
  4434. if(wStatus==""){
  4435. var oldVerStauts=getNodeText(wElement,"bmc");
  4436. if(oldVerStauts==""){
  4437. setNodeText(wElement,"status","1");//未处理
  4438. return(1);
  4439. }
  4440. else if(oldVerStauts=="bmca"){
  4441. setNodeText(wElement,"status","3");//自己机器自动
  4442. return(3);
  4443. }
  4444. else{
  4445. setNodeText(wElement,"status","7");//人工
  4446. return(7);
  4447. }
  4448. }
  4449. else{
  4450. return(wStatus);
  4451. }
  4452. }
  4453. else{
  4454. setNodeText(wElement,"status",newStatus.toString());
  4455. }
  4456. }
  4457. //载入用户设置
  4458. function editor_setup_load(){
  4459. $.post("user_setup.php",
  4460. {
  4461. op:"load"
  4462. },
  4463. function(data,status){
  4464. if(data.length>0){
  4465. gUserSetup=JSON.parse(data);
  4466. }
  4467. });
  4468. }
  4469. //修改用户设置
  4470. function editor_setup_save(key,value){
  4471. $.post("user_setup.php",
  4472. {
  4473. op:"save",
  4474. key:key,
  4475. value:value
  4476. },
  4477. function(data,status){
  4478. if(data.length>0){
  4479. gUserSetup=JSON.parse(data);
  4480. }
  4481. });
  4482. }
  4483. function tran_sen_save_click(blockid,senBegin,senEnd,obj){
  4484. let textareaid="ta_"+blockid+"_"+senBegin+"_"+senEnd;
  4485. let newText=$("#"+textareaid).val();
  4486. tran_sen_save(blockid,senBegin,senEnd,newText);
  4487. }
  4488. function tran_sen_save(blockid,senBegin,senEnd,input){
  4489. if(input.length>0){
  4490. //input=input.replace(/\n\n/g,"<br />");
  4491. }
  4492. input=term_edit_to_std_str(input);
  4493. setTranText(blockid,senEnd,input);
  4494. doc_tran("#"+blockid).text(senBegin,senEnd,"status",7);
  4495. }
  4496. function tran_text_onchange(blockid,senBegin,senEnd,obj){
  4497. let newText=obj.value;
  4498. sen_save(blockid,senBegin,senEnd,newText);
  4499. tran_sen_save(blockid,senBegin,senEnd,newText);
  4500. }
  4501. /*
  4502. 句子失去焦点
  4503. 退出编辑状态
  4504. */
  4505. function tran_sent_div_blur(blockId,senBegin,senEnd,obj){
  4506. obj.style.height="1.4em";
  4507. }
  4508. function tran_sent_div_onfocus(blockId,senBegin,senEnd,obj){
  4509. obj.style.height="5em";
  4510. }
  4511. //鼠标移到逐句翻译上 编辑状态
  4512. function tran_sent_div_mouseenter(blockId,wordSn){
  4513. /*
  4514. $("#tran_sent_text_div_"+blockId+"_"+wordSn).show();
  4515. if(_tran_show_preview_on_edit==true){
  4516. $("#tran_pre_"+blockId+"_"+wordSn).show();
  4517. }
  4518. else{
  4519. $("#tran_pre_"+blockId+"_"+wordSn).hide();
  4520. }
  4521. */
  4522. }
  4523. function set_tran_show_mode(set,obj){
  4524. if(set==1){
  4525. _tran_show_preview_on_edit=obj.checked;
  4526. }else if(set==2){
  4527. _tran_show_textarea_esc_edit=obj.checked;
  4528. if(obj.checked){
  4529. $(".tran_sen_textarea").show();
  4530. }else{
  4531. $(".tran_sen_textarea").hide();
  4532. }
  4533. }
  4534. }
  4535. //按自动查词典按钮
  4536. var _para_list=new Array();
  4537. function menu_dict_match1(){
  4538. var book;
  4539. var para=new Array();
  4540. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  4541. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  4542. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  4543. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  4544. book=getNodeText(xmlParInfo,"book")
  4545. paragraph=getNodeText(xmlParInfo,"paragraph");
  4546. para[book+"-"+paragraph]={"book":book,"para":paragraph};
  4547. }
  4548. _para_list=new Array;
  4549. for(var i in para){
  4550. _para_list.push(para[i]);
  4551. }
  4552. if(_para_list.length>0){
  4553. auto_match_wbw(0);
  4554. }
  4555. }
  4556. //自动查词典
  4557. function auto_match_wbw(para_index){
  4558. $.get("dict_find_auto.php",
  4559. {
  4560. book:_para_list[para_index].book,
  4561. para:_para_list[para_index].para
  4562. },
  4563. function(data,status){
  4564. if(data.length>0){
  4565. var dict_data=new Array();
  4566. try{
  4567. dict_data=JSON.parse(data);
  4568. }
  4569. catch(error){
  4570. ntf_show("Error:"+error+"<br>"+data);
  4571. }
  4572. var counter=0;
  4573. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  4574. for(var x=0;x<xAllWord.length;x++){
  4575. let wordStatus=getNodeText(xAllWord[x],"status");
  4576. if(parseInt(wordStatus)>3){
  4577. //忽略已经被用户修改的词
  4578. continue;
  4579. }
  4580. let wid=getNodeText(xAllWord[x],"id");
  4581. let aid=wid.split("-");
  4582. let book=aid[0].substr(1);
  4583. let para=aid[1];
  4584. let num=aid[2];
  4585. for(var i=0;i<dict_data.length;i++){
  4586. if(dict_data[i].book==book && dict_data[i].paragraph==para && dict_data[i].num==num ){
  4587. if(dict_data[i].type){
  4588. setNodeText(xAllWord[x],"type",dict_data[i].type);
  4589. }
  4590. if(dict_data[i].gramma){
  4591. setNodeText(xAllWord[x],"gramma",dict_data[i].gramma);
  4592. }
  4593. setNodeText(xAllWord[x],"case",dict_data[i].type+"#"+dict_data[i].gramma);
  4594. if(dict_data[i].mean){
  4595. setNodeText(xAllWord[x],"mean",dict_data[i].mean);
  4596. }
  4597. if(dict_data[i].parent){
  4598. setNodeText(xAllWord[x],"parent",dict_data[i].parent);
  4599. }
  4600. if(dict_data[i].parts){
  4601. setNodeText(xAllWord[x],"org",dict_data[i].parts);
  4602. }
  4603. if(dict_data[i].partmean){
  4604. setNodeText(xAllWord[x],"om",dict_data[i].partmean);
  4605. }
  4606. setNodeText(xAllWord[x],"status","3");
  4607. counter++;
  4608. modifyWordDetailByWordId(wid);
  4609. user_wbw_push_word(wid);
  4610. break;
  4611. }
  4612. }
  4613. }
  4614. user_wbw_commit();
  4615. }
  4616. //计算查字典的进度
  4617. var precent=para_index*100/(_para_list.length-1);
  4618. ntf_show(gLocal.gui.auto_fill+_para_list[para_index].book+"-"+_para_list[para_index].para+"-"+precent.toFixed(1)+"%"+gLocal.gui.finished);
  4619. para_index++;
  4620. if(para_index<_para_list.length){
  4621. auto_match_wbw(para_index);
  4622. }
  4623. });
  4624. }
  4625. //旧版本的xml解析
  4626. function oldVerDataParse(oldXmlData){
  4627. createXmlDoc();
  4628. newBlockString="<root><block><info></info><data></data></block></root>"
  4629. if (window.DOMParser){
  4630. parser=new DOMParser();
  4631. newXmlBlock=parser.parseFromString(newBlockString,"text/xml");
  4632. }
  4633. else{ // Internet Explorer
  4634. newXmlBlock=new ActiveXObject("Microsoft.XMLDOM");
  4635. newXmlBlock.async="false";
  4636. newXmlBlock.loadXML(newBlockString);
  4637. }
  4638. if (newXmlBlock == null){
  4639. alert("error:can not load book index.");
  4640. return;
  4641. }
  4642. var titleBlockInfo = new Array()
  4643. var titleInfo = new Object;
  4644. titleInfo.language="pali";
  4645. titleInfo.author="author";
  4646. titleBlockInfo.push(titleInfo);
  4647. var titleInfo = new Object;
  4648. titleInfo.language="en";
  4649. titleInfo.author="author";
  4650. titleBlockInfo.push(titleInfo);
  4651. var titleInfo = new Object;
  4652. titleInfo.language="zh";
  4653. titleInfo.author="author";
  4654. titleBlockInfo.push(titleInfo);
  4655. var iPara=1
  4656. var BookId=com_guid();
  4657. var x = gXmlOldVerData.getElementsByTagName("sutta");
  4658. for (var i=0;i<x.length;i++){
  4659. //title begin
  4660. xTitle = x[i].getElementsByTagName("title");
  4661. /*if title node is */
  4662. if(xTitle.length>0){
  4663. /*text of title*/
  4664. var xTitleText = xTitle[0].getElementsByTagName("text");
  4665. if(xTitleText.length>0){
  4666. for (var iTitleText=0;iTitleText<xTitleText.length;iTitleText++){
  4667. cloneBlock=newXmlBlock.cloneNode(true)
  4668. newBlock=cloneBlock.getElementsByTagName("block")[0]
  4669. xmlNewInfo = newBlock.getElementsByTagName("info")[0];
  4670. xmlNewData = newBlock.getElementsByTagName("data")[0];
  4671. var titleLangauge="en";
  4672. var titleAuthor="unkow";
  4673. var xTitleTextInfo = xTitleText[iTitleText].getElementsByTagName("info");
  4674. if(xTitleTextInfo.length>0){
  4675. titleLangauge=getNodeText(xTitleTextInfo[0],"language");
  4676. titleAuthor=getNodeText(xTitleTextInfo[0],"tranAuthor");
  4677. }
  4678. var strTitle = getNodeText(xTitleText[iTitleText],"data");
  4679. setNodeText(xmlNewInfo,"type","heading");
  4680. setNodeText(xmlNewInfo,"paragraph",iPara.toString());
  4681. setNodeText(xmlNewInfo,"book",BookId);
  4682. setNodeText(xmlNewInfo,"author","kosalla");
  4683. setNodeText(xmlNewInfo,"language",titleLangauge);
  4684. setNodeText(xmlNewInfo,"edition",'0');
  4685. setNodeText(xmlNewInfo,"subedition",'0');
  4686. setNodeText(xmlNewInfo,"level",'1');
  4687. setNodeText(xmlNewInfo,"id",com_guid());
  4688. setNodeText(xmlNewData,"text",strTitle);
  4689. gXmlBookDataBody.appendChild(newBlock);
  4690. }
  4691. }
  4692. /*end of text of title*/
  4693. }
  4694. //end of title
  4695. xParagraph = x[i].getElementsByTagName("paragraph");
  4696. for (var j=0;j<xParagraph.length;j++){
  4697. //toc begin
  4698. if(j>0){
  4699. for(var iTran=0;iTran<titleBlockInfo.length;iTran++){
  4700. cloneBlock=newXmlBlock.cloneNode(true)
  4701. newBlock=cloneBlock.getElementsByTagName("block")[0]
  4702. xmlNewInfo = newBlock.getElementsByTagName("info")[0];
  4703. xmlNewData = newBlock.getElementsByTagName("data")[0];
  4704. titleLangauge=titleBlockInfo[iTran].language;
  4705. titleAuthor=titleBlockInfo[iTran].author;
  4706. var strTitle = "new title";
  4707. setNodeText(xmlNewInfo,"type","heading");
  4708. setNodeText(xmlNewInfo,"paragraph",iPara.toString());
  4709. setNodeText(xmlNewInfo,"book",BookId);
  4710. setNodeText(xmlNewInfo,"author",titleAuthor);
  4711. setNodeText(xmlNewInfo,"language",titleLangauge);
  4712. setNodeText(xmlNewInfo,"edition",'0');
  4713. setNodeText(xmlNewInfo,"subedition",'0');
  4714. setNodeText(xmlNewInfo,"level",'0');
  4715. setNodeText(xmlNewInfo,"id",com_guid());
  4716. setNodeText(xmlNewData,"text",strTitle);
  4717. gXmlBookDataBody.appendChild(newBlock);
  4718. }
  4719. }
  4720. //toc end
  4721. //word by word paragraph begin
  4722. xPali = xParagraph[j].getElementsByTagName("palipar");
  4723. if(xPali.length>0){
  4724. cloneBlock=newXmlBlock.cloneNode(true)
  4725. newBlock=cloneBlock.getElementsByTagName("block")[0]
  4726. xmlNewInfo = newBlock.getElementsByTagName("info")[0];
  4727. xmlNewData = newBlock.getElementsByTagName("data")[0];
  4728. setNodeText(xmlNewInfo,"type","wbw");
  4729. setNodeText(xmlNewInfo,"paragraph",iPara.toString());
  4730. setNodeText(xmlNewInfo,"book",BookId);
  4731. setNodeText(xmlNewInfo,"author","kosalla");
  4732. setNodeText(xmlNewInfo,"edition",'0');
  4733. setNodeText(xmlNewInfo,"subedition",'0');
  4734. setNodeText(xmlNewInfo,"id",com_guid());
  4735. xWord = xPali[0].getElementsByTagName("word");//如果只有一个palipar
  4736. /*遍历此段落中所有单词*/
  4737. var iSen=0;
  4738. var strTranWords="";
  4739. for(k=0;k<xWord.length;k++){
  4740. newWord=xWord[k].cloneNode(true);
  4741. xmlNewData.appendChild(newWord);
  4742. }
  4743. gXmlBookDataBody.appendChild(newBlock);
  4744. }
  4745. //word by word paragraph begin
  4746. /*翻译块开始*/
  4747. xTran = xParagraph[j].getElementsByTagName("translate");
  4748. if(xTran.length>0){
  4749. /*text of translate*/
  4750. var xTranText = xTran[0].getElementsByTagName("text");
  4751. if(xTranText.length>0){
  4752. for (iTranText=0;iTranText<xTranText.length;iTranText++){
  4753. cloneBlock=newXmlBlock.cloneNode(true)
  4754. newBlock=cloneBlock.getElementsByTagName("block")[0]
  4755. xmlNewInfo = newBlock.getElementsByTagName("info")[0];
  4756. xmlNewData = newBlock.getElementsByTagName("data")[0];
  4757. var tranLangauge="";
  4758. var tranAuthor="";
  4759. var xTranTextInfo = xTranText[iTranText].getElementsByTagName("info");
  4760. if(xTranTextInfo.length>0){
  4761. tranLangauge=getNodeText(xTranTextInfo[0],"language");
  4762. tranAuthor=getNodeText(xTranTextInfo[0],"author");
  4763. }
  4764. var strTran = getNodeText(xTranText[iTranText],"data");
  4765. setNodeText(xmlNewInfo,"type","translate");
  4766. setNodeText(xmlNewInfo,"paragraph",iPara.toString());
  4767. setNodeText(xmlNewInfo,"book",BookId);
  4768. setNodeText(xmlNewInfo,"author",tranAuthor);
  4769. setNodeText(xmlNewInfo,"language",tranLangauge);
  4770. setNodeText(xmlNewInfo,"edition",'0');
  4771. setNodeText(xmlNewInfo,"subedition",'0');
  4772. setNodeText(xmlNewInfo,"id",com_guid());
  4773. newSen=newXmlBlock.createElement("sen");
  4774. setNodeText(newSen,"a","");
  4775. setNodeText(newSen,"text",strTran);
  4776. xmlNewData.appendChild(newSen);
  4777. gXmlBookDataBody.appendChild(newBlock);
  4778. }
  4779. }
  4780. /*end of text of translate*/
  4781. }
  4782. /*翻译块结束*/
  4783. /*文件内note块开始*/
  4784. xTran = xParagraph[j].getElementsByTagName("comm");
  4785. if(xTran.length>0){
  4786. /*text of translate*/
  4787. var xTranText = xTran[0].getElementsByTagName("text");
  4788. if(xTranText.length>0){
  4789. for (iTranText=0;iTranText<xTranText.length;iTranText++){
  4790. cloneBlock=newXmlBlock.cloneNode(true)
  4791. newBlock=cloneBlock.getElementsByTagName("block")[0]
  4792. xmlNewInfo = newBlock.getElementsByTagName("info")[0];
  4793. xmlNewData = newBlock.getElementsByTagName("data")[0];
  4794. var tranLangauge="";
  4795. var tranAuthor="";
  4796. var xTranTextInfo = xTranText[iTranText].getElementsByTagName("info");
  4797. if(xTranTextInfo.length>0){
  4798. tranLangauge=getNodeText(xTranTextInfo[0],"language");
  4799. tranAuthor=getNodeText(xTranTextInfo[0],"author");
  4800. }
  4801. var strNote = getNodeText(xTranText[iTranText],"data");
  4802. setNodeText(xmlNewInfo,"type","note");
  4803. setNodeText(xmlNewInfo,"paragraph",iPara.toString());
  4804. setNodeText(xmlNewInfo,"book",BookId);
  4805. setNodeText(xmlNewInfo,"author",tranAuthor);
  4806. setNodeText(xmlNewInfo,"language",titleLangauge);
  4807. setNodeText(xmlNewInfo,"edition",'0');
  4808. setNodeText(xmlNewInfo,"subedition",'0');
  4809. setNodeText(xmlNewInfo,"id",com_guid());
  4810. newSen=newXmlBlock.createElement("sen");
  4811. setNodeText(newSen,"a","");
  4812. setNodeText(newSen,"text",strNote);
  4813. xmlNewData.appendChild(newSen);
  4814. gXmlBookDataBody.appendChild(newBlock);
  4815. }
  4816. }
  4817. /*end of text of translate*/
  4818. }
  4819. /*文件内翻译块结束*/
  4820. iPara++
  4821. }
  4822. }
  4823. projectDataParse(gXmlBookData)
  4824. updataToc()
  4825. refreshResource()
  4826. }
  4827. function add_part(part){
  4828. $("#input_org").val(part);
  4829. }