Grammalecte  Hex Artifact Content

Artifact a95656b530916c2c81939764f5f651135317d953c69f878ac79de4183505117a:


0000: 2f 2f 20 4a 61 76 61 53 63 72 69 70 74 0a 0a 22  // JavaScript.."
0010: 75 73 65 20 73 74 72 69 63 74 22 3b 0a 0a 2f 2f  use strict";..//
0020: 20 43 68 72 6f 6d 65 20 64 6f 6e e2 80 99 74 20   Chrome don...t 
0030: 66 6f 6c 6c 6f 77 20 74 68 65 20 57 33 43 20 73  follow the W3C s
0040: 70 65 63 69 66 69 63 61 74 69 6f 6e 3a 0a 2f 2f  pecification:.//
0050: 20 68 74 74 70 73 3a 2f 2f 62 72 6f 77 73 65 72   https://browser
0060: 65 78 74 2e 67 69 74 68 75 62 2e 69 6f 2f 62 72  ext.github.io/br
0070: 6f 77 73 65 72 65 78 74 2f 0a 6c 65 74 20 62 43  owserext/.let bC
0080: 68 72 6f 6d 65 20 3d 20 66 61 6c 73 65 3b 0a 69  hrome = false;.i
0090: 66 20 28 74 79 70 65 6f 66 28 62 72 6f 77 73 65  f (typeof(browse
00a0: 72 29 20 21 3d 3d 20 22 6f 62 6a 65 63 74 22 29  r) !== "object")
00b0: 20 7b 0a 20 20 20 20 76 61 72 20 62 72 6f 77 73   {.    var brows
00c0: 65 72 20 3d 20 63 68 72 6f 6d 65 3b 0a 20 20 20  er = chrome;.   
00d0: 20 62 43 68 72 6f 6d 65 20 3d 20 74 72 75 65 3b   bChrome = true;
00e0: 0a 7d 0a 0a 0a 2f 2a 0a 20 20 20 20 43 6f 6d 6d  .}.../*.    Comm
00f0: 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2f 0a  on functions.*/.
0100: 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f 77 45 72  .function showEr
0110: 72 6f 72 20 28 65 29 20 7b 0a 20 20 20 20 63 6f  ror (e) {.    co
0120: 6e 73 6f 6c 65 2e 65 72 72 6f 72 28 65 2e 66 69  nsole.error(e.fi
0130: 6c 65 4e 61 6d 65 20 2b 20 22 5c 6e 22 20 2b 20  leName + "\n" + 
0140: 65 2e 6e 61 6d 65 20 2b 20 22 5c 6e 6c 69 6e 65  e.name + "\nline
0150: 3a 20 22 20 2b 20 65 2e 6c 69 6e 65 4e 75 6d 62  : " + e.lineNumb
0160: 65 72 20 2b 20 22 5c 6e 22 20 2b 20 65 2e 6d 65  er + "\n" + e.me
0170: 73 73 61 67 65 29 3b 0a 7d 0a 0a 66 75 6e 63 74  ssage);.}..funct
0180: 69 6f 6e 20 63 72 65 61 74 65 4e 6f 64 65 20 28  ion createNode (
0190: 73 54 79 70 65 2c 20 6f 41 74 74 72 2c 20 6f 44  sType, oAttr, oD
01a0: 61 74 61 73 65 74 3d 6e 75 6c 6c 29 20 7b 0a 20  ataset=null) {. 
01b0: 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20     try {.       
01c0: 20 6c 65 74 20 78 4e 6f 64 65 20 3d 20 64 6f 63   let xNode = doc
01d0: 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d  ument.createElem
01e0: 65 6e 74 28 73 54 79 70 65 29 3b 0a 20 20 20 20  ent(sType);.    
01f0: 20 20 20 20 4f 62 6a 65 63 74 2e 61 73 73 69 67      Object.assig
0200: 6e 28 78 4e 6f 64 65 2c 20 6f 41 74 74 72 29 3b  n(xNode, oAttr);
0210: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 44 61  .        if (oDa
0220: 74 61 73 65 74 29 20 7b 0a 20 20 20 20 20 20 20  taset) {.       
0230: 20 20 20 20 20 4f 62 6a 65 63 74 2e 61 73 73 69       Object.assi
0240: 67 6e 28 78 4e 6f 64 65 2e 64 61 74 61 73 65 74  gn(xNode.dataset
0250: 2c 20 6f 44 61 74 61 73 65 74 29 3b 0a 20 20 20  , oDataset);.   
0260: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72       }.        r
0270: 65 74 75 72 6e 20 78 4e 6f 64 65 3b 0a 20 20 20  eturn xNode;.   
0280: 20 7d 0a 20 20 20 20 63 61 74 63 68 20 28 65 29   }.    catch (e)
0290: 20 7b 0a 20 20 20 20 20 20 20 20 73 68 6f 77 45   {.        showE
02a0: 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 7d 0a 7d  rror(e);.    }.}
02b0: 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f 77 45  ..function showE
02c0: 6c 65 6d 65 6e 74 20 28 73 45 6c 65 6d 49 64 2c  lement (sElemId,
02d0: 20 73 44 69 73 70 6c 61 79 3d 22 62 6c 6f 63 6b   sDisplay="block
02e0: 22 29 20 7b 0a 20 20 20 20 69 66 20 28 64 6f 63  ") {.    if (doc
02f0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
0300: 42 79 49 64 28 73 45 6c 65 6d 49 64 29 29 20 7b  ById(sElemId)) {
0310: 0a 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e  .        documen
0320: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
0330: 28 73 45 6c 65 6d 49 64 29 2e 73 74 79 6c 65 2e  (sElemId).style.
0340: 64 69 73 70 6c 61 79 20 3d 20 73 44 69 73 70 6c  display = sDispl
0350: 61 79 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  ay;.    } else {
0360: 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65  .        console
0370: 2e 6c 6f 67 28 22 48 54 4d 4c 20 6e 6f 64 65 20  .log("HTML node 
0380: 6e 61 6d 65 64 20 3c 22 20 2b 20 73 45 6c 65 6d  named <" + sElem
0390: 49 64 20 2b 20 22 3e 20 6e 6f 74 20 66 6f 75 6e  Id + "> not foun
03a0: 64 2e 22 29 0a 20 20 20 20 7d 0a 7d 0a 0a 66 75  d.").    }.}..fu
03b0: 6e 63 74 69 6f 6e 20 68 69 64 65 45 6c 65 6d 65  nction hideEleme
03c0: 6e 74 20 28 73 45 6c 65 6d 49 64 29 20 7b 0a 20  nt (sElemId) {. 
03d0: 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e     if (document.
03e0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 73  getElementById(s
03f0: 45 6c 65 6d 49 64 29 29 20 7b 0a 20 20 20 20 20  ElemId)) {.     
0400: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
0410: 6c 65 6d 65 6e 74 42 79 49 64 28 73 45 6c 65 6d  lementById(sElem
0420: 49 64 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  Id).style.displa
0430: 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20  y = "none";.    
0440: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20  } else {.       
0450: 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 22 48 54   console.log("HT
0460: 4d 4c 20 6e 6f 64 65 20 6e 61 6d 65 64 20 3c 22  ML node named <"
0470: 20 2b 20 73 45 6c 65 6d 49 64 20 2b 20 22 3e 20   + sElemId + "> 
0480: 6e 6f 74 20 66 6f 75 6e 64 2e 22 29 0a 20 20 20  not found.").   
0490: 20 7d 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 73   }.}..function s
04a0: 77 69 74 63 68 44 69 73 70 6c 61 79 20 28 73 45  witchDisplay (sE
04b0: 6c 65 6d 49 64 2c 20 73 44 69 73 70 6c 61 79 3d  lemId, sDisplay=
04c0: 22 62 6c 6f 63 6b 22 29 20 7b 0a 20 20 20 20 69  "block") {.    i
04d0: 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45  f (document.getE
04e0: 6c 65 6d 65 6e 74 42 79 49 64 28 73 45 6c 65 6d  lementById(sElem
04f0: 49 64 29 29 20 7b 0a 20 20 20 20 20 20 20 20 69  Id)) {.        i
0500: 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45  f (document.getE
0510: 6c 65 6d 65 6e 74 42 79 49 64 28 73 45 6c 65 6d  lementById(sElem
0520: 49 64 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  Id).style.displa
0530: 79 20 21 3d 20 22 6e 6f 6e 65 22 29 20 7b 0a 20  y != "none") {. 
0540: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
0550: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
0560: 49 64 28 73 45 6c 65 6d 49 64 29 2e 73 74 79 6c  Id(sElemId).styl
0570: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e  e.display = "non
0580: 65 22 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  e";.        } el
0590: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
05a0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
05b0: 6d 65 6e 74 42 79 49 64 28 73 45 6c 65 6d 49 64  mentById(sElemId
05c0: 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  ).style.display 
05d0: 3d 20 73 44 69 73 70 6c 61 79 3b 0a 20 20 20 20  = sDisplay;.    
05e0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 66      }.    }.}..f
05f0: 75 6e 63 74 69 6f 6e 20 73 68 6f 77 4d 65 73 73  unction showMess
0600: 61 67 65 20 28 73 4d 65 73 73 61 67 65 29 20 7b  age (sMessage) {
0610: 0a 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67  .    console.log
0620: 28 73 4d 65 73 73 61 67 65 29 3b 0a 7d 0a 0a 0a  (sMessage);.}...
0630: 63 6f 6e 73 74 20 6f 54 61 62 75 6c 61 74 69 6f  const oTabulatio
0640: 6e 73 20 3d 20 7b 0a 0a 20 20 20 20 6c 50 61 67  ns = {..    lPag
0650: 65 3a 20 5b 22 6c 65 78 69 63 6f 6e 5f 70 61 67  e: ["lexicon_pag
0660: 65 22 2c 20 22 61 64 64 5f 70 61 67 65 22 2c 20  e", "add_page", 
0670: 22 73 65 61 72 63 68 5f 70 61 67 65 22 2c 20 22  "search_page", "
0680: 69 6e 66 6f 5f 70 61 67 65 22 5d 2c 0a 0a 20 20  info_page"],..  
0690: 20 20 73 68 6f 77 50 61 67 65 3a 20 66 75 6e 63    showPage: func
06a0: 74 69 6f 6e 20 28 73 52 65 71 75 65 73 74 65 64  tion (sRequested
06b0: 50 61 67 65 29 20 7b 0a 20 20 20 20 20 20 20 20  Page) {.        
06c0: 66 6f 72 20 28 6c 65 74 20 73 50 61 67 65 20 6f  for (let sPage o
06d0: 66 20 74 68 69 73 2e 6c 50 61 67 65 29 20 7b 0a  f this.lPage) {.
06e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
06f0: 73 50 61 67 65 20 21 3d 3d 20 73 52 65 71 75 65  sPage !== sReque
0700: 73 74 65 64 50 61 67 65 29 20 7b 0a 20 20 20 20  stedPage) {.    
0710: 20 20 20 20 20 20 20 20 20 20 20 20 68 69 64 65              hide
0720: 45 6c 65 6d 65 6e 74 28 73 50 61 67 65 29 3b 0a  Element(sPage);.
0730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0740: 74 68 69 73 2e 64 6f 77 6e 6c 69 67 68 74 42 75  this.downlightBu
0750: 74 74 6f 6e 28 73 50 61 67 65 2e 73 6c 69 63 65  tton(sPage.slice
0760: 28 30 2c 2d 35 29 20 2b 20 22 5f 62 75 74 74 6f  (0,-5) + "_butto
0770: 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  n");.           
0780: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20   }.        }.   
0790: 20 20 20 20 20 73 68 6f 77 45 6c 65 6d 65 6e 74       showElement
07a0: 28 73 52 65 71 75 65 73 74 65 64 50 61 67 65 29  (sRequestedPage)
07b0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 68  ;.        this.h
07c0: 69 67 68 6c 69 67 68 74 42 75 74 74 6f 6e 28 73  ighlightButton(s
07d0: 52 65 71 75 65 73 74 65 64 50 61 67 65 2e 73 6c  RequestedPage.sl
07e0: 69 63 65 28 30 2c 2d 35 29 20 2b 20 22 5f 62 75  ice(0,-5) + "_bu
07f0: 74 74 6f 6e 22 29 3b 0a 20 20 20 20 20 20 20 20  tton");.        
0800: 69 66 20 28 73 52 65 71 75 65 73 74 65 64 50 61  if (sRequestedPa
0810: 67 65 20 3d 3d 20 22 61 64 64 5f 70 61 67 65 22  ge == "add_page"
0820: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
0830: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
0840: 65 6e 74 42 79 49 64 28 22 6c 65 6d 6d 61 22 29  entById("lemma")
0850: 2e 66 6f 63 75 73 28 29 3b 0a 20 20 20 20 20 20  .focus();.      
0860: 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20    }.    },..    
0870: 68 69 67 68 6c 69 67 68 74 42 75 74 74 6f 6e 3a  highlightButton:
0880: 20 66 75 6e 63 74 69 6f 6e 20 28 73 42 75 74 74   function (sButt
0890: 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66  on) {.        if
08a0: 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c   (document.getEl
08b0: 65 6d 65 6e 74 42 79 49 64 28 73 42 75 74 74 6f  ementById(sButto
08c0: 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  n)) {.          
08d0: 20 20 6c 65 74 20 78 42 75 74 74 6f 6e 20 3d 20    let xButton = 
08e0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
08f0: 65 6e 74 42 79 49 64 28 73 42 75 74 74 6f 6e 29  entById(sButton)
0900: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 42  ;.            xB
0910: 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 62 61 63 6b  utton.style.back
0920: 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 22 68  groundColor = "h
0930: 73 6c 28 32 31 30 2c 20 38 30 25 2c 20 39 30 25  sl(210, 80%, 90%
0940: 29 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  )";.            
0950: 78 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 63 6f  xButton.style.co
0960: 6c 6f 72 20 3d 20 22 68 73 6c 28 32 31 30 2c 20  lor = "hsl(210, 
0970: 38 30 25 2c 20 33 30 25 29 22 3b 0a 20 20 20 20  80%, 30%)";.    
0980: 20 20 20 20 20 20 20 20 78 42 75 74 74 6f 6e 2e          xButton.
0990: 73 74 79 6c 65 2e 66 6f 6e 74 57 65 69 67 68 74  style.fontWeight
09a0: 20 3d 20 22 62 6f 6c 64 22 3b 0a 20 20 20 20 20   = "bold";.     
09b0: 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20 20     }.    },..   
09c0: 20 64 6f 77 6e 6c 69 67 68 74 42 75 74 74 6f 6e   downlightButton
09d0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73 42 75 74  : function (sBut
09e0: 74 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 69  ton) {.        i
09f0: 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45  f (document.getE
0a00: 6c 65 6d 65 6e 74 42 79 49 64 28 73 42 75 74 74  lementById(sButt
0a10: 6f 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  on)) {.         
0a20: 20 20 20 6c 65 74 20 78 42 75 74 74 6f 6e 20 3d     let xButton =
0a30: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
0a40: 6d 65 6e 74 42 79 49 64 28 73 42 75 74 74 6f 6e  mentById(sButton
0a50: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  );.            x
0a60: 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 62 61 63  Button.style.bac
0a70: 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 22  kgroundColor = "
0a80: 68 73 6c 28 32 31 30 2c 20 31 30 25 2c 20 39 35  hsl(210, 10%, 95
0a90: 25 29 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  %)";.           
0aa0: 20 78 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 63   xButton.style.c
0ab0: 6f 6c 6f 72 20 3d 20 22 68 73 6c 28 32 31 30 2c  olor = "hsl(210,
0ac0: 20 31 30 25 2c 20 35 30 25 29 22 3b 0a 20 20 20   10%, 50%)";.   
0ad0: 20 20 20 20 20 20 20 20 20 78 42 75 74 74 6f 6e           xButton
0ae0: 2e 73 74 79 6c 65 2e 66 6f 6e 74 57 65 69 67 68  .style.fontWeigh
0af0: 74 20 3d 20 22 6e 6f 72 6d 61 6c 22 3b 0a 20 20  t = "normal";.  
0b00: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a        }.    },..
0b10: 20 20 20 20 6c 69 73 74 65 6e 3a 20 66 75 6e 63      listen: func
0b20: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20  tion () {.      
0b30: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
0b40: 65 6d 65 6e 74 42 79 49 64 28 22 6c 65 78 69 63  ementById("lexic
0b50: 6f 6e 5f 62 75 74 74 6f 6e 22 29 2e 61 64 64 45  on_button").addE
0b60: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c  ventListener("cl
0b70: 69 63 6b 22 2c 20 28 29 20 3d 3e 20 7b 20 74 68  ick", () => { th
0b80: 69 73 2e 73 68 6f 77 50 61 67 65 28 22 6c 65 78  is.showPage("lex
0b90: 69 63 6f 6e 5f 70 61 67 65 22 29 3b 20 7d 2c 20  icon_page"); }, 
0ba0: 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20  false);.        
0bb0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
0bc0: 65 6e 74 42 79 49 64 28 22 61 64 64 5f 62 75 74  entById("add_but
0bd0: 74 6f 6e 22 29 2e 61 64 64 45 76 65 6e 74 4c 69  ton").addEventLi
0be0: 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c 20  stener("click", 
0bf0: 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 73 68 6f  () => { this.sho
0c00: 77 50 61 67 65 28 22 61 64 64 5f 70 61 67 65 22  wPage("add_page"
0c10: 29 3b 20 7d 2c 20 66 61 6c 73 65 29 3b 0a 20 20  ); }, false);.  
0c20: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67        document.g
0c30: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 73  etElementById("s
0c40: 65 61 72 63 68 5f 62 75 74 74 6f 6e 22 29 2e 61  earch_button").a
0c50: 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28  ddEventListener(
0c60: 22 63 6c 69 63 6b 22 2c 20 28 29 20 3d 3e 20 7b  "click", () => {
0c70: 20 74 68 69 73 2e 73 68 6f 77 50 61 67 65 28 22   this.showPage("
0c80: 73 65 61 72 63 68 5f 70 61 67 65 22 29 3b 20 7d  search_page"); }
0c90: 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20  , false);.      
0ca0: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
0cb0: 65 6d 65 6e 74 42 79 49 64 28 22 69 6e 66 6f 5f  ementById("info_
0cc0: 62 75 74 74 6f 6e 22 29 2e 61 64 64 45 76 65 6e  button").addEven
0cd0: 74 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b  tListener("click
0ce0: 22 2c 20 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e  ", () => { this.
0cf0: 73 68 6f 77 50 61 67 65 28 22 69 6e 66 6f 5f 70  showPage("info_p
0d00: 61 67 65 22 29 3b 20 7d 2c 20 66 61 6c 73 65 29  age"); }, false)
0d10: 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6c 61 73  ;.    }.}...clas
0d20: 73 20 54 61 62 6c 65 20 7b 0a 0a 20 20 20 20 63  s Table {..    c
0d30: 6f 6e 73 74 72 75 63 74 6f 72 20 28 73 4e 6f 64  onstructor (sNod
0d40: 65 49 64 2c 20 6c 43 6f 6c 75 6d 6e 2c 20 73 50  eId, lColumn, sP
0d50: 72 6f 67 72 65 73 73 42 61 72 49 64 2c 20 73 52  rogressBarId, sR
0d60: 65 73 75 6c 74 49 64 3d 22 22 2c 20 62 44 65 6c  esultId="", bDel
0d70: 65 74 65 42 75 74 74 6f 6e 73 3d 74 72 75 65 29  eteButtons=true)
0d80: 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   {.        this.
0d90: 73 4e 6f 64 65 49 64 20 3d 20 73 4e 6f 64 65 49  sNodeId = sNodeI
0da0: 64 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  d;.        this.
0db0: 78 54 61 62 6c 65 20 3d 20 64 6f 63 75 6d 65 6e  xTable = documen
0dc0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
0dd0: 28 73 4e 6f 64 65 49 64 29 3b 0a 20 20 20 20 20  (sNodeId);.     
0de0: 20 20 20 74 68 69 73 2e 6e 43 6f 6c 75 6d 6e 20     this.nColumn 
0df0: 3d 20 6c 43 6f 6c 75 6d 6e 2e 6c 65 6e 67 74 68  = lColumn.length
0e00: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c  ;.        this.l
0e10: 43 6f 6c 75 6d 6e 20 3d 20 6c 43 6f 6c 75 6d 6e  Column = lColumn
0e20: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  ;.        this.x
0e30: 50 72 6f 67 72 65 73 73 42 61 72 20 3d 20 64 6f  ProgressBar = do
0e40: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
0e50: 74 42 79 49 64 28 73 50 72 6f 67 72 65 73 73 42  tById(sProgressB
0e60: 61 72 49 64 29 3b 0a 20 20 20 20 20 20 20 20 74  arId);.        t
0e70: 68 69 73 2e 78 4e 75 6d 45 6e 74 72 79 20 3d 20  his.xNumEntry = 
0e80: 28 73 52 65 73 75 6c 74 49 64 29 20 3f 20 64 6f  (sResultId) ? do
0e90: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
0ea0: 74 42 79 49 64 28 73 52 65 73 75 6c 74 49 64 29  tById(sResultId)
0eb0: 20 3a 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20   : null;.       
0ec0: 20 74 68 69 73 2e 69 45 6e 74 72 79 49 6e 64 65   this.iEntryInde
0ed0: 78 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 74  x = 0;.        t
0ee0: 68 69 73 2e 6c 45 6e 74 72 79 20 3d 20 5b 5d 3b  his.lEntry = [];
0ef0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 45  .        this.nE
0f00: 6e 74 72 79 20 3d 20 30 3b 0a 20 20 20 20 20 20  ntry = 0;.      
0f10: 20 20 74 68 69 73 2e 62 44 65 6c 65 74 65 42 75    this.bDeleteBu
0f20: 74 74 6f 6e 73 20 3d 20 62 44 65 6c 65 74 65 42  ttons = bDeleteB
0f30: 75 74 74 6f 6e 73 3b 0a 20 20 20 20 20 20 20 20  uttons;.        
0f40: 74 68 69 73 2e 5f 63 72 65 61 74 65 48 65 61 64  this._createHead
0f50: 65 72 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68  er();.        th
0f60: 69 73 2e 6c 69 73 74 65 6e 28 29 3b 0a 20 20 20  is.listen();.   
0f70: 20 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74 65 48   }..    _createH
0f80: 65 61 64 65 72 20 28 29 20 7b 0a 20 20 20 20 20  eader () {.     
0f90: 20 20 20 6c 65 74 20 78 52 6f 77 4e 6f 64 65 20     let xRowNode 
0fa0: 3d 20 63 72 65 61 74 65 4e 6f 64 65 28 22 74 72  = createNode("tr
0fb0: 22 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ");.        if (
0fc0: 74 68 69 73 2e 62 44 65 6c 65 74 65 42 75 74 74  this.bDeleteButt
0fd0: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ons) {.         
0fe0: 20 20 20 78 52 6f 77 4e 6f 64 65 2e 61 70 70 65     xRowNode.appe
0ff0: 6e 64 43 68 69 6c 64 28 63 72 65 61 74 65 4e 6f  ndChild(createNo
1000: 64 65 28 22 74 68 22 2c 20 7b 20 74 65 78 74 43  de("th", { textC
1010: 6f 6e 74 65 6e 74 3a 20 22 c2 b7 22 2c 20 77 69  ontent: "..", wi
1020: 64 74 68 3a 20 22 31 32 70 78 22 20 7d 29 29 3b  dth: "12px" }));
1030: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
1040: 20 20 20 66 6f 72 20 28 6c 65 74 20 73 43 6f 6c     for (let sCol
1050: 75 6d 6e 20 6f 66 20 74 68 69 73 2e 6c 43 6f 6c  umn of this.lCol
1060: 75 6d 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20  umn) {.         
1070: 20 20 20 78 52 6f 77 4e 6f 64 65 2e 61 70 70 65     xRowNode.appe
1080: 6e 64 43 68 69 6c 64 28 63 72 65 61 74 65 4e 6f  ndChild(createNo
1090: 64 65 28 22 74 68 22 2c 20 7b 20 74 65 78 74 43  de("th", { textC
10a0: 6f 6e 74 65 6e 74 3a 20 73 43 6f 6c 75 6d 6e 20  ontent: sColumn 
10b0: 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  }));.        }. 
10c0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 61 62         this.xTab
10d0: 6c 65 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  le.appendChild(x
10e0: 52 6f 77 4e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a  RowNode);.    }.
10f0: 0a 20 20 20 20 63 6c 65 61 72 20 28 29 20 7b 0a  .    clear () {.
1100: 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74          while (t
1110: 68 69 73 2e 78 54 61 62 6c 65 2e 66 69 72 73 74  his.xTable.first
1120: 43 68 69 6c 64 29 20 7b 0a 20 20 20 20 20 20 20  Child) {.       
1130: 20 20 20 20 20 74 68 69 73 2e 78 54 61 62 6c 65       this.xTable
1140: 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 74 68 69  .removeChild(thi
1150: 73 2e 78 54 61 62 6c 65 2e 66 69 72 73 74 43 68  s.xTable.firstCh
1160: 69 6c 64 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  ild);.        }.
1170: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 45 6e          this.lEn
1180: 74 72 79 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20  try = [];.      
1190: 20 20 74 68 69 73 2e 6e 45 6e 74 72 79 20 3d 20    this.nEntry = 
11a0: 30 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  0;.        this.
11b0: 69 45 6e 74 72 79 49 6e 64 65 78 20 3d 20 30 3b  iEntryIndex = 0;
11c0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63  .        this._c
11d0: 72 65 61 74 65 48 65 61 64 65 72 28 29 3b 0a 20  reateHeader();. 
11e0: 20 20 20 20 20 20 20 74 68 69 73 2e 73 68 6f 77         this.show
11f0: 45 6e 74 72 79 4e 75 6d 62 65 72 28 29 3b 0a 20  EntryNumber();. 
1200: 20 20 20 7d 0a 0a 20 20 20 20 66 69 6c 6c 20 28     }..    fill (
1210: 6c 46 6c 65 78 29 20 7b 0a 20 20 20 20 20 20 20  lFlex) {.       
1220: 20 74 68 69 73 2e 63 6c 65 61 72 28 29 3b 0a 20   this.clear();. 
1230: 20 20 20 20 20 20 20 69 66 20 28 6c 46 6c 65 78         if (lFlex
1240: 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 20  .length > 0) {. 
1250: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1260: 78 50 72 6f 67 72 65 73 73 42 61 72 2e 6d 61 78  xProgressBar.max
1270: 20 3d 20 6c 46 6c 65 78 2e 6c 65 6e 67 74 68 3b   = lFlex.length;
1280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1290: 73 2e 78 50 72 6f 67 72 65 73 73 42 61 72 2e 76  s.xProgressBar.v
12a0: 61 6c 75 65 20 3d 20 31 3b 0a 20 20 20 20 20 20  alue = 1;.      
12b0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 6c        for (let l
12c0: 44 61 74 61 20 6f 66 20 6c 46 6c 65 78 29 20 7b  Data of lFlex) {
12d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12e0: 20 74 68 69 73 2e 5f 61 64 64 52 6f 77 28 6c 44   this._addRow(lD
12f0: 61 74 61 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ata);.          
1300: 20 20 20 20 20 20 74 68 69 73 2e 78 50 72 6f 67        this.xProg
1310: 72 65 73 73 42 61 72 2e 76 61 6c 75 65 20 2b 3d  ressBar.value +=
1320: 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   1;.            
1330: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  }.            th
1340: 69 73 2e 78 50 72 6f 67 72 65 73 73 42 61 72 2e  is.xProgressBar.
1350: 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 78 50 72  value = this.xPr
1360: 6f 67 72 65 73 73 42 61 72 2e 6d 61 78 3b 0a 20  ogressBar.max;. 
1370: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1380: 20 74 68 69 73 2e 6c 45 6e 74 72 79 20 3d 20 6c   this.lEntry = l
1390: 46 6c 65 78 3b 0a 20 20 20 20 20 20 20 20 74 68  Flex;.        th
13a0: 69 73 2e 6e 45 6e 74 72 79 20 3d 20 6c 46 6c 65  is.nEntry = lFle
13b0: 78 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 20 20 20  x.length;.      
13c0: 20 20 74 68 69 73 2e 73 68 6f 77 45 6e 74 72 79    this.showEntry
13d0: 4e 75 6d 62 65 72 28 29 3b 0a 20 20 20 20 7d 0a  Number();.    }.
13e0: 0a 20 20 20 20 61 64 64 45 6e 74 72 69 65 73 20  .    addEntries 
13f0: 28 6c 46 6c 65 78 29 20 7b 0a 20 20 20 20 20 20  (lFlex) {.      
1400: 20 20 74 68 69 73 2e 6c 45 6e 74 72 79 2e 70 75    this.lEntry.pu
1410: 73 68 28 2e 2e 2e 6c 46 6c 65 78 29 3b 0a 20 20  sh(...lFlex);.  
1420: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 6c        for (let l
1430: 44 61 74 61 20 6f 66 20 6c 46 6c 65 78 29 20 7b  Data of lFlex) {
1440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1450: 73 2e 5f 61 64 64 52 6f 77 28 6c 44 61 74 61 29  s._addRow(lData)
1460: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
1470: 20 20 20 20 74 68 69 73 2e 6e 45 6e 74 72 79 20      this.nEntry 
1480: 2b 3d 20 6c 46 6c 65 78 2e 6c 65 6e 67 74 68 3b  += lFlex.length;
1490: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 68  .        this.sh
14a0: 6f 77 45 6e 74 72 79 4e 75 6d 62 65 72 28 29 3b  owEntryNumber();
14b0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 68 6f 77  .    }..    show
14c0: 45 6e 74 72 79 4e 75 6d 62 65 72 20 28 29 20 7b  EntryNumber () {
14d0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
14e0: 73 2e 78 4e 75 6d 45 6e 74 72 79 29 20 7b 0a 20  s.xNumEntry) {. 
14f0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1500: 78 4e 75 6d 45 6e 74 72 79 2e 74 65 78 74 43 6f  xNumEntry.textCo
1510: 6e 74 65 6e 74 20 3d 20 74 68 69 73 2e 6e 45 6e  ntent = this.nEn
1520: 74 72 79 2e 74 6f 53 74 72 69 6e 67 28 29 20 2b  try.toString() +
1530: 20 28 28 74 68 69 73 2e 6e 45 6e 74 72 79 20 3e   ((this.nEntry >
1540: 20 31 29 20 3f 20 22 20 65 6e 74 72 c3 a9 65 73   1) ? " entr..es
1550: 22 20 3a 20 22 20 65 6e 74 72 c3 a9 65 22 29 3b  " : " entr..e");
1560: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
1570: 0a 0a 20 20 20 20 5f 61 64 64 52 6f 77 20 28 6c  ..    _addRow (l
1580: 44 61 74 61 29 20 7b 0a 20 20 20 20 20 20 20 20  Data) {.        
1590: 6c 65 74 20 78 52 6f 77 4e 6f 64 65 20 3d 20 63  let xRowNode = c
15a0: 72 65 61 74 65 4e 6f 64 65 28 22 74 72 22 2c 20  reateNode("tr", 
15b0: 7b 20 69 64 3a 20 74 68 69 73 2e 73 4e 6f 64 65  { id: this.sNode
15c0: 49 64 20 2b 20 22 5f 72 6f 77 5f 22 20 2b 20 74  Id + "_row_" + t
15d0: 68 69 73 2e 69 45 6e 74 72 79 49 6e 64 65 78 20  his.iEntryIndex 
15e0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  });.        if (
15f0: 74 68 69 73 2e 62 44 65 6c 65 74 65 42 75 74 74  this.bDeleteButt
1600: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ons) {.         
1610: 20 20 20 78 52 6f 77 4e 6f 64 65 2e 61 70 70 65     xRowNode.appe
1620: 6e 64 43 68 69 6c 64 28 63 72 65 61 74 65 4e 6f  ndChild(createNo
1630: 64 65 28 22 74 64 22 2c 20 7b 20 74 65 78 74 43  de("td", { textC
1640: 6f 6e 74 65 6e 74 3a 20 22 c3 97 22 2c 20 63 6c  ontent: "..", cl
1650: 61 73 73 4e 61 6d 65 3a 20 22 64 65 6c 65 74 65  assName: "delete
1660: 5f 65 6e 74 72 79 22 2c 20 74 69 74 6c 65 3a 20  _entry", title: 
1670: 22 45 66 66 61 63 65 72 20 63 65 74 74 65 20 65  "Effacer cette e
1680: 6e 74 72 c3 a9 65 22 20 7d 2c 20 7b 20 69 64 5f  ntr..e" }, { id_
1690: 65 6e 74 72 79 3a 20 74 68 69 73 2e 69 45 6e 74  entry: this.iEnt
16a0: 72 79 49 6e 64 65 78 20 7d 29 29 3b 0a 20 20 20  ryIndex }));.   
16b0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66       }.        f
16c0: 6f 72 20 28 6c 65 74 20 64 61 74 61 20 6f 66 20  or (let data of 
16d0: 6c 44 61 74 61 29 20 7b 0a 20 20 20 20 20 20 20  lData) {.       
16e0: 20 20 20 20 20 78 52 6f 77 4e 6f 64 65 2e 61 70       xRowNode.ap
16f0: 70 65 6e 64 43 68 69 6c 64 28 63 72 65 61 74 65  pendChild(create
1700: 4e 6f 64 65 28 22 74 64 22 2c 20 7b 20 74 65 78  Node("td", { tex
1710: 74 43 6f 6e 74 65 6e 74 3a 20 64 61 74 61 20 7d  tContent: data }
1720: 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  ));.        }.  
1730: 20 20 20 20 20 20 74 68 69 73 2e 78 54 61 62 6c        this.xTabl
1740: 65 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 52  e.appendChild(xR
1750: 6f 77 4e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20  owNode);.       
1760: 20 74 68 69 73 2e 69 45 6e 74 72 79 49 6e 64 65   this.iEntryInde
1770: 78 20 2b 3d 20 31 3b 0a 20 20 20 20 7d 0a 0a 20  x += 1;.    }.. 
1780: 20 20 20 6c 69 73 74 65 6e 20 28 29 20 7b 0a 20     listen () {. 
1790: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
17a0: 62 44 65 6c 65 74 65 42 75 74 74 6f 6e 73 29 20  bDeleteButtons) 
17b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
17c0: 69 73 2e 78 54 61 62 6c 65 2e 61 64 64 45 76 65  is.xTable.addEve
17d0: 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63  ntListener("clic
17e0: 6b 22 2c 20 28 78 45 76 65 6e 74 29 20 3d 3e 20  k", (xEvent) => 
17f0: 7b 20 74 68 69 73 2e 6f 6e 54 61 62 6c 65 43 6c  { this.onTableCl
1800: 69 63 6b 28 78 45 76 65 6e 74 29 3b 20 7d 2c 20  ick(xEvent); }, 
1810: 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20  false);.        
1820: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6f 6e 54  }.    }..    onT
1830: 61 62 6c 65 43 6c 69 63 6b 20 28 78 45 76 65 6e  ableClick (xEven
1840: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79  t) {.        try
1850: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c   {.            l
1860: 65 74 20 78 45 6c 65 6d 20 3d 20 78 45 76 65 6e  et xElem = xEven
1870: 74 2e 74 61 72 67 65 74 3b 0a 20 20 20 20 20 20  t.target;.      
1880: 20 20 20 20 20 20 69 66 20 28 78 45 6c 65 6d 2e        if (xElem.
1890: 63 6c 61 73 73 4e 61 6d 65 29 20 7b 0a 20 20 20  className) {.   
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18b0: 28 78 45 6c 65 6d 2e 63 6c 61 73 73 4e 61 6d 65  (xElem.className
18c0: 20 3d 3d 20 22 64 65 6c 65 74 65 5f 65 6e 74 72   == "delete_entr
18d0: 79 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  y") {.          
18e0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 64            this.d
18f0: 65 6c 65 74 65 52 6f 77 28 78 45 6c 65 6d 2e 64  eleteRow(xElem.d
1900: 61 74 61 73 65 74 2e 69 64 5f 65 6e 74 72 79 29  ataset.id_entry)
1910: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
1920: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
1930: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  }.        }.    
1940: 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a      catch (e) {.
1950: 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77              show
1960: 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20  Error(e);.      
1970: 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64    }.    }..    d
1980: 65 6c 65 74 65 52 6f 77 20 28 69 45 6e 74 72 79  eleteRow (iEntry
1990: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ) {.        this
19a0: 2e 6c 45 6e 74 72 79 5b 70 61 72 73 65 49 6e 74  .lEntry[parseInt
19b0: 28 69 45 6e 74 72 79 29 5d 20 3d 20 6e 75 6c 6c  (iEntry)] = null
19c0: 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 6f  ;.        if (do
19d0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
19e0: 74 42 79 49 64 28 74 68 69 73 2e 73 4e 6f 64 65  tById(this.sNode
19f0: 49 64 20 2b 20 22 5f 72 6f 77 5f 22 20 2b 20 69  Id + "_row_" + i
1a00: 45 6e 74 72 79 29 29 20 7b 0a 20 20 20 20 20 20  Entry)) {.      
1a10: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67        document.g
1a20: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 74 68  etElementById(th
1a30: 69 73 2e 73 4e 6f 64 65 49 64 20 2b 20 22 5f 72  is.sNodeId + "_r
1a40: 6f 77 5f 22 20 2b 20 69 45 6e 74 72 79 29 2e 73  ow_" + iEntry).s
1a50: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22  tyle.display = "
1a60: 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 7d  none";.        }
1a70: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 45  .        this.nE
1a80: 6e 74 72 79 20 2d 3d 20 31 3b 0a 20 20 20 20 20  ntry -= 1;.     
1a90: 20 20 20 74 68 69 73 2e 73 68 6f 77 45 6e 74 72     this.showEntr
1aa0: 79 4e 75 6d 62 65 72 28 29 3b 0a 20 20 20 20 20  yNumber();.     
1ab0: 20 20 20 69 66 20 28 74 68 69 73 2e 73 4e 6f 64     if (this.sNod
1ac0: 65 49 64 20 3d 3d 20 22 6c 65 78 69 63 6f 6e 5f  eId == "lexicon_
1ad0: 74 61 62 6c 65 22 29 20 7b 0a 20 20 20 20 20 20  table") {.      
1ae0: 20 20 20 20 20 20 73 68 6f 77 45 6c 65 6d 65 6e        showElemen
1af0: 74 28 22 73 61 76 65 5f 62 75 74 74 6f 6e 22 2c  t("save_button",
1b00: 20 22 69 6e 6c 69 6e 65 2d 62 6c 6f 63 6b 22 29   "inline-block")
1b10: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
1b20: 7d 0a 0a 20 20 20 20 67 65 74 45 6e 74 72 69 65  }..    getEntrie
1b30: 73 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 72  s () {.        r
1b40: 65 74 75 72 6e 20 74 68 69 73 2e 6c 45 6e 74 72  eturn this.lEntr
1b50: 79 2e 66 69 6c 74 65 72 28 28 65 29 20 3d 3e 20  y.filter((e) => 
1b60: 65 20 21 3d 3d 20 6e 75 6c 6c 29 3b 0a 20 20 20  e !== null);.   
1b70: 20 7d 0a 7d 0a 0a 0a 63 6f 6e 73 74 20 6f 47 65   }.}...const oGe
1b80: 6e 65 72 61 74 6f 72 20 3d 20 7b 0a 0a 20 20 20  nerator = {..   
1b90: 20 73 4c 65 6d 6d 61 3a 20 22 22 2c 0a 0a 20 20   sLemma: "",..  
1ba0: 20 20 63 4d 61 69 6e 54 61 67 3a 20 22 22 2c 0a    cMainTag: "",.
1bb0: 0a 20 20 20 20 6c 46 6c 65 78 69 6f 6e 3a 20 5b  .    lFlexion: [
1bc0: 5d 2c 0a 0a 20 20 20 20 6c 69 73 74 65 6e 3a 20  ],..    listen: 
1bd0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
1be0: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67        document.g
1bf0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 65  etElementById("e
1c00: 64 69 74 6f 72 22 29 2e 61 64 64 45 76 65 6e 74  ditor").addEvent
1c10: 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22  Listener("click"
1c20: 2c 20 28 78 45 76 65 6e 74 29 20 3d 3e 20 7b 20  , (xEvent) => { 
1c30: 74 68 69 73 2e 6f 6e 53 65 6c 65 63 74 69 6f 6e  this.onSelection
1c40: 43 6c 69 63 6b 28 78 45 76 65 6e 74 29 3b 20 7d  Click(xEvent); }
1c50: 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20  , false);.      
1c60: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
1c70: 65 6d 65 6e 74 42 79 49 64 28 22 6c 65 6d 6d 61  ementById("lemma
1c80: 22 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65  ").addEventListe
1c90: 6e 65 72 28 22 6b 65 79 75 70 22 2c 20 28 29 20  ner("keyup", () 
1ca0: 3d 3e 20 7b 20 74 68 69 73 2e 6f 6e 57 72 69 74  => { this.onWrit
1cb0: 65 28 29 3b 20 7d 2c 20 66 61 6c 73 65 29 3b 0a  e(); }, false);.
1cc0: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
1cd0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
1ce0: 22 6c 65 6d 6d 61 32 22 29 2e 61 64 64 45 76 65  "lemma2").addEve
1cf0: 6e 74 4c 69 73 74 65 6e 65 72 28 22 6b 65 79 75  ntListener("keyu
1d00: 70 22 2c 20 28 29 20 3d 3e 20 7b 20 74 68 69 73  p", () => { this
1d10: 2e 6f 6e 57 72 69 74 65 32 28 29 3b 20 7d 2c 20  .onWrite2(); }, 
1d20: 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20  false);.        
1d30: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
1d40: 65 6e 74 42 79 49 64 28 22 76 65 72 62 5f 70 61  entById("verb_pa
1d50: 74 74 65 72 6e 22 29 2e 61 64 64 45 76 65 6e 74  ttern").addEvent
1d60: 4c 69 73 74 65 6e 65 72 28 22 6b 65 79 75 70 22  Listener("keyup"
1d70: 2c 20 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 75  , () => { this.u
1d80: 70 64 61 74 65 28 29 3b 20 7d 2c 20 66 61 6c 73  pdate(); }, fals
1d90: 65 29 3b 0a 20 20 20 20 20 20 20 20 64 6f 63 75  e);.        docu
1da0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
1db0: 79 49 64 28 22 66 6c 65 78 69 6f 6e 22 29 2e 61  yId("flexion").a
1dc0: 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28  ddEventListener(
1dd0: 22 6b 65 79 75 70 22 2c 20 28 29 20 3d 3e 20 7b  "keyup", () => {
1de0: 20 74 68 69 73 2e 75 70 64 61 74 65 28 29 3b 20   this.update(); 
1df0: 7d 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20  }, false);.     
1e00: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
1e10: 6c 65 6d 65 6e 74 42 79 49 64 28 22 74 61 67 73  lementById("tags
1e20: 22 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65  ").addEventListe
1e30: 6e 65 72 28 22 6b 65 79 75 70 22 2c 20 28 29 20  ner("keyup", () 
1e40: 3d 3e 20 7b 20 74 68 69 73 2e 75 70 64 61 74 65  => { this.update
1e50: 28 29 3b 20 7d 2c 20 66 61 6c 73 65 29 3b 0a 20  (); }, false);. 
1e60: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
1e70: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
1e80: 61 64 64 5f 74 6f 5f 6c 65 78 69 63 6f 6e 22 29  add_to_lexicon")
1e90: 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65  .addEventListene
1ea0: 72 28 22 63 6c 69 63 6b 22 2c 20 28 29 20 3d 3e  r("click", () =>
1eb0: 20 7b 20 74 68 69 73 2e 61 64 64 54 6f 4c 65 78   { this.addToLex
1ec0: 69 63 6f 6e 28 29 3b 20 7d 2c 20 66 61 6c 73 65  icon(); }, false
1ed0: 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 6c  );.    },..    l
1ee0: 53 65 63 74 69 6f 6e 3a 20 5b 22 6e 6f 6d 22 2c  Section: ["nom",
1ef0: 20 22 76 65 72 62 65 22 2c 20 22 61 64 76 65 72   "verbe", "adver
1f00: 62 65 22 2c 20 22 6e 6f 6d 5f 70 72 6f 70 72 65  be", "nom_propre
1f10: 22 2c 20 22 61 75 74 72 65 22 5d 2c 0a 0a 20 20  ", "autre"],..  
1f20: 20 20 68 69 64 65 41 6c 6c 53 65 63 74 69 6f 6e    hideAllSection
1f30: 73 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  s: function () {
1f40: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65  .        for (le
1f50: 74 20 73 53 65 63 74 69 6f 6e 20 6f 66 20 74 68  t sSection of th
1f60: 69 73 2e 6c 53 65 63 74 69 6f 6e 29 20 7b 0a 20  is.lSection) {. 
1f70: 20 20 20 20 20 20 20 20 20 20 20 68 69 64 65 45             hideE
1f80: 6c 65 6d 65 6e 74 28 22 73 65 63 74 69 6f 6e 5f  lement("section_
1f90: 22 20 2b 20 73 53 65 63 74 69 6f 6e 29 3b 0a 20  " + sSection);. 
1fa0: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
1fb0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
1fc0: 49 64 28 22 73 65 6c 65 63 74 5f 22 20 2b 20 73  Id("select_" + s
1fd0: 53 65 63 74 69 6f 6e 29 2e 73 74 79 6c 65 2e 62  Section).style.b
1fe0: 61 63 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d  ackgroundColor =
1ff0: 20 22 22 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20   "";.        }. 
2000: 20 20 20 7d 2c 0a 0a 20 20 20 20 73 68 6f 77 53     },..    showS
2010: 65 63 74 69 6f 6e 3a 20 66 75 6e 63 74 69 6f 6e  ection: function
2020: 20 28 73 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20   (sName) {.     
2030: 20 20 20 74 68 69 73 2e 63 6c 65 61 72 28 29 3b     this.clear();
2040: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 69  .        this.hi
2050: 64 65 41 6c 6c 53 65 63 74 69 6f 6e 73 28 29 3b  deAllSections();
2060: 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63  .        if (doc
2070: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
2080: 42 79 49 64 28 73 4e 61 6d 65 29 2e 73 74 79 6c  ById(sName).styl
2090: 65 2e 64 69 73 70 6c 61 79 20 3d 3d 20 22 6e 6f  e.display == "no
20a0: 6e 65 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ne") {.         
20b0: 20 20 20 73 68 6f 77 45 6c 65 6d 65 6e 74 28 73     showElement(s
20c0: 4e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  Name);.        }
20d0: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20   else {.        
20e0: 20 20 20 20 68 69 64 65 45 6c 65 6d 65 6e 74 28      hideElement(
20f0: 73 4e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20  sName);.        
2100: 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 6c  }.    },..    cl
2110: 65 61 72 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29  ear: function ()
2120: 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b   {.        try {
2130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63  .            doc
2140: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
2150: 42 79 49 64 28 22 6c 65 6d 6d 61 32 22 29 2e 76  ById("lemma2").v
2160: 61 6c 75 65 20 3d 20 22 22 3b 0a 20 20 20 20 20  alue = "";.     
2170: 20 20 20 20 20 20 20 68 69 64 65 45 6c 65 6d 65         hideEleme
2180: 6e 74 28 22 77 6f 72 64 5f 73 65 63 74 69 6f 6e  nt("word_section
2190: 32 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  2");.           
21a0: 20 2f 2f 20 6e 6f 6d 2c 20 61 64 6a 65 63 74 69   // nom, adjecti
21b0: 66 2c 20 6e 6f 6d 73 20 70 72 6f 70 72 65 73 0a  f, noms propres.
21c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
21d0: 28 6c 65 74 20 78 45 6c 65 6d 20 6f 66 20 64 6f  (let xElem of do
21e0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
21f0: 74 73 42 79 4e 61 6d 65 28 22 50 4f 53 22 29 29  tsByName("POS"))
2200: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
2210: 20 20 20 78 45 6c 65 6d 2e 63 68 65 63 6b 65 64     xElem.checked
2220: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20   = false;.      
2230: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
2240: 20 20 20 20 66 6f 72 20 28 6c 65 74 20 78 45 6c      for (let xEl
2250: 65 6d 20 6f 66 20 64 6f 63 75 6d 65 6e 74 2e 67  em of document.g
2260: 65 74 45 6c 65 6d 65 6e 74 73 42 79 4e 61 6d 65  etElementsByName
2270: 28 22 50 4f 53 32 22 29 29 20 7b 0a 20 20 20 20  ("POS2")) {.    
2280: 20 20 20 20 20 20 20 20 20 20 20 20 78 45 6c 65              xEle
2290: 6d 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73  m.checked = fals
22a0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  e;.            }
22b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
22c0: 20 28 6c 65 74 20 78 45 6c 65 6d 20 6f 66 20 64   (let xElem of d
22d0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
22e0: 6e 74 73 42 79 4e 61 6d 65 28 22 70 6c 75 72 69  ntsByName("pluri
22f0: 65 6c 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  el")) {.        
2300: 20 20 20 20 20 20 20 20 78 45 6c 65 6d 2e 63 68          xElem.ch
2310: 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20  ecked = false;. 
2320: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
2330: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65           for (le
2340: 74 20 78 45 6c 65 6d 20 6f 66 20 64 6f 63 75 6d  t xElem of docum
2350: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42  ent.getElementsB
2360: 79 4e 61 6d 65 28 22 67 65 6e 72 65 22 29 29 20  yName("genre")) 
2370: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
2380: 20 20 78 45 6c 65 6d 2e 63 68 65 63 6b 65 64 20    xElem.checked 
2390: 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20  = false;.       
23a0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
23b0: 20 20 20 66 6f 72 20 28 6c 65 74 20 78 45 6c 65     for (let xEle
23c0: 6d 20 6f 66 20 64 6f 63 75 6d 65 6e 74 2e 67 65  m of document.ge
23d0: 74 45 6c 65 6d 65 6e 74 73 42 79 4e 61 6d 65 28  tElementsByName(
23e0: 22 70 6c 75 72 69 65 6c 32 22 29 29 20 7b 0a 20  "pluriel2")) {. 
23f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2400: 45 6c 65 6d 2e 63 68 65 63 6b 65 64 20 3d 20 66  Elem.checked = f
2410: 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20  alse;.          
2420: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
2430: 66 6f 72 20 28 6c 65 74 20 78 45 6c 65 6d 20 6f  for (let xElem o
2440: 66 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c  f document.getEl
2450: 65 6d 65 6e 74 73 42 79 4e 61 6d 65 28 22 67 65  ementsByName("ge
2460: 6e 72 65 32 22 29 29 20 7b 0a 20 20 20 20 20 20  nre2")) {.      
2470: 20 20 20 20 20 20 20 20 20 20 78 45 6c 65 6d 2e            xElem.
2480: 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b  checked = false;
2490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
24a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 76 65             // ve
24b0: 72 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  rbe.            
24c0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
24d0: 65 6e 74 42 79 49 64 28 22 75 70 5f 76 5f 69 22  entById("up_v_i"
24e0: 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73  ).checked = fals
24f0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  e;.            d
2500: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
2510: 6e 74 42 79 49 64 28 22 75 70 5f 76 5f 74 22 29  ntById("up_v_t")
2520: 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65  .checked = false
2530: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f  ;.            do
2540: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
2550: 74 42 79 49 64 28 22 75 70 5f 76 5f 6e 22 29 2e  tById("up_v_n").
2560: 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b  checked = false;
2570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63  .            doc
2580: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
2590: 42 79 49 64 28 22 75 70 5f 76 5f 70 22 29 2e 63  ById("up_v_p").c
25a0: 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a  hecked = false;.
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
25c0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
25d0: 79 49 64 28 22 75 70 5f 76 5f 6d 22 29 2e 63 68  yId("up_v_m").ch
25e0: 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20  ecked = false;. 
25f0: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
2600: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
2610: 49 64 28 22 75 70 5f 76 5f 61 65 22 29 2e 63 68  Id("up_v_ae").ch
2620: 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20  ecked = false;. 
2630: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
2640: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
2650: 49 64 28 22 75 70 5f 76 5f 61 61 22 29 2e 63 68  Id("up_v_aa").ch
2660: 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20  ecked = false;. 
2670: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
2680: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
2690: 49 64 28 22 76 65 72 62 5f 70 61 74 74 65 72 6e  Id("verb_pattern
26a0: 22 29 2e 76 61 6c 75 65 20 3d 20 22 22 3b 0a 20  ").value = "";. 
26b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 75             // au
26c0: 74 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  tre.            
26d0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
26e0: 65 6e 74 42 79 49 64 28 22 66 6c 65 78 69 6f 6e  entById("flexion
26f0: 22 29 2e 76 61 6c 75 65 20 3d 20 22 22 3b 0a 20  ").value = "";. 
2700: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
2710: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
2720: 49 64 28 22 74 61 67 73 22 29 2e 76 61 6c 75 65  Id("tags").value
2730: 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20 7d   = "";.        }
2740: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
2750: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
2760: 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20   showError(e);. 
2770: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a         }.    },.
2780: 0a 20 20 20 20 6f 6e 53 65 6c 65 63 74 69 6f 6e  .    onSelection
2790: 43 6c 69 63 6b 3a 20 66 75 6e 63 74 69 6f 6e 20  Click: function 
27a0: 28 78 45 76 65 6e 74 29 20 7b 0a 20 20 20 20 20  (xEvent) {.     
27b0: 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20     try {.       
27c0: 20 20 20 20 20 6c 65 74 20 78 45 6c 65 6d 20 3d       let xElem =
27d0: 20 78 45 76 65 6e 74 2e 74 61 72 67 65 74 3b 0a   xEvent.target;.
27e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27f0: 78 45 6c 65 6d 2e 69 64 29 20 7b 0a 20 20 20 20  xElem.id) {.    
2800: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2810: 78 45 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73 57  xElem.id.startsW
2820: 69 74 68 28 22 73 65 6c 65 63 74 5f 22 29 29 20  ith("select_")) 
2830: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
2840: 20 20 20 20 20 20 74 68 69 73 2e 73 68 6f 77 53        this.showS
2850: 65 63 74 69 6f 6e 28 22 73 65 63 74 69 6f 6e 5f  ection("section_
2860: 22 20 2b 20 78 45 6c 65 6d 2e 69 64 2e 73 6c 69  " + xElem.id.sli
2870: 63 65 28 37 29 29 3b 0a 20 20 20 20 20 20 20 20  ce(7));.        
2880: 20 20 20 20 20 20 20 20 20 20 20 20 78 45 6c 65              xEle
2890: 6d 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75  m.style.backgrou
28a0: 6e 64 43 6f 6c 6f 72 20 3d 20 22 68 73 6c 28 32  ndColor = "hsl(2
28b0: 31 30 2c 20 35 30 25 2c 20 39 30 25 29 22 3b 0a  10, 50%, 90%)";.
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d0: 20 20 20 20 74 68 69 73 2e 63 4d 61 69 6e 54 61      this.cMainTa
28e0: 67 20 3d 20 78 45 6c 65 6d 2e 64 61 74 61 73 65  g = xElem.datase
28f0: 74 2e 74 61 67 3b 0a 20 20 20 20 20 20 20 20 20  t.tag;.         
2900: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2910: 75 70 64 61 74 65 28 29 3b 0a 20 20 20 20 20 20  update();.      
2920: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
2930: 20 69 66 20 28 78 45 6c 65 6d 2e 69 64 2e 73 74   if (xElem.id.st
2940: 61 72 74 73 57 69 74 68 28 22 75 70 5f 22 29 29  artsWith("up_"))
2950: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
2960: 20 20 20 20 20 20 20 74 68 69 73 2e 75 70 64 61         this.upda
2970: 74 65 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  te();.          
2980: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
2990: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
29a0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65          catch (e
29b0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
29c0: 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20  showError(e);.  
29d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a        }.    },..
29e0: 20 20 20 20 6e 65 77 45 6e 74 72 79 3a 20 66 75      newEntry: fu
29f0: 6e 63 74 69 6f 6e 20 28 73 57 6f 72 64 29 20 7b  nction (sWord) {
2a00: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
2a10: 65 6f 66 28 73 57 6f 72 64 29 20 21 3d 3d 20 22  eof(sWord) !== "
2a20: 73 74 72 69 6e 67 22 20 7c 7c 20 21 73 57 6f 72  string" || !sWor
2a30: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  d) {.           
2a40: 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20   return;.       
2a50: 20 7d 0a 20 20 20 20 20 20 20 20 6f 54 61 62 75   }.        oTabu
2a60: 6c 61 74 69 6f 6e 73 2e 73 68 6f 77 50 61 67 65  lations.showPage
2a70: 28 22 61 64 64 5f 70 61 67 65 22 29 3b 0a 20 20  ("add_page");.  
2a80: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67        document.g
2a90: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6c  etElementById("l
2aa0: 65 6d 6d 61 22 29 2e 76 61 6c 75 65 20 3d 20 73  emma").value = s
2ab0: 57 6f 72 64 3b 0a 20 20 20 20 20 20 20 20 74 68  Word;.        th
2ac0: 69 73 2e 6f 6e 57 72 69 74 65 28 29 3b 0a 20 20  is.onWrite();.  
2ad0: 20 20 7d 2c 0a 0a 20 20 20 20 6f 6e 57 72 69 74    },..    onWrit
2ae0: 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  e: function () {
2af0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63  .        if (doc
2b00: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
2b10: 42 79 49 64 28 22 6c 65 6d 6d 61 22 29 2e 76 61  ById("lemma").va
2b20: 6c 75 65 2e 74 72 69 6d 28 29 20 21 3d 3d 20 22  lue.trim() !== "
2b30: 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ") {.           
2b40: 20 73 68 6f 77 45 6c 65 6d 65 6e 74 28 22 65 64   showElement("ed
2b50: 69 74 6f 72 22 29 3b 0a 20 20 20 20 20 20 20 20  itor");.        
2b60: 20 20 20 20 74 68 69 73 2e 75 70 64 61 74 65 28      this.update(
2b70: 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73  );.        } els
2b80: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
2b90: 68 69 64 65 45 6c 65 6d 65 6e 74 28 22 65 64 69  hideElement("edi
2ba0: 74 6f 72 22 29 3b 0a 20 20 20 20 20 20 20 20 7d  tor");.        }
2bb0: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 6f 6e 57  .    },..    onW
2bc0: 72 69 74 65 32 3a 20 66 75 6e 63 74 69 6f 6e 20  rite2: function 
2bd0: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  () {.        if 
2be0: 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65  (document.getEle
2bf0: 6d 65 6e 74 42 79 49 64 28 22 6c 65 6d 6d 61 32  mentById("lemma2
2c00: 22 29 2e 76 61 6c 75 65 2e 74 72 69 6d 28 29 20  ").value.trim() 
2c10: 21 3d 3d 20 22 22 29 20 7b 0a 20 20 20 20 20 20  !== "") {.      
2c20: 20 20 20 20 20 20 73 68 6f 77 45 6c 65 6d 65 6e        showElemen
2c30: 74 28 22 77 6f 72 64 5f 73 65 63 74 69 6f 6e 32  t("word_section2
2c40: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
2c50: 74 68 69 73 2e 75 70 64 61 74 65 28 29 3b 0a 20  this.update();. 
2c60: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a         } else {.
2c70: 20 20 20 20 20 20 20 20 20 20 20 20 68 69 64 65              hide
2c80: 45 6c 65 6d 65 6e 74 28 22 77 6f 72 64 5f 73 65  Element("word_se
2c90: 63 74 69 6f 6e 32 22 29 3b 0a 20 20 20 20 20 20  ction2");.      
2ca0: 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20    }.    },..    
2cb0: 75 70 64 61 74 65 3a 20 66 75 6e 63 74 69 6f 6e  update: function
2cc0: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72   () {.        tr
2cd0: 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  y {.            
2ce0: 74 68 69 73 2e 6c 46 6c 65 78 69 6f 6e 20 3d 20  this.lFlexion = 
2cf0: 5b 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  [];.            
2d00: 74 68 69 73 2e 73 4c 65 6d 6d 61 20 3d 20 64 6f  this.sLemma = do
2d10: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
2d20: 74 42 79 49 64 28 22 6c 65 6d 6d 61 22 29 2e 76  tById("lemma").v
2d30: 61 6c 75 65 2e 74 72 69 6d 28 29 3b 0a 20 20 20  alue.trim();.   
2d40: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69           if (thi
2d50: 73 2e 73 4c 65 6d 6d 61 2e 6c 65 6e 67 74 68 20  s.sLemma.length 
2d60: 3e 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20  > 0) {.         
2d70: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74         switch (t
2d80: 68 69 73 2e 63 4d 61 69 6e 54 61 67 29 20 7b 0a  his.cMainTag) {.
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da0: 20 20 20 20 63 61 73 65 20 22 4e 22 3a 0a 20 20      case "N":.  
2db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc0: 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
2dd0: 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28 22 50  getRadioValue("P
2de0: 4f 53 22 29 20 7c 7c 20 21 74 68 69 73 2e 67 65  OS") || !this.ge
2df0: 74 52 61 64 69 6f 56 61 6c 75 65 28 22 67 65 6e  tRadioValue("gen
2e00: 72 65 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  re")) {.        
2e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e20: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
2e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e40: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74               let
2e60: 20 73 54 61 67 20 3d 20 74 68 69 73 2e 67 65 74   sTag = this.get
2e70: 52 61 64 69 6f 56 61 6c 75 65 28 22 50 4f 53 22  RadioValue("POS"
2e80: 29 20 2b 20 74 68 69 73 2e 67 65 74 52 61 64 69  ) + this.getRadi
2e90: 6f 56 61 6c 75 65 28 22 67 65 6e 72 65 22 29 3b  oValue("genre");
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eb0: 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20           switch 
2ec0: 28 74 68 69 73 2e 67 65 74 52 61 64 69 6f 56 61  (this.getRadioVa
2ed0: 6c 75 65 28 22 70 6c 75 72 69 65 6c 22 29 29 20  lue("pluriel")) 
2ee0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2f00: 73 65 20 22 73 22 3a 0a 20 20 20 20 20 20 20 20  se "s":.        
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c          this.lFl
2f30: 65 78 69 6f 6e 2e 70 75 73 68 28 5b 74 68 69 73  exion.push([this
2f40: 2e 73 4c 65 6d 6d 61 2c 20 73 54 61 67 2b 22 3a  .sLemma, sTag+":
2f50: 73 2f 2a 22 5d 29 3b 0a 20 20 20 20 20 20 20 20  s/*"]);.        
2f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f70: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c          this.lFl
2f80: 65 78 69 6f 6e 2e 70 75 73 68 28 5b 74 68 69 73  exion.push([this
2f90: 2e 73 4c 65 6d 6d 61 2b 22 73 22 2c 20 73 54 61  .sLemma+"s", sTa
2fa0: 67 2b 22 3a 70 2f 2a 22 5d 29 3b 0a 20 20 20 20  g+":p/*"]);.    
2fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
2fd0: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  k;.             
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2ff0: 61 73 65 20 22 78 22 3a 0a 20 20 20 20 20 20 20  ase "x":.       
3000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3010: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46           this.lF
3020: 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b 74 68 69  lexion.push([thi
3030: 73 2e 73 4c 65 6d 6d 61 2c 20 73 54 61 67 2b 22  s.sLemma, sTag+"
3040: 3a 73 2f 2a 22 5d 29 3b 0a 20 20 20 20 20 20 20  :s/*"]);.       
3050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3060: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46           this.lF
3070: 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b 74 68 69  lexion.push([thi
3080: 73 2e 73 4c 65 6d 6d 61 2b 22 78 22 2c 20 73 54  s.sLemma+"x", sT
3090: 61 67 2b 22 3a 70 2f 2a 22 5d 29 3b 0a 20 20 20  ag+":p/*"]);.   
30a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
30c0: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ak;.            
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e0: 63 61 73 65 20 22 69 22 3a 0a 20 20 20 20 20 20  case "i":.      
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3100: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
3110: 46 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b 74 68  Flexion.push([th
3120: 69 73 2e 73 4c 65 6d 6d 61 2c 20 73 54 61 67 2b  is.sLemma, sTag+
3130: 22 3a 69 2f 2a 22 5d 29 3b 0a 20 20 20 20 20 20  ":i/*"]);.      
3140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3150: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
3160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3170: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
3180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3190: 20 20 20 6c 65 74 20 73 4c 65 6d 6d 61 32 20 3d     let sLemma2 =
31a0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
31b0: 6d 65 6e 74 42 79 49 64 28 22 6c 65 6d 6d 61 32  mentById("lemma2
31c0: 22 29 2e 76 61 6c 75 65 2e 74 72 69 6d 28 29 3b  ").value.trim();
31d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 4c 65           if (sLe
31f0: 6d 6d 61 32 2e 6c 65 6e 67 74 68 20 3e 20 30 20  mma2.length > 0 
3200: 20 26 26 20 20 74 68 69 73 2e 67 65 74 52 61 64   &&  this.getRad
3210: 69 6f 56 61 6c 75 65 28 22 50 4f 53 32 22 29 20  ioValue("POS2") 
3220: 20 26 26 20 20 74 68 69 73 2e 67 65 74 52 61 64   &&  this.getRad
3230: 69 6f 56 61 6c 75 65 28 22 67 65 6e 72 65 32 22  ioValue("genre2"
3240: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  )) {.           
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3260: 20 6c 65 74 20 73 54 61 67 32 20 3d 20 74 68 69   let sTag2 = thi
3270: 73 2e 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28  s.getRadioValue(
3280: 22 50 4f 53 32 22 29 20 2b 20 74 68 69 73 2e 67  "POS2") + this.g
3290: 65 74 52 61 64 69 6f 56 61 6c 75 65 28 22 67 65  etRadioValue("ge
32a0: 6e 72 65 32 22 29 3b 0a 20 20 20 20 20 20 20 20  nre2");.        
32b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c0: 20 20 20 20 73 77 69 74 63 68 20 28 74 68 69 73      switch (this
32d0: 2e 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28 22  .getRadioValue("
32e0: 70 6c 75 72 69 65 6c 32 22 29 29 20 7b 0a 20 20  pluriel2")) {.  
32f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
3310: 73 65 20 22 73 22 3a 0a 20 20 20 20 20 20 20 20  se "s":.        
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3330: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
3340: 2e 6c 46 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b  .lFlexion.push([
3350: 73 4c 65 6d 6d 61 32 2c 20 73 54 61 67 32 2b 22  sLemma2, sTag2+"
3360: 3a 73 2f 2a 22 5d 29 3b 0a 20 20 20 20 20 20 20  :s/*"]);.       
3370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
3390: 73 2e 6c 46 6c 65 78 69 6f 6e 2e 70 75 73 68 28  s.lFlexion.push(
33a0: 5b 73 4c 65 6d 6d 61 32 2b 22 73 22 2c 20 73 54  [sLemma2+"s", sT
33b0: 61 67 32 2b 22 3a 70 2f 2a 22 5d 29 3b 0a 20 20  ag2+":p/*"]);.  
33c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20    break;.       
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 78           case "x
3410: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
3420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3430: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c 65         this.lFle
3440: 78 69 6f 6e 2e 70 75 73 68 28 5b 73 4c 65 6d 6d  xion.push([sLemm
3450: 61 32 2c 20 73 54 61 67 32 2b 22 3a 73 2f 2a 22  a2, sTag2+":s/*"
3460: 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ]);.            
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3480: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c          this.lFl
3490: 65 78 69 6f 6e 2e 70 75 73 68 28 5b 73 4c 65 6d  exion.push([sLem
34a0: 6d 61 32 2b 22 78 22 2c 20 73 54 61 67 32 2b 22  ma2+"x", sTag2+"
34b0: 3a 70 2f 2a 22 5d 29 3b 0a 20 20 20 20 20 20 20  :p/*"]);.       
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
34e0: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ak;.            
34f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3500: 20 20 20 20 63 61 73 65 20 22 69 22 3a 0a 20 20      case "i":.  
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3530: 20 20 74 68 69 73 2e 6c 46 6c 65 78 69 6f 6e 2e    this.lFlexion.
3540: 70 75 73 68 28 5b 73 4c 65 6d 6d 61 32 2c 20 73  push([sLemma2, s
3550: 54 61 67 32 2b 22 3a 69 2f 2a 22 5d 29 3b 0a 20  Tag2+":i/*"]);. 
3560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3580: 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20     break;.      
3590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35a0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
35b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
35d0: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
35e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35f0: 20 20 20 20 20 63 61 73 65 20 22 56 22 3a 20 7b       case "V": {
3600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3610: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68           if (!th
3620: 69 73 2e 73 4c 65 6d 6d 61 2e 65 6e 64 73 57 69  is.sLemma.endsWi
3630: 74 68 28 22 65 72 22 29 20 26 26 20 21 74 68 69  th("er") && !thi
3640: 73 2e 73 4c 65 6d 6d 61 2e 65 6e 64 73 57 69 74  s.sLemma.endsWit
3650: 68 28 22 69 72 22 29 20 26 26 20 21 74 68 69 73  h("ir") && !this
3660: 2e 73 4c 65 6d 6d 61 2e 65 6e 64 73 57 69 74 68  .sLemma.endsWith
3670: 28 22 72 65 22 29 29 20 7b 0a 20 20 20 20 20 20  ("re")) {.      
3680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3690: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20        break;.   
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
36c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
36d0: 68 69 73 2e 73 4c 65 6d 6d 61 20 3d 20 74 68 69  his.sLemma = thi
36e0: 73 2e 73 4c 65 6d 6d 61 2e 74 6f 4c 6f 77 65 72  s.sLemma.toLower
36f0: 43 61 73 65 28 29 3b 0a 20 20 20 20 20 20 20 20  Case();.        
3700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3710: 6c 65 74 20 63 47 72 6f 75 70 20 3d 20 22 22 3b  let cGroup = "";
3720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3730: 20 20 20 20 20 20 20 20 20 6c 65 74 20 63 5f 69           let c_i
3740: 20 3d 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74   = (document.get
3750: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 75 70 5f  ElementById("up_
3760: 76 5f 69 22 29 2e 63 68 65 63 6b 65 64 29 20 3f  v_i").checked) ?
3770: 20 22 69 22 20 3a 20 22 5f 22 3b 0a 20 20 20 20   "i" : "_";.    
3780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3790: 20 20 20 20 6c 65 74 20 63 5f 74 20 3d 20 28 64      let c_t = (d
37a0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
37b0: 6e 74 42 79 49 64 28 22 75 70 5f 76 5f 74 22 29  ntById("up_v_t")
37c0: 2e 63 68 65 63 6b 65 64 29 20 3f 20 22 74 22 20  .checked) ? "t" 
37d0: 3a 20 22 5f 22 3b 0a 20 20 20 20 20 20 20 20 20  : "_";.         
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
37f0: 65 74 20 63 5f 6e 20 3d 20 28 64 6f 63 75 6d 65  et c_n = (docume
3800: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
3810: 64 28 22 75 70 5f 76 5f 6e 22 29 2e 63 68 65 63  d("up_v_n").chec
3820: 6b 65 64 29 20 3f 20 22 6e 22 20 3a 20 22 5f 22  ked) ? "n" : "_"
3830: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
3840: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 63 5f            let c_
3850: 70 20 3d 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65  p = (document.ge
3860: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 75 70  tElementById("up
3870: 5f 76 5f 70 22 29 2e 63 68 65 63 6b 65 64 29 20  _v_p").checked) 
3880: 3f 20 22 70 22 20 3a 20 22 5f 22 3b 0a 20 20 20  ? "p" : "_";.   
3890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38a0: 20 20 20 20 20 6c 65 74 20 63 5f 6d 20 3d 20 28       let c_m = (
38b0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
38c0: 65 6e 74 42 79 49 64 28 22 75 70 5f 76 5f 6d 22  entById("up_v_m"
38d0: 29 2e 63 68 65 63 6b 65 64 29 20 3f 20 22 6d 22  ).checked) ? "m"
38e0: 20 3a 20 22 5f 22 3b 0a 20 20 20 20 20 20 20 20   : "_";.        
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3900: 6c 65 74 20 63 5f 61 65 20 3d 20 28 64 6f 63 75  let c_ae = (docu
3910: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
3920: 79 49 64 28 22 75 70 5f 76 5f 61 65 22 29 2e 63  yId("up_v_ae").c
3930: 68 65 63 6b 65 64 29 20 3f 20 22 65 22 20 3a 20  hecked) ? "e" : 
3940: 22 5f 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "_";.           
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74               let
3960: 20 63 5f 61 61 20 3d 20 28 64 6f 63 75 6d 65 6e   c_aa = (documen
3970: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
3980: 28 22 75 70 5f 76 5f 61 61 22 29 2e 63 68 65 63  ("up_v_aa").chec
3990: 6b 65 64 29 20 3f 20 22 61 22 20 3a 20 22 5f 22  ked) ? "a" : "_"
39a0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
39b0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 73 56            let sV
39c0: 65 72 62 54 61 67 20 3d 20 63 5f 69 20 2b 20 63  erbTag = c_i + c
39d0: 5f 74 20 2b 20 63 5f 6e 20 2b 20 63 5f 70 20 2b  _t + c_n + c_p +
39e0: 20 63 5f 6d 20 2b 20 63 5f 61 65 20 2b 20 63 5f   c_m + c_ae + c_
39f0: 61 61 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  aa;.            
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3a10: 73 56 65 72 62 54 61 67 2e 69 6e 63 6c 75 64 65  sVerbTag.include
3a20: 73 28 22 70 22 29 20 26 26 20 21 73 56 65 72 62  s("p") && !sVerb
3a30: 54 61 67 2e 73 74 61 72 74 73 57 69 74 68 28 22  Tag.startsWith("
3a40: 5f 5f 5f 70 5f 22 29 29 20 7b 0a 20 20 20 20 20  ___p_")) {.     
3a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a60: 20 20 20 20 20 20 20 73 56 65 72 62 54 61 67 20         sVerbTag 
3a70: 3d 20 73 56 65 72 62 54 61 67 2e 72 65 70 6c 61  = sVerbTag.repla
3a80: 63 65 28 22 70 22 2c 20 22 71 22 29 3b 0a 20 20  ce("p", "q");.  
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3aa0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 69 66 20 28 21 73 56 65 72 62 54 61 67 2e 65 6e  if (!sVerbTag.en
3ad0: 64 73 57 69 74 68 28 22 5f 5f 22 29 20 26 26 20  dsWith("__") && 
3ae0: 21 73 56 65 72 62 54 61 67 2e 73 74 61 72 74 73  !sVerbTag.starts
3af0: 57 69 74 68 28 22 5f 5f 5f 5f 22 29 29 20 7b 0a  With("____")) {.
3b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
3b20: 73 56 65 72 62 50 61 74 74 65 72 6e 20 3d 20 64  sVerbPattern = d
3b30: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
3b40: 6e 74 42 79 49 64 28 22 76 65 72 62 5f 70 61 74  ntById("verb_pat
3b50: 74 65 72 6e 22 29 2e 76 61 6c 75 65 2e 74 72 69  tern").value.tri
3b60: 6d 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  m();.           
3b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b80: 20 69 66 20 28 73 56 65 72 62 50 61 74 74 65 72   if (sVerbPatter
3b90: 6e 2e 6c 65 6e 67 74 68 20 3d 3d 20 30 29 20 7b  n.length == 0) {
3ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bc0: 20 2f 2f 20 75 74 69 6c 69 73 61 74 69 6f 6e 20   // utilisation 
3bd0: 64 75 20 67 c3 a9 6e c3 a9 72 61 74 65 75 72 20  du g..n..rateur 
3be0: 64 65 20 63 6f 6e 6a 75 67 61 69 73 6f 6e 0a 20  de conjugaison. 
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
3c10: 65 74 20 62 56 61 72 50 70 61 73 20 3d 20 21 64  et bVarPpas = !d
3c20: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
3c30: 6e 74 42 79 49 64 28 22 75 70 5f 76 5f 70 70 61  ntById("up_v_ppa
3c40: 73 22 29 2e 63 68 65 63 6b 65 64 3b 0a 20 20 20  s").checked;.   
3c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
3c70: 20 28 6c 65 74 20 5b 73 46 6c 65 78 69 6f 6e 2c   (let [sFlexion,
3c80: 20 73 46 6c 65 78 54 61 67 73 5d 20 6f 66 20 63   sFlexTags] of c
3c90: 6f 6e 6a 5f 67 65 6e 65 72 61 74 6f 72 2e 63 6f  onj_generator.co
3ca0: 6e 6a 75 67 61 74 65 28 74 68 69 73 2e 73 4c 65  njugate(this.sLe
3cb0: 6d 6d 61 2c 20 73 56 65 72 62 54 61 67 2c 20 62  mma, sVerbTag, b
3cc0: 56 61 72 50 70 61 73 29 29 20 7b 0a 20 20 20 20  VarPpas)) {.    
3cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cf0: 74 68 69 73 2e 6c 46 6c 65 78 69 6f 6e 2e 70 75  this.lFlexion.pu
3d00: 73 68 28 5b 73 46 6c 65 78 69 6f 6e 2c 20 73 46  sh([sFlexion, sF
3d10: 6c 65 78 54 61 67 73 5d 29 3b 0a 20 20 20 20 20  lexTags]);.     
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d30: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d50: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
3d60: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d80: 20 20 2f 2f 20 63 6f 70 69 65 20 64 75 20 6d 6f    // copie du mo
3d90: 74 69 66 20 64 e2 80 99 75 6e 20 61 75 74 72 65  tif d...un autre
3da0: 20 76 65 72 62 65 20 3a 20 75 74 69 6c 69 73 61   verbe : utilisa
3db0: 74 69 6f 6e 20 64 75 20 63 6f 6e 6a 75 67 75 65  tion du conjugue
3dc0: 75 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ur.             
3dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3de0: 20 20 20 69 66 20 28 63 6f 6e 6a 2e 69 73 56 65     if (conj.isVe
3df0: 72 62 28 73 56 65 72 62 50 61 74 74 65 72 6e 29  rb(sVerbPattern)
3e00: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
3e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e20: 20 20 20 20 20 20 20 20 6c 65 74 20 6f 56 65 72          let oVer
3e30: 62 20 3d 20 6e 65 77 20 56 65 72 62 28 74 68 69  b = new Verb(thi
3e40: 73 2e 73 4c 65 6d 6d 61 2c 20 73 56 65 72 62 50  s.sLemma, sVerbP
3e50: 61 74 74 65 72 6e 29 3b 0a 20 20 20 20 20 20 20  attern);.       
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
3e80: 20 28 6c 65 74 20 5b 73 54 61 67 31 2c 20 64 46   (let [sTag1, dF
3e90: 6c 65 78 5d 20 6f 66 20 6f 56 65 72 62 2e 64 43  lex] of oVerb.dC
3ea0: 6f 6e 6a 2e 65 6e 74 72 69 65 73 28 29 29 20 7b  onj.entries()) {
3eb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ed0: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 54 61           if (sTa
3ee0: 67 31 20 21 3d 3d 20 22 3a 51 22 29 20 7b 0a 20  g1 !== ":Q") {. 
3ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f10: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
3f20: 6c 65 74 20 5b 73 54 61 67 32 2c 20 73 43 6f 6e  let [sTag2, sCon
3f30: 6a 5d 20 6f 66 20 64 46 6c 65 78 2e 65 6e 74 72  j] of dFlex.entr
3f40: 69 65 73 28 29 29 20 7b 0a 20 20 20 20 20 20 20  ies()) {.       
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f70: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 54 61           if (sTa
3f80: 67 32 2e 73 74 61 72 74 73 57 69 74 68 28 22 3a  g2.startsWith(":
3f90: 22 29 20 26 26 20 73 43 6f 6e 6a 20 21 3d 3d 20  ") && sConj !== 
3fa0: 22 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  "") {.          
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
3fe0: 46 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b 73 43  Flexion.push([sC
3ff0: 6f 6e 6a 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72  onj, ":V" + oVer
4000: 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b  b.cGroup + "_" +
4010: 20 73 56 65 72 62 54 61 67 20 2b 20 73 54 61 67   sVerbTag + sTag
4020: 31 20 2b 20 73 54 61 67 32 5d 29 3b 0a 20 20 20  1 + sTag2]);.   
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4080: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
4090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
40c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 61 72            // par
40f0: 74 69 63 69 70 65 73 20 70 61 73 73 c3 a9 73 0a  ticipes pass..s.
4100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4120: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4130: 64 46 6c 65 78 2e 67 65 74 28 22 3a 51 33 22 29  dFlex.get(":Q3")
4140: 20 21 3d 3d 20 22 22 29 20 7b 0a 20 20 20 20 20   !== "") {.     
4150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4170: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
4180: 46 6c 65 78 2e 67 65 74 28 22 3a 51 32 22 29 20  Flex.get(":Q2") 
4190: 21 3d 3d 20 22 22 29 20 7b 0a 20 20 20 20 20 20  !== "") {.      
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
41d0: 69 73 2e 6c 46 6c 65 78 69 6f 6e 2e 70 75 73 68  is.lFlexion.push
41e0: 28 5b 64 46 6c 65 78 2e 67 65 74 28 22 3a 51 31  ([dFlex.get(":Q1
41f0: 22 29 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72 62  "), ":V" + oVerb
4200: 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b 20  .cGroup + "_" + 
4210: 73 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a 41  sVerbTag + ":Q:A
4220: 3a 6d 3a 73 2f 2a 22 5d 29 3b 0a 20 20 20 20 20  :m:s/*"]);.     
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
4260: 68 69 73 2e 6c 46 6c 65 78 69 6f 6e 2e 70 75 73  his.lFlexion.pus
4270: 68 28 5b 64 46 6c 65 78 2e 67 65 74 28 22 3a 51  h([dFlex.get(":Q
4280: 32 22 29 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72  2"), ":V" + oVer
4290: 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b  b.cGroup + "_" +
42a0: 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a   sVerbTag + ":Q:
42b0: 41 3a 6d 3a 70 2f 2a 22 5d 29 3b 0a 20 20 20 20  A:m:p/*"]);.    
42c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
42f0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
4300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4320: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46           this.lF
4330: 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b 64 46 6c  lexion.push([dFl
4340: 65 78 2e 67 65 74 28 22 3a 51 31 22 29 2c 20 22  ex.get(":Q1"), "
4350: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
4360: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
4370: 54 61 67 20 2b 20 22 3a 51 3a 41 3a 6d 3a 69 2f  Tag + ":Q:A:m:i/
4380: 2a 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  *"]);.          
4390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43b0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
43c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c          this.lFl
43f0: 65 78 69 6f 6e 2e 70 75 73 68 28 5b 64 46 6c 65  exion.push([dFle
4400: 78 2e 67 65 74 28 22 3a 51 33 22 29 2c 20 22 3a  x.get(":Q3"), ":
4410: 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75  V" + oVerb.cGrou
4420: 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54  p + "_" + sVerbT
4430: 61 67 20 2b 20 22 3a 51 3a 41 3a 66 3a 73 2f 2a  ag + ":Q:A:f:s/*
4440: 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "]);.           
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4470: 20 20 20 20 20 74 68 69 73 2e 6c 46 6c 65 78 69       this.lFlexi
4480: 6f 6e 2e 70 75 73 68 28 5b 64 46 6c 65 78 2e 67  on.push([dFlex.g
4490: 65 74 28 22 3a 51 34 22 29 2c 20 22 3a 56 22 20  et(":Q4"), ":V" 
44a0: 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b  + oVerb.cGroup +
44b0: 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20   "_" + sVerbTag 
44c0: 2b 20 22 3a 51 3a 41 3a 66 3a 70 2f 2a 22 5d 29  + ":Q:A:f:p/*"])
44d0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
44e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
4500: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
4510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4530: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c 65         this.lFle
4540: 78 69 6f 6e 2e 70 75 73 68 28 5b 64 46 6c 65 78  xion.push([dFlex
4550: 2e 67 65 74 28 22 3a 51 31 22 29 2c 20 22 3a 56  .get(":Q1"), ":V
4560: 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70  " + oVerb.cGroup
4570: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
4580: 67 20 2b 20 22 3a 51 3a 65 3a 69 2f 2a 22 5d 29  g + ":Q:e:i/*"])
4590: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
45a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
45c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45e0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
45f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
4610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4630: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
4640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4660: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
4670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4680: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20    break;.       
4690: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
46a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46b0: 20 20 20 63 61 73 65 20 22 57 22 3a 0a 20 20 20     case "W":.   
46c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46d0: 20 20 20 20 20 74 68 69 73 2e 73 4c 65 6d 6d 61       this.sLemma
46e0: 20 3d 20 74 68 69 73 2e 73 4c 65 6d 6d 61 2e 74   = this.sLemma.t
46f0: 6f 4c 6f 77 65 72 43 61 73 65 28 29 3b 0a 20 20  oLowerCase();.  
4700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4710: 20 20 20 20 20 20 74 68 69 73 2e 6c 46 6c 65 78        this.lFlex
4720: 69 6f 6e 2e 70 75 73 68 28 5b 74 68 69 73 2e 73  ion.push([this.s
4730: 4c 65 6d 6d 61 2c 20 22 3a 57 2f 2a 22 5d 29 3b  Lemma, ":W/*"]);
4740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4750: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
4760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4770: 20 20 20 20 63 61 73 65 20 22 4d 22 3a 0a 20 20      case "M":.  
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4790: 20 20 20 20 20 20 74 68 69 73 2e 73 4c 65 6d 6d        this.sLemm
47a0: 61 20 3d 20 74 68 69 73 2e 73 4c 65 6d 6d 61 2e  a = this.sLemma.
47b0: 73 6c 69 63 65 28 30 2c 31 29 2e 74 6f 55 70 70  slice(0,1).toUpp
47c0: 65 72 43 61 73 65 28 29 20 2b 20 74 68 69 73 2e  erCase() + this.
47d0: 73 4c 65 6d 6d 61 2e 73 6c 69 63 65 28 31 29 3b  sLemma.slice(1);
47e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
47f0: 20 20 20 20 20 20 20 20 20 6c 65 74 20 73 50 4f           let sPO
4800: 53 54 61 67 20 3d 20 74 68 69 73 2e 67 65 74 52  STag = this.getR
4810: 61 64 69 6f 56 61 6c 75 65 28 22 70 6f 73 5f 6e  adioValue("pos_n
4820: 6f 6d 5f 70 72 6f 70 72 65 22 29 0a 20 20 20 20  om_propre").    
4830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4840: 20 20 20 20 6c 65 74 20 73 47 65 6e 64 65 72 54      let sGenderT
4850: 61 67 20 3d 20 74 68 69 73 2e 67 65 74 52 61 64  ag = this.getRad
4860: 69 6f 56 61 6c 75 65 28 22 67 65 6e 72 65 5f 6d  ioValue("genre_m
4870: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
4880: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4890: 73 47 65 6e 64 65 72 54 61 67 29 20 7b 0a 20 20  sGenderTag) {.  
48a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48b0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
48c0: 46 6c 65 78 69 6f 6e 2e 70 75 73 68 28 5b 74 68  Flexion.push([th
48d0: 69 73 2e 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 54  is.sLemma, sPOST
48e0: 61 67 2b 73 47 65 6e 64 65 72 54 61 67 2b 22 3a  ag+sGenderTag+":
48f0: 69 2f 2a 22 5d 29 3b 0a 20 20 20 20 20 20 20 20  i/*"]);.        
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4910: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
4920: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
4930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4940: 20 20 20 20 20 63 61 73 65 20 22 58 22 3a 0a 20       case "X":. 
4950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4960: 20 20 20 20 20 20 20 6c 65 74 20 73 46 6c 65 78         let sFlex
4970: 69 6f 6e 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67  ion = document.g
4980: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 66  etElementById("f
4990: 6c 65 78 69 6f 6e 22 29 2e 76 61 6c 75 65 2e 74  lexion").value.t
49a0: 72 69 6d 28 29 3b 0a 20 20 20 20 20 20 20 20 20  rim();.         
49b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
49c0: 65 74 20 73 54 61 67 73 20 3d 20 64 6f 63 75 6d  et sTags = docum
49d0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
49e0: 49 64 28 22 74 61 67 73 22 29 2e 76 61 6c 75 65  Id("tags").value
49f0: 2e 74 72 69 6d 28 29 3b 0a 20 20 20 20 20 20 20  .trim();.       
4a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a10: 20 69 66 20 28 73 46 6c 65 78 69 6f 6e 2e 6c 65   if (sFlexion.le
4a20: 6e 67 74 68 20 3e 20 30 20 26 26 20 73 54 61 67  ngth > 0 && sTag
4a30: 73 2e 73 74 61 72 74 73 57 69 74 68 28 22 3a 22  s.startsWith(":"
4a40: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  )) {.           
4a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a60: 20 74 68 69 73 2e 6c 46 6c 65 78 69 6f 6e 2e 70   this.lFlexion.p
4a70: 75 73 68 28 5b 73 46 6c 65 78 69 6f 6e 2c 20 73  ush([sFlexion, s
4a80: 54 61 67 73 5d 29 3b 0a 20 20 20 20 20 20 20 20  Tags]);.        
4a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4aa0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
4ab0: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
4ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4ad0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d   }.            }
4ae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
4af0: 28 74 68 69 73 2e 6c 46 6c 65 78 69 6f 6e 2e 6c  (this.lFlexion.l
4b00: 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 20 20 20  ength > 0) {.   
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f               sho
4b20: 77 45 6c 65 6d 65 6e 74 28 22 61 64 64 5f 74 6f  wElement("add_to
4b30: 5f 6c 65 78 69 63 6f 6e 22 29 3b 0a 20 20 20 20  _lexicon");.    
4b40: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
4b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4b60: 20 68 69 64 65 45 6c 65 6d 65 6e 74 28 22 61 64   hideElement("ad
4b70: 64 5f 74 6f 5f 6c 65 78 69 63 6f 6e 22 29 3b 0a  d_to_lexicon");.
4b80: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
4b90: 20 20 20 20 20 20 20 20 20 20 6f 47 65 6e 57 6f            oGenWo
4ba0: 72 64 73 54 61 62 6c 65 2e 66 69 6c 6c 28 74 68  rdsTable.fill(th
4bb0: 69 73 2e 6c 46 6c 65 78 69 6f 6e 29 3b 0a 20 20  is.lFlexion);.  
4bc0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
4bd0: 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20  catch (e) {.    
4be0: 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f          showErro
4bf0: 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  r(e);.        }.
4c00: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 67 65 74 52      },..    getR
4c10: 61 64 69 6f 56 61 6c 75 65 3a 20 66 75 6e 63 74  adioValue: funct
4c20: 69 6f 6e 20 28 73 4e 61 6d 65 29 20 7b 0a 20 20  ion (sName) {.  
4c30: 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65        if (docume
4c40: 6e 74 2e 71 75 65 72 79 53 65 6c 65 63 74 6f 72  nt.querySelector
4c50: 28 27 69 6e 70 75 74 5b 6e 61 6d 65 3d 22 27 20  ('input[name="' 
4c60: 2b 20 73 4e 61 6d 65 20 2b 20 27 22 5d 3a 63 68  + sName + '"]:ch
4c70: 65 63 6b 65 64 27 29 29 20 7b 0a 20 20 20 20 20  ecked')) {.     
4c80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 6f         return do
4c90: 63 75 6d 65 6e 74 2e 71 75 65 72 79 53 65 6c 65  cument.querySele
4ca0: 63 74 6f 72 28 27 69 6e 70 75 74 5b 6e 61 6d 65  ctor('input[name
4cb0: 3d 22 27 20 2b 20 73 4e 61 6d 65 20 2b 20 27 22  ="' + sName + '"
4cc0: 5d 3a 63 68 65 63 6b 65 64 27 29 2e 76 61 6c 75  ]:checked').valu
4cd0: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  e;.        }.   
4ce0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
4cf0: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 72  ;.    },..    cr
4d00: 65 61 74 65 46 6c 65 78 4c 65 6d 6d 61 54 61 67  eateFlexLemmaTag
4d10: 41 72 72 61 79 3a 20 66 75 6e 63 74 69 6f 6e 20  Array: function 
4d20: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74  () {.        let
4d30: 20 6c 45 6e 74 72 79 20 3d 20 5b 5d 3b 0a 20 20   lEntry = [];.  
4d40: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 5b        for (let [
4d50: 73 46 6c 65 78 2c 20 73 54 61 67 73 5d 20 6f 66  sFlex, sTags] of
4d60: 20 6f 47 65 6e 57 6f 72 64 73 54 61 62 6c 65 2e   oGenWordsTable.
4d70: 67 65 74 45 6e 74 72 69 65 73 28 29 29 20 7b 0a  getEntries()) {.
4d80: 20 20 20 20 20 20 20 20 20 20 20 20 6c 45 6e 74              lEnt
4d90: 72 79 2e 70 75 73 68 28 5b 73 46 6c 65 78 2c 20  ry.push([sFlex, 
4da0: 74 68 69 73 2e 73 4c 65 6d 6d 61 2c 20 73 54 61  this.sLemma, sTa
4db0: 67 73 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  gs]);.        }.
4dc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
4dd0: 45 6e 74 72 79 3b 0a 20 20 20 20 7d 2c 0a 0a 20  Entry;.    },.. 
4de0: 20 20 20 61 64 64 54 6f 4c 65 78 69 63 6f 6e 3a     addToLexicon:
4df0: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
4e00: 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20         try {.   
4e10: 20 20 20 20 20 20 20 20 20 6f 4c 65 78 69 63 6f           oLexico
4e20: 6e 54 61 62 6c 65 2e 61 64 64 45 6e 74 72 69 65  nTable.addEntrie
4e30: 73 28 74 68 69 73 2e 63 72 65 61 74 65 46 6c 65  s(this.createFle
4e40: 78 4c 65 6d 6d 61 54 61 67 41 72 72 61 79 28 29  xLemmaTagArray()
4e50: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  );.            o
4e60: 47 65 6e 57 6f 72 64 73 54 61 62 6c 65 2e 63 6c  GenWordsTable.cl
4e70: 65 61 72 28 29 3b 0a 20 20 20 20 20 20 20 20 20  ear();.         
4e80: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
4e90: 6c 65 6d 65 6e 74 42 79 49 64 28 22 6c 65 6d 6d  lementById("lemm
4ea0: 61 22 29 2e 76 61 6c 75 65 20 3d 20 22 22 3b 0a  a").value = "";.
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
4ec0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
4ed0: 79 49 64 28 22 6c 65 6d 6d 61 22 29 2e 66 6f 63  yId("lemma").foc
4ee0: 75 73 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  us();.          
4ef0: 20 20 74 68 69 73 2e 68 69 64 65 41 6c 6c 53 65    this.hideAllSe
4f00: 63 74 69 6f 6e 73 28 29 3b 0a 20 20 20 20 20 20  ctions();.      
4f10: 20 20 20 20 20 20 68 69 64 65 45 6c 65 6d 65 6e        hideElemen
4f20: 74 28 22 65 64 69 74 6f 72 22 29 3b 0a 20 20 20  t("editor");.   
4f30: 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 6c 65           showEle
4f40: 6d 65 6e 74 28 22 73 61 76 65 5f 62 75 74 74 6f  ment("save_butto
4f50: 6e 22 2c 20 22 69 6e 6c 69 6e 65 2d 62 6c 6f 63  n", "inline-bloc
4f60: 6b 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  k");.           
4f70: 20 74 68 69 73 2e 63 6c 65 61 72 28 29 3b 0a 20   this.clear();. 
4f80: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
4f90: 63 4d 61 69 6e 54 61 67 20 3d 20 22 22 3b 0a 20  cMainTag = "";. 
4fa0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
4fb0: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
4fc0: 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72           showErr
4fd0: 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  or(e);.        }
4fe0: 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6f 6e 73 74  .    }.}...const
4ff0: 20 6f 44 69 63 74 48 61 6e 64 6c 65 72 20 3d 20   oDictHandler = 
5000: 7b 0a 20 20 20 20 6f 44 69 63 74 69 6f 6e 61 72  {.    oDictionar
5010: 69 65 73 3a 20 7b 7d 2c 0a 20 20 20 20 6f 50 65  ies: {},.    oPe
5020: 72 73 6f 6e 61 6c 44 69 63 74 69 6f 6e 61 72 79  rsonalDictionary
5030: 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 6c 43 72 65  : null,.    lCre
5040: 61 74 65 64 44 69 63 74 69 6f 6e 61 72 69 65 73  atedDictionaries
5050: 3a 20 5b 5d 2c 0a 20 20 20 20 78 44 69 63 53 65  : [],.    xDicSe
5060: 6c 65 63 74 6f 72 3a 20 64 6f 63 75 6d 65 6e 74  lector: document
5070: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
5080: 22 64 69 63 5f 73 65 6c 65 63 74 6f 72 22 29 2c  "dic_selector"),
5090: 0a 0a 20 20 20 20 6c 6f 61 64 44 69 63 74 69 6f  ..    loadDictio
50a0: 6e 61 72 69 65 73 3a 20 66 75 6e 63 74 69 6f 6e  naries: function
50b0: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66   () {.        if
50c0: 20 28 62 43 68 72 6f 6d 65 29 20 7b 0a 20 20 20   (bChrome) {.   
50d0: 20 20 20 20 20 20 20 20 20 62 72 6f 77 73 65 72           browser
50e0: 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c 2e 67  .storage.local.g
50f0: 65 74 28 22 73 68 61 72 65 64 5f 64 69 63 74 69  et("shared_dicti
5100: 6f 6e 61 72 69 65 73 22 2c 20 74 68 69 73 2e 5f  onaries", this._
5110: 6c 6f 61 64 44 69 63 74 69 6f 6e 61 72 69 65 73  loadDictionaries
5120: 2e 62 69 6e 64 28 74 68 69 73 29 29 3b 0a 20 20  .bind(this));.  
5130: 20 20 20 20 20 20 20 20 20 20 62 72 6f 77 73 65            browse
5140: 72 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c 2e  r.storage.local.
5150: 67 65 74 28 22 70 65 72 73 6f 6e 61 6c 5f 64 69  get("personal_di
5160: 63 74 69 6f 6e 61 72 79 22 2c 20 74 68 69 73 2e  ctionary", this.
5170: 5f 6c 6f 61 64 44 69 63 74 69 6f 6e 61 72 69 65  _loadDictionarie
5180: 73 2e 62 69 6e 64 28 74 68 69 73 29 29 3b 0a 20  s.bind(this));. 
5190: 20 20 20 20 20 20 20 20 20 20 20 62 72 6f 77 73             brows
51a0: 65 72 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c  er.storage.local
51b0: 2e 67 65 74 28 22 63 72 65 61 74 65 64 5f 64 69  .get("created_di
51c0: 63 74 69 6f 6e 61 72 69 65 73 5f 6c 69 73 74 22  ctionaries_list"
51d0: 2c 20 74 68 69 73 2e 5f 6c 6f 61 64 44 69 63 74  , this._loadDict
51e0: 69 6f 6e 61 72 69 65 73 2e 62 69 6e 64 28 74 68  ionaries.bind(th
51f0: 69 73 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  is));.          
5200: 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20    return;.      
5210: 20 20 7d 0a 20 20 20 20 20 20 20 20 6c 65 74 20    }.        let 
5220: 78 50 72 6f 6d 69 73 65 20 3d 20 62 72 6f 77 73  xPromise = brows
5230: 65 72 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c  er.storage.local
5240: 2e 67 65 74 28 22 73 68 61 72 65 64 5f 64 69 63  .get("shared_dic
5250: 74 69 6f 6e 61 72 69 65 73 22 29 3b 0a 20 20 20  tionaries");.   
5260: 20 20 20 20 20 78 50 72 6f 6d 69 73 65 2e 74 68       xPromise.th
5270: 65 6e 28 74 68 69 73 2e 5f 6c 6f 61 64 44 69 63  en(this._loadDic
5280: 74 69 6f 6e 61 72 69 65 73 2e 62 69 6e 64 28 74  tionaries.bind(t
5290: 68 69 73 29 2c 20 73 68 6f 77 45 72 72 6f 72 29  his), showError)
52a0: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 50  ;.        let xP
52b0: 72 6f 6d 69 73 65 32 20 3d 20 62 72 6f 77 73 65  romise2 = browse
52c0: 72 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c 2e  r.storage.local.
52d0: 67 65 74 28 22 70 65 72 73 6f 6e 61 6c 5f 64 69  get("personal_di
52e0: 63 74 69 6f 6e 61 72 79 22 29 3b 0a 20 20 20 20  ctionary");.    
52f0: 20 20 20 20 78 50 72 6f 6d 69 73 65 32 2e 74 68      xPromise2.th
5300: 65 6e 28 74 68 69 73 2e 5f 6c 6f 61 64 44 69 63  en(this._loadDic
5310: 74 69 6f 6e 61 72 69 65 73 2e 62 69 6e 64 28 74  tionaries.bind(t
5320: 68 69 73 29 2c 20 73 68 6f 77 45 72 72 6f 72 29  his), showError)
5330: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 50  ;.        let xP
5340: 72 6f 6d 69 73 65 33 20 3d 20 62 72 6f 77 73 65  romise3 = browse
5350: 72 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c 2e  r.storage.local.
5360: 67 65 74 28 22 63 72 65 61 74 65 64 5f 64 69 63  get("created_dic
5370: 74 69 6f 6e 61 72 69 65 73 5f 6c 69 73 74 22 29  tionaries_list")
5380: 3b 0a 20 20 20 20 20 20 20 20 78 50 72 6f 6d 69  ;.        xPromi
5390: 73 65 33 2e 74 68 65 6e 28 74 68 69 73 2e 5f 6c  se3.then(this._l
53a0: 6f 61 64 44 69 63 74 69 6f 6e 61 72 69 65 73 2e  oadDictionaries.
53b0: 62 69 6e 64 28 74 68 69 73 29 2c 20 73 68 6f 77  bind(this), show
53c0: 45 72 72 6f 72 29 3b 0a 20 20 20 20 7d 2c 0a 0a  Error);.    },..
53d0: 20 20 20 20 5f 6c 6f 61 64 44 69 63 74 69 6f 6e      _loadDiction
53e0: 61 72 69 65 73 3a 20 66 75 6e 63 74 69 6f 6e 20  aries: function 
53f0: 28 6f 52 65 73 75 6c 74 29 20 7b 0a 20 20 20 20  (oResult) {.    
5400: 20 20 20 20 69 66 20 28 6f 52 65 73 75 6c 74 2e      if (oResult.
5410: 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 22  hasOwnProperty("
5420: 73 68 61 72 65 64 5f 64 69 63 74 69 6f 6e 61 72  shared_dictionar
5430: 69 65 73 22 29 29 20 7b 0a 20 20 20 20 20 20 20  ies")) {.       
5440: 20 20 20 20 20 74 68 69 73 2e 6f 44 69 63 74 69       this.oDicti
5450: 6f 6e 61 72 69 65 73 20 3d 20 6f 52 65 73 75 6c  onaries = oResul
5460: 74 2e 73 68 61 72 65 64 5f 64 69 63 74 69 6f 6e  t.shared_diction
5470: 61 72 69 65 73 3b 0a 20 20 20 20 20 20 20 20 7d  aries;.        }
5480: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 52 65  .        if (oRe
5490: 73 75 6c 74 2e 68 61 73 4f 77 6e 50 72 6f 70 65  sult.hasOwnPrope
54a0: 72 74 79 28 22 70 65 72 73 6f 6e 61 6c 5f 64 69  rty("personal_di
54b0: 63 74 69 6f 6e 61 72 79 22 29 29 20 7b 0a 20 20  ctionary")) {.  
54c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f            this.o
54d0: 50 65 72 73 6f 6e 61 6c 44 69 63 74 69 6f 6e 61  PersonalDictiona
54e0: 72 79 20 3d 20 6f 52 65 73 75 6c 74 2e 70 65 72  ry = oResult.per
54f0: 73 6f 6e 61 6c 5f 64 69 63 74 69 6f 6e 61 72 79  sonal_dictionary
5500: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
5510: 20 20 20 20 69 66 20 28 6f 52 65 73 75 6c 74 2e      if (oResult.
5520: 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 22  hasOwnProperty("
5530: 63 72 65 61 74 65 64 5f 64 69 63 74 69 6f 6e 61  created_dictiona
5540: 72 69 65 73 5f 6c 69 73 74 22 29 29 20 7b 0a 20  ries_list")) {. 
5550: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
5560: 6c 43 72 65 61 74 65 64 44 69 63 74 69 6f 6e 61  lCreatedDictiona
5570: 72 69 65 73 20 3d 20 6f 52 65 73 75 6c 74 2e 63  ries = oResult.c
5580: 72 65 61 74 65 64 5f 64 69 63 74 69 6f 6e 61 72  reated_dictionar
5590: 69 65 73 5f 6c 69 73 74 3b 0a 20 20 20 20 20 20  ies_list;.      
55a0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 73        for (let s
55b0: 44 69 63 4e 61 6d 65 20 6f 66 20 74 68 69 73 2e  DicName of this.
55c0: 6c 43 72 65 61 74 65 64 44 69 63 74 69 6f 6e 61  lCreatedDictiona
55d0: 72 69 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20  ries) {.        
55e0: 20 20 20 20 20 20 20 20 6c 65 74 20 78 4f 70 74          let xOpt
55f0: 69 6f 6e 20 3d 20 63 72 65 61 74 65 4e 6f 64 65  ion = createNode
5600: 28 22 6f 70 74 69 6f 6e 22 2c 20 7b 76 61 6c 75  ("option", {valu
5610: 65 3a 20 73 44 69 63 4e 61 6d 65 2c 20 74 65 78  e: sDicName, tex
5620: 74 43 6f 6e 74 65 6e 74 3a 20 73 44 69 63 4e 61  tContent: sDicNa
5630: 6d 65 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  me});.          
5640: 20 20 20 20 20 20 74 68 69 73 2e 78 44 69 63 53        this.xDicS
5650: 65 6c 65 63 74 6f 72 2e 61 70 70 65 6e 64 43 68  elector.appendCh
5660: 69 6c 64 28 78 4f 70 74 69 6f 6e 29 3b 0a 20 20  ild(xOption);.  
5670: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
5680: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 6f 42      }.        oB
5690: 69 6e 61 72 79 44 69 63 74 2e 6c 6f 61 64 28 22  inaryDict.load("
56a0: 5f 5f 70 65 72 73 6f 6e 61 6c 5f 5f 22 29 3b 0a  __personal__");.
56b0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 61 64 64 44      },..    addD
56c0: 69 63 74 69 6f 6e 61 72 79 3a 20 66 75 6e 63 74  ictionary: funct
56d0: 69 6f 6e 20 28 73 44 69 63 4e 61 6d 65 29 20 7b  ion (sDicName) {
56e0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68  .        if (!th
56f0: 69 73 2e 6f 44 69 63 74 69 6f 6e 61 72 69 65 73  is.oDictionaries
5700: 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28  .hasOwnProperty(
5710: 73 44 69 63 4e 61 6d 65 29 29 20 7b 0a 20 20 20  sDicName)) {.   
5720: 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 4f 70           let xOp
5730: 74 69 6f 6e 20 3d 20 63 72 65 61 74 65 4e 6f 64  tion = createNod
5740: 65 28 22 6f 70 74 69 6f 6e 22 2c 20 7b 76 61 6c  e("option", {val
5750: 75 65 3a 20 73 44 69 63 4e 61 6d 65 2c 20 74 65  ue: sDicName, te
5760: 78 74 43 6f 6e 74 65 6e 74 3a 20 73 44 69 63 4e  xtContent: sDicN
5770: 61 6d 65 7d 29 3b 0a 20 20 20 20 20 20 20 20 20  ame});.         
5780: 20 20 20 74 68 69 73 2e 78 44 69 63 53 65 6c 65     this.xDicSele
5790: 63 74 6f 72 2e 61 70 70 65 6e 64 43 68 69 6c 64  ctor.appendChild
57a0: 28 78 4f 70 74 69 6f 6e 29 3b 0a 20 20 20 20 20  (xOption);.     
57b0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 44 69 63         this.xDic
57c0: 53 65 6c 65 63 74 6f 72 2e 73 65 6c 65 63 74 65  Selector.selecte
57d0: 64 49 6e 64 65 78 20 3d 20 74 68 69 73 2e 78 44  dIndex = this.xD
57e0: 69 63 53 65 6c 65 63 74 6f 72 2e 6f 70 74 69 6f  icSelector.optio
57f0: 6e 73 2e 6c 65 6e 67 74 68 2d 31 3b 0a 20 20 20  ns.length-1;.   
5800: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 43           this.lC
5810: 72 65 61 74 65 64 44 69 63 74 69 6f 6e 61 72 69  reatedDictionari
5820: 65 73 2e 70 75 73 68 28 73 44 69 63 4e 61 6d 65  es.push(sDicName
5830: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  );.            b
5840: 72 6f 77 73 65 72 2e 73 74 6f 72 61 67 65 2e 6c  rowser.storage.l
5850: 6f 63 61 6c 2e 73 65 74 28 7b 20 22 63 72 65 61  ocal.set({ "crea
5860: 74 65 64 5f 64 69 63 74 69 6f 6e 61 72 69 65 73  ted_dictionaries
5870: 5f 6c 69 73 74 22 3a 20 74 68 69 73 2e 6c 43 72  _list": this.lCr
5880: 65 61 74 65 64 44 69 63 74 69 6f 6e 61 72 69 65  eatedDictionarie
5890: 73 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  s });.        }.
58a0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 64 65 6c 65      },..    dele
58b0: 74 65 44 69 63 74 69 6f 6e 61 72 79 3a 20 66 75  teDictionary: fu
58c0: 6e 63 74 69 6f 6e 20 28 73 44 69 63 4e 61 6d 65  nction (sDicName
58d0: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ) {.        this
58e0: 2e 73 61 76 65 44 69 63 74 69 6f 6e 61 72 79 28  .saveDictionary(
58f0: 73 44 69 63 4e 61 6d 65 2c 20 6e 75 6c 6c 29 3b  sDicName, null);
5900: 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 44 69  .        if (sDi
5910: 63 4e 61 6d 65 20 21 3d 20 22 5f 5f 70 65 72 73  cName != "__pers
5920: 6f 6e 61 6c 5f 5f 22 29 20 7b 0a 20 20 20 20 20  onal__") {.     
5930: 20 20 20 20 20 20 20 6c 65 74 20 69 44 69 63 74         let iDict
5940: 20 3d 20 74 68 69 73 2e 6c 43 72 65 61 74 65 64   = this.lCreated
5950: 44 69 63 74 69 6f 6e 61 72 69 65 73 2e 69 6e 64  Dictionaries.ind
5960: 65 78 4f 66 28 73 44 69 63 4e 61 6d 65 29 3b 0a  exOf(sDicName);.
5970: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5980: 69 44 69 63 74 20 3e 20 2d 31 29 20 7b 0a 20 20  iDict > -1) {.  
5990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
59a0: 69 73 2e 6c 43 72 65 61 74 65 64 44 69 63 74 69  is.lCreatedDicti
59b0: 6f 6e 61 72 69 65 73 2e 73 70 6c 69 63 65 28 69  onaries.splice(i
59c0: 44 69 63 74 2c 20 31 29 3b 0a 20 20 20 20 20 20  Dict, 1);.      
59d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
59e0: 20 20 20 20 62 72 6f 77 73 65 72 2e 73 74 6f 72      browser.stor
59f0: 61 67 65 2e 6c 6f 63 61 6c 2e 73 65 74 28 7b 20  age.local.set({ 
5a00: 22 63 72 65 61 74 65 64 5f 64 69 63 74 69 6f 6e  "created_diction
5a10: 61 72 69 65 73 5f 6c 69 73 74 22 3a 20 74 68 69  aries_list": thi
5a20: 73 2e 6c 43 72 65 61 74 65 64 44 69 63 74 69 6f  s.lCreatedDictio
5a30: 6e 61 72 69 65 73 20 7d 29 3b 0a 20 20 20 20 20  naries });.     
5a40: 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20         for (let 
5a50: 78 4e 6f 64 65 20 6f 66 20 74 68 69 73 2e 78 44  xNode of this.xD
5a60: 69 63 53 65 6c 65 63 74 6f 72 2e 63 68 69 6c 64  icSelector.child
5a70: 4e 6f 64 65 73 29 20 7b 0a 20 20 20 20 20 20 20  Nodes) {.       
5a80: 20 20 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f           if (xNo
5a90: 64 65 2e 76 61 6c 75 65 20 3d 3d 20 73 44 69 63  de.value == sDic
5aa0: 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20  Name) {.        
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
5ac0: 2e 78 44 69 63 53 65 6c 65 63 74 6f 72 2e 72 65  .xDicSelector.re
5ad0: 6d 6f 76 65 43 68 69 6c 64 28 78 4e 6f 64 65 29  moveChild(xNode)
5ae0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
5af0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
5b00: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  }.            th
5b10: 69 73 2e 78 44 69 63 53 65 6c 65 63 74 6f 72 2e  is.xDicSelector.
5b20: 73 65 6c 65 63 74 65 64 49 6e 64 65 78 20 3d 20  selectedIndex = 
5b30: 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  0;.            o
5b40: 42 69 6e 61 72 79 44 69 63 74 2e 6c 6f 61 64 28  BinaryDict.load(
5b50: 22 5f 5f 70 65 72 73 6f 6e 61 6c 5f 5f 22 29 3b  "__personal__");
5b60: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
5b70: 2c 0a 0a 20 20 20 20 67 65 74 44 69 63 74 69 6f  ,..    getDictio
5b80: 6e 61 72 79 3a 20 66 75 6e 63 74 69 6f 6e 20 28  nary: function (
5b90: 73 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20  sName) {.       
5ba0: 20 69 66 20 28 73 4e 61 6d 65 20 3d 3d 20 22 5f   if (sName == "_
5bb0: 5f 70 65 72 73 6f 6e 61 6c 5f 5f 22 29 20 7b 0a  _personal__") {.
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5bd0: 72 6e 20 74 68 69 73 2e 6f 50 65 72 73 6f 6e 61  rn this.oPersona
5be0: 6c 44 69 63 74 69 6f 6e 61 72 79 3b 0a 20 20 20  lDictionary;.   
5bf0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65       }.        e
5c00: 6c 73 65 20 69 66 20 28 74 68 69 73 2e 6f 44 69  lse if (this.oDi
5c10: 63 74 69 6f 6e 61 72 69 65 73 20 20 26 26 20 20  ctionaries  &&  
5c20: 74 68 69 73 2e 6f 44 69 63 74 69 6f 6e 61 72 69  this.oDictionari
5c30: 65 73 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72 74  es.hasOwnPropert
5c40: 79 28 73 4e 61 6d 65 29 29 20 7b 0a 20 20 20 20  y(sName)) {.    
5c50: 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 73 6f 6c          //consol
5c60: 65 2e 6c 6f 67 28 74 68 69 73 2e 6f 44 69 63 74  e.log(this.oDict
5c70: 69 6f 6e 61 72 69 65 73 5b 73 4e 61 6d 65 5d 29  ionaries[sName])
5c80: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ;.            re
5c90: 74 75 72 6e 20 74 68 69 73 2e 6f 44 69 63 74 69  turn this.oDicti
5ca0: 6f 6e 61 72 69 65 73 5b 73 4e 61 6d 65 5d 3b 0a  onaries[sName];.
5cb0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
5cc0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20    return null;. 
5cd0: 20 20 20 7d 2c 0a 0a 20 20 20 20 73 61 76 65 44     },..    saveD
5ce0: 69 63 74 69 6f 6e 61 72 79 3a 20 66 75 6e 63 74  ictionary: funct
5cf0: 69 6f 6e 20 28 73 4e 61 6d 65 2c 20 6f 4a 53 4f  ion (sName, oJSO
5d00: 4e 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  N) {.        if 
5d10: 28 21 73 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20  (!sName) {.     
5d20: 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c         console.l
5d30: 6f 67 28 22 45 72 72 6f 72 3a 20 6e 61 6d 65 20  og("Error: name 
5d40: 6f 66 20 64 69 63 74 69 6f 6e 61 72 79 20 74 6f  of dictionary to
5d50: 20 73 61 76 65 20 69 73 20 65 6d 70 74 79 2e 22   save is empty."
5d60: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ).            re
5d70: 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a  turn;.        }.
5d80: 20 20 20 20 20 20 20 20 69 66 20 28 73 4e 61 6d          if (sNam
5d90: 65 20 3d 3d 20 22 5f 5f 70 65 72 73 6f 6e 61 6c  e == "__personal
5da0: 5f 5f 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20  __") {.         
5db0: 20 20 20 62 72 6f 77 73 65 72 2e 72 75 6e 74 69     browser.runti
5dc0: 6d 65 2e 73 65 6e 64 4d 65 73 73 61 67 65 28 7b  me.sendMessage({
5dd0: 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 73 65 74 44   sCommand: "setD
5de0: 69 63 74 69 6f 6e 61 72 79 22 2c 20 6f 50 61 72  ictionary", oPar
5df0: 61 6d 3a 20 7b 73 44 69 63 74 69 6f 6e 61 72 79  am: {sDictionary
5e00: 3a 20 22 70 65 72 73 6f 6e 61 6c 22 2c 20 6f 44  : "personal", oD
5e10: 69 63 74 3a 20 6f 4a 53 4f 4e 7d 2c 20 6f 49 6e  ict: oJSON}, oIn
5e20: 66 6f 3a 20 7b 7d 20 7d 29 3b 0a 20 20 20 20 20  fo: {} });.     
5e30: 20 20 20 20 20 20 20 62 72 6f 77 73 65 72 2e 73         browser.s
5e40: 74 6f 72 61 67 65 2e 6c 6f 63 61 6c 2e 73 65 74  torage.local.set
5e50: 28 7b 20 22 70 65 72 73 6f 6e 61 6c 5f 64 69 63  ({ "personal_dic
5e60: 74 69 6f 6e 61 72 79 22 3a 20 6f 4a 53 4f 4e 20  tionary": oJSON 
5e70: 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  });.        }.  
5e80: 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20        else {.   
5e90: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 44           this.oD
5ea0: 69 63 74 69 6f 6e 61 72 69 65 73 5b 73 4e 61 6d  ictionaries[sNam
5eb0: 65 5d 20 3d 20 6f 4a 53 4f 4e 3b 0a 20 20 20 20  e] = oJSON;.    
5ec0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 4a 53 4f          if (oJSO
5ed0: 4e 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20  N === null) {.  
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
5ef0: 6c 65 74 65 20 74 68 69 73 2e 6f 44 69 63 74 69  lete this.oDicti
5f00: 6f 6e 61 72 69 65 73 5b 73 4e 61 6d 65 5d 3b 0a  onaries[sName];.
5f10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
5f20: 20 20 20 20 20 20 20 20 20 20 62 72 6f 77 73 65            browse
5f30: 72 2e 73 74 6f 72 61 67 65 2e 6c 6f 63 61 6c 2e  r.storage.local.
5f40: 73 65 74 28 7b 20 22 73 68 61 72 65 64 5f 64 69  set({ "shared_di
5f50: 63 74 69 6f 6e 61 72 69 65 73 22 3a 20 74 68 69  ctionaries": thi
5f60: 73 2e 6f 44 69 63 74 69 6f 6e 61 72 69 65 73 20  s.oDictionaries 
5f70: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
5f80: 74 68 69 73 2e 73 65 6e 64 44 69 63 74 69 6f 6e  this.sendDiction
5f90: 61 72 79 4f 6e 6c 69 6e 65 28 6f 4a 53 4f 4e 29  aryOnline(oJSON)
5fa0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
5fb0: 7d 2c 0a 0a 20 20 20 20 73 65 6e 64 44 69 63 74  },..    sendDict
5fc0: 69 6f 6e 61 72 79 4f 6e 6c 69 6e 65 3a 20 66 75  ionaryOnline: fu
5fd0: 6e 63 74 69 6f 6e 20 28 6f 4a 53 4f 4e 29 20 7b  nction (oJSON) {
5fe0: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 73 4a 53  .        let sJS
5ff0: 4f 4e 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20  ON = "";.       
6000: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20   try {.         
6010: 20 20 20 73 4a 53 4f 4e 20 3d 20 4a 53 4f 4e 2e     sJSON = JSON.
6020: 73 74 72 69 6e 67 69 66 79 28 6f 4a 53 4f 4e 29  stringify(oJSON)
6030: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
6040: 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a      catch (e) {.
6050: 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77              show
6060: 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20  Error(e);.      
6070: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 2e 6d        return e.m
6080: 65 73 73 61 67 65 3b 0a 20 20 20 20 20 20 20 20  essage;.        
6090: 7d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c  }.        consol
60a0: 65 2e 6c 6f 67 28 22 53 65 6e 64 20 6f 6e 6c 69  e.log("Send onli
60b0: 6e 65 20 64 69 63 74 69 6f 6e 61 72 79 3a 20 22  ne dictionary: "
60c0: 20 2b 20 6f 4a 53 4f 4e 2e 73 44 69 63 4e 61 6d   + oJSON.sDicNam
60d0: 65 29 3b 0a 20 20 20 20 20 20 20 20 66 65 74 63  e);.        fetc
60e0: 68 28 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68  h("http://localh
60f0: 6f 73 74 2f 72 65 63 65 69 76 65 2f 22 2c 20 7b  ost/receive/", {
6100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74  .            met
6110: 68 6f 64 3a 20 22 50 4f 53 54 22 2c 20 2f 2f 20  hod: "POST", // 
6120: 2a 47 45 54 2c 20 50 4f 53 54 2c 20 50 55 54 2c  *GET, POST, PUT,
6130: 20 44 45 4c 45 54 45 2c 20 65 74 63 2e 0a 20 20   DELETE, etc..  
6140: 20 20 20 20 20 20 20 20 20 20 2f 2f 6d 6f 64 65            //mode
6150: 3a 20 22 63 6f 72 73 22 2c 20 2f 2f 20 6e 6f 2d  : "cors", // no-
6160: 63 6f 72 73 2c 20 63 6f 72 73 2c 20 2a 73 61 6d  cors, cors, *sam
6170: 65 2d 6f 72 69 67 69 6e 0a 20 20 20 20 20 20 20  e-origin.       
6180: 20 20 20 20 20 2f 2f 63 61 63 68 65 3a 20 22 6e       //cache: "n
6190: 6f 2d 63 61 63 68 65 22 2c 20 2f 2f 20 2a 64 65  o-cache", // *de
61a0: 66 61 75 6c 74 2c 20 6e 6f 2d 63 61 63 68 65 2c  fault, no-cache,
61b0: 20 72 65 6c 6f 61 64 2c 20 66 6f 72 63 65 2d 63   reload, force-c
61c0: 61 63 68 65 2c 20 6f 6e 6c 79 2d 69 66 2d 63 61  ache, only-if-ca
61d0: 63 68 65 64 0a 20 20 20 20 20 20 20 20 20 20 20  ched.           
61e0: 20 63 72 65 64 65 6e 74 69 61 6c 73 3a 20 22 69   credentials: "i
61f0: 6e 63 6c 75 64 65 22 2c 20 2f 2f 20 69 6e 63 6c  nclude", // incl
6200: 75 64 65 2c 20 2a 73 61 6d 65 2d 6f 72 69 67 69  ude, *same-origi
6210: 6e 2c 20 6f 6d 69 74 0a 20 20 20 20 20 20 20 20  n, omit.        
6220: 20 20 20 20 68 65 61 64 65 72 73 3a 20 7b 0a 20      headers: {. 
6230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
6240: 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 3a 20 22  Content-Type": "
6250: 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e  application/json
6260: 22 2c 20 20 2f 2f 20 74 65 78 74 2f 70 6c 61 69  ",  // text/plai
6270: 6e 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a  n, application/j
6280: 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  son.            
6290: 20 20 20 20 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e      "Content-Len
62a0: 67 74 68 22 3a 20 73 4a 53 4f 4e 2e 6c 65 6e 67  gth": sJSON.leng
62b0: 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  th.            }
62c0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ,.            re
62d0: 64 69 72 65 63 74 3a 20 22 66 6f 6c 6c 6f 77 22  direct: "follow"
62e0: 2c 20 2f 2f 20 6d 61 6e 75 61 6c 2c 20 2a 66 6f  , // manual, *fo
62f0: 6c 6c 6f 77 2c 20 65 72 72 6f 72 0a 20 20 20 20  llow, error.    
6300: 20 20 20 20 20 20 20 20 72 65 66 65 72 72 65 72          referrer
6310: 3a 20 22 6e 6f 2d 72 65 66 65 72 72 65 72 22 2c  : "no-referrer",
6320: 20 2f 2f 20 6e 6f 2d 72 65 66 65 72 72 65 72 2c   // no-referrer,
6330: 20 2a 63 6c 69 65 6e 74 0a 20 20 20 20 20 20 20   *client.       
6340: 20 20 20 20 20 62 6f 64 79 3a 20 73 4a 53 4f 4e       body: sJSON
6350: 2c 20 2f 2f 20 62 6f 64 79 20 64 61 74 61 20 74  , // body data t
6360: 79 70 65 20 6d 75 73 74 20 6d 61 74 63 68 20 22  ype must match "
6370: 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 68 65  Content-Type" he
6380: 61 64 65 72 0a 20 20 20 20 20 20 20 20 7d 29 0a  ader.        }).
6390: 20 20 20 20 20 20 20 20 2e 74 68 65 6e 28 28 72          .then((r
63a0: 65 73 70 6f 6e 73 65 29 20 3d 3e 20 7b 0a 20 20  esponse) => {.  
63b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
63c0: 73 70 6f 6e 73 65 2e 6f 6b 29 20 7b 0a 20 20 20  sponse.ok) {.   
63d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
63e0: 20 28 6c 65 74 20 70 61 72 61 6d 20 69 6e 20 72   (let param in r
63f0: 65 73 70 6f 6e 73 65 29 20 7b 0a 20 20 20 20 20  esponse) {.     
6400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
6410: 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 70 61 72 61 6d  onsole.log(param
6420: 2c 20 72 65 73 70 6f 6e 73 65 5b 70 61 72 61 6d  , response[param
6430: 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ]);.            
6440: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
6450: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f        console.lo
6460: 67 28 72 65 73 70 6f 6e 73 65 29 3b 0a 20 20 20  g(response);.   
6470: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6480: 75 72 6e 20 72 65 73 70 6f 6e 73 65 2e 6a 73 6f  urn response.jso
6490: 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  n();.           
64a0: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
64b0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c            consol
64c0: 65 2e 6c 6f 67 28 22 45 72 72 6f 72 3a 20 64 69  e.log("Error: di
64d0: 63 74 69 6f 6e 61 72 79 20 6e 6f 74 20 73 65 6e  ctionary not sen
64e0: 74 3a 20 22 20 2b 20 6f 4a 53 4f 4e 2e 73 44 69  t: " + oJSON.sDi
64f0: 63 4e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20  cName);.        
6500: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
6510: 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ull;.           
6520: 20 7d 0a 20 20 20 20 20 20 20 20 7d 29 0a 20 20   }.        }).  
6530: 20 20 20 20 20 20 2e 74 68 65 6e 28 28 72 65 73        .then((res
6540: 70 6f 6e 73 65 29 20 3d 3e 20 7b 0a 20 20 20 20  ponse) => {.    
6550: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 70          if (resp
6560: 6f 6e 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20  onse) {.        
6570: 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e          console.
6580: 6c 6f 67 28 72 65 73 70 6f 6e 73 65 29 3b 0a 20  log(response);. 
6590: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
65a0: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
65b0: 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 20      //.         
65c0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 29 0a     }.        }).
65d0: 20 20 20 20 20 20 20 20 2e 63 61 74 63 68 28 28          .catch((
65e0: 65 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20  e) => {.        
65f0: 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29      showError(e)
6600: 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20  ;.        });.  
6610: 20 20 7d 0a 7d 0a 0a 0a 63 6f 6e 73 74 20 6f 42    }.}...const oB
6620: 69 6e 61 72 79 44 69 63 74 20 3d 20 7b 0a 0a 20  inaryDict = {.. 
6630: 20 20 20 6f 49 42 44 41 57 47 3a 20 6e 75 6c 6c     oIBDAWG: null
6640: 2c 0a 20 20 20 20 73 4e 61 6d 65 3a 20 22 22 2c  ,.    sName: "",
6650: 0a 20 20 20 20 73 44 65 73 63 72 69 70 74 69 6f  .    sDescriptio
6660: 6e 3a 20 22 22 2c 0a 0a 20 20 20 20 6c 6f 61 64  n: "",..    load
6670: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73 4e 61 6d  : function (sNam
6680: 65 3d 22 5f 5f 70 65 72 73 6f 6e 61 6c 5f 5f 22  e="__personal__"
6690: 29 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73  ) {.        cons
66a0: 6f 6c 65 2e 6c 6f 67 28 22 6c 65 78 69 63 6f 6e  ole.log("lexicon
66b0: 20 65 64 69 74 6f 72 2c 20 6c 6f 61 64 3a 20 22   editor, load: "
66c0: 20 2b 20 73 4e 61 6d 65 29 3b 0a 20 20 20 20 20   + sName);.     
66d0: 20 20 20 74 68 69 73 2e 73 4e 61 6d 65 20 3d 20     this.sName = 
66e0: 73 4e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 6c  sName;.        l
66f0: 65 74 20 6f 4a 53 4f 4e 20 3d 20 6f 44 69 63 74  et oJSON = oDict
6700: 48 61 6e 64 6c 65 72 2e 67 65 74 44 69 63 74 69  Handler.getDicti
6710: 6f 6e 61 72 79 28 73 4e 61 6d 65 29 3b 0a 20 20  onary(sName);.  
6720: 20 20 20 20 20 20 69 66 20 28 6f 4a 53 4f 4e 29        if (oJSON)
6730: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   {.            t
6740: 68 69 73 2e 70 61 72 73 65 44 69 63 74 28 6f 4a  his.parseDict(oJ
6750: 53 4f 4e 29 3b 0a 20 20 20 20 20 20 20 20 7d 20  SON);.        } 
6760: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
6770: 20 20 20 6f 4c 65 78 69 63 6f 6e 54 61 62 6c 65     oLexiconTable
6780: 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20  .clear();.      
6790: 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 44 69        this.setDi
67a0: 63 74 44 61 74 61 28 30 2c 20 22 5b 6e c3 a9 61  ctData(0, "[n..a
67b0: 6e 74 5d 22 29 3b 0a 20 20 20 20 20 20 20 20 20  nt]");.         
67c0: 20 20 20 68 69 64 65 45 6c 65 6d 65 6e 74 28 22     hideElement("
67d0: 73 61 76 65 5f 62 75 74 74 6f 6e 22 29 3b 0a 20  save_button");. 
67e0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a         }.    },.
67f0: 0a 20 20 20 20 6e 65 77 44 69 63 74 69 6f 6e 61  .    newDictiona
6800: 72 79 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  ry: function () 
6810: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  {.        this.o
6820: 49 42 44 41 57 47 20 3d 20 6e 75 6c 6c 3b 0a 20  IBDAWG = null;. 
6830: 20 20 20 20 20 20 20 74 68 69 73 2e 73 4e 61 6d         this.sNam
6840: 65 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74  e = document.get
6850: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6e 65 77  ElementById("new
6860: 5f 64 69 63 74 69 6f 6e 61 72 79 5f 6e 61 6d 65  _dictionary_name
6870: 22 29 2e 76 61 6c 75 65 3b 0a 20 20 20 20 20 20  ").value;.      
6880: 20 20 74 68 69 73 2e 73 44 65 73 63 72 69 70 74    this.sDescript
6890: 69 6f 6e 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67  ion = document.g
68a0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6e  etElementById("n
68b0: 65 77 5f 64 69 63 74 69 6f 6e 61 72 79 5f 64 65  ew_dictionary_de
68c0: 73 63 72 69 70 74 69 6f 6e 22 29 2e 76 61 6c 75  scription").valu
68d0: 65 3b 0a 20 20 20 20 20 20 20 20 6f 44 69 63 74  e;.        oDict
68e0: 48 61 6e 64 6c 65 72 2e 61 64 64 44 69 63 74 69  Handler.addDicti
68f0: 6f 6e 61 72 79 28 74 68 69 73 2e 73 4e 61 6d 65  onary(this.sName
6900: 29 3b 0a 20 20 20 20 20 20 20 20 6f 4c 65 78 69  );.        oLexi
6910: 63 6f 6e 54 61 62 6c 65 2e 63 6c 65 61 72 28 29  conTable.clear()
6920: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73  ;.        this.s
6930: 65 74 44 69 63 74 44 61 74 61 28 30 2c 20 22 5b  etDictData(0, "[
6940: 6e c3 a9 61 6e 74 5d 22 29 3b 0a 20 20 20 20 20  n..ant]");.     
6950: 20 20 20 68 69 64 65 45 6c 65 6d 65 6e 74 28 22     hideElement("
6960: 73 61 76 65 5f 62 75 74 74 6f 6e 22 29 3b 0a 20  save_button");. 
6970: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
6980: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
6990: 6e 65 77 5f 64 69 63 74 69 6f 6e 61 72 79 5f 6e  new_dictionary_n
69a0: 61 6d 65 22 29 2e 76 61 6c 75 65 20 3d 20 22 22  ame").value = ""
69b0: 3b 0a 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65  ;.        docume
69c0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
69d0: 64 28 22 6e 65 77 5f 64 69 63 74 69 6f 6e 61 72  d("new_dictionar
69e0: 79 5f 64 65 73 63 72 69 70 74 69 6f 6e 22 29 2e  y_description").
69f0: 76 61 6c 75 65 20 3d 20 22 22 3b 0a 20 20 20 20  value = "";.    
6a00: 20 20 20 20 68 69 64 65 45 6c 65 6d 65 6e 74 28      hideElement(
6a10: 22 6e 65 77 5f 64 69 63 74 69 6f 6e 61 72 79 5f  "new_dictionary_
6a20: 73 65 63 74 69 6f 6e 22 29 0a 20 20 20 20 7d 2c  section").    },
6a30: 0a 0a 20 20 20 20 70 61 72 73 65 44 69 63 74 3a  ..    parseDict:
6a40: 20 66 75 6e 63 74 69 6f 6e 20 28 6f 4a 53 4f 4e   function (oJSON
6a50: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20  ) {.        try 
6a60: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
6a70: 69 73 2e 6f 49 42 44 41 57 47 20 3d 20 6e 65 77  is.oIBDAWG = new
6a80: 20 49 42 44 41 57 47 28 6f 4a 53 4f 4e 29 3b 0a   IBDAWG(oJSON);.
6a90: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
6aa0: 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20    catch (e) {.  
6ab0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c            consol
6ac0: 65 2e 65 72 72 6f 72 28 65 29 3b 0a 20 20 20 20  e.error(e);.    
6ad0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74          this.set
6ae0: 44 69 63 74 44 61 74 61 28 30 2c 20 22 23 45 72  DictData(0, "#Er
6af0: 72 65 75 72 2e 20 56 6f 69 72 20 6c 61 20 63 6f  reur. Voir la co
6b00: 6e 73 6f 6c 65 2e 22 29 3b 0a 20 20 20 20 20 20  nsole.");.      
6b10: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20        return;.  
6b20: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
6b30: 6c 65 74 20 6c 45 6e 74 72 79 20 3d 20 5b 5d 3b  let lEntry = [];
6b40: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65  .        for (le
6b50: 74 20 61 52 65 73 20 6f 66 20 74 68 69 73 2e 6f  t aRes of this.o
6b60: 49 42 44 41 57 47 2e 73 65 6c 65 63 74 28 29 29  IBDAWG.select())
6b70: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c   {.            l
6b80: 45 6e 74 72 79 2e 70 75 73 68 28 61 52 65 73 29  Entry.push(aRes)
6b90: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
6ba0: 20 20 20 20 6f 4c 65 78 69 63 6f 6e 54 61 62 6c      oLexiconTabl
6bb0: 65 2e 66 69 6c 6c 28 6c 45 6e 74 72 79 29 3b 0a  e.fill(lEntry);.
6bc0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74          this.set
6bd0: 44 69 63 74 44 61 74 61 28 74 68 69 73 2e 6f 49  DictData(this.oI
6be0: 42 44 41 57 47 2e 6e 45 6e 74 72 79 2c 20 74 68  BDAWG.nEntry, th
6bf0: 69 73 2e 6f 49 42 44 41 57 47 2e 73 44 61 74 65  is.oIBDAWG.sDate
6c00: 29 3b 0a 20 20 20 20 20 20 20 20 68 69 64 65 45  );.        hideE
6c10: 6c 65 6d 65 6e 74 28 22 73 61 76 65 5f 62 75 74  lement("save_but
6c20: 74 6f 6e 22 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20  ton");.    },.. 
6c30: 20 20 20 69 6d 70 6f 72 74 3a 20 66 75 6e 63 74     import: funct
6c40: 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20  ion () {.       
6c50: 20 6c 65 74 20 78 49 6e 70 75 74 20 3d 20 64 6f   let xInput = do
6c60: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
6c70: 74 42 79 49 64 28 22 69 6d 70 6f 72 74 5f 69 6e  tById("import_in
6c80: 70 75 74 22 29 3b 0a 20 20 20 20 20 20 20 20 6c  put");.        l
6c90: 65 74 20 78 46 69 6c 65 20 3d 20 78 49 6e 70 75  et xFile = xInpu
6ca0: 74 2e 66 69 6c 65 73 5b 30 5d 3b 0a 20 20 20 20  t.files[0];.    
6cb0: 20 20 20 20 6c 65 74 20 78 55 52 4c 20 3d 20 55      let xURL = U
6cc0: 52 4c 2e 63 72 65 61 74 65 4f 62 6a 65 63 74 55  RL.createObjectU
6cd0: 52 4c 28 78 46 69 6c 65 29 3b 0a 20 20 20 20 20  RL(xFile);.     
6ce0: 20 20 20 6c 65 74 20 73 4a 53 4f 4e 20 3d 20 68     let sJSON = h
6cf0: 65 6c 70 65 72 73 2e 6c 6f 61 64 46 69 6c 65 28  elpers.loadFile(
6d00: 78 55 52 4c 29 3b 0a 20 20 20 20 20 20 20 20 69  xURL);.        i
6d10: 66 20 28 73 4a 53 4f 4e 29 20 7b 0a 20 20 20 20  f (sJSON) {.    
6d20: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
6d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
6d40: 74 20 6f 4a 53 4f 4e 20 3d 20 4a 53 4f 4e 2e 70  t oJSON = JSON.p
6d50: 61 72 73 65 28 73 4a 53 4f 4e 29 3b 0a 20 20 20  arse(sJSON);.   
6d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
6d70: 73 2e 70 61 72 73 65 44 69 63 74 28 6f 4a 53 4f  s.parseDict(oJSO
6d80: 4e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  N);.            
6d90: 20 20 20 20 6f 44 69 63 74 48 61 6e 64 6c 65 72      oDictHandler
6da0: 2e 73 61 76 65 44 69 63 74 69 6f 6e 61 72 79 28  .saveDictionary(
6db0: 74 68 69 73 2e 73 4e 61 6d 65 2c 20 6f 4a 53 4f  this.sName, oJSO
6dc0: 4e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  N);.            
6dd0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  }.            ca
6de0: 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20  tch (e) {.      
6df0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c            consol
6e00: 65 2e 65 72 72 6f 72 28 65 29 3b 0a 20 20 20 20  e.error(e);.    
6e10: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
6e20: 2e 73 65 74 44 69 63 74 44 61 74 61 28 30 2c 20  .setDictData(0, 
6e30: 22 23 45 72 72 65 75 72 2e 20 56 6f 69 72 20 6c  "#Erreur. Voir l
6e40: 61 20 63 6f 6e 73 6f 6c 65 2e 22 29 3b 0a 20 20  a console.");.  
6e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6e60: 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 20  turn;.          
6e70: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c    }.        } el
6e80: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
6e90: 20 74 68 69 73 2e 73 65 74 44 69 63 74 44 61 74   this.setDictDat
6ea0: 61 28 30 2c 20 22 5b 6e c3 a9 61 6e 74 5d 22 29  a(0, "[n..ant]")
6eb0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 44  ;.            oD
6ec0: 69 63 74 48 61 6e 64 6c 65 72 2e 73 61 76 65 44  ictHandler.saveD
6ed0: 69 63 74 69 6f 6e 61 72 79 28 74 68 69 73 2e 73  ictionary(this.s
6ee0: 4e 61 6d 65 2c 20 6e 75 6c 6c 29 3b 0a 20 20 20  Name, null);.   
6ef0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20       }.    },.. 
6f00: 20 20 20 73 65 74 44 69 63 74 44 61 74 61 3a 20     setDictData: 
6f10: 66 75 6e 63 74 69 6f 6e 20 28 6e 45 6e 74 72 69  function (nEntri
6f20: 65 73 2c 20 73 44 61 74 65 29 20 7b 0a 20 20 20  es, sDate) {.   
6f30: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
6f40: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 64 69  tElementById("di
6f50: 63 5f 6e 75 6d 5f 65 6e 74 72 69 65 73 22 29 2e  c_num_entries").
6f60: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 45  textContent = nE
6f70: 6e 74 72 69 65 73 2e 74 6f 53 74 72 69 6e 67 28  ntries.toString(
6f80: 29 20 2b 20 28 28 74 68 69 73 2e 6e 45 6e 74 72  ) + ((this.nEntr
6f90: 79 20 3e 20 31 29 20 3f 20 22 20 65 6e 74 72 c3  y > 1) ? " entr.
6fa0: a9 65 73 22 20 3a 20 22 20 65 6e 74 72 c3 a9 65  .es" : " entr..e
6fb0: 22 29 3b 0a 20 20 20 20 20 20 20 20 64 6f 63 75  ");.        docu
6fc0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
6fd0: 79 49 64 28 22 64 69 63 5f 73 61 76 65 5f 64 61  yId("dic_save_da
6fe0: 74 65 22 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  te").textContent
6ff0: 20 3d 20 73 44 61 74 65 3b 0a 20 20 20 20 20 20   = sDate;.      
7000: 20 20 69 66 20 28 6e 45 6e 74 72 69 65 73 20 3d    if (nEntries =
7010: 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20  = 0) {.         
7020: 20 20 20 68 69 64 65 45 6c 65 6d 65 6e 74 28 22     hideElement("
7030: 65 78 70 6f 72 74 5f 62 75 74 74 6f 6e 22 29 3b  export_button");
7040: 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
7050: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68  {.            sh
7060: 6f 77 45 6c 65 6d 65 6e 74 28 22 65 78 70 6f 72  owElement("expor
7070: 74 5f 62 75 74 74 6f 6e 22 29 3b 0a 20 20 20 20  t_button");.    
7080: 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20      }.    },..  
7090: 20 20 6c 69 73 74 65 6e 3a 20 66 75 6e 63 74 69    listen: functi
70a0: 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  on () {.        
70b0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
70c0: 65 6e 74 42 79 49 64 28 22 64 69 63 5f 73 65 6c  entById("dic_sel
70d0: 65 63 74 6f 72 22 29 2e 61 64 64 45 76 65 6e 74  ector").addEvent
70e0: 4c 69 73 74 65 6e 65 72 28 22 63 68 61 6e 67 65  Listener("change
70f0: 22 2c 20 28 29 20 3d 3e 20 7b 74 68 69 73 2e 6c  ", () => {this.l
7100: 6f 61 64 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  oad(document.get
7110: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 64 69 63  ElementById("dic
7120: 5f 73 65 6c 65 63 74 6f 72 22 29 2e 76 61 6c 75  _selector").valu
7130: 65 29 7d 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20  e)}, false);.   
7140: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
7150: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 73 61  tElementById("sa
7160: 76 65 5f 62 75 74 74 6f 6e 22 29 2e 61 64 64 45  ve_button").addE
7170: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c  ventListener("cl
7180: 69 63 6b 22 2c 20 28 29 20 3d 3e 20 7b 20 74 68  ick", () => { th
7190: 69 73 2e 62 75 69 6c 64 28 29 3b 20 7d 2c 20 66  is.build(); }, f
71a0: 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 64  alse);.        d
71b0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
71c0: 6e 74 42 79 49 64 28 22 65 78 70 6f 72 74 5f 62  ntById("export_b
71d0: 75 74 74 6f 6e 22 29 2e 61 64 64 45 76 65 6e 74  utton").addEvent
71e0: 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22  Listener("click"
71f0: 2c 20 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 65  , () => { this.e
7200: 78 70 6f 72 74 28 29 3b 20 7d 2c 20 66 61 6c 73  xport(); }, fals
7210: 65 29 3b 0a 20 20 20 20 20 20 20 20 64 6f 63 75  e);.        docu
7220: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
7230: 79 49 64 28 22 69 6d 70 6f 72 74 5f 69 6e 70 75  yId("import_inpu
7240: 74 22 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74  t").addEventList
7250: 65 6e 65 72 28 22 63 68 61 6e 67 65 22 2c 20 28  ener("change", (
7260: 29 20 3d 3e 20 7b 20 74 68 69 73 2e 69 6d 70 6f  ) => { this.impo
7270: 72 74 28 29 3b 20 7d 2c 20 66 61 6c 73 65 29 3b  rt(); }, false);
7280: 0a 20 20 20 20 20 20 20 20 2f 2f 64 6f 63 75 6d  .        //docum
7290: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
72a0: 49 64 28 22 6e 65 77 5f 64 69 63 74 69 6f 6e 61  Id("new_dictiona
72b0: 72 79 5f 62 75 74 74 6f 6e 22 29 2e 61 64 64 45  ry_button").addE
72c0: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c  ventListener("cl
72d0: 69 63 6b 22 2c 20 28 29 20 3d 3e 20 7b 20 73 77  ick", () => { sw
72e0: 69 74 63 68 44 69 73 70 6c 61 79 28 22 6e 65 77  itchDisplay("new
72f0: 5f 64 69 63 74 69 6f 6e 61 72 79 5f 73 65 63 74  _dictionary_sect
7300: 69 6f 6e 22 29 3b 20 7d 2c 20 66 61 6c 73 65 29  ion"); }, false)
7310: 3b 0a 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65  ;.        docume
7320: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
7330: 64 28 22 64 65 6c 65 74 65 5f 64 69 63 74 69 6f  d("delete_dictio
7340: 6e 61 72 79 5f 62 75 74 74 6f 6e 22 29 2e 61 64  nary_button").ad
7350: 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22  dEventListener("
7360: 63 6c 69 63 6b 22 2c 20 28 29 20 3d 3e 20 7b 20  click", () => { 
7370: 74 68 69 73 2e 64 65 6c 65 74 65 28 29 3b 20 7d  this.delete(); }
7380: 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20  , false);.      
7390: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
73a0: 65 6d 65 6e 74 42 79 49 64 28 22 63 72 65 61 74  ementById("creat
73b0: 65 5f 64 69 63 74 69 6f 6e 61 72 79 5f 62 75 74  e_dictionary_but
73c0: 74 6f 6e 22 29 2e 61 64 64 45 76 65 6e 74 4c 69  ton").addEventLi
73d0: 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c 20  stener("click", 
73e0: 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 6e 65 77  () => { this.new
73f0: 44 69 63 74 69 6f 6e 61 72 79 28 29 3b 20 7d 2c  Dictionary(); },
7400: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 7d 2c 0a   false);.    },.
7410: 0a 20 20 20 20 62 75 69 6c 64 3a 20 66 75 6e 63  .    build: func
7420: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20  tion () {.      
7430: 20 20 6c 65 74 20 78 50 72 6f 67 72 65 73 73 4e    let xProgressN
7440: 6f 64 65 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67  ode = document.g
7450: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 77  etElementById("w
7460: 61 69 74 5f 70 72 6f 67 72 65 73 73 22 29 3b 0a  ait_progress");.
7470: 20 20 20 20 20 20 20 20 6c 65 74 20 6c 45 6e 74          let lEnt
7480: 72 79 20 3d 20 6f 4c 65 78 69 63 6f 6e 54 61 62  ry = oLexiconTab
7490: 6c 65 2e 67 65 74 45 6e 74 72 69 65 73 28 29 3b  le.getEntries();
74a0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6c 45 6e  .        if (lEn
74b0: 74 72 79 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20  try.length > 0) 
74c0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  {.            le
74d0: 74 20 6f 44 41 57 47 20 3d 20 6e 65 77 20 44 41  t oDAWG = new DA
74e0: 57 47 28 6c 45 6e 74 72 79 2c 20 22 53 22 2c 20  WG(lEntry, "S", 
74f0: 22 66 72 22 2c 20 22 46 72 61 6e c3 a7 61 69 73  "fr", "Fran..ais
7500: 22 2c 20 74 68 69 73 2e 73 4e 61 6d 65 2c 20 74  ", this.sName, t
7510: 68 69 73 2e 73 44 65 73 63 72 69 70 74 69 6f 6e  his.sDescription
7520: 2c 20 78 50 72 6f 67 72 65 73 73 4e 6f 64 65 29  , xProgressNode)
7530: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ;.            le
7540: 74 20 6f 4a 53 4f 4e 20 3d 20 6f 44 41 57 47 2e  t oJSON = oDAWG.
7550: 63 72 65 61 74 65 42 69 6e 61 72 79 4a 53 4f 4e  createBinaryJSON
7560: 28 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  (1);.           
7570: 20 6f 44 69 63 74 48 61 6e 64 6c 65 72 2e 73 61   oDictHandler.sa
7580: 76 65 44 69 63 74 69 6f 6e 61 72 79 28 74 68 69  veDictionary(thi
7590: 73 2e 73 4e 61 6d 65 2c 20 6f 4a 53 4f 4e 29 3b  s.sName, oJSON);
75a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
75b0: 73 2e 6f 49 42 44 41 57 47 20 3d 20 6e 65 77 20  s.oIBDAWG = new 
75c0: 49 42 44 41 57 47 28 6f 4a 53 4f 4e 29 3b 0a 20  IBDAWG(oJSON);. 
75d0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
75e0: 73 65 74 44 69 63 74 44 61 74 61 28 74 68 69 73  setDictData(this
75f0: 2e 6f 49 42 44 41 57 47 2e 6e 45 6e 74 72 79 2c  .oIBDAWG.nEntry,
7600: 20 74 68 69 73 2e 6f 49 42 44 41 57 47 2e 73 44   this.oIBDAWG.sD
7610: 61 74 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 20  ate);.        } 
7620: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
7630: 20 20 20 6f 44 69 63 74 48 61 6e 64 6c 65 72 2e     oDictHandler.
7640: 73 61 76 65 44 69 63 74 69 6f 6e 61 72 79 28 74  saveDictionary(t
7650: 68 69 73 2e 73 4e 61 6d 65 2c 20 6e 75 6c 6c 29  his.sName, null)
7660: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
7670: 69 73 2e 73 65 74 44 69 63 74 44 61 74 61 28 30  is.setDictData(0
7680: 2c 20 22 5b 6e c3 a9 61 6e 74 5d 22 29 3b 0a 20  , "[n..ant]");. 
7690: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
76a0: 20 68 69 64 65 45 6c 65 6d 65 6e 74 28 22 73 61   hideElement("sa
76b0: 76 65 5f 62 75 74 74 6f 6e 22 29 3b 0a 20 20 20  ve_button");.   
76c0: 20 7d 2c 0a 0a 20 20 20 20 64 65 6c 65 74 65 3a   },..    delete:
76d0: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
76e0: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69         if (confi
76f0: 72 6d 28 22 56 6f 75 6c 65 7a 2d 76 6f 75 73 20  rm("Voulez-vous 
7700: 65 66 66 61 63 65 72 20 6c 65 20 64 69 63 74 69  effacer le dicti
7710: 6f 6e 6e 61 69 72 65 20 e2 80 9c 22 2b 74 68 69  onnaire ..."+thi
7720: 73 2e 73 4e 61 6d 65 2b 22 e2 80 9d e2 80 af 3f  s.sName+"......?
7730: 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ")) {.          
7740: 20 20 6f 4c 65 78 69 63 6f 6e 54 61 62 6c 65 2e    oLexiconTable.
7750: 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20 20  clear();.       
7760: 20 20 20 20 20 74 68 69 73 2e 73 65 74 44 69 63       this.setDic
7770: 74 44 61 74 61 28 30 2c 20 22 5b 6e c3 a9 61 6e  tData(0, "[n..an
7780: 74 5d 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  t]");.          
7790: 20 20 6f 44 69 63 74 48 61 6e 64 6c 65 72 2e 64    oDictHandler.d
77a0: 65 6c 65 74 65 44 69 63 74 69 6f 6e 61 72 79 28  eleteDictionary(
77b0: 74 68 69 73 2e 73 4e 61 6d 65 29 3b 0a 20 20 20  this.sName);.   
77c0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20       }.    },.. 
77d0: 20 20 20 65 78 70 6f 72 74 3a 20 66 75 6e 63 74     export: funct
77e0: 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20  ion () {.       
77f0: 20 6c 65 74 20 78 42 6c 6f 62 20 3d 20 6e 65 77   let xBlob = new
7800: 20 42 6c 6f 62 28 5b 20 4a 53 4f 4e 2e 73 74 72   Blob([ JSON.str
7810: 69 6e 67 69 66 79 28 74 68 69 73 2e 6f 49 42 44  ingify(this.oIBD
7820: 41 57 47 2e 67 65 74 4a 53 4f 4e 28 29 29 20 5d  AWG.getJSON()) ]
7830: 2c 20 7b 74 79 70 65 3a 20 27 61 70 70 6c 69 63  , {type: 'applic
7840: 61 74 69 6f 6e 2f 6a 73 6f 6e 27 7d 29 3b 0a 20  ation/json'});. 
7850: 20 20 20 20 20 20 20 6c 65 74 20 73 55 52 4c 20         let sURL 
7860: 3d 20 55 52 4c 2e 63 72 65 61 74 65 4f 62 6a 65  = URL.createObje
7870: 63 74 55 52 4c 28 78 42 6c 6f 62 29 3b 0a 20 20  ctURL(xBlob);.  
7880: 20 20 20 20 20 20 62 72 6f 77 73 65 72 2e 64 6f        browser.do
7890: 77 6e 6c 6f 61 64 73 2e 64 6f 77 6e 6c 6f 61 64  wnloads.download
78a0: 28 7b 20 66 69 6c 65 6e 61 6d 65 3a 20 22 66 72  ({ filename: "fr
78b0: 2e 22 2b 74 68 69 73 2e 73 4e 61 6d 65 2b 22 2e  ."+this.sName+".
78c0: 6a 73 6f 6e 22 2c 20 75 72 6c 3a 20 73 55 52 4c  json", url: sURL
78d0: 2c 20 73 61 76 65 41 73 3a 20 74 72 75 65 20 7d  , saveAs: true }
78e0: 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6f 6e  );.    }.}...con
78f0: 73 74 20 6f 53 65 61 72 63 68 20 3d 20 7b 0a 0a  st oSearch = {..
7900: 20 20 20 20 6f 53 70 65 6c 6c 43 68 65 63 6b 65      oSpellChecke
7910: 72 3a 20 6e 75 6c 6c 2c 0a 0a 20 20 20 20 6c 6f  r: null,..    lo
7920: 61 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  ad: function () 
7930: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  {.        this.o
7940: 53 70 65 6c 6c 43 68 65 63 6b 65 72 20 3d 20 6e  SpellChecker = n
7950: 65 77 20 53 70 65 6c 6c 43 68 65 63 6b 65 72 28  ew SpellChecker(
7960: 22 66 72 22 2c 20 62 72 6f 77 73 65 72 2e 72 75  "fr", browser.ru
7970: 6e 74 69 6d 65 2e 67 65 74 55 52 4c 28 22 22 29  ntime.getURL("")
7980: 2b 22 67 72 61 6d 6d 61 6c 65 63 74 65 2f 67 72  +"grammalecte/gr
7990: 61 70 68 73 70 65 6c 6c 2f 5f 64 69 63 74 69 6f  aphspell/_dictio
79a0: 6e 61 72 69 65 73 22 2c 20 22 66 72 2d 61 6c 6c  naries", "fr-all
79b0: 76 61 72 73 2e 6a 73 6f 6e 22 29 3b 0a 20 20 20  vars.json");.   
79c0: 20 7d 2c 0a 0a 20 20 20 20 6c 6f 61 64 4f 74 68   },..    loadOth
79d0: 65 72 44 69 63 74 69 6f 6e 61 72 69 65 73 3a 20  erDictionaries: 
79e0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
79f0: 20 20 20 20 20 20 2f 2f 54 4f 44 4f 0a 20 20 20        //TODO.   
7a00: 20 7d 2c 0a 0a 20 20 20 20 6c 69 73 74 65 6e 3a   },..    listen:
7a10: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
7a20: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
7a30: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
7a40: 73 65 61 72 63 68 5f 73 69 6d 69 6c 61 72 5f 62  search_similar_b
7a50: 75 74 74 6f 6e 22 29 2e 61 64 64 45 76 65 6e 74  utton").addEvent
7a60: 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22  Listener("click"
7a70: 2c 20 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 73  , () => { this.s
7a80: 65 61 72 63 68 53 69 6d 69 6c 61 72 28 29 3b 20  earchSimilar(); 
7a90: 7d 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20  }, false);.     
7aa0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
7ab0: 6c 65 6d 65 6e 74 42 79 49 64 28 22 73 65 61 72  lementById("sear
7ac0: 63 68 5f 72 65 67 65 78 5f 62 75 74 74 6f 6e 22  ch_regex_button"
7ad0: 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e  ).addEventListen
7ae0: 65 72 28 22 63 6c 69 63 6b 22 2c 20 28 29 20 3d  er("click", () =
7af0: 3e 20 7b 20 74 68 69 73 2e 73 65 61 72 63 68 52  > { this.searchR
7b00: 65 67 65 78 28 29 20 7d 2c 20 66 61 6c 73 65 29  egex() }, false)
7b10: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 73 65  ;.    },..    se
7b20: 61 72 63 68 53 69 6d 69 6c 61 72 3a 20 66 75 6e  archSimilar: fun
7b30: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20  ction () {.     
7b40: 20 20 20 6f 53 65 61 72 63 68 54 61 62 6c 65 2e     oSearchTable.
7b50: 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20 20  clear();.       
7b60: 20 6c 65 74 20 73 57 6f 72 64 20 3d 20 64 6f 63   let sWord = doc
7b70: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
7b80: 42 79 49 64 28 22 73 65 61 72 63 68 5f 73 69 6d  ById("search_sim
7b90: 69 6c 61 72 22 29 2e 76 61 6c 75 65 3b 0a 20 20  ilar").value;.  
7ba0: 20 20 20 20 20 20 69 66 20 28 73 57 6f 72 64 20        if (sWord 
7bb0: 21 3d 3d 20 22 22 29 20 7b 0a 20 20 20 20 20 20  !== "") {.      
7bc0: 20 20 20 20 20 20 6c 65 74 20 6c 52 65 73 75 6c        let lResul
7bd0: 74 20 3d 20 74 68 69 73 2e 6f 53 70 65 6c 6c 43  t = this.oSpellC
7be0: 68 65 63 6b 65 72 2e 67 65 74 53 69 6d 69 6c 61  hecker.getSimila
7bf0: 72 45 6e 74 72 69 65 73 28 73 57 6f 72 64 2c 20  rEntries(sWord, 
7c00: 32 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  20);.           
7c10: 20 6f 53 65 61 72 63 68 54 61 62 6c 65 2e 66 69   oSearchTable.fi
7c20: 6c 6c 28 6c 52 65 73 75 6c 74 29 3b 0a 20 20 20  ll(lResult);.   
7c30: 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20       }.    },.. 
7c40: 20 20 20 73 65 61 72 63 68 52 65 67 65 78 3a 20     searchRegex: 
7c50: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
7c60: 20 20 20 20 20 20 6c 65 74 20 73 46 6c 65 78 50        let sFlexP
7c70: 61 74 74 65 72 6e 20 3d 20 64 6f 63 75 6d 65 6e  attern = documen
7c80: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7c90: 28 22 73 65 61 72 63 68 5f 66 6c 65 78 69 6f 6e  ("search_flexion
7ca0: 5f 70 61 74 74 65 72 6e 22 29 2e 76 61 6c 75 65  _pattern").value
7cb0: 2e 74 72 69 6d 28 29 3b 0a 20 20 20 20 20 20 20  .trim();.       
7cc0: 20 6c 65 74 20 73 54 61 67 73 50 61 74 74 65 72   let sTagsPatter
7cd0: 6e 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74  n = document.get
7ce0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 73 65 61  ElementById("sea
7cf0: 72 63 68 5f 74 61 67 73 5f 70 61 74 74 65 72 6e  rch_tags_pattern
7d00: 22 29 2e 76 61 6c 75 65 2e 74 72 69 6d 28 29 3b  ").value.trim();
7d10: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 6c 45 6e  .        let lEn
7d20: 74 72 79 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20  try = [];.      
7d30: 20 20 6c 65 74 20 69 20 3d 20 30 3b 0a 20 20 20    let i = 0;.   
7d40: 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 61 52       for (let aR
7d50: 65 73 20 6f 66 20 74 68 69 73 2e 6f 53 70 65 6c  es of this.oSpel
7d60: 6c 43 68 65 63 6b 65 72 2e 73 65 6c 65 63 74 28  lChecker.select(
7d70: 73 46 6c 65 78 50 61 74 74 65 72 6e 2c 20 73 54  sFlexPattern, sT
7d80: 61 67 73 50 61 74 74 65 72 6e 29 29 20 7b 0a 20  agsPattern)) {. 
7d90: 20 20 20 20 20 20 20 20 20 20 20 6c 45 6e 74 72             lEntr
7da0: 79 2e 70 75 73 68 28 61 52 65 73 29 3b 0a 20 20  y.push(aRes);.  
7db0: 20 20 20 20 20 20 20 20 20 20 69 2b 2b 3b 0a 20            i++;. 
7dc0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
7dd0: 20 3e 3d 20 32 30 30 30 29 20 7b 0a 20 20 20 20   >= 2000) {.    
7de0: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
7df0: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  k;.            }
7e00: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
7e10: 20 20 20 6f 53 65 61 72 63 68 54 61 62 6c 65 2e     oSearchTable.
7e20: 66 69 6c 6c 28 6c 45 6e 74 72 79 29 3b 0a 20 20  fill(lEntry);.  
7e30: 20 20 7d 0a 7d 0a 0a 0a 63 6f 6e 73 74 20 6f 54    }.}...const oT
7e40: 61 67 73 49 6e 66 6f 20 3d 20 7b 0a 20 20 20 20  agsInfo = {.    
7e50: 6c 6f 61 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28  load: function (
7e60: 29 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  ) {.        let 
7e70: 6c 45 6e 74 72 79 20 3d 20 5b 5d 3b 0a 20 20 20  lEntry = [];.   
7e80: 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 5b 73       for (let [s
7e90: 54 61 67 2c 20 5b 5f 2c 20 73 4c 61 62 65 6c 5d  Tag, [_, sLabel]
7ea0: 5d 20 6f 66 20 6c 65 78 67 72 61 70 68 5f 66 72  ] of lexgraph_fr
7eb0: 2e 64 54 61 67 29 20 7b 0a 20 20 20 20 20 20 20  .dTag) {.       
7ec0: 20 20 20 20 20 6c 45 6e 74 72 79 2e 70 75 73 68       lEntry.push
7ed0: 28 5b 73 54 61 67 2c 20 73 4c 61 62 65 6c 2e 74  ([sTag, sLabel.t
7ee0: 72 69 6d 28 29 5d 29 3b 0a 20 20 20 20 20 20 20  rim()]);.       
7ef0: 20 7d 0a 20 20 20 20 20 20 20 20 6f 54 61 67 73   }.        oTags
7f00: 54 61 62 6c 65 2e 66 69 6c 6c 28 6c 45 6e 74 72  Table.fill(lEntr
7f10: 79 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6f  y);.    }.}...co
7f20: 6e 73 74 20 6f 47 65 6e 57 6f 72 64 73 54 61 62  nst oGenWordsTab
7f30: 6c 65 20 3d 20 6e 65 77 20 54 61 62 6c 65 28 22  le = new Table("
7f40: 67 65 6e 65 72 61 74 65 64 5f 77 6f 72 64 73 5f  generated_words_
7f50: 74 61 62 6c 65 22 2c 20 5b 22 46 6c 65 78 69 6f  table", ["Flexio
7f60: 6e 73 22 2c 20 22 c3 89 74 69 71 75 65 74 74 65  ns", "..tiquette
7f70: 73 22 5d 2c 20 22 77 61 69 74 5f 70 72 6f 67 72  s"], "wait_progr
7f80: 65 73 73 22 29 3b 0a 63 6f 6e 73 74 20 6f 4c 65  ess");.const oLe
7f90: 78 69 63 6f 6e 54 61 62 6c 65 20 3d 20 6e 65 77  xiconTable = new
7fa0: 20 54 61 62 6c 65 28 22 6c 65 78 69 63 6f 6e 5f   Table("lexicon_
7fb0: 74 61 62 6c 65 22 2c 20 5b 22 46 6c 65 78 69 6f  table", ["Flexio
7fc0: 6e 73 22 2c 20 22 4c 65 6d 6d 65 73 22 2c 20 22  ns", "Lemmes", "
7fd0: c3 89 74 69 71 75 65 74 74 65 73 22 5d 2c 20 22  ..tiquettes"], "
7fe0: 77 61 69 74 5f 70 72 6f 67 72 65 73 73 22 2c 20  wait_progress", 
7ff0: 22 6e 75 6d 5f 65 6e 74 72 69 65 73 22 29 3b 0a  "num_entries");.
8000: 63 6f 6e 73 74 20 6f 53 65 61 72 63 68 54 61 62  const oSearchTab
8010: 6c 65 20 3d 20 6e 65 77 20 54 61 62 6c 65 28 22  le = new Table("
8020: 73 65 61 72 63 68 5f 74 61 62 6c 65 22 2c 20 5b  search_table", [
8030: 22 46 6c 65 78 69 6f 6e 73 22 2c 20 22 4c 65 6d  "Flexions", "Lem
8040: 6d 65 73 22 2c 20 22 c3 89 74 69 71 75 65 74 74  mes", "..tiquett
8050: 65 73 22 5d 2c 20 22 77 61 69 74 5f 70 72 6f 67  es"], "wait_prog
8060: 72 65 73 73 22 2c 20 22 22 2c 20 66 61 6c 73 65  ress", "", false
8070: 29 3b 0a 63 6f 6e 73 74 20 6f 54 61 67 73 54 61  );.const oTagsTa
8080: 62 6c 65 20 3d 20 6e 65 77 20 54 61 62 6c 65 28  ble = new Table(
8090: 22 74 61 67 73 5f 74 61 62 6c 65 22 2c 20 5b 22  "tags_table", ["
80a0: c3 89 74 69 71 75 65 74 74 65 22 2c 20 22 53 69  ..tiquette", "Si
80b0: 67 6e 69 66 69 63 61 74 69 6f 6e 22 5d 2c 20 22  gnification"], "
80c0: 77 61 69 74 5f 70 72 6f 67 72 65 73 73 22 2c 20  wait_progress", 
80d0: 22 22 2c 20 66 61 6c 73 65 29 3b 0a 0a 0a 6f 54  "", false);...oT
80e0: 61 67 73 49 6e 66 6f 2e 6c 6f 61 64 28 29 3b 0a  agsInfo.load();.
80f0: 6f 53 65 61 72 63 68 2e 6c 6f 61 64 28 29 3b 0a  oSearch.load();.
8100: 6f 44 69 63 74 48 61 6e 64 6c 65 72 2e 6c 6f 61  oDictHandler.loa
8110: 64 44 69 63 74 69 6f 6e 61 72 69 65 73 28 29 3b  dDictionaries();
8120: 0a 6f 42 69 6e 61 72 79 44 69 63 74 2e 6c 69 73  .oBinaryDict.lis
8130: 74 65 6e 28 29 3b 0a 6f 47 65 6e 65 72 61 74 6f  ten();.oGenerato
8140: 72 2e 6c 69 73 74 65 6e 28 29 3b 0a 6f 54 61 62  r.listen();.oTab
8150: 75 6c 61 74 69 6f 6e 73 2e 6c 69 73 74 65 6e 28  ulations.listen(
8160: 29 3b 0a 6f 53 65 61 72 63 68 2e 6c 69 73 74 65  );.oSearch.liste
8170: 6e 28 29 3b 0a 0a 0a 2f 2a 0a 20 20 20 20 4d 65  n();.../*.    Me
8180: 73 73 61 67 65 73 20 72 65 63 65 69 76 65 64 0a  ssages received.
8190: 2a 2f 0a 66 75 6e 63 74 69 6f 6e 20 68 61 6e 64  */.function hand
81a0: 6c 65 4d 65 73 73 61 67 65 20 28 6f 4d 65 73 73  leMessage (oMess
81b0: 61 67 65 2c 20 78 53 65 6e 64 65 72 2c 20 73 65  age, xSender, se
81c0: 6e 64 52 65 73 70 6f 6e 73 65 29 20 7b 0a 20 20  ndResponse) {.  
81d0: 20 20 6c 65 74 20 7b 73 41 63 74 69 6f 6e 52 65    let {sActionRe
81e0: 71 75 65 73 74 2c 20 6f 50 61 72 61 6d 7d 20 3d  quest, oParam} =
81f0: 20 6f 4d 65 73 73 61 67 65 3b 0a 20 20 20 20 73   oMessage;.    s
8200: 77 69 74 63 68 28 73 41 63 74 69 6f 6e 52 65 71  witch(sActionReq
8210: 75 65 73 74 29 20 7b 0a 20 20 20 20 20 20 20 20  uest) {.        
8220: 63 61 73 65 20 22 6e 65 77 5f 65 6e 74 72 79 22  case "new_entry"
8230: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 47  :.            oG
8240: 65 6e 65 72 61 74 6f 72 2e 6e 65 77 45 6e 74 72  enerator.newEntr
8250: 79 28 6f 50 61 72 61 6d 2e 73 57 6f 72 64 29 3b  y(oParam.sWord);
8260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65  .            bre
8270: 61 6b 3b 0a 20 20 20 20 20 20 20 20 64 65 66 61  ak;.        defa
8280: 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ult:.           
8290: 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 22 5b 47   console.log("[G
82a0: 72 61 6d 6d 61 6c 65 63 74 65 5d 20 4c 65 78 69  rammalecte] Lexi
82b0: 63 6f 6e 20 65 64 69 74 6f 72 2e 20 55 6e 6b 6e  con editor. Unkn
82c0: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 3a 20 22 20 2b  own command: " +
82d0: 20 73 41 63 74 69 6f 6e 52 65 71 75 65 73 74 29   sActionRequest)
82e0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2f 73 65  ;.    }.    //se
82f0: 6e 64 52 65 73 70 6f 6e 73 65 28 7b 73 43 6f 6d  ndResponse({sCom
8300: 6d 61 6e 64 3a 20 22 6e 6f 6e 65 22 2c 20 72 65  mand: "none", re
8310: 73 75 6c 74 3a 20 22 64 6f 6e 65 22 7d 29 3b 0a  sult: "done"});.
8320: 7d 0a 0a 62 72 6f 77 73 65 72 2e 72 75 6e 74 69  }..browser.runti
8330: 6d 65 2e 6f 6e 4d 65 73 73 61 67 65 2e 61 64 64  me.onMessage.add
8340: 4c 69 73 74 65 6e 65 72 28 68 61 6e 64 6c 65 4d  Listener(handleM
8350: 65 73 73 61 67 65 29 3b 0a                       essage);.