Grammalecte  Hex Artifact Content

Artifact 74d15da72c0b11feb31f51f5fc09cbdf27763d39ed230a4946adcf75d9effb16:


0000: 2f 2f 20 4a 61 76 61 53 63 72 69 70 74 0a 0a 2f  // JavaScript../
0010: 2a 20 6a 73 68 69 6e 74 20 65 73 76 65 72 73 69  * jshint esversi
0020: 6f 6e 3a 36 2c 20 2d 57 30 39 37 20 2a 2f 0a 2f  on:6, -W097 */./
0030: 2a 20 6a 73 6c 69 6e 74 20 65 73 76 65 72 73 69  * jslint esversi
0040: 6f 6e 3a 36 20 2a 2f 0a 2f 2a 20 67 6c 6f 62 61  on:6 */./* globa
0050: 6c 20 47 72 61 6d 6d 61 6c 65 63 74 65 50 61 6e  l GrammalectePan
0060: 65 6c 2c 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  el, oGrammalecte
0070: 2c 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f  , xGrammalectePo
0080: 72 74 2c 20 73 68 6f 77 45 72 72 6f 72 2c 20 77  rt, showError, w
0090: 69 6e 64 6f 77 2c 20 64 6f 63 75 6d 65 6e 74 2c  indow, document,
00a0: 20 63 6f 6e 73 6f 6c 65 20 2a 2f 0a 0a 22 75 73   console */.."us
00b0: 65 20 73 74 72 69 63 74 22 3b 0a 0a 66 75 6e 63  e strict";..func
00c0: 74 69 6f 6e 20 6f 6e 47 72 61 6d 6d 61 6c 65 63  tion onGrammalec
00d0: 74 65 47 43 50 61 6e 65 6c 43 6c 69 63 6b 20 28  teGCPanelClick (
00e0: 78 45 76 65 6e 74 29 20 7b 0a 20 20 20 20 74 72  xEvent) {.    tr
00f0: 79 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  y {.        let 
0100: 78 45 6c 65 6d 20 3d 20 78 45 76 65 6e 74 2e 74  xElem = xEvent.t
0110: 61 72 67 65 74 3b 0a 20 20 20 20 20 20 20 20 69  arget;.        i
0120: 66 20 28 78 45 6c 65 6d 2e 69 64 29 20 7b 0a 20  f (xElem.id) {. 
0130: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 78             if (x
0140: 45 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73 57 69  Elem.id.startsWi
0150: 74 68 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  th("grammalecte_
0160: 73 75 67 67 22 29 29 20 7b 0a 20 20 20 20 20 20  sugg")) {.      
0170: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
0180: 61 6c 65 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e  alecte.oGCPanel.
0190: 61 70 70 6c 79 53 75 67 67 65 73 74 69 6f 6e 28  applySuggestion(
01a0: 78 45 6c 65 6d 2e 69 64 29 3b 0a 20 20 20 20 20  xElem.id);.     
01b0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
01c0: 20 28 78 45 6c 65 6d 2e 69 64 20 3d 3d 3d 20 22   (xElem.id === "
01d0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
01e0: 74 69 70 5f 69 67 6e 6f 72 65 22 29 20 7b 0a 20  tip_ignore") {. 
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
0200: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50  Grammalecte.oGCP
0210: 61 6e 65 6c 2e 69 67 6e 6f 72 65 45 72 72 6f 72  anel.ignoreError
0220: 28 78 45 6c 65 6d 2e 69 64 29 3b 0a 20 20 20 20  (xElem.id);.    
0230: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
0240: 66 20 28 78 45 6c 65 6d 2e 69 64 2e 73 74 61 72  f (xElem.id.star
0250: 74 73 57 69 74 68 28 22 67 72 61 6d 6d 61 6c 65  tsWith("grammale
0260: 63 74 65 5f 63 68 65 63 6b 22 29 29 20 7b 0a 20  cte_check")) {. 
0270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
0280: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50  Grammalecte.oGCP
0290: 61 6e 65 6c 2e 72 65 63 68 65 63 6b 50 61 72 61  anel.recheckPara
02a0: 67 72 61 70 68 28 70 61 72 73 65 49 6e 74 28 78  graph(parseInt(x
02b0: 45 6c 65 6d 2e 64 61 74 61 73 65 74 2e 70 61 72  Elem.dataset.par
02c0: 61 5f 6e 75 6d 2c 20 31 30 29 29 3b 0a 20 20 20  a_num, 10));.   
02d0: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
02e0: 69 66 20 28 78 45 6c 65 6d 2e 69 64 2e 73 74 61  if (xElem.id.sta
02f0: 72 74 73 57 69 74 68 28 22 67 72 61 6d 6d 61 6c  rtsWith("grammal
0300: 65 63 74 65 5f 68 69 64 65 22 29 29 20 7b 0a 20  ecte_hide")) {. 
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
0320: 45 6c 65 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 2e  Elem.parentNode.
0330: 70 61 72 65 6e 74 4e 6f 64 65 2e 73 74 79 6c 65  parentNode.style
0340: 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65  .display = "none
0350: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ";.            }
0360: 20 65 6c 73 65 20 69 66 20 28 78 45 6c 65 6d 2e   else if (xElem.
0370: 69 64 2e 73 74 61 72 74 73 57 69 74 68 28 22 67  id.startsWith("g
0380: 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72 22 29  rammalecte_err")
0390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
03a0: 20 20 20 20 20 20 20 20 26 26 20 78 45 6c 65 6d          && xElem
03b0: 2e 63 6c 61 73 73 4e 61 6d 65 20 21 3d 3d 20 22  .className !== "
03c0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72 6f  grammalecte_erro
03d0: 72 5f 63 6f 72 72 65 63 74 65 64 22 0a 20 20 20  r_corrected".   
03e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03f0: 20 20 20 20 26 26 20 78 45 6c 65 6d 2e 63 6c 61      && xElem.cla
0400: 73 73 4e 61 6d 65 20 21 3d 3d 20 22 67 72 61 6d  ssName !== "gram
0410: 6d 61 6c 65 63 74 65 5f 65 72 72 6f 72 5f 69 67  malecte_error_ig
0420: 6e 6f 72 65 64 22 29 20 7b 0a 20 20 20 20 20 20  nored") {.      
0430: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
0440: 61 6c 65 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e  alecte.oGCPanel.
0450: 6f 54 6f 6f 6c 74 69 70 2e 73 68 6f 77 28 78 45  oTooltip.show(xE
0460: 6c 65 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 2c 20  lem.parentNode, 
0470: 78 45 6c 65 6d 2e 69 64 29 3b 0a 20 20 20 20 20  xElem.id);.     
0480: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
0490: 20 28 78 45 6c 65 6d 2e 69 64 20 3d 3d 3d 20 22   (xElem.id === "
04a0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
04b0: 74 69 70 5f 75 72 6c 22 20 20 7c 7c 20 78 45 6c  tip_url"  || xEl
04c0: 65 6d 2e 69 64 20 3d 3d 3d 20 22 67 72 61 6d 6d  em.id === "gramm
04d0: 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 64  alecte_tooltip_d
04e0: 62 5f 73 65 61 72 63 68 22 29 20 7b 0a 20 20 20  b_search") {.   
04f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 47 72               oGr
0500: 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61 6e  ammalecte.oGCPan
0510: 65 6c 2e 6f 70 65 6e 55 52 4c 28 78 45 6c 65 6d  el.openURL(xElem
0520: 2e 64 61 74 61 73 65 74 2e 75 72 6c 29 3b 0a 20  .dataset.url);. 
0530: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
0540: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
0550: 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65      oGrammalecte
0560: 2e 6f 47 43 50 61 6e 65 6c 2e 6f 54 6f 6f 6c 74  .oGCPanel.oToolt
0570: 69 70 2e 68 69 64 65 28 29 3b 0a 20 20 20 20 20  ip.hide();.     
0580: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
0590: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
05a0: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
05b0: 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 6f 54 6f 6f  te.oGCPanel.oToo
05c0: 6c 74 69 70 2e 68 69 64 65 28 29 3b 0a 20 20 20  ltip.hide();.   
05d0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20       }.    }.   
05e0: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
05f0: 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65       showError(e
0600: 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6c 61  );.    }.}...cla
0610: 73 73 20 47 72 61 6d 6d 61 6c 65 63 74 65 47 72  ss GrammalecteGr
0620: 61 6d 6d 61 72 43 68 65 63 6b 65 72 20 65 78 74  ammarChecker ext
0630: 65 6e 64 73 20 47 72 61 6d 6d 61 6c 65 63 74 65  ends Grammalecte
0640: 50 61 6e 65 6c 20 7b 0a 20 20 20 20 2f 2a 0a 20  Panel {.    /*. 
0650: 20 20 20 20 20 20 20 4b 45 59 53 20 66 6f 72 20         KEYS for 
0660: 69 64 65 6e 74 69 66 69 65 72 73 3a 0a 20 20 20  identifiers:.   
0670: 20 20 20 20 20 20 20 20 20 67 72 61 6d 6d 61 6c           grammal
0680: 65 63 74 65 5f 70 61 72 61 67 72 61 70 68 7b 49  ecte_paragraph{I
0690: 64 7d 20 3a 20 5b 70 61 72 61 67 72 61 70 68 20  d} : [paragraph 
06a0: 6e 75 6d 62 65 72 5d 0a 20 20 20 20 20 20 20 20  number].        
06b0: 20 20 20 20 67 72 61 6d 6d 61 6c 65 63 74 65 5f      grammalecte_
06c0: 63 68 65 63 6b 7b 49 64 7d 20 20 20 20 20 3a 20  check{Id}     : 
06d0: 5b 70 61 72 61 67 72 61 70 68 20 6e 75 6d 62 65  [paragraph numbe
06e0: 72 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  r].            g
06f0: 72 61 6d 6d 61 6c 65 63 74 65 5f 68 69 64 65 7b  rammalecte_hide{
0700: 49 64 7d 20 20 20 20 20 20 3a 20 5b 70 61 72 61  Id}      : [para
0710: 67 72 61 70 68 20 6e 75 6d 62 65 72 5d 0a 20 20  graph number].  
0720: 20 20 20 20 20 20 20 20 20 20 67 72 61 6d 6d 61            gramma
0730: 6c 65 63 74 65 5f 65 72 72 6f 72 7b 49 64 7d 20  lecte_error{Id} 
0740: 20 20 20 20 3a 20 5b 70 61 72 61 67 72 61 70 68      : [paragraph
0750: 20 6e 75 6d 62 65 72 5d 2d 5b 65 72 72 6f 72 5f   number]-[error_
0760: 6e 75 6d 62 65 72 5d 0a 20 20 20 20 20 20 20 20  number].        
0770: 20 20 20 20 67 72 61 6d 6d 61 6c 65 63 74 65 5f      grammalecte_
0780: 73 75 67 67 7b 49 64 7d 20 20 20 20 20 20 3a 20  sugg{Id}      : 
0790: 5b 70 61 72 61 67 72 61 70 68 20 6e 75 6d 62 65  [paragraph numbe
07a0: 72 5d 2d 5b 65 72 72 6f 72 5f 6e 75 6d 62 65 72  r]-[error_number
07b0: 5d 2d 2d 5b 73 75 67 67 65 73 74 69 6f 6e 5f 6e  ]--[suggestion_n
07c0: 75 6d 62 65 72 5d 0a 20 20 20 20 2a 2f 0a 0a 20  umber].    */.. 
07d0: 20 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 28     constructor (
07e0: 2e 2e 2e 61 72 67 73 29 20 7b 0a 20 20 20 20 20  ...args) {.     
07f0: 20 20 20 73 75 70 65 72 28 2e 2e 2e 61 72 67 73     super(...args
0800: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
0810: 61 49 67 6e 6f 72 65 64 45 72 72 6f 72 73 20 3d  aIgnoredErrors =
0820: 20 6e 65 77 20 53 65 74 28 29 3b 0a 20 20 20 20   new Set();.    
0830: 20 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 4d      this.createM
0840: 65 6e 75 28 29 0a 20 20 20 20 20 20 20 20 74 68  enu().        th
0850: 69 73 2e 78 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  is.xPanelContent
0860: 2e 73 74 79 6c 65 2e 6d 61 72 67 69 6e 42 6f 74  .style.marginBot
0870: 74 6f 6d 20 3d 20 22 36 70 78 22 3b 0a 20 20 20  tom = "6px";.   
0880: 20 20 20 20 20 2f 2f 20 45 64 69 74 6f 72 0a 20       // Editor. 
0890: 20 20 20 20 20 20 20 74 68 69 73 2e 78 47 43 50         this.xGCP
08a0: 61 6e 65 6c 43 6f 6e 74 65 6e 74 20 3d 20 6f 47  anelContent = oG
08b0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
08c0: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64  eNode("div", {id
08d0: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 67  : "grammalecte_g
08e0: 63 5f 70 61 6e 65 6c 5f 63 6f 6e 74 65 6e 74 22  c_panel_content"
08f0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  });.        this
0900: 2e 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 20  .xParagraphList 
0910: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
0920: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
0930: 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63   {id: "grammalec
0940: 74 65 5f 70 61 72 61 67 72 61 70 68 5f 6c 69 73  te_paragraph_lis
0950: 74 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68  t"});.        th
0960: 69 73 2e 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65  is.xGCPanelConte
0970: 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  nt.appendChild(t
0980: 68 69 73 2e 78 50 61 72 61 67 72 61 70 68 4c 69  his.xParagraphLi
0990: 73 74 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  st);.        thi
09a0: 73 2e 78 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e  s.xPanelContent.
09b0: 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72  addEventListener
09c0: 28 22 63 6c 69 63 6b 22 2c 20 6f 6e 47 72 61 6d  ("click", onGram
09d0: 6d 61 6c 65 63 74 65 47 43 50 61 6e 65 6c 43 6c  malecteGCPanelCl
09e0: 69 63 6b 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20  ick, false);.   
09f0: 20 20 20 20 20 74 68 69 73 2e 6f 54 6f 6f 6c 74       this.oToolt
0a00: 69 70 20 3d 20 6e 65 77 20 47 72 61 6d 6d 61 6c  ip = new Grammal
0a10: 65 63 74 65 54 6f 6f 6c 74 69 70 28 74 68 69 73  ecteTooltip(this
0a20: 2e 78 50 61 72 65 6e 74 2c 20 74 68 69 73 2e 78  .xParent, this.x
0a30: 47 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 29 3b  GCPanelContent);
0a40: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50  .        this.xP
0a50: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65  anelContent.appe
0a60: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78 47 43  ndChild(this.xGC
0a70: 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 29 3b 0a 20  PanelContent);. 
0a80: 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e 6f 64         this.xNod
0a90: 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20  e = null;.      
0aa0: 20 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e 74    this.oTextCont
0ab0: 72 6f 6c 20 3d 20 6e 65 77 20 47 72 61 6d 6d 61  rol = new Gramma
0ac0: 6c 65 63 74 65 54 65 78 74 43 6f 6e 74 72 6f 6c  lecteTextControl
0ad0: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
0ae0: 2e 62 41 75 74 6f 52 65 66 72 65 73 68 20 3d 20  .bAutoRefresh = 
0af0: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 74  false;.        t
0b00: 68 69 73 2e 6e 4c 61 73 74 52 65 73 75 6c 74 20  his.nLastResult 
0b10: 3d 20 30 0a 20 20 20 20 20 20 20 20 2f 2f 20 4c  = 0.        // L
0b20: 65 78 69 63 6f 67 72 61 70 68 65 72 0a 20 20 20  exicographer.   
0b30: 20 20 20 20 20 74 68 69 73 2e 6e 4c 78 67 43 6f       this.nLxgCo
0b40: 75 6e 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 20  unt = 0;.       
0b50: 20 74 68 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43   this.xLxgPanelC
0b60: 6f 6e 74 65 6e 74 20 3d 20 6f 47 72 61 6d 6d 61  ontent = oGramma
0b70: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
0b80: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
0b90: 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 70 61  ammalecte_lxg_pa
0ba0: 6e 65 6c 5f 63 6f 6e 74 65 6e 74 22 7d 29 3b 0a  nel_content"});.
0bb0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
0bc0: 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65 6e  nelContent.appen
0bd0: 64 43 68 69 6c 64 28 74 68 69 73 2e 78 4c 78 67  dChild(this.xLxg
0be0: 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 29 3b 0a 20  PanelContent);. 
0bf0: 20 20 20 20 20 20 20 2f 2f 20 43 6f 6e 6a 75 67         // Conjug
0c00: 75 65 75 72 0a 20 20 20 20 20 20 20 20 74 68 69  ueur.        thi
0c10: 73 2e 78 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74  s.xConjPanelCont
0c20: 65 6e 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  ent = oGrammalec
0c30: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
0c40: 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d  iv", {id: "gramm
0c50: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 61 6e 65  alecte_conj_pane
0c60: 6c 5f 63 6f 6e 74 65 6e 74 22 7d 29 3b 0a 20 20  l_content"});.  
0c70: 20 20 20 20 20 20 74 68 69 73 2e 78 43 6f 6e 6a        this.xConj
0c80: 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 69 6e 6e  PanelContent.inn
0c90: 65 72 48 54 4d 4c 20 3d 20 73 47 72 61 6d 6d 61  erHTML = sGramma
0ca0: 6c 65 63 74 65 43 6f 6e 6a 75 67 75 65 75 72 48  lecteConjugueurH
0cb0: 54 4d 4c 3b 20 20 2f 2f 20 40 52 65 76 69 65 77  TML;  // @Review
0cc0: 65 72 73 3a 20 73 47 72 61 6d 6d 61 6c 65 63 74  ers: sGrammalect
0cd0: 65 43 6f 6e 6a 75 67 75 65 75 72 48 54 4d 4c 20  eConjugueurHTML 
0ce0: 69 73 20 61 20 63 6f 6e 73 74 20 76 61 6c 75 65  is a const value
0cf0: 20 64 65 66 69 6e 65 64 20 69 6e 20 3c 63 6f 6e   defined in <con
0d00: 74 65 6e 74 5f 73 63 72 69 70 74 73 2f 68 74 6d  tent_scripts/htm
0d10: 6c 5f 73 72 63 2e 6a 73 3e 0a 20 20 20 20 20 20  l_src.js>.      
0d20: 20 20 74 68 69 73 2e 78 50 61 6e 65 6c 43 6f 6e    this.xPanelCon
0d30: 74 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  tent.appendChild
0d40: 28 74 68 69 73 2e 78 43 6f 6e 6a 50 61 6e 65 6c  (this.xConjPanel
0d50: 43 6f 6e 74 65 6e 74 29 3b 0a 20 20 20 20 20 20  Content);.      
0d60: 20 20 74 68 69 73 2e 73 56 65 72 62 20 3d 20 22    this.sVerb = "
0d70: 22 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ";.        this.
0d80: 62 4c 69 73 74 65 6e 43 6f 6e 6a 20 3d 20 66 61  bListenConj = fa
0d90: 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  lse;.    }..    
0da0: 63 72 65 61 74 65 4d 65 6e 75 20 28 29 20 7b 0a  createMenu () {.
0db0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4d 65          this.xMe
0dc0: 6e 75 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  nu = oGrammalect
0dd0: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
0de0: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
0df0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 6e  "grammalecte_pan
0e00: 65 6c 5f 6d 65 6e 75 22 7d 29 3b 0a 20 20 20 20  el_menu"});.    
0e10: 20 20 20 20 74 68 69 73 2e 78 54 46 42 75 74 74      this.xTFButt
0e20: 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  on = oGrammalect
0e30: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
0e40: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
0e50: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e  "grammalecte_men
0e60: 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78 74 43  u_button", textC
0e70: 6f 6e 74 65 6e 74 3a 20 22 46 6f 72 6d 61 74 65  ontent: "Formate
0e80: 75 72 20 64 65 20 74 65 78 74 65 22 7d 29 3b 0a  ur de texte"});.
0e90: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 45 64          this.xEd
0ea0: 69 74 6f 72 42 75 74 74 6f 6e 20 3d 20 6f 47 72  itorButton = oGr
0eb0: 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65  ammalecte.create
0ec0: 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61  Node("div", {cla
0ed0: 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c  ssName: "grammal
0ee0: 65 63 74 65 5f 6d 65 6e 75 5f 62 75 74 74 6f 6e  ecte_menu_button
0ef0: 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20  ", textContent: 
0f00: 22 c3 89 64 69 74 65 75 72 22 7d 29 3b 0a 20 20  "..diteur"});.  
0f10: 20 20 20 20 20 20 74 68 69 73 2e 78 4c 78 67 42        this.xLxgB
0f20: 75 74 74 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c  utton = oGrammal
0f30: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
0f40: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
0f50: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
0f60: 6d 65 6e 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65  menu_button", te
0f70: 78 74 43 6f 6e 74 65 6e 74 3a 20 22 4c 65 78 69  xtContent: "Lexi
0f80: 63 6f 67 72 61 70 68 65 22 7d 29 3b 0a 20 20 20  cographe"});.   
0f90: 20 20 20 20 20 74 68 69 73 2e 78 43 6f 6e 6a 42       this.xConjB
0fa0: 75 74 74 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c  utton = oGrammal
0fb0: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
0fc0: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
0fd0: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
0fe0: 6d 65 6e 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65  menu_button", te
0ff0: 78 74 43 6f 6e 74 65 6e 74 3a 20 22 43 6f 6e 6a  xtContent: "Conj
1000: 75 67 75 65 75 72 22 7d 29 3b 0a 20 20 20 20 20  ugueur"});.     
1010: 20 20 20 74 68 69 73 2e 78 4c 45 42 75 74 74 6f     this.xLEButto
1020: 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  n = oGrammalecte
1030: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
1040: 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22  ", {className: "
1050: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75  grammalecte_menu
1060: 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78 74 43 6f  _button", textCo
1070: 6e 74 65 6e 74 3a 20 22 e2 80 a2 c3 89 64 69 74  ntent: ".....dit
1080: 65 75 72 20 6c 65 78 69 63 61 6c e2 80 a2 22 7d  eur lexical..."}
1090: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
10a0: 78 41 75 74 6f 52 65 66 72 65 73 68 20 3d 20 6f  xAutoRefresh = o
10b0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
10c0: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
10d0: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
10e0: 61 6c 65 63 74 65 5f 61 75 74 6f 72 65 66 72 65  alecte_autorefre
10f0: 73 68 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78 74  sh_button", text
1100: 43 6f 6e 74 65 6e 74 3a 20 22 41 52 22 2c 20 74  Content: "AR", t
1110: 69 74 6c 65 3a 20 22 41 75 74 6f 2d 72 61 66 72  itle: "Auto-rafr
1120: 61 c3 ae 63 68 69 73 73 65 6d 65 6e 74 20 64 65  a..chissement de
1130: 20 6c 61 20 63 6f 72 72 65 63 74 69 6f 6e 20 67   la correction g
1140: 72 61 6d 6d 61 74 69 63 61 6c 65 20 28 33 20 73  rammaticale (3 s
1150: 20 61 70 72 c3 a8 73 20 6c 61 20 64 65 72 6e 69   apr..s la derni
1160: c3 a8 72 65 20 66 72 61 70 70 65 29 22 7d 29 0a  ..re frappe)"}).
1170: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 45 64          this.xEd
1180: 69 74 6f 72 42 75 74 74 6f 6e 2e 61 70 70 65 6e  itorButton.appen
1190: 64 43 68 69 6c 64 28 74 68 69 73 2e 78 41 75 74  dChild(this.xAut
11a0: 6f 52 65 66 72 65 73 68 29 3b 0a 20 20 20 20 20  oRefresh);.     
11b0: 20 20 20 74 68 69 73 2e 78 54 46 42 75 74 74 6f     this.xTFButto
11c0: 6e 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d  n.onclick = () =
11d0: 3e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  > {.            
11e0: 69 66 20 28 21 74 68 69 73 2e 62 57 6f 72 6b 69  if (!this.bWorki
11f0: 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ng) {.          
1200: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
1210: 74 65 2e 63 72 65 61 74 65 54 46 50 61 6e 65 6c  te.createTFPanel
1220: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
1230: 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65      oGrammalecte
1240: 2e 6f 54 46 50 61 6e 65 6c 2e 73 74 61 72 74 28  .oTFPanel.start(
1250: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
1260: 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e     oGrammalecte.
1270: 6f 54 46 50 61 6e 65 6c 2e 73 68 6f 77 28 29 3b  oTFPanel.show();
1280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
1290: 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20         };.      
12a0: 20 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42 75    this.xEditorBu
12b0: 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28  tton.onclick = (
12c0: 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20  ) => {.         
12d0: 20 20 20 69 66 20 28 21 74 68 69 73 2e 62 57 6f     if (!this.bWo
12e0: 72 6b 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20  rking) {.       
12f0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 68           this.sh
1300: 6f 77 45 64 69 74 6f 72 28 29 3b 0a 20 20 20 20  owEditor();.    
1310: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
1320: 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 74 68 69    };.        thi
1330: 73 2e 78 41 75 74 6f 52 65 66 72 65 73 68 2e 6f  s.xAutoRefresh.o
1340: 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d 3e 20 7b  nclick = () => {
1350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1360: 73 2e 62 41 75 74 6f 52 65 66 72 65 73 68 20 3d  s.bAutoRefresh =
1370: 20 21 74 68 69 73 2e 62 41 75 74 6f 52 65 66 72   !this.bAutoRefr
1380: 65 73 68 3b 0a 20 20 20 20 20 20 20 20 20 20 20  esh;.           
1390: 20 74 68 69 73 2e 78 41 75 74 6f 52 65 66 72 65   this.xAutoRefre
13a0: 73 68 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f  sh.style.backgro
13b0: 75 6e 64 43 6f 6c 6f 72 20 3d 20 28 74 68 69 73  undColor = (this
13c0: 2e 62 41 75 74 6f 52 65 66 72 65 73 68 29 20 3f  .bAutoRefresh) ?
13d0: 20 22 68 73 6c 28 31 35 30 2c 20 35 30 25 2c 20   "hsl(150, 50%, 
13e0: 35 30 25 29 22 20 3a 20 22 22 3b 0a 20 20 20 20  50%)" : "";.    
13f0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 41 75          this.xAu
1400: 74 6f 52 65 66 72 65 73 68 2e 73 74 79 6c 65 2e  toRefresh.style.
1410: 63 6f 6c 6f 72 20 3d 20 28 74 68 69 73 2e 62 41  color = (this.bA
1420: 75 74 6f 52 65 66 72 65 73 68 29 20 3f 20 22 68  utoRefresh) ? "h
1430: 73 6c 28 31 35 30 2c 20 35 30 25 2c 20 39 36 25  sl(150, 50%, 96%
1440: 29 22 20 3a 20 22 22 3b 0a 20 20 20 20 20 20 20  )" : "";.       
1450: 20 20 20 20 20 74 68 69 73 2e 78 41 75 74 6f 52       this.xAutoR
1460: 65 66 72 65 73 68 2e 73 74 79 6c 65 2e 6f 70 61  efresh.style.opa
1470: 63 69 74 79 20 3d 20 28 74 68 69 73 2e 62 41 75  city = (this.bAu
1480: 74 6f 52 65 66 72 65 73 68 29 20 3f 20 22 31 22  toRefresh) ? "1"
1490: 20 3a 20 22 22 3b 0a 20 20 20 20 20 20 20 20 7d   : "";.        }
14a0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4c  .        this.xL
14b0: 78 67 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b  xgButton.onclick
14c0: 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20 20   = () => {.     
14d0: 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73         if (!this
14e0: 2e 62 57 6f 72 6b 69 6e 67 29 20 7b 0a 20 20 20  .bWorking) {.   
14f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1500: 73 2e 73 68 6f 77 4c 65 78 69 63 6f 67 72 61 70  s.showLexicograp
1510: 68 65 72 28 29 3b 0a 20 20 20 20 20 20 20 20 20  her();.         
1520: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c 65 61         this.clea
1530: 72 4c 65 78 69 63 6f 67 72 61 70 68 65 72 28 29  rLexicographer()
1540: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
1550: 20 20 74 68 69 73 2e 73 74 61 72 74 57 61 69 74    this.startWait
1560: 49 63 6f 6e 28 29 3b 0a 20 20 20 20 20 20 20 20  Icon();.        
1570: 20 20 20 20 20 20 20 20 78 47 72 61 6d 6d 61 6c          xGrammal
1580: 65 63 74 65 50 6f 72 74 2e 70 6f 73 74 4d 65 73  ectePort.postMes
1590: 73 61 67 65 28 7b 0a 20 20 20 20 20 20 20 20 20  sage({.         
15a0: 20 20 20 20 20 20 20 20 20 20 20 73 43 6f 6d 6d             sComm
15b0: 61 6e 64 3a 20 22 67 65 74 4c 69 73 74 4f 66 54  and: "getListOfT
15c0: 6f 6b 65 6e 73 22 2c 0a 20 20 20 20 20 20 20 20  okens",.        
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 64 50 61 72              dPar
15e0: 61 6d 3a 20 7b 73 54 65 78 74 3a 20 74 68 69 73  am: {sText: this
15f0: 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 67 65  .oTextControl.ge
1600: 74 54 65 78 74 28 29 7d 2c 0a 20 20 20 20 20 20  tText()},.      
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 49                dI
1620: 6e 66 6f 3a 20 28 28 74 68 69 73 2e 78 4e 6f 64  nfo: ((this.xNod
1630: 65 29 20 3f 20 7b 73 54 65 78 74 41 72 65 61 49  e) ? {sTextAreaI
1640: 64 3a 20 74 68 69 73 2e 78 4e 6f 64 65 2e 69 64  d: this.xNode.id
1650: 7d 20 3a 20 7b 7d 29 0a 20 20 20 20 20 20 20 20  } : {}).        
1660: 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20          });.    
1670: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 78 47              /*xG
1680: 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70  rammalectePort.p
1690: 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20 20  ostMessage({.   
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 70 61 72 73   sCommand: "pars
16c0: 65 46 75 6c 6c 22 2c 0a 20 20 20 20 20 20 20 20  eFull",.        
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 64 50 61 72              dPar
16e0: 61 6d 3a 20 7b 73 54 65 78 74 3a 20 74 68 69 73  am: {sText: this
16f0: 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 67 65  .oTextControl.ge
1700: 74 54 65 78 74 28 29 2c 20 73 43 6f 75 6e 74 72  tText(), sCountr
1710: 79 3a 20 22 46 52 22 2c 20 62 44 65 62 75 67 3a  y: "FR", bDebug:
1720: 20 66 61 6c 73 65 2c 20 62 43 6f 6e 74 65 78 74   false, bContext
1730: 3a 20 66 61 6c 73 65 7d 2c 0a 20 20 20 20 20 20  : false},.      
1740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 49                dI
1750: 6e 66 6f 3a 20 28 28 74 68 69 73 2e 78 4e 6f 64  nfo: ((this.xNod
1760: 65 29 20 3f 20 7b 73 54 65 78 74 41 72 65 61 49  e) ? {sTextAreaI
1770: 64 3a 20 74 68 69 73 2e 78 4e 6f 64 65 2e 69 64  d: this.xNode.id
1780: 7d 20 3a 20 7b 7d 29 0a 20 20 20 20 20 20 20 20  } : {}).        
1790: 20 20 20 20 20 20 20 20 7d 29 3b 2a 2f 0a 20 20          });*/.  
17a0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
17b0: 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 74      };.        t
17c0: 68 69 73 2e 78 43 6f 6e 6a 42 75 74 74 6f 6e 2e  his.xConjButton.
17d0: 6f 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d 3e 20  onclick = () => 
17e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  {.            if
17f0: 20 28 21 74 68 69 73 2e 62 57 6f 72 6b 69 6e 67   (!this.bWorking
1800: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1810: 20 20 20 20 74 68 69 73 2e 73 68 6f 77 43 6f 6e      this.showCon
1820: 6a 75 67 75 65 75 72 28 29 3b 0a 20 20 20 20 20  jugueur();.     
1830: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1840: 20 7d 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73   };.        this
1850: 2e 78 4c 45 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69  .xLEButton.oncli
1860: 63 6b 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20  ck = () => {.   
1870: 20 20 20 20 20 20 20 20 20 78 47 72 61 6d 6d 61           xGramma
1880: 6c 65 63 74 65 50 6f 72 74 2e 70 6f 73 74 4d 65  lectePort.postMe
1890: 73 73 61 67 65 28 7b 73 43 6f 6d 6d 61 6e 64 3a  ssage({sCommand:
18a0: 20 22 6f 70 65 6e 4c 65 78 69 63 6f 6e 45 64 69   "openLexiconEdi
18b0: 74 6f 72 22 2c 20 64 50 61 72 61 6d 3a 20 6e 75  tor", dParam: nu
18c0: 6c 6c 2c 20 64 49 6e 66 6f 3a 20 6e 75 6c 6c 7d  ll, dInfo: null}
18d0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20  );.        };.  
18e0: 20 20 20 20 20 20 74 68 69 73 2e 78 4d 65 6e 75        this.xMenu
18f0: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69  .appendChild(thi
1900: 73 2e 78 54 46 42 75 74 74 6f 6e 29 0a 20 20 20  s.xTFButton).   
1910: 20 20 20 20 20 74 68 69 73 2e 78 4d 65 6e 75 2e       this.xMenu.
1920: 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73  appendChild(this
1930: 2e 78 45 64 69 74 6f 72 42 75 74 74 6f 6e 29 0a  .xEditorButton).
1940: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4d 65          this.xMe
1950: 6e 75 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  nu.appendChild(t
1960: 68 69 73 2e 78 4c 78 67 42 75 74 74 6f 6e 29 0a  his.xLxgButton).
1970: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4d 65          this.xMe
1980: 6e 75 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  nu.appendChild(t
1990: 68 69 73 2e 78 43 6f 6e 6a 42 75 74 74 6f 6e 29  his.xConjButton)
19a0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4d  .        this.xM
19b0: 65 6e 75 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  enu.appendChild(
19c0: 74 68 69 73 2e 78 4c 45 42 75 74 74 6f 6e 29 0a  this.xLEButton).
19d0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
19e0: 6e 65 6c 42 61 72 2e 61 70 70 65 6e 64 43 68 69  nelBar.appendChi
19f0: 6c 64 28 74 68 69 73 2e 78 4d 65 6e 75 29 3b 0a  ld(this.xMenu);.
1a00: 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 72 74      }..    start
1a10: 20 28 77 68 61 74 29 20 7b 0a 20 20 20 20 20 20   (what) {.      
1a20: 20 20 74 68 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e    this.oTooltip.
1a30: 68 69 64 65 28 29 3b 0a 20 20 20 20 20 20 20 20  hide();.        
1a40: 74 68 69 73 2e 62 57 6f 72 6b 69 6e 67 20 3d 20  this.bWorking = 
1a50: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 74  false;.        t
1a60: 68 69 73 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20  his.clear();.   
1a70: 20 20 20 20 20 74 68 69 73 2e 68 69 64 65 4d 65       this.hideMe
1a80: 73 73 61 67 65 28 29 3b 0a 20 20 20 20 20 20 20  ssage();.       
1a90: 20 74 68 69 73 2e 72 65 73 65 74 54 69 6d 65 72   this.resetTimer
1aa0: 28 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ();.        if (
1ab0: 74 79 70 65 6f 66 28 77 68 61 74 29 20 3d 3d 3d  typeof(what) ===
1ac0: 20 22 73 74 72 69 6e 67 22 29 20 7b 0a 20 20 20   "string") {.   
1ad0: 20 20 20 20 20 20 20 20 20 2f 2f 20 74 65 78 74           // text
1ae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1af0: 73 2e 78 4e 6f 64 65 20 3d 20 6e 75 6c 6c 3b 0a  s.xNode = null;.
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1b10: 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 73 65  .oTextControl.se
1b20: 74 54 65 78 74 28 77 68 61 74 29 3b 0a 20 20 20  tText(what);.   
1b30: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
1b40: 77 68 61 74 2e 6e 6f 64 65 54 79 70 65 20 26 26  what.nodeType &&
1b50: 20 77 68 61 74 2e 6e 6f 64 65 54 79 70 65 20 3d   what.nodeType =
1b60: 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20  == 1) {.        
1b70: 20 20 20 20 2f 2f 20 6e 6f 64 65 0a 20 20 20 20      // node.    
1b80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e 6f          this.xNo
1b90: 64 65 20 3d 20 77 68 61 74 3b 0a 20 20 20 20 20  de = what;.     
1ba0: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 65 78         this.oTex
1bb0: 74 43 6f 6e 74 72 6f 6c 2e 73 65 74 4e 6f 64 65  tControl.setNode
1bc0: 28 74 68 69 73 2e 78 4e 6f 64 65 29 3b 0a 20 20  (this.xNode);.  
1bd0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
1be0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 72             // er
1bf0: 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  ror.            
1c00: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 4d 65  oGrammalecte.oMe
1c10: 73 73 61 67 65 42 6f 78 2e 73 68 6f 77 4d 65 73  ssageBox.showMes
1c20: 73 61 67 65 28 22 5b 42 55 47 5d 20 41 6e 61 6c  sage("[BUG] Anal
1c30: 79 73 65 20 64 e2 80 99 75 6e 20 c3 a9 6c c3 a9  yse d...un ..l..
1c40: 6d 65 6e 74 20 69 6e 63 6f 6e 6e 75 e2 80 a6 22  ment inconnu..."
1c50: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  );.            c
1c60: 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 22 47 72 61 6d  onsole.log("Gram
1c70: 6d 61 6c 65 63 74 65 20 5b 62 75 67 5d 3a 22 2c  malecte [bug]:",
1c80: 20 77 68 61 74 29 3b 0a 20 20 20 20 20 20 20 20   what);.        
1c90: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 63  }.    }..    rec
1ca0: 68 65 63 6b 41 6c 6c 20 28 29 20 7b 0a 20 20 20  heckAll () {.   
1cb0: 20 20 20 20 20 74 68 69 73 2e 6f 54 6f 6f 6c 74       this.oToolt
1cc0: 69 70 2e 68 69 64 65 28 29 3b 0a 20 20 20 20 20  ip.hide();.     
1cd0: 20 20 20 74 68 69 73 2e 73 68 6f 77 45 64 69 74     this.showEdit
1ce0: 6f 72 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68  or();.        th
1cf0: 69 73 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20  is.clear();.    
1d00: 20 20 20 20 74 68 69 73 2e 73 74 61 72 74 57 61      this.startWa
1d10: 69 74 49 63 6f 6e 28 29 3b 0a 20 20 20 20 20 20  itIcon();.      
1d20: 20 20 74 68 69 73 2e 72 65 73 65 74 54 69 6d 65    this.resetTime
1d30: 72 28 29 3b 0a 20 20 20 20 20 20 20 20 78 47 72  r();.        xGr
1d40: 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70 6f  ammalectePort.po
1d50: 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20 20 20  stMessage({.    
1d60: 20 20 20 20 20 20 20 20 73 43 6f 6d 6d 61 6e 64          sCommand
1d70: 3a 20 22 70 61 72 73 65 41 6e 64 53 70 65 6c 6c  : "parseAndSpell
1d80: 63 68 65 63 6b 22 2c 0a 20 20 20 20 20 20 20 20  check",.        
1d90: 20 20 20 20 64 50 61 72 61 6d 3a 20 7b 73 54 65      dParam: {sTe
1da0: 78 74 3a 20 74 68 69 73 2e 6f 54 65 78 74 43 6f  xt: this.oTextCo
1db0: 6e 74 72 6f 6c 2e 67 65 74 54 65 78 74 28 29 2c  ntrol.getText(),
1dc0: 20 73 43 6f 75 6e 74 72 79 3a 20 22 46 52 22 2c   sCountry: "FR",
1dd0: 20 62 44 65 62 75 67 3a 20 66 61 6c 73 65 2c 20   bDebug: false, 
1de0: 62 43 6f 6e 74 65 78 74 3a 20 66 61 6c 73 65 7d  bContext: false}
1df0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 49  ,.            dI
1e00: 6e 66 6f 3a 20 28 28 74 68 69 73 2e 78 4e 6f 64  nfo: ((this.xNod
1e10: 65 29 20 3f 20 7b 73 54 65 78 74 41 72 65 61 49  e) ? {sTextAreaI
1e20: 64 3a 20 74 68 69 73 2e 78 4e 6f 64 65 2e 69 64  d: this.xNode.id
1e30: 7d 20 3a 20 7b 7d 29 0a 20 20 20 20 20 20 20 20  } : {}).        
1e40: 7d 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  });.    }..    s
1e50: 68 6f 77 45 64 69 74 6f 72 20 28 29 20 7b 0a 20  howEditor () {. 
1e60: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
1e70: 63 68 43 6f 6e 74 65 6e 74 4f 6e 28 74 68 69 73  chContentOn(this
1e80: 2e 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  .xGCPanelContent
1e90: 2c 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42 75  , this.xEditorBu
1ea0: 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74  tton);.        t
1eb0: 68 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e  his.switchConten
1ec0: 74 4f 66 66 28 74 68 69 73 2e 78 4c 78 67 50 61  tOff(this.xLxgPa
1ed0: 6e 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73  nelContent, this
1ee0: 2e 78 4c 78 67 42 75 74 74 6f 6e 29 3b 0a 20 20  .xLxgButton);.  
1ef0: 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63        this.switc
1f00: 68 43 6f 6e 74 65 6e 74 4f 66 66 28 74 68 69 73  hContentOff(this
1f10: 2e 78 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65  .xConjPanelConte
1f20: 6e 74 2c 20 74 68 69 73 2e 78 43 6f 6e 6a 42 75  nt, this.xConjBu
1f30: 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74  tton);.        t
1f40: 68 69 73 2e 78 50 61 6e 65 6c 2e 73 74 79 6c 65  his.xPanel.style
1f50: 2e 62 61 63 6b 67 72 6f 75 6e 64 20 3d 20 22 22  .background = ""
1f60: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 68 6f  ;.    }..    sho
1f70: 77 4c 65 78 69 63 6f 67 72 61 70 68 65 72 20 28  wLexicographer (
1f80: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ) {.        this
1f90: 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74 4f 66  .switchContentOf
1fa0: 66 28 74 68 69 73 2e 78 47 43 50 61 6e 65 6c 43  f(this.xGCPanelC
1fb0: 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e 78 45 64  ontent, this.xEd
1fc0: 69 74 6f 72 42 75 74 74 6f 6e 29 3b 0a 20 20 20  itorButton);.   
1fd0: 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63 68       this.switch
1fe0: 43 6f 6e 74 65 6e 74 4f 6e 28 74 68 69 73 2e 78  ContentOn(this.x
1ff0: 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c  LxgPanelContent,
2000: 20 74 68 69 73 2e 78 4c 78 67 42 75 74 74 6f 6e   this.xLxgButton
2010: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
2020: 73 77 69 74 63 68 43 6f 6e 74 65 6e 74 4f 66 66  switchContentOff
2030: 28 74 68 69 73 2e 78 43 6f 6e 6a 50 61 6e 65 6c  (this.xConjPanel
2040: 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e 78 43  Content, this.xC
2050: 6f 6e 6a 42 75 74 74 6f 6e 29 3b 0a 20 20 20 20  onjButton);.    
2060: 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65 6c 2e      this.xPanel.
2070: 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75 6e 64  style.background
2080: 20 3d 20 22 22 3b 0a 20 20 20 20 7d 0a 0a 20 20   = "";.    }..  
2090: 20 20 73 68 6f 77 43 6f 6e 6a 75 67 75 65 75 72    showConjugueur
20a0: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68   () {.        th
20b0: 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74  is.switchContent
20c0: 4f 66 66 28 74 68 69 73 2e 78 47 43 50 61 6e 65  Off(this.xGCPane
20d0: 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e 78  lContent, this.x
20e0: 45 64 69 74 6f 72 42 75 74 74 6f 6e 29 3b 0a 20  EditorButton);. 
20f0: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
2100: 63 68 43 6f 6e 74 65 6e 74 4f 66 66 28 74 68 69  chContentOff(thi
2110: 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65  s.xLxgPanelConte
2120: 6e 74 2c 20 74 68 69 73 2e 78 4c 78 67 42 75 74  nt, this.xLxgBut
2130: 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74 68  ton);.        th
2140: 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74  is.switchContent
2150: 4f 6e 28 74 68 69 73 2e 78 43 6f 6e 6a 50 61 6e  On(this.xConjPan
2160: 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e  elContent, this.
2170: 78 43 6f 6e 6a 42 75 74 74 6f 6e 29 3b 0a 20 20  xConjButton);.  
2180: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65        this.xPane
2190: 6c 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75  l.style.backgrou
21a0: 6e 64 20 3d 20 22 6c 69 6e 65 61 72 2d 67 72 61  nd = "linear-gra
21b0: 64 69 65 6e 74 28 74 6f 20 62 6f 74 74 6f 6d 2c  dient(to bottom,
21c0: 20 68 73 6c 61 28 30 2c 30 25 2c 31 30 30 25 2c   hsla(0,0%,100%,
21d0: 31 29 20 30 25 2c 20 68 73 6c 61 28 30 2c 30 25  1) 0%, hsla(0,0%
21e0: 2c 39 35 25 2c 31 29 20 35 35 25 2c 20 68 73 6c  ,95%,1) 55%, hsl
21f0: 61 28 30 2c 30 25 2c 39 30 25 2c 31 29 20 31 30  a(0,0%,90%,1) 10
2200: 30 25 29 22 3b 0a 20 20 20 20 20 20 20 20 74 68  0%)";.        th
2210: 69 73 2e 6c 69 73 74 65 6e 43 6f 6e 6a 28 29 3b  is.listenConj();
2220: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68  .        if (!th
2230: 69 73 2e 73 56 65 72 62 29 20 7b 0a 20 20 20 20  is.sVerb) {.    
2240: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
2250: 6a 75 67 61 74 65 56 65 72 62 28 22 c3 aa 74 72  jugateVerb("..tr
2260: 65 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  e");.        }. 
2270: 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74 63 68     }..    switch
2280: 43 6f 6e 74 65 6e 74 4f 6e 20 28 78 43 6f 6e 74  ContentOn (xCont
2290: 65 6e 74 2c 20 78 4e 6f 64 65 42 75 74 74 6f 6e  ent, xNodeButton
22a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 78 43 6f 6e  ) {.        xCon
22b0: 74 65 6e 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c  tent.style.displ
22c0: 61 79 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20 20  ay = "block";.  
22d0: 20 20 20 20 20 20 78 4e 6f 64 65 42 75 74 74 6f        xNodeButto
22e0: 6e 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75  n.style.backgrou
22f0: 6e 64 43 6f 6c 6f 72 20 3d 20 22 68 73 6c 28 32  ndColor = "hsl(2
2300: 31 30 2c 20 36 30 25 2c 20 34 30 25 29 22 3b 0a  10, 60%, 40%)";.
2310: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 42 75 74          xNodeBut
2320: 74 6f 6e 2e 73 74 79 6c 65 2e 74 65 78 74 53 68  ton.style.textSh
2330: 61 64 6f 77 20 3d 20 22 32 70 78 20 30 20 30 20  adow = "2px 0 0 
2340: 68 73 6c 61 28 32 31 30 2c 20 34 30 25 2c 20 33  hsla(210, 40%, 3
2350: 35 25 2c 20 2e 35 29 2c 20 2d 32 70 78 20 30 20  5%, .5), -2px 0 
2360: 30 20 68 73 6c 61 28 32 31 30 2c 20 34 30 25 2c  0 hsla(210, 40%,
2370: 20 33 35 25 2c 20 2e 35 29 2c 20 30 20 32 70 78   35%, .5), 0 2px
2380: 20 30 20 68 73 6c 61 28 32 31 30 2c 20 34 30 25   0 hsla(210, 40%
2390: 2c 20 33 35 25 2c 20 2e 35 29 2c 20 30 20 2d 32  , 35%, .5), 0 -2
23a0: 70 78 20 30 20 68 73 6c 61 28 32 31 30 2c 20 34  px 0 hsla(210, 4
23b0: 30 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20 31 70  0%, 35%, .5), 1p
23c0: 78 20 31 70 78 20 68 73 6c 61 28 32 31 30 2c 20  x 1px hsla(210, 
23d0: 34 30 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20 2d  40%, 35%, .5), -
23e0: 31 70 78 20 2d 31 70 78 20 30 20 68 73 6c 61 28  1px -1px 0 hsla(
23f0: 32 31 30 2c 20 34 30 25 2c 20 33 35 25 2c 20 2e  210, 40%, 35%, .
2400: 35 29 2c 20 31 70 78 20 2d 31 70 78 20 30 20 68  5), 1px -1px 0 h
2410: 73 6c 61 28 32 31 30 2c 20 34 30 25 2c 20 33 35  sla(210, 40%, 35
2420: 25 2c 20 2e 35 29 2c 20 2d 31 70 78 20 31 70 78  %, .5), -1px 1px
2430: 20 30 20 68 73 6c 61 28 32 31 30 2c 20 33 30 25   0 hsla(210, 30%
2440: 2c 20 33 35 25 2c 20 2e 35 29 22 3b 0a 20 20 20  , 35%, .5)";.   
2450: 20 7d 0a 0a 20 20 20 20 73 77 69 74 63 68 43 6f   }..    switchCo
2460: 6e 74 65 6e 74 4f 66 66 20 28 78 43 6f 6e 74 65  ntentOff (xConte
2470: 6e 74 2c 20 78 4e 6f 64 65 42 75 74 74 6f 6e 29  nt, xNodeButton)
2480: 20 7b 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 74   {.        xCont
2490: 65 6e 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  ent.style.displa
24a0: 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20  y = "none";.    
24b0: 20 20 20 20 78 4e 6f 64 65 42 75 74 74 6f 6e 2e      xNodeButton.
24c0: 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75 6e 64  style.background
24d0: 43 6f 6c 6f 72 20 3d 20 22 22 3b 0a 20 20 20 20  Color = "";.    
24e0: 20 20 20 20 78 4e 6f 64 65 42 75 74 74 6f 6e 2e      xNodeButton.
24f0: 73 74 79 6c 65 2e 74 65 78 74 53 68 61 64 6f 77  style.textShadow
2500: 20 3d 20 22 22 3b 0a 20 20 20 20 7d 0a 0a 20 20   = "";.    }..  
2510: 20 20 63 6c 65 61 72 20 28 29 20 7b 0a 20 20 20    clear () {.   
2520: 20 20 20 20 20 77 68 69 6c 65 20 28 74 68 69 73       while (this
2530: 2e 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e  .xParagraphList.
2540: 66 69 72 73 74 43 68 69 6c 64 29 20 7b 0a 20 20  firstChild) {.  
2550: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
2560: 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e 72 65  ParagraphList.re
2570: 6d 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 78  moveChild(this.x
2580: 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e 66 69  ParagraphList.fi
2590: 72 73 74 43 68 69 6c 64 29 3b 0a 20 20 20 20 20  rstChild);.     
25a0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68 69     }.        thi
25b0: 73 2e 61 49 67 6e 6f 72 65 64 45 72 72 6f 72 73  s.aIgnoredErrors
25c0: 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 7d 0a  .clear();.    }.
25d0: 0a 20 20 20 20 68 69 64 65 20 28 29 20 7b 0a 20  .    hide () {. 
25e0: 20 20 20 20 20 20 20 69 66 20 28 6f 47 72 61 6d         if (oGram
25f0: 6d 61 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65 6c  malecte.oTFPanel
2600: 29 20 7b 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  ) { oGrammalecte
2610: 2e 6f 54 46 50 61 6e 65 6c 2e 68 69 64 65 28 29  .oTFPanel.hide()
2620: 3b 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ; }.        if (
2630: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 4d 65  oGrammalecte.oMe
2640: 73 73 61 67 65 42 6f 78 29 20 7b 20 6f 47 72 61  ssageBox) { oGra
2650: 6d 6d 61 6c 65 63 74 65 2e 6f 4d 65 73 73 61 67  mmalecte.oMessag
2660: 65 42 6f 78 2e 68 69 64 65 28 29 3b 20 7d 0a 20  eBox.hide(); }. 
2670: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
2680: 63 74 65 2e 63 6c 65 61 72 52 69 67 68 74 43 6c  cte.clearRightCl
2690: 69 63 6b 65 64 4e 6f 64 65 28 29 3b 0a 20 20 20  ickedNode();.   
26a0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65 6c       this.xPanel
26b0: 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d  .style.display =
26c0: 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20   "none";.       
26d0: 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e 74 72   this.oTextContr
26e0: 6f 6c 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20  ol.clear();.    
26f0: 7d 0a 0a 20 20 20 20 61 64 64 50 61 72 61 67 72  }..    addParagr
2700: 61 70 68 52 65 73 75 6c 74 20 28 6f 52 65 73 75  aphResult (oResu
2710: 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72  lt) {.        tr
2720: 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  y {.            
2730: 74 68 69 73 2e 72 65 73 65 74 54 69 6d 65 72 28  this.resetTimer(
2740: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  );.            i
2750: 66 20 28 6f 52 65 73 75 6c 74 20 26 26 20 28 6f  f (oResult && (o
2760: 52 65 73 75 6c 74 2e 73 50 61 72 61 67 72 61 70  Result.sParagrap
2770: 68 2e 74 72 69 6d 28 29 20 21 3d 3d 20 22 22 20  h.trim() !== "" 
2780: 7c 7c 20 6f 52 65 73 75 6c 74 2e 61 47 72 61 6d  || oResult.aGram
2790: 6d 45 72 72 2e 6c 65 6e 67 74 68 20 3e 20 30 20  mErr.length > 0 
27a0: 7c 7c 20 6f 52 65 73 75 6c 74 2e 61 53 70 65 6c  || oResult.aSpel
27b0: 6c 45 72 72 2e 6c 65 6e 67 74 68 20 3e 20 30 29  lErr.length > 0)
27c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
27d0: 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 44 69 76      let xNodeDiv
27e0: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
27f0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
2800: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
2810: 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72 61 67  rammalecte_parag
2820: 72 61 70 68 5f 62 6c 6f 63 6b 22 7d 29 3b 0a 20  raph_block"});. 
2830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2840: 2f 20 61 63 74 69 6f 6e 73 0a 20 20 20 20 20 20  / actions.      
2850: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 41            let xA
2860: 63 74 69 6f 6e 73 42 61 72 20 3d 20 6f 47 72 61  ctionsBar = oGra
2870: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e  mmalecte.createN
2880: 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73  ode("div", {clas
2890: 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65  sName: "grammale
28a0: 63 74 65 5f 70 61 72 61 67 72 61 70 68 5f 61 63  cte_paragraph_ac
28b0: 74 69 6f 6e 73 22 7d 29 3b 0a 20 20 20 20 20 20  tions"});.      
28c0: 20 20 20 20 20 20 20 20 20 20 78 41 63 74 69 6f            xActio
28d0: 6e 73 42 61 72 2e 61 70 70 65 6e 64 43 68 69 6c  nsBar.appendChil
28e0: 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  d(oGrammalecte.c
28f0: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
2900: 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63   {id: "grammalec
2910: 74 65 5f 63 68 65 63 6b 22 20 2b 20 6f 52 65 73  te_check" + oRes
2920: 75 6c 74 2e 69 50 61 72 61 4e 75 6d 2c 20 63 6c  ult.iParaNum, cl
2930: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
2940: 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70 68 5f  lecte_paragraph_
2950: 62 75 74 74 6f 6e 20 67 72 61 6d 6d 61 6c 65 63  button grammalec
2960: 74 65 5f 67 72 65 65 6e 22 2c 20 74 65 78 74 43  te_green", textC
2970: 6f 6e 74 65 6e 74 3a 20 22 e2 86 bb 22 2c 20 74  ontent: "...", t
2980: 69 74 6c 65 3a 20 22 52 c3 a9 61 6e 61 6c 79 73  itle: "R..analys
2990: 65 72 e2 80 a6 22 7d 2c 20 7b 70 61 72 61 5f 6e  er..."}, {para_n
29a0: 75 6d 3a 20 6f 52 65 73 75 6c 74 2e 69 50 61 72  um: oResult.iPar
29b0: 61 4e 75 6d 7d 29 29 3b 0a 20 20 20 20 20 20 20  aNum}));.       
29c0: 20 20 20 20 20 20 20 20 20 78 41 63 74 69 6f 6e           xAction
29d0: 73 42 61 72 2e 61 70 70 65 6e 64 43 68 69 6c 64  sBar.appendChild
29e0: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72  (oGrammalecte.cr
29f0: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
2a00: 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  {id: "grammalect
2a10: 65 5f 68 69 64 65 22 20 2b 20 6f 52 65 73 75 6c  e_hide" + oResul
2a20: 74 2e 69 50 61 72 61 4e 75 6d 2c 20 63 6c 61 73  t.iParaNum, clas
2a30: 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65  sName: "grammale
2a40: 63 74 65 5f 70 61 72 61 67 72 61 70 68 5f 62 75  cte_paragraph_bu
2a50: 74 74 6f 6e 20 67 72 61 6d 6d 61 6c 65 63 74 65  tton grammalecte
2a60: 5f 72 65 64 22 2c 20 74 65 78 74 43 6f 6e 74 65  _red", textConte
2a70: 6e 74 3a 20 22 c3 97 22 2c 20 74 69 74 6c 65 3a  nt: "..", title:
2a80: 20 22 43 61 63 68 65 72 22 2c 20 73 74 79 6c 65   "Cacher", style
2a90: 3a 20 22 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20  : "font-weight: 
2aa0: 62 6f 6c 64 3b 22 7d 29 29 3b 0a 20 20 20 20 20  bold;"}));.     
2ab0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 61             // pa
2ac0: 72 61 67 72 61 70 68 0a 20 20 20 20 20 20 20 20  ragraph.        
2ad0: 20 20 20 20 20 20 20 20 6c 65 74 20 78 50 61 72          let xPar
2ae0: 61 67 72 61 70 68 20 3d 20 6f 47 72 61 6d 6d 61  agraph = oGramma
2af0: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
2b00: 28 22 70 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d  ("p", {id: "gram
2b10: 6d 61 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70  malecte_paragrap
2b20: 68 22 2b 6f 52 65 73 75 6c 74 2e 69 50 61 72 61  h"+oResult.iPara
2b30: 4e 75 6d 2c 20 63 6c 61 73 73 4e 61 6d 65 3a 20  Num, className: 
2b40: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72  "grammalecte_par
2b50: 61 67 72 61 70 68 22 2c 20 6c 61 6e 67 3a 20 22  agraph", lang: "
2b60: 66 72 22 2c 20 63 6f 6e 74 65 6e 74 45 64 69 74  fr", contentEdit
2b70: 61 62 6c 65 3a 20 22 74 72 75 65 22 7d 2c 20 7b  able: "true"}, {
2b80: 70 61 72 61 5f 6e 75 6d 3a 20 6f 52 65 73 75 6c  para_num: oResul
2b90: 74 2e 69 50 61 72 61 4e 75 6d 7d 29 3b 0a 20 20  t.iParaNum});.  
2ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50                xP
2bb0: 61 72 61 67 72 61 70 68 2e 73 65 74 41 74 74 72  aragraph.setAttr
2bc0: 69 62 75 74 65 28 22 73 70 65 6c 6c 63 68 65 63  ibute("spellchec
2bd0: 6b 22 2c 20 22 66 61 6c 73 65 22 29 3b 20 2f 2f  k", "false"); //
2be0: 20 64 6f 65 73 6e e2 80 99 74 20 73 65 65 6d 20   doesn...t seem 
2bf0: 70 6f 73 73 69 62 6c 65 20 74 6f 20 75 73 65 20  possible to use 
2c00: e2 80 9c 73 70 65 6c 6c 63 68 65 63 6b e2 80 9d  ...spellcheck...
2c10: 20 61 73 20 61 20 63 6f 6d 6d 6f 6e 20 61 74 74   as a common att
2c20: 72 69 62 75 74 65 2e 0a 20 20 20 20 20 20 20 20  ribute..        
2c30: 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72 61          xParagra
2c40: 70 68 2e 64 61 74 61 73 65 74 2e 74 69 6d 65 72  ph.dataset.timer
2c50: 5f 69 64 20 3d 20 22 30 22 3b 0a 20 20 20 20 20  _id = "0";.     
2c60: 20 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61             xPara
2c70: 67 72 61 70 68 2e 61 64 64 45 76 65 6e 74 4c 69  graph.addEventLi
2c80: 73 74 65 6e 65 72 28 22 69 6e 70 75 74 22 2c 20  stener("input", 
2c90: 66 75 6e 63 74 69 6f 6e 20 28 78 45 76 65 6e 74  function (xEvent
2ca0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
2cb0: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
2cc0: 2e 62 41 75 74 6f 52 65 66 72 65 73 68 29 20 7b  .bAutoRefresh) {
2cd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ce0: 20 20 20 20 20 20 20 20 20 2f 2f 20 74 69 6d 65           // time
2cf0: 72 20 66 6f 72 20 72 65 66 72 65 73 68 69 6e 67  r for refreshing
2d00: 20 61 6e 61 6c 79 73 69 73 0a 20 20 20 20 20 20   analysis.      
2d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d20: 20 20 77 69 6e 64 6f 77 2e 63 6c 65 61 72 54 69    window.clearTi
2d30: 6d 65 6f 75 74 28 70 61 72 73 65 49 6e 74 28 78  meout(parseInt(x
2d40: 50 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65  Paragraph.datase
2d50: 74 2e 74 69 6d 65 72 5f 69 64 2c 20 31 30 29 29  t.timer_id, 10))
2d60: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
2d70: 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67            xParag
2d80: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 74 69 6d  raph.dataset.tim
2d90: 65 72 5f 69 64 20 3d 20 77 69 6e 64 6f 77 2e 73  er_id = window.s
2da0: 65 74 54 69 6d 65 6f 75 74 28 74 68 69 73 2e 72  etTimeout(this.r
2db0: 65 63 68 65 63 6b 50 61 72 61 67 72 61 70 68 2e  echeckParagraph.
2dc0: 62 69 6e 64 28 74 68 69 73 29 2c 20 33 30 30 30  bind(this), 3000
2dd0: 2c 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61 4e  , oResult.iParaN
2de0: 75 6d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  um);.           
2df0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
2e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e10: 2f 20 77 72 69 74 65 20 74 65 78 74 0a 20 20 20  / write text.   
2e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e30: 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e 74 72   this.oTextContr
2e40: 6f 6c 2e 73 65 74 50 61 72 61 67 72 61 70 68 28  ol.setParagraph(
2e50: 70 61 72 73 65 49 6e 74 28 78 45 76 65 6e 74 2e  parseInt(xEvent.
2e60: 74 61 72 67 65 74 2e 64 61 74 61 73 65 74 2e 70  target.dataset.p
2e70: 61 72 61 5f 6e 75 6d 2c 20 31 30 29 2c 20 74 68  ara_num, 10), th
2e80: 69 73 2e 70 75 72 67 65 54 65 78 74 28 78 45 76  is.purgeText(xEv
2e90: 65 6e 74 2e 74 61 72 67 65 74 2e 74 65 78 74 43  ent.target.textC
2ea0: 6f 6e 74 65 6e 74 29 29 3b 0a 20 20 20 20 20 20  ontent));.      
2eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2ec0: 69 73 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e  is.oTextControl.
2ed0: 77 72 69 74 65 28 29 3b 0a 20 20 20 20 20 20 20  write();.       
2ee0: 20 20 20 20 20 20 20 20 20 7d 2e 62 69 6e 64 28           }.bind(
2ef0: 74 68 69 73 29 0a 20 20 20 20 20 20 20 20 20 20  this).          
2f00: 20 20 20 20 20 20 2c 20 74 72 75 65 29 3b 0a 20        , true);. 
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f20: 68 69 73 2e 5f 74 61 67 50 61 72 61 67 72 61 70  his._tagParagrap
2f30: 68 28 78 50 61 72 61 67 72 61 70 68 2c 20 6f 52  h(xParagraph, oR
2f40: 65 73 75 6c 74 2e 73 50 61 72 61 67 72 61 70 68  esult.sParagraph
2f50: 2c 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61 4e  , oResult.iParaN
2f60: 75 6d 2c 20 6f 52 65 73 75 6c 74 2e 61 47 72 61  um, oResult.aGra
2f70: 6d 6d 45 72 72 2c 20 6f 52 65 73 75 6c 74 2e 61  mmErr, oResult.a
2f80: 53 70 65 6c 6c 45 72 72 29 3b 0a 20 20 20 20 20  SpellErr);.     
2f90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 72             // cr
2fa0: 65 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20  eation.         
2fb0: 20 20 20 20 20 20 20 78 4e 6f 64 65 44 69 76 2e         xNodeDiv.
2fc0: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 41 63 74  appendChild(xAct
2fd0: 69 6f 6e 73 42 61 72 29 3b 0a 20 20 20 20 20 20  ionsBar);.      
2fe0: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 44            xNodeD
2ff0: 69 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  iv.appendChild(x
3000: 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20  Paragraph);.    
3010: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
3020: 2e 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e  .xParagraphList.
3030: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64  appendChild(xNod
3040: 65 44 69 76 29 3b 0a 20 20 20 20 20 20 20 20 20  eDiv);.         
3050: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20     }.        }. 
3060: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65 29         catch (e)
3070: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   {.            s
3080: 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20  howError(e);.   
3090: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
30a0: 20 20 72 65 73 65 74 54 69 6d 65 72 20 28 29 20    resetTimer () 
30b0: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e  {.        this.n
30c0: 4c 61 73 74 52 65 73 75 6c 74 20 3d 20 44 61 74  LastResult = Dat
30d0: 65 2e 6e 6f 77 28 29 3b 0a 20 20 20 20 20 20 20  e.now();.       
30e0: 20 77 69 6e 64 6f 77 2e 63 6c 65 61 72 54 69 6d   window.clearTim
30f0: 65 6f 75 74 28 74 68 69 73 2e 6e 54 69 6d 65 72  eout(this.nTimer
3100: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
3110: 6e 54 69 6d 65 72 20 3d 20 77 69 6e 64 6f 77 2e  nTimer = window.
3120: 73 65 74 54 69 6d 65 6f 75 74 28 0a 20 20 20 20  setTimeout(.    
3130: 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c          oGrammal
3140: 65 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 73 68  ecte.oGCPanel.sh
3150: 6f 77 4d 65 73 73 61 67 65 2e 62 69 6e 64 28 74  owMessage.bind(t
3160: 68 69 73 29 2c 0a 20 20 20 20 20 20 20 20 20 20  his),.          
3170: 20 20 35 30 30 30 2c 0a 20 20 20 20 20 20 20 20    5000,.        
3180: 20 20 20 20 22 4c 65 20 73 65 72 76 65 75 72 20      "Le serveur 
3190: 67 72 61 6d 6d 61 74 69 63 61 6c 20 73 65 6d 62  grammatical semb
31a0: 6c 65 20 6e 65 20 70 6c 75 73 20 72 c3 a9 70 6f  le ne plus r..po
31b0: 6e 64 72 65 2e 22 2c 0a 20 20 20 20 20 20 20 20  ndre.",.        
31c0: 20 20 20 20 22 41 72 72 c3 aa 74 65 72 20 65 74      "Arr..ter et
31d0: 20 72 65 6c 61 6e 63 65 72 20 6c 65 20 73 65 72   relancer le ser
31e0: 76 65 75 72 20 67 72 61 6d 6d 61 74 69 63 61 6c  veur grammatical
31f0: 2e 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  .",.            
3200: 22 72 65 73 74 61 72 74 57 6f 72 6b 65 72 22 0a  "restartWorker".
3210: 20 20 20 20 20 20 20 20 29 3b 0a 20 20 20 20 7d          );.    }
3220: 0a 0a 20 20 20 20 65 6e 64 54 69 6d 65 72 20 28  ..    endTimer (
3230: 29 20 7b 0a 20 20 20 20 20 20 20 20 77 69 6e 64  ) {.        wind
3240: 6f 77 2e 63 6c 65 61 72 54 69 6d 65 6f 75 74 28  ow.clearTimeout(
3250: 74 68 69 73 2e 6e 54 69 6d 65 72 29 3b 0a 20 20  this.nTimer);.  
3260: 20 20 7d 0a 0a 20 20 20 20 72 65 63 68 65 63 6b    }..    recheck
3270: 50 61 72 61 67 72 61 70 68 20 28 69 50 61 72 61  Paragraph (iPara
3280: 4e 75 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 6c  Num) {.        l
3290: 65 74 20 73 50 61 72 61 67 72 61 70 68 49 64 20  et sParagraphId 
32a0: 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70  = "grammalecte_p
32b0: 61 72 61 67 72 61 70 68 22 20 2b 20 69 50 61 72  aragraph" + iPar
32c0: 61 4e 75 6d 3b 0a 20 20 20 20 20 20 20 20 6c 65  aNum;.        le
32d0: 74 20 78 50 61 72 61 67 72 61 70 68 20 3d 20 74  t xParagraph = t
32e0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
32f0: 6c 65 6d 65 6e 74 42 79 49 64 28 73 50 61 72 61  lementById(sPara
3300: 67 72 61 70 68 49 64 29 3b 0a 20 20 20 20 20 20  graphId);.      
3310: 20 20 74 68 69 73 2e 5f 62 6c 6f 63 6b 50 61 72    this._blockPar
3320: 61 67 72 61 70 68 28 78 50 61 72 61 67 72 61 70  agraph(xParagrap
3330: 68 29 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  h);.        let 
3340: 73 54 65 78 74 20 3d 20 74 68 69 73 2e 70 75 72  sText = this.pur
3350: 67 65 54 65 78 74 28 78 50 61 72 61 67 72 61 70  geText(xParagrap
3360: 68 2e 74 65 78 74 43 6f 6e 74 65 6e 74 29 3b 0a  h.textContent);.
3370: 20 20 20 20 20 20 20 20 78 47 72 61 6d 6d 61 6c          xGrammal
3380: 65 63 74 65 50 6f 72 74 2e 70 6f 73 74 4d 65 73  ectePort.postMes
3390: 73 61 67 65 28 7b 0a 20 20 20 20 20 20 20 20 20  sage({.         
33a0: 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 70 61     sCommand: "pa
33b0: 72 73 65 41 6e 64 53 70 65 6c 6c 63 68 65 63 6b  rseAndSpellcheck
33c0: 31 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  1",.            
33d0: 64 50 61 72 61 6d 3a 20 7b 73 54 65 78 74 3a 20  dParam: {sText: 
33e0: 73 54 65 78 74 2c 20 73 43 6f 75 6e 74 72 79 3a  sText, sCountry:
33f0: 20 22 46 52 22 2c 20 62 44 65 62 75 67 3a 20 66   "FR", bDebug: f
3400: 61 6c 73 65 2c 20 62 43 6f 6e 74 65 78 74 3a 20  alse, bContext: 
3410: 66 61 6c 73 65 7d 2c 0a 20 20 20 20 20 20 20 20  false},.        
3420: 20 20 20 20 64 49 6e 66 6f 3a 20 7b 73 50 61 72      dInfo: {sPar
3430: 61 67 72 61 70 68 49 64 3a 20 73 50 61 72 61 67  agraphId: sParag
3440: 72 61 70 68 49 64 7d 0a 20 20 20 20 20 20 20 20  raphId}.        
3450: 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  });.        this
3460: 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 73 65  .oTextControl.se
3470: 74 50 61 72 61 67 72 61 70 68 28 69 50 61 72 61  tParagraph(iPara
3480: 4e 75 6d 2c 20 73 54 65 78 74 29 3b 0a 20 20 20  Num, sText);.   
3490: 20 20 20 20 20 74 68 69 73 2e 6f 54 65 78 74 43       this.oTextC
34a0: 6f 6e 74 72 6f 6c 2e 77 72 69 74 65 28 29 3b 0a  ontrol.write();.
34b0: 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 66 72 65      }..    refre
34c0: 73 68 50 61 72 61 67 72 61 70 68 20 28 73 50 61  shParagraph (sPa
34d0: 72 61 67 72 61 70 68 49 64 2c 20 6f 52 65 73 75  ragraphId, oResu
34e0: 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f  lt) {.        //
34f0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64   function called
3500: 20 77 68 65 6e 20 72 65 73 75 6c 74 73 20 61 72   when results ar
3510: 65 20 73 65 6e 74 20 62 79 20 74 68 65 20 57 6f  e sent by the Wo
3520: 72 6b 65 72 0a 20 20 20 20 20 20 20 20 74 72 79  rker.        try
3530: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c   {.            l
3540: 65 74 20 78 50 61 72 61 67 72 61 70 68 20 3d 20  et xParagraph = 
3550: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
3560: 45 6c 65 6d 65 6e 74 42 79 49 64 28 73 50 61 72  ElementById(sPar
3570: 61 67 72 61 70 68 49 64 29 3b 0a 20 20 20 20 20  agraphId);.     
3580: 20 20 20 20 20 20 20 2f 2f 20 73 61 76 65 20 63         // save c
3590: 61 72 65 74 20 70 6f 73 69 74 69 6f 6e 0a 20 20  aret position.  
35a0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 5b 6e            let [n
35b0: 53 74 61 72 74 2c 20 6e 45 6e 64 5d 20 3d 20 6f  Start, nEnd] = o
35c0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 67 65 74 43  Grammalecte.getC
35d0: 61 72 65 74 50 6f 73 69 74 69 6f 6e 28 78 50 61  aretPosition(xPa
35e0: 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20 20 20  ragraph);.      
35f0: 20 20 20 20 20 20 78 50 61 72 61 67 72 61 70 68        xParagraph
3600: 2e 64 61 74 61 73 65 74 2e 63 61 72 65 74 5f 70  .dataset.caret_p
3610: 6f 73 69 74 69 6f 6e 5f 73 74 61 72 74 20 3d 20  osition_start = 
3620: 6e 53 74 61 72 74 3b 0a 20 20 20 20 20 20 20 20  nStart;.        
3630: 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 64      xParagraph.d
3640: 61 74 61 73 65 74 2e 63 61 72 65 74 5f 70 6f 73  ataset.caret_pos
3650: 69 74 69 6f 6e 5f 65 6e 64 20 3d 20 6e 45 6e 64  ition_end = nEnd
3660: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ;.            //
3670: 20 65 72 61 73 65 20 74 65 78 74 65 0a 20 20 20   erase texte.   
3680: 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72           xParagr
3690: 61 70 68 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  aph.textContent 
36a0: 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20 20 20  = "";.          
36b0: 20 20 2f 2f 20 72 65 63 72 65 61 74 65 20 61 6e    // recreate an
36c0: 64 20 72 65 74 61 67 0a 20 20 20 20 20 20 20 20  d retag.        
36d0: 20 20 20 20 74 68 69 73 2e 5f 74 61 67 50 61 72      this._tagPar
36e0: 61 67 72 61 70 68 28 78 50 61 72 61 67 72 61 70  agraph(xParagrap
36f0: 68 2c 20 6f 52 65 73 75 6c 74 2e 73 50 61 72 61  h, oResult.sPara
3700: 67 72 61 70 68 2c 20 73 50 61 72 61 67 72 61 70  graph, sParagrap
3710: 68 49 64 2e 73 6c 69 63 65 28 32 31 29 2c 20 6f  hId.slice(21), o
3720: 52 65 73 75 6c 74 2e 61 47 72 61 6d 6d 45 72 72  Result.aGrammErr
3730: 2c 20 6f 52 65 73 75 6c 74 2e 61 53 70 65 6c 6c  , oResult.aSpell
3740: 45 72 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20  Err);.          
3750: 20 20 74 68 69 73 2e 5f 66 72 65 65 50 61 72 61    this._freePara
3760: 67 72 61 70 68 28 78 50 61 72 61 67 72 61 70 68  graph(xParagraph
3770: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
3780: 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b       catch (e) {
3790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f  .            sho
37a0: 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20  wError(e);.     
37b0: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
37c0: 5f 74 61 67 50 61 72 61 67 72 61 70 68 20 28 78  _tagParagraph (x
37d0: 50 61 72 61 67 72 61 70 68 2c 20 73 50 61 72 61  Paragraph, sPara
37e0: 67 72 61 70 68 2c 20 69 50 61 72 61 4e 75 6d 2c  graph, iParaNum,
37f0: 20 61 53 70 65 6c 6c 45 72 72 2c 20 61 47 72 61   aSpellErr, aGra
3800: 6d 6d 45 72 72 29 20 7b 0a 20 20 20 20 20 20 20  mmErr) {.       
3810: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20   try {.         
3820: 20 20 20 69 66 20 28 61 47 72 61 6d 6d 45 72 72     if (aGrammErr
3830: 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 20 20 26  .length === 0  &
3840: 26 20 20 61 53 70 65 6c 6c 45 72 72 2e 6c 65 6e  &  aSpellErr.len
3850: 67 74 68 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 20  gth === 0) {.   
3860: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50 61               xPa
3870: 72 61 67 72 61 70 68 2e 74 65 78 74 43 6f 6e 74  ragraph.textCont
3880: 65 6e 74 20 3d 20 73 50 61 72 61 67 72 61 70 68  ent = sParagraph
3890: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
38a0: 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20    return;.      
38b0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
38c0: 20 20 20 20 61 47 72 61 6d 6d 45 72 72 2e 70 75      aGrammErr.pu
38d0: 73 68 28 2e 2e 2e 61 53 70 65 6c 6c 45 72 72 29  sh(...aSpellErr)
38e0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 47  ;.            aG
38f0: 72 61 6d 6d 45 72 72 2e 73 6f 72 74 28 66 75 6e  rammErr.sort(fun
3900: 63 74 69 6f 6e 20 28 61 2c 20 62 29 20 7b 0a 20  ction (a, b) {. 
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
3920: 66 20 28 61 5b 22 6e 53 74 61 72 74 22 5d 20 3c  f (a["nStart"] <
3930: 20 62 5b 22 6e 53 74 61 72 74 22 5d 29 0a 20 20   b["nStart"]).  
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3950: 20 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20    return -1;.   
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3970: 28 61 5b 22 6e 53 74 61 72 74 22 5d 20 3e 20 62  (a["nStart"] > b
3980: 5b 22 6e 53 74 61 72 74 22 5d 29 0a 20 20 20 20  ["nStart"]).    
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 72 65 74 75 72 6e 20 31 3b 0a 20 20 20 20 20 20  return 1;.      
39b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
39c0: 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   0;.            
39d0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
39e0: 6c 65 74 20 6e 45 72 72 20 3d 20 30 3b 20 2f 2f  let nErr = 0; //
39f0: 20 77 65 20 63 6f 75 6e 74 20 65 72 72 6f 72 73   we count errors
3a00: 20 74 6f 20 67 69 76 65 20 74 68 65 6d 20 61 6e   to give them an
3a10: 20 69 64 65 6e 74 69 66 69 65 72 0a 20 20 20 20   identifier.    
3a20: 20 20 20 20 20 20 20 20 6c 65 74 20 6e 45 6e 64          let nEnd
3a30: 4c 61 73 74 45 72 72 20 3d 20 30 3b 0a 20 20 20  LastErr = 0;.   
3a40: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65           for (le
3a50: 74 20 6f 45 72 72 20 6f 66 20 61 47 72 61 6d 6d  t oErr of aGramm
3a60: 45 72 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20  Err) {.         
3a70: 20 20 20 20 20 20 20 6c 65 74 20 6e 53 74 61 72         let nStar
3a80: 74 20 3d 20 6f 45 72 72 5b 22 6e 53 74 61 72 74  t = oErr["nStart
3a90: 22 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  "];.            
3aa0: 20 20 20 20 6c 65 74 20 6e 45 6e 64 20 3d 20 6f      let nEnd = o
3ab0: 45 72 72 5b 22 6e 45 6e 64 22 5d 3b 0a 20 20 20  Err["nEnd"];.   
3ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3ad0: 28 6e 53 74 61 72 74 20 3e 3d 20 6e 45 6e 64 4c  (nStart >= nEndL
3ae0: 61 73 74 45 72 72 29 20 7b 0a 20 20 20 20 20 20  astErr) {.      
3af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 45                oE
3b00: 72 72 5b 27 73 45 72 72 6f 72 49 64 27 5d 20 3d  rr['sErrorId'] =
3b10: 20 69 50 61 72 61 4e 75 6d 20 2b 20 22 2d 22 20   iParaNum + "-" 
3b20: 2b 20 6e 45 72 72 2e 74 6f 53 74 72 69 6e 67 28  + nErr.toString(
3b30: 29 3b 20 2f 2f 20 65 72 72 6f 72 20 69 64 65 6e  ); // error iden
3b40: 74 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 20  tifier.         
3b50: 20 20 20 20 20 20 20 20 20 20 20 6f 45 72 72 5b             oErr[
3b60: 27 73 49 67 6e 6f 72 65 64 4b 65 79 27 5d 20 3d  'sIgnoredKey'] =
3b70: 20 69 50 61 72 61 4e 75 6d 20 2b 20 22 3a 22 20   iParaNum + ":" 
3b80: 2b 20 6e 53 74 61 72 74 2e 74 6f 53 74 72 69 6e  + nStart.toStrin
3b90: 67 28 29 20 2b 20 22 3a 22 20 2b 20 73 50 61 72  g() + ":" + sPar
3ba0: 61 67 72 61 70 68 2e 73 6c 69 63 65 28 6e 53 74  agraph.slice(nSt
3bb0: 61 72 74 2c 20 6e 45 6e 64 29 3b 0a 20 20 20 20  art, nEnd);.    
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 69 66 20 28 6e 45 6e 64 4c 61 73 74 45 72 72 20  if (nEndLastErr 
3be0: 3c 20 6e 53 74 61 72 74 29 20 7b 0a 20 20 20 20  < nStart) {.    
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c00: 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 61      xParagraph.a
3c10: 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d  ppendChild(docum
3c20: 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74 4e 6f  ent.createTextNo
3c30: 64 65 28 73 50 61 72 61 67 72 61 70 68 2e 73 6c  de(sParagraph.sl
3c40: 69 63 65 28 6e 45 6e 64 4c 61 73 74 45 72 72 2c  ice(nEndLastErr,
3c50: 20 6e 53 74 61 72 74 29 29 29 3b 0a 20 20 20 20   nStart)));.    
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c70: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
3c80: 20 20 20 20 20 20 78 50 61 72 61 67 72 61 70 68        xParagraph
3c90: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69  .appendChild(thi
3ca0: 73 2e 5f 63 72 65 61 74 65 45 72 72 6f 72 28 73  s._createError(s
3cb0: 50 61 72 61 67 72 61 70 68 2e 73 6c 69 63 65 28  Paragraph.slice(
3cc0: 6e 53 74 61 72 74 2c 20 6e 45 6e 64 29 2c 20 6f  nStart, nEnd), o
3cd0: 45 72 72 29 29 3b 0a 20 20 20 20 20 20 20 20 20  Err));.         
3ce0: 20 20 20 20 20 20 20 20 20 20 20 6e 45 6e 64 4c             nEndL
3cf0: 61 73 74 45 72 72 20 3d 20 6e 45 6e 64 3b 0a 20  astErr = nEnd;. 
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
3d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3d20: 20 6e 45 72 72 20 2b 3d 20 31 3b 0a 20 20 20 20   nErr += 1;.    
3d30: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
3d40: 20 20 20 20 20 20 69 66 20 28 6e 45 6e 64 4c 61        if (nEndLa
3d50: 73 74 45 72 72 20 3c 3d 20 73 50 61 72 61 67 72  stErr <= sParagr
3d60: 61 70 68 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20  aph.length) {.  
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50                xP
3d80: 61 72 61 67 72 61 70 68 2e 61 70 70 65 6e 64 43  aragraph.appendC
3d90: 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72  hild(document.cr
3da0: 65 61 74 65 54 65 78 74 4e 6f 64 65 28 73 50 61  eateTextNode(sPa
3db0: 72 61 67 72 61 70 68 2e 73 6c 69 63 65 28 6e 45  ragraph.slice(nE
3dc0: 6e 64 4c 61 73 74 45 72 72 29 29 29 3b 0a 20 20  ndLastErr)));.  
3dd0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
3de0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61      }.        ca
3df0: 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20  tch (e) {.      
3e00: 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28        showError(
3e10: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
3e20: 20 20 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74 65    }..    _create
3e30: 45 72 72 6f 72 20 28 73 55 6e 64 65 72 6c 69 6e  Error (sUnderlin
3e40: 65 64 2c 20 6f 45 72 72 29 20 7b 0a 20 20 20 20  ed, oErr) {.    
3e50: 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 45 72 72      let xNodeErr
3e60: 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61   = document.crea
3e70: 74 65 45 6c 65 6d 65 6e 74 28 22 6d 61 72 6b 22  teElement("mark"
3e80: 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  );.        xNode
3e90: 45 72 72 2e 69 64 20 3d 20 22 67 72 61 6d 6d 61  Err.id = "gramma
3ea0: 6c 65 63 74 65 5f 65 72 72 22 20 2b 20 6f 45 72  lecte_err" + oEr
3eb0: 72 5b 27 73 45 72 72 6f 72 49 64 27 5d 3b 0a 20  r['sErrorId'];. 
3ec0: 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e         xNodeErr.
3ed0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 73 55  textContent = sU
3ee0: 6e 64 65 72 6c 69 6e 65 64 3b 0a 20 20 20 20 20  nderlined;.     
3ef0: 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61     xNodeErr.data
3f00: 73 65 74 2e 65 72 72 6f 72 5f 69 64 20 3d 20 6f  set.error_id = o
3f10: 45 72 72 5b 27 73 45 72 72 6f 72 49 64 27 5d 3b  Err['sErrorId'];
3f20: 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72  .        xNodeEr
3f30: 72 2e 64 61 74 61 73 65 74 2e 69 67 6e 6f 72 65  r.dataset.ignore
3f40: 64 5f 6b 65 79 20 3d 20 6f 45 72 72 5b 27 73 49  d_key = oErr['sI
3f50: 67 6e 6f 72 65 64 4b 65 79 27 5d 3b 0a 20 20 20  gnoredKey'];.   
3f60: 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61       xNodeErr.da
3f70: 74 61 73 65 74 2e 65 72 72 6f 72 5f 74 79 70 65  taset.error_type
3f80: 20 3d 20 28 6f 45 72 72 5b 27 73 54 79 70 65 27   = (oErr['sType'
3f90: 5d 20 3d 3d 3d 20 22 57 4f 52 44 22 29 20 3f 20  ] === "WORD") ? 
3fa0: 22 73 70 65 6c 6c 69 6e 67 22 20 3a 20 22 67 72  "spelling" : "gr
3fb0: 61 6d 6d 61 72 22 3b 0a 20 20 20 20 20 20 20 20  ammar";.        
3fc0: 69 66 20 28 78 4e 6f 64 65 45 72 72 2e 64 61 74  if (xNodeErr.dat
3fd0: 61 73 65 74 2e 65 72 72 6f 72 5f 74 79 70 65 20  aset.error_type 
3fe0: 3d 3d 3d 20 22 67 72 61 6d 6d 61 72 22 29 20 7b  === "grammar") {
3ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f  .            xNo
4000: 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63  deErr.dataset.gc
4010: 5f 6d 65 73 73 61 67 65 20 3d 20 6f 45 72 72 5b  _message = oErr[
4020: 27 73 4d 65 73 73 61 67 65 27 5d 3b 0a 20 20 20  'sMessage'];.   
4030: 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72           xNodeEr
4040: 72 2e 64 61 74 61 73 65 74 2e 67 63 5f 75 72 6c  r.dataset.gc_url
4050: 20 3d 20 6f 45 72 72 5b 27 55 52 4c 27 5d 3b 0a   = oErr['URL'];.
4060: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4070: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
4080: 2e 67 63 5f 6d 65 73 73 61 67 65 2e 69 6e 63 6c  .gc_message.incl
4090: 75 64 65 73 28 22 20 23 22 29 29 20 7b 0a 20 20  udes(" #")) {.  
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 4e                xN
40b0: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 6c  odeErr.dataset.l
40c0: 69 6e 65 5f 69 64 20 3d 20 6f 45 72 72 5b 27 73  ine_id = oErr['s
40d0: 4c 69 6e 65 49 64 27 5d 3b 0a 20 20 20 20 20 20  LineId'];.      
40e0: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45            xNodeE
40f0: 72 72 2e 64 61 74 61 73 65 74 2e 72 75 6c 65 5f  rr.dataset.rule_
4100: 69 64 20 3d 20 6f 45 72 72 5b 27 73 52 75 6c 65  id = oErr['sRule
4110: 49 64 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20  Id'];.          
4120: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
4130: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
4140: 2e 73 75 67 67 65 73 74 69 6f 6e 73 20 3d 20 6f  .suggestions = o
4150: 45 72 72 5b 22 61 53 75 67 67 65 73 74 69 6f 6e  Err["aSuggestion
4160: 73 22 5d 2e 6a 6f 69 6e 28 22 7c 22 29 3b 0a 20  s"].join("|");. 
4170: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
4180: 20 78 4e 6f 64 65 45 72 72 2e 63 6c 61 73 73 4e   xNodeErr.classN
4190: 61 6d 65 20 3d 20 28 74 68 69 73 2e 61 49 67 6e  ame = (this.aIgn
41a0: 6f 72 65 64 45 72 72 6f 72 73 2e 68 61 73 28 78  oredErrors.has(x
41b0: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
41c0: 69 67 6e 6f 72 65 64 5f 6b 65 79 29 29 20 3f 20  ignored_key)) ? 
41d0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72  "grammalecte_err
41e0: 6f 72 5f 69 67 6e 6f 72 65 64 22 20 3a 20 22 67  or_ignored" : "g
41f0: 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72 6f 72  rammalecte_error
4200: 22 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  ";.        xNode
4210: 45 72 72 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72  Err.style.backgr
4220: 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 28 6f 45 72  oundColor = (oEr
4230: 72 5b 27 73 54 79 70 65 27 5d 20 3d 3d 3d 20 22  r['sType'] === "
4240: 57 4f 52 44 22 29 20 3f 20 22 68 73 6c 28 30 2c  WORD") ? "hsl(0,
4250: 20 35 30 25 2c 20 35 30 25 29 22 20 3a 20 6f 45   50%, 50%)" : oE
4260: 72 72 5b 22 61 43 6f 6c 6f 72 22 5d 3b 0a 20 20  rr["aColor"];.  
4270: 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 4e 6f        return xNo
4280: 64 65 45 72 72 3b 0a 20 20 20 20 7d 0a 0a 20 20  deErr;.    }..  
4290: 20 20 5f 62 6c 6f 63 6b 50 61 72 61 67 72 61 70    _blockParagrap
42a0: 68 20 28 78 50 61 72 61 67 72 61 70 68 29 20 7b  h (xParagraph) {
42b0: 0a 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72  .        xParagr
42c0: 61 70 68 2e 63 6f 6e 74 65 6e 74 45 64 69 74 61  aph.contentEdita
42d0: 62 6c 65 20 3d 20 22 66 61 6c 73 65 22 3b 0a 20  ble = "false";. 
42e0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
42f0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
4300: 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id("grammalecte_
4310: 63 68 65 63 6b 22 2b 78 50 61 72 61 67 72 61 70  check"+xParagrap
4320: 68 2e 64 61 74 61 73 65 74 2e 70 61 72 61 5f 6e  h.dataset.para_n
4330: 75 6d 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  um).textContent 
4340: 3d 20 22 21 21 22 3b 0a 20 20 20 20 20 20 20 20  = "!!";.        
4350: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
4360: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61  ElementById("gra
4370: 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22 2b  mmalecte_check"+
4380: 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61 73  xParagraph.datas
4390: 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 73 74 79  et.para_num).sty
43a0: 6c 65 2e 62 61 63 6b 67 72 6f 75 6e 64 43 6f 6c  le.backgroundCol
43b0: 6f 72 20 3d 20 22 68 73 6c 28 30 2c 20 35 30 25  or = "hsl(0, 50%
43c0: 2c 20 35 30 25 29 22 3b 0a 20 20 20 20 20 20 20  , 50%)";.       
43d0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
43e0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
43f0: 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22  ammalecte_check"
4400: 2b 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61  +xParagraph.data
4410: 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 73 74  set.para_num).st
4420: 79 6c 65 2e 62 6f 78 53 68 61 64 6f 77 20 3d 20  yle.boxShadow = 
4430: 22 30 20 30 20 30 20 33 70 78 20 68 73 6c 61 28  "0 0 0 3px hsla(
4440: 30 2c 20 30 25 2c 20 35 30 25 2c 20 2e 32 29 22  0, 0%, 50%, .2)"
4450: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  ;.        this.x
4460: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
4470: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
4480: 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72 61 67  te_check"+xParag
4490: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70 61 72  raph.dataset.par
44a0: 61 5f 6e 75 6d 29 2e 73 74 79 6c 65 2e 61 6e 69  a_num).style.ani
44b0: 6d 61 74 69 6f 6e 20 3d 20 22 67 72 61 6d 6d 61  mation = "gramma
44c0: 6c 65 63 74 65 2d 70 75 6c 73 65 20 31 73 20 6c  lecte-pulse 1s l
44d0: 69 6e 65 61 72 20 69 6e 66 69 6e 69 74 65 22 3b  inear infinite";
44e0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 66 72 65  .    }..    _fre
44f0: 65 50 61 72 61 67 72 61 70 68 20 28 78 50 61 72  eParagraph (xPar
4500: 61 67 72 61 70 68 29 20 7b 0a 20 20 20 20 20 20  agraph) {.      
4510: 20 20 78 50 61 72 61 67 72 61 70 68 2e 63 6f 6e    xParagraph.con
4520: 74 65 6e 74 45 64 69 74 61 62 6c 65 20 3d 20 22  tentEditable = "
4530: 74 72 75 65 22 3b 0a 20 20 20 20 20 20 20 20 69  true";.        i
4540: 66 20 28 78 50 61 72 61 67 72 61 70 68 2e 64 61  f (xParagraph.da
4550: 74 61 73 65 74 2e 63 61 72 65 74 5f 70 6f 73 69  taset.caret_posi
4560: 74 69 6f 6e 5f 73 74 61 72 74 20 21 3d 3d 20 22  tion_start !== "
4570: 2d 31 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20  -1") {.         
4580: 20 20 20 6c 65 74 20 6e 53 74 61 72 74 20 3d 20     let nStart = 
4590: 70 61 72 73 65 49 6e 74 28 78 50 61 72 61 67 72  parseInt(xParagr
45a0: 61 70 68 2e 64 61 74 61 73 65 74 2e 63 61 72 65  aph.dataset.care
45b0: 74 5f 70 6f 73 69 74 69 6f 6e 5f 73 74 61 72 74  t_position_start
45c0: 2c 20 31 30 29 3b 0a 20 20 20 20 20 20 20 20 20  , 10);.         
45d0: 20 20 20 6c 65 74 20 6e 45 6e 64 20 3d 20 70 61     let nEnd = pa
45e0: 72 73 65 49 6e 74 28 78 50 61 72 61 67 72 61 70  rseInt(xParagrap
45f0: 68 2e 64 61 74 61 73 65 74 2e 63 61 72 65 74 5f  h.dataset.caret_
4600: 70 6f 73 69 74 69 6f 6e 5f 65 6e 64 2c 20 31 30  position_end, 10
4610: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  );.            o
4620: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 73 65 74 43  Grammalecte.setC
4630: 61 72 65 74 50 6f 73 69 74 69 6f 6e 28 78 50 61  aretPosition(xPa
4640: 72 61 67 72 61 70 68 2c 20 6e 53 74 61 72 74 2c  ragraph, nStart,
4650: 20 6e 45 6e 64 29 3b 0a 20 20 20 20 20 20 20 20   nEnd);.        
4660: 7d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  }.        this.x
4670: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
4680: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
4690: 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72 61 67  te_check"+xParag
46a0: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70 61 72  raph.dataset.par
46b0: 61 5f 6e 75 6d 29 2e 74 65 78 74 43 6f 6e 74 65  a_num).textConte
46c0: 6e 74 20 3d 20 22 e2 86 bb 22 3b 0a 20 20 20 20  nt = "...";.    
46d0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
46e0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
46f0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65  "grammalecte_che
4700: 63 6b 22 2b 78 50 61 72 61 67 72 61 70 68 2e 64  ck"+xParagraph.d
4710: 61 74 61 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29  ataset.para_num)
4720: 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75 6e  .style.backgroun
4730: 64 43 6f 6c 6f 72 20 3d 20 22 22 3b 0a 20 20 20  dColor = "";.   
4740: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
4750: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
4760: 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 68  ("grammalecte_ch
4770: 65 63 6b 22 2b 78 50 61 72 61 67 72 61 70 68 2e  eck"+xParagraph.
4780: 64 61 74 61 73 65 74 2e 70 61 72 61 5f 6e 75 6d  dataset.para_num
4790: 29 2e 73 74 79 6c 65 2e 61 6e 69 6d 61 74 69 6f  ).style.animatio
47a0: 6e 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20  n = "";.        
47b0: 73 65 74 54 69 6d 65 6f 75 74 28 28 29 20 3d 3e  setTimeout(() =>
47c0: 20 7b 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e   { this.xParent.
47d0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
47e0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63  grammalecte_chec
47f0: 6b 22 2b 78 50 61 72 61 67 72 61 70 68 2e 64 61  k"+xParagraph.da
4800: 74 61 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e  taset.para_num).
4810: 73 74 79 6c 65 2e 62 6f 78 53 68 61 64 6f 77 20  style.boxShadow 
4820: 3d 20 22 22 3b 20 7d 2c 20 35 30 30 29 3b 0a 20  = ""; }, 500);. 
4830: 20 20 20 7d 0a 0a 20 20 20 20 61 70 70 6c 79 53     }..    applyS
4840: 75 67 67 65 73 74 69 6f 6e 20 28 73 4e 6f 64 65  uggestion (sNode
4850: 53 75 67 67 49 64 29 20 7b 20 2f 2f 20 73 75 67  SuggId) { // sug
4860: 67 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a  g.        try {.
4870: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
4880: 73 45 72 72 6f 72 49 64 20 3d 20 74 68 69 73 2e  sErrorId = this.
4890: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
48a0: 6e 74 42 79 49 64 28 73 4e 6f 64 65 53 75 67 67  ntById(sNodeSugg
48b0: 49 64 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f  Id).dataset.erro
48c0: 72 5f 69 64 3b 0a 20 20 20 20 20 20 20 20 20 20  r_id;.          
48d0: 20 20 2f 2f 6c 65 74 20 73 50 61 72 61 4e 75 6d    //let sParaNum
48e0: 20 3d 20 73 45 72 72 6f 72 49 64 2e 73 6c 69 63   = sErrorId.slic
48f0: 65 28 30 2c 20 73 45 72 72 6f 72 49 64 2e 69 6e  e(0, sErrorId.in
4900: 64 65 78 4f 66 28 22 2d 22 29 29 3b 0a 20 20 20  dexOf("-"));.   
4910: 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f           let xNo
4920: 64 65 45 72 72 20 3d 20 74 68 69 73 2e 78 50 61  deErr = this.xPa
4930: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
4940: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
4950: 5f 65 72 72 22 20 2b 20 73 45 72 72 6f 72 49 64  _err" + sErrorId
4960: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  );.            x
4970: 4e 6f 64 65 45 72 72 2e 74 65 78 74 43 6f 6e 74  NodeErr.textCont
4980: 65 6e 74 20 3d 20 74 68 69 73 2e 78 50 61 72 65  ent = this.xPare
4990: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
49a0: 64 28 73 4e 6f 64 65 53 75 67 67 49 64 29 2e 74  d(sNodeSuggId).t
49b0: 65 78 74 43 6f 6e 74 65 6e 74 3b 0a 20 20 20 20  extContent;.    
49c0: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72          xNodeErr
49d0: 2e 63 6c 61 73 73 4e 61 6d 65 20 3d 20 22 67 72  .className = "gr
49e0: 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72 6f 72 5f  ammalecte_error_
49f0: 63 6f 72 72 65 63 74 65 64 22 3b 0a 20 20 20 20  corrected";.    
4a00: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72          xNodeErr
4a10: 2e 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65  .removeAttribute
4a20: 28 22 73 74 79 6c 65 22 29 3b 0a 20 20 20 20 20  ("style");.     
4a30: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 6f 6f         this.oToo
4a40: 6c 74 69 70 2e 68 69 64 65 28 29 3b 0a 20 20 20  ltip.hide();.   
4a50: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65           this.re
4a60: 63 68 65 63 6b 50 61 72 61 67 72 61 70 68 28 70  checkParagraph(p
4a70: 61 72 73 65 49 6e 74 28 73 45 72 72 6f 72 49 64  arseInt(sErrorId
4a80: 2e 73 6c 69 63 65 28 30 2c 20 73 45 72 72 6f 72  .slice(0, sError
4a90: 49 64 2e 69 6e 64 65 78 4f 66 28 22 2d 22 29 29  Id.indexOf("-"))
4aa0: 2c 20 31 30 29 29 3b 0a 20 20 20 20 20 20 20 20  , 10));.        
4ab0: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
4ac0: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
4ad0: 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a    showError(e);.
4ae0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
4af0: 0a 20 20 20 20 69 67 6e 6f 72 65 45 72 72 6f 72  .    ignoreError
4b00: 20 28 73 49 67 6e 6f 72 65 42 75 74 74 6f 6e 49   (sIgnoreButtonI
4b10: 64 29 20 7b 20 20 2f 2f 20 69 67 6e 6f 72 65 0a  d) {  // ignore.
4b20: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
4b30: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 73 45            let sE
4b40: 72 72 6f 72 49 64 20 3d 20 74 68 69 73 2e 78 50  rrorId = this.xP
4b50: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
4b60: 42 79 49 64 28 73 49 67 6e 6f 72 65 42 75 74 74  ById(sIgnoreButt
4b70: 6f 6e 49 64 29 2e 64 61 74 61 73 65 74 2e 65 72  onId).dataset.er
4b80: 72 6f 72 5f 69 64 3b 0a 20 20 20 20 20 20 20 20  ror_id;.        
4b90: 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 45 72 72      let xNodeErr
4ba0: 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e   = this.xParent.
4bb0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
4bc0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72 22  grammalecte_err"
4bd0: 20 2b 20 73 45 72 72 6f 72 49 64 29 3b 0a 20 20   + sErrorId);.  
4be0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61            this.a
4bf0: 49 67 6e 6f 72 65 64 45 72 72 6f 72 73 2e 61 64  IgnoredErrors.ad
4c00: 64 28 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73  d(xNodeErr.datas
4c10: 65 74 2e 69 67 6e 6f 72 65 64 5f 6b 65 79 29 3b  et.ignored_key);
4c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f  .            xNo
4c30: 64 65 45 72 72 2e 63 6c 61 73 73 4e 61 6d 65 20  deErr.className 
4c40: 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 65  = "grammalecte_e
4c50: 72 72 6f 72 5f 69 67 6e 6f 72 65 64 22 3b 0a 20  rror_ignored";. 
4c60: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
4c70: 6f 54 6f 6f 6c 74 69 70 2e 68 69 64 65 28 29 3b  oTooltip.hide();
4c80: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
4c90: 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20     catch (e) {. 
4ca0: 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 45             showE
4cb0: 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20  rror(e);.       
4cc0: 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75   }.    }..    pu
4cd0: 72 67 65 54 65 78 74 20 28 73 54 65 78 74 29 20  rgeText (sText) 
4ce0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  {.        return
4cf0: 20 73 54 65 78 74 2e 72 65 70 6c 61 63 65 28 2f   sText.replace(/
4d00: 26 6e 62 73 70 3b 2f 67 2c 20 22 20 22 29 2e 72  &nbsp;/g, " ").r
4d10: 65 70 6c 61 63 65 28 2f 26 6c 74 3b 2f 67 2c 20  eplace(/&lt;/g, 
4d20: 22 3c 22 29 2e 72 65 70 6c 61 63 65 28 2f 26 67  "<").replace(/&g
4d30: 74 3b 2f 67 2c 20 22 3e 22 29 2e 72 65 70 6c 61  t;/g, ">").repla
4d40: 63 65 28 2f 26 61 6d 70 3b 2f 67 2c 20 22 26 22  ce(/&amp;/g, "&"
4d50: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 64  );.    }..    ad
4d60: 64 53 75 6d 6d 61 72 79 20 28 29 20 7b 0a 20 20  dSummary () {.  
4d70: 20 20 20 20 20 20 2f 2f 20 74 6f 64 6f 0a 20 20        // todo.  
4d80: 20 20 7d 0a 0a 20 20 20 20 61 64 64 4d 65 73 73    }..    addMess
4d90: 61 67 65 54 6f 47 43 50 61 6e 65 6c 20 28 73 4d  ageToGCPanel (sM
4da0: 65 73 73 61 67 65 29 20 7b 0a 20 20 20 20 20 20  essage) {.      
4db0: 20 20 6c 65 74 20 78 4e 6f 64 65 20 3d 20 6f 47    let xNode = oG
4dc0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
4dd0: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
4de0: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
4df0: 6c 65 63 74 65 5f 70 61 6e 65 6c 5f 66 6c 6f 77  lecte_panel_flow
4e00: 5f 6d 65 73 73 61 67 65 22 2c 20 74 65 78 74 43  _message", textC
4e10: 6f 6e 74 65 6e 74 3a 20 73 4d 65 73 73 61 67 65  ontent: sMessage
4e20: 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  });.        this
4e30: 2e 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e  .xParagraphList.
4e40: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64  appendChild(xNod
4e50: 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63  e);.    }..    c
4e60: 6f 70 79 54 65 78 74 54 6f 43 6c 69 70 62 6f 61  opyTextToClipboa
4e70: 72 64 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  rd () {.        
4e80: 74 68 69 73 2e 73 74 61 72 74 57 61 69 74 49 63  this.startWaitIc
4e90: 6f 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 74 72  on();.        tr
4ea0: 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  y {.            
4eb0: 6c 65 74 20 73 54 65 78 74 20 3d 20 22 22 3b 0a  let sText = "";.
4ec0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
4ed0: 61 6e 73 20 75 6e 20 73 68 61 64 6f 77 2c 20 3c  ans un shadow, <
4ee0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
4ef0: 45 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73 73 4e  ElementsByClassN
4f00: 61 6d 65 3e 20 6e e2 80 99 65 78 69 73 74 65 20  ame> n...existe 
4f10: 70 61 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20  pas..           
4f20: 20 6c 65 74 20 78 45 6c 65 6d 20 3d 20 74 68 69   let xElem = thi
4f30: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
4f40: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
4f50: 6c 65 63 74 65 5f 67 63 5f 70 61 6e 65 6c 22 29  lecte_gc_panel")
4f60: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ;.            fo
4f70: 72 20 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20  r (let xNode of 
4f80: 78 45 6c 65 6d 2e 67 65 74 45 6c 65 6d 65 6e 74  xElem.getElement
4f90: 73 42 79 43 6c 61 73 73 4e 61 6d 65 28 22 67 72  sByClassName("gr
4fa0: 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72 61 67 72  ammalecte_paragr
4fb0: 61 70 68 22 29 29 20 7b 0a 20 20 20 20 20 20 20  aph")) {.       
4fc0: 20 20 20 20 20 20 20 20 20 73 54 65 78 74 20 2b           sText +
4fd0: 3d 20 78 4e 6f 64 65 2e 74 65 78 74 43 6f 6e 74  = xNode.textCont
4fe0: 65 6e 74 20 2b 20 22 5c 6e 22 3b 0a 20 20 20 20  ent + "\n";.    
4ff0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
5000: 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 6e 64        this._send
5010: 54 65 78 74 54 6f 43 6c 69 70 62 6f 61 72 64 28  TextToClipboard(
5020: 73 54 65 78 74 29 3b 0a 20 20 20 20 20 20 20 20  sText);.        
5030: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
5040: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
5050: 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a    showError(e);.
5060: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
5070: 20 20 74 68 69 73 2e 73 74 6f 70 57 61 69 74 49    this.stopWaitI
5080: 63 6f 6e 28 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  con();.    }..  
5090: 20 20 5f 73 65 6e 64 54 65 78 74 54 6f 43 6c 69    _sendTextToCli
50a0: 70 62 6f 61 72 64 20 28 73 54 65 78 74 29 20 20  pboard (sText)  
50b0: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  {.        this.x
50c0: 43 6c 69 70 62 6f 61 72 64 42 75 74 74 6f 6e 2e  ClipboardButton.
50d0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 e2  textContent = ".
50e0: 87 92 20 70 72 65 73 73 65 2d 70 61 70 69 65 72  .. presse-papier
50f0: 73 22 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  s";.        if (
5100: 6e 61 76 69 67 61 74 6f 72 2e 63 6c 69 70 62 6f  navigator.clipbo
5110: 61 72 64 20 26 26 20 6e 61 76 69 67 61 74 6f 72  ard && navigator
5120: 2e 63 6c 69 70 62 6f 61 72 64 2e 77 72 69 74 65  .clipboard.write
5130: 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20  Text) {.        
5140: 20 20 20 20 2f 2f 20 46 69 72 65 66 6f 78 20 36      // Firefox 6
5150: 33 2b 2c 20 43 68 72 6f 6d 65 20 36 36 2b 0a 20  3+, Chrome 66+. 
5160: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 6f             // Wo
5170: 72 6b 69 6e 67 20 64 72 61 66 74 3a 20 68 74 74  rking draft: htt
5180: 70 73 3a 2f 2f 64 65 76 65 6c 6f 70 65 72 2e 6d  ps://developer.m
5190: 6f 7a 69 6c 6c 61 2e 6f 72 67 2f 65 6e 2d 55 53  ozilla.org/en-US
51a0: 2f 64 6f 63 73 2f 57 65 62 2f 41 50 49 2f 43 6c  /docs/Web/API/Cl
51b0: 69 70 62 6f 61 72 64 0a 20 20 20 20 20 20 20 20  ipboard.        
51c0: 20 20 20 20 6e 61 76 69 67 61 74 6f 72 2e 63 6c      navigator.cl
51d0: 69 70 62 6f 61 72 64 2e 77 72 69 74 65 54 65 78  ipboard.writeTex
51e0: 74 28 73 54 65 78 74 29 0a 20 20 20 20 20 20 20  t(sText).       
51f0: 20 20 20 20 20 2e 74 68 65 6e 28 0a 20 20 20 20       .then(.    
5200: 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73              (res
5210: 29 20 3d 3e 20 7b 20 77 69 6e 64 6f 77 2e 73 65  ) => { window.se
5220: 74 54 69 6d 65 6f 75 74 28 28 29 20 3d 3e 20 7b  tTimeout(() => {
5230: 20 74 68 69 73 2e 78 43 6c 69 70 62 6f 61 72 64   this.xClipboard
5240: 42 75 74 74 6f 6e 2e 74 65 78 74 43 6f 6e 74 65  Button.textConte
5250: 6e 74 20 3d 20 22 f0 9f 93 8b 22 3b 20 7d 2c 20  nt = "...."; }, 
5260: 32 30 30 30 29 3b 20 7d 0a 20 20 20 20 20 20 20  2000); }.       
5270: 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 20       ).         
5280: 20 20 20 2e 63 61 74 63 68 28 0a 20 20 20 20 20     .catch(.     
5290: 20 20 20 20 20 20 20 20 20 20 20 28 65 29 20 3d             (e) =
52a0: 3e 20 7b 20 63 6f 6e 73 6f 6c 65 2e 65 72 72 6f  > { console.erro
52b0: 72 28 65 29 3b 20 74 68 69 73 2e 5f 73 65 6e 64  r(e); this._send
52c0: 54 65 78 74 54 6f 43 6c 69 70 62 6f 61 72 64 28  TextToClipboard(
52d0: 73 54 65 78 74 29 3b 20 7d 0a 20 20 20 20 20 20  sText); }.      
52e0: 20 20 20 20 20 20 29 3b 0a 20 20 20 20 20 20 20        );.       
52f0: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
5300: 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 6e 64        this._send
5310: 54 65 78 74 54 6f 43 6c 69 70 62 6f 61 72 64 46  TextToClipboardF
5320: 61 6c 6c 62 61 63 6b 28 73 54 65 78 74 29 3b 0a  allback(sText);.
5330: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
5340: 0a 20 20 20 20 5f 73 65 6e 64 54 65 78 74 54 6f  .    _sendTextTo
5350: 43 6c 69 70 62 6f 61 72 64 46 61 6c 6c 62 61 63  ClipboardFallbac
5360: 6b 20 28 73 54 65 78 74 29 20 7b 0a 20 20 20 20  k (sText) {.    
5370: 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20      try {.      
5380: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f        console.lo
5390: 67 28 22 73 65 6e 64 20 74 65 78 74 20 74 6f 20  g("send text to 
53a0: 63 6c 69 70 62 6f 61 72 64 20 66 61 6c 6c 62 61  clipboard fallba
53b0: 63 6b 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ck");.          
53c0: 20 20 2f 2f 20 43 6f 70 79 20 74 6f 20 63 6c 69    // Copy to cli
53d0: 70 62 6f 61 72 64 20 66 61 6c 6c 62 61 63 6b 0a  pboard fallback.
53e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72              // r
53f0: 65 63 69 70 65 20 66 72 6f 6d 20 68 74 74 70 73  ecipe from https
5400: 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 64  ://github.com/md
5410: 6e 2f 77 65 62 65 78 74 65 6e 73 69 6f 6e 73 2d  n/webextensions-
5420: 65 78 61 6d 70 6c 65 73 2f 62 6c 6f 62 2f 6d 61  examples/blob/ma
5430: 73 74 65 72 2f 63 6f 6e 74 65 78 74 2d 6d 65 6e  ster/context-men
5440: 75 2d 63 6f 70 79 2d 6c 69 6e 6b 2d 77 69 74 68  u-copy-link-with
5450: 2d 74 79 70 65 73 2f 63 6c 69 70 62 6f 61 72 64  -types/clipboard
5460: 2d 68 65 6c 70 65 72 2e 6a 73 0a 20 20 20 20 20  -helper.js.     
5470: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20         function 
5480: 73 65 74 43 6c 69 70 62 6f 61 72 64 44 61 74 61  setClipboardData
5490: 20 28 78 45 76 65 6e 74 29 20 7b 0a 20 20 20 20   (xEvent) {.    
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
54b0: 6d 65 6e 74 2e 72 65 6d 6f 76 65 45 76 65 6e 74  ment.removeEvent
54c0: 4c 69 73 74 65 6e 65 72 28 22 63 6f 70 79 22 2c  Listener("copy",
54d0: 20 73 65 74 43 6c 69 70 62 6f 61 72 64 44 61 74   setClipboardDat
54e0: 61 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20  a, true);.      
54f0: 20 20 20 20 20 20 20 20 20 20 78 45 76 65 6e 74            xEvent
5500: 2e 73 74 6f 70 49 6d 6d 65 64 69 61 74 65 50 72  .stopImmediatePr
5510: 6f 70 61 67 61 74 69 6f 6e 28 29 3b 0a 20 20 20  opagation();.   
5520: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 45 76               xEv
5530: 65 6e 74 2e 70 72 65 76 65 6e 74 44 65 66 61 75  ent.preventDefau
5540: 6c 74 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  lt();.          
5550: 20 20 20 20 20 20 78 45 76 65 6e 74 2e 63 6c 69        xEvent.cli
5560: 70 62 6f 61 72 64 44 61 74 61 2e 73 65 74 44 61  pboardData.setDa
5570: 74 61 28 22 74 65 78 74 2f 70 6c 61 69 6e 22 2c  ta("text/plain",
5580: 20 73 54 65 78 74 29 3b 0a 20 20 20 20 20 20 20   sText);.       
5590: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
55a0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 61 64 64 45     document.addE
55b0: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6f  ventListener("co
55c0: 70 79 22 2c 20 73 65 74 43 6c 69 70 62 6f 61 72  py", setClipboar
55d0: 64 44 61 74 61 2c 20 74 72 75 65 29 3b 0a 20 20  dData, true);.  
55e0: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
55f0: 6e 74 2e 65 78 65 63 43 6f 6d 6d 61 6e 64 28 22  nt.execCommand("
5600: 63 6f 70 79 22 29 3b 0a 20 20 20 20 20 20 20 20  copy");.        
5610: 20 20 20 20 77 69 6e 64 6f 77 2e 73 65 74 54 69      window.setTi
5620: 6d 65 6f 75 74 28 28 29 20 3d 3e 20 7b 20 74 68  meout(() => { th
5630: 69 73 2e 78 43 6c 69 70 62 6f 61 72 64 42 75 74  is.xClipboardBut
5640: 74 6f 6e 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  ton.textContent 
5650: 3d 20 22 f0 9f 93 8b 22 3b 20 7d 2c 20 32 30 30  = "...."; }, 200
5660: 30 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  0);.        }.  
5670: 20 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20        catch (e) 
5680: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  {.            co
5690: 6e 73 6f 6c 65 2e 65 72 72 6f 72 28 65 29 3b 0a  nsole.error(e);.
56a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
56b0: 0a 20 20 20 20 2f 2f 20 4c 65 78 69 63 6f 67 72  .    // Lexicogr
56c0: 61 70 68 65 72 0a 0a 20 20 20 20 63 6c 65 61 72  apher..    clear
56d0: 4c 65 78 69 63 6f 67 72 61 70 68 65 72 20 28 29  Lexicographer ()
56e0: 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   {.        this.
56f0: 6e 4c 78 67 43 6f 75 6e 74 20 3d 20 30 3b 0a 20  nLxgCount = 0;. 
5700: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 68         while (th
5710: 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74  is.xLxgPanelCont
5720: 65 6e 74 2e 66 69 72 73 74 43 68 69 6c 64 29 20  ent.firstChild) 
5730: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
5740: 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74  is.xLxgPanelCont
5750: 65 6e 74 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28  ent.removeChild(
5760: 74 68 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f  this.xLxgPanelCo
5770: 6e 74 65 6e 74 2e 66 69 72 73 74 43 68 69 6c 64  ntent.firstChild
5780: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
5790: 20 7d 0a 0a 20 20 20 20 61 64 64 4c 78 67 53 65   }..    addLxgSe
57a0: 70 61 72 61 74 6f 72 20 28 73 54 65 78 74 29 20  parator (sText) 
57b0: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68  {.        if (th
57c0: 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74  is.xLxgPanelCont
57d0: 65 6e 74 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  ent.textContent 
57e0: 21 3d 3d 20 22 22 29 20 7b 0a 20 20 20 20 20 20  !== "") {.      
57f0: 20 20 20 20 20 20 74 68 69 73 2e 78 4c 78 67 50        this.xLxgP
5800: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65  anelContent.appe
5810: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
5820: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
5830: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
5840: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
5850: 6c 78 67 5f 73 65 70 61 72 61 74 6f 72 22 2c 20  lxg_separator", 
5860: 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 73 54 65  textContent: sTe
5870: 78 74 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 7d  xt}));.        }
5880: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 64 64 4d  .    }..    addM
5890: 65 73 73 61 67 65 54 6f 4c 78 67 50 61 6e 65 6c  essageToLxgPanel
58a0: 20 28 73 4d 65 73 73 61 67 65 29 20 7b 0a 20 20   (sMessage) {.  
58b0: 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 20        let xNode 
58c0: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
58d0: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
58e0: 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72   {className: "gr
58f0: 61 6d 6d 61 6c 65 63 74 65 5f 70 61 6e 65 6c 5f  ammalecte_panel_
5900: 66 6c 6f 77 5f 6d 65 73 73 61 67 65 22 2c 20 74  flow_message", t
5910: 65 78 74 43 6f 6e 74 65 6e 74 3a 20 73 4d 65 73  extContent: sMes
5920: 73 61 67 65 7d 29 3b 0a 20 20 20 20 20 20 20 20  sage});.        
5930: 74 68 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f  this.xLxgPanelCo
5940: 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c  ntent.appendChil
5950: 64 28 78 4e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a  d(xNode);.    }.
5960: 0a 20 20 20 20 61 64 64 4c 69 73 74 4f 66 54 6f  .    addListOfTo
5970: 6b 65 6e 73 20 28 6c 54 6f 6b 65 6e 29 20 7b 0a  kens (lToken) {.
5980: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
5990: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 54            if (lT
59a0: 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 20  oken) {.        
59b0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 4c 78          this.nLx
59c0: 67 43 6f 75 6e 74 20 2b 3d 20 31 3b 0a 20 20 20  gCount += 1;.   
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74               let
59e0: 20 78 54 6f 6b 65 6e 4c 69 73 74 20 3d 20 6f 47   xTokenList = oG
59f0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
5a00: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
5a10: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
5a20: 6c 65 63 74 65 5f 6c 78 67 5f 6c 69 73 74 5f 6f  lecte_lxg_list_o
5a30: 66 5f 74 6f 6b 65 6e 73 22 7d 29 3b 0a 20 20 20  f_tokens"});.   
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 54 6f               xTo
5a50: 6b 65 6e 4c 69 73 74 2e 61 70 70 65 6e 64 43 68  kenList.appendCh
5a60: 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65  ild(oGrammalecte
5a70: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
5a80: 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22  ", {className: "
5a90: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f  grammalecte_lxg_
5aa0: 6c 69 73 74 5f 6e 75 6d 22 2c 20 74 65 78 74 43  list_num", textC
5ab0: 6f 6e 74 65 6e 74 3a 20 74 68 69 73 2e 6e 4c 78  ontent: this.nLx
5ac0: 67 43 6f 75 6e 74 7d 29 29 3b 0a 20 20 20 20 20  gCount}));.     
5ad0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
5ae0: 6c 65 74 20 6f 54 6f 6b 65 6e 20 6f 66 20 6c 54  let oToken of lT
5af0: 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 20  oken) {.        
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 78 54 6f 6b              xTok
5b10: 65 6e 4c 69 73 74 2e 61 70 70 65 6e 64 43 68 69  enList.appendChi
5b20: 6c 64 28 74 68 69 73 2e 5f 63 72 65 61 74 65 54  ld(this._createT
5b30: 6f 6b 65 6e 42 6c 6f 63 6b 28 6f 54 6f 6b 65 6e  okenBlock(oToken
5b40: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ));.            
5b50: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
5b60: 20 20 20 20 20 20 74 68 69 73 2e 78 4c 78 67 50        this.xLxgP
5b70: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65  anelContent.appe
5b80: 6e 64 43 68 69 6c 64 28 78 54 6f 6b 65 6e 4c 69  ndChild(xTokenLi
5b90: 73 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  st);.           
5ba0: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20   }.        }.   
5bb0: 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b       catch (e) {
5bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f  .            sho
5bd0: 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20  wError(e);.     
5be0: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
5bf0: 5f 63 72 65 61 74 65 54 6f 6b 65 6e 42 6c 6f 63  _createTokenBloc
5c00: 6b 20 28 6f 54 6f 6b 65 6e 29 20 7b 0a 20 20 20  k (oToken) {.   
5c10: 20 20 20 20 20 6c 65 74 20 78 54 6f 6b 65 6e 42       let xTokenB
5c20: 6c 6f 63 6b 20 3d 20 6f 47 72 61 6d 6d 61 6c 65  lock = oGrammale
5c30: 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22  cte.createNode("
5c40: 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65  div", {className
5c50: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c  : "grammalecte_l
5c60: 78 67 5f 74 6f 6b 65 6e 5f 62 6c 6f 63 6b 22 7d  xg_token_block"}
5c70: 29 3b 0a 20 20 20 20 20 20 20 20 78 54 6f 6b 65  );.        xToke
5c80: 6e 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69  nBlock.appendChi
5c90: 6c 64 28 74 68 69 73 2e 5f 63 72 65 61 74 65 54  ld(this._createT
5ca0: 6f 6b 65 6e 44 65 73 63 72 28 6f 54 6f 6b 65 6e  okenDescr(oToken
5cb0: 29 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ));.        if (
5cc0: 6f 54 6f 6b 65 6e 2e 61 53 75 62 45 6c 65 6d 29  oToken.aSubElem)
5cd0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c   {.            l
5ce0: 65 74 20 78 53 75 62 42 6c 6f 63 6b 20 3d 20 6f  et xSubBlock = o
5cf0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
5d00: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
5d10: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
5d20: 61 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e  alecte_lxg_token
5d30: 5f 73 75 62 62 6c 6f 63 6b 22 7d 29 3b 0a 20 20  _subblock"});.  
5d40: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c            for (l
5d50: 65 74 20 6f 53 75 62 45 6c 65 6d 20 6f 66 20 6f  et oSubElem of o
5d60: 54 6f 6b 65 6e 2e 61 53 75 62 45 6c 65 6d 29 20  Token.aSubElem) 
5d70: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
5d80: 20 20 78 53 75 62 42 6c 6f 63 6b 2e 61 70 70 65    xSubBlock.appe
5d90: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 5f 63 72  ndChild(this._cr
5da0: 65 61 74 65 54 6f 6b 65 6e 44 65 73 63 72 28 6f  eateTokenDescr(o
5db0: 53 75 62 45 6c 65 6d 29 29 3b 0a 20 20 20 20 20  SubElem));.     
5dc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
5dd0: 20 20 20 20 20 78 54 6f 6b 65 6e 42 6c 6f 63 6b       xTokenBlock
5de0: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 53 75  .appendChild(xSu
5df0: 62 42 6c 6f 63 6b 29 3b 0a 20 20 20 20 20 20 20  bBlock);.       
5e00: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   }.        retur
5e10: 6e 20 78 54 6f 6b 65 6e 42 6c 6f 63 6b 3b 0a 20  n xTokenBlock;. 
5e20: 20 20 20 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74     }..    _creat
5e30: 65 54 6f 6b 65 6e 44 65 73 63 72 20 28 6f 54 6f  eTokenDescr (oTo
5e40: 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 74  ken) {.        t
5e50: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
5e60: 20 6c 65 74 20 78 54 6f 6b 65 6e 44 65 73 63 72   let xTokenDescr
5e70: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
5e80: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
5e90: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
5ea0: 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 74  rammalecte_lxg_t
5eb0: 6f 6b 65 6e 5f 64 65 73 63 72 22 7d 29 3b 0a 20  oken_descr"});. 
5ec0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
5ed0: 54 6f 6b 65 6e 2e 73 54 79 70 65 20 3d 3d 20 22  Token.sType == "
5ee0: 4c 4f 43 50 22 29 20 7b 0a 20 20 20 20 20 20 20  LOCP") {.       
5ef0: 20 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e 44           xTokenD
5f00: 65 73 63 72 2e 61 70 70 65 6e 64 43 68 69 6c 64  escr.appendChild
5f10: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72  (oGrammalecte.cr
5f20: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
5f30: 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61  {className: "gra
5f40: 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b  mmalecte_lxg_tok
5f50: 65 6e 5f 61 6c 73 6f 22 2c 20 74 65 78 74 43 6f  en_also", textCo
5f60: 6e 74 65 6e 74 3a 20 22 70 6f 73 73 69 62 6c 65  ntent: "possible
5f70: 6d 65 6e 74 20 e2 80 ba 20 22 7d 29 29 3b 0a 20  ment ... "}));. 
5f80: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
5f90: 20 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e 44           xTokenD
5fa0: 65 73 63 72 2e 61 70 70 65 6e 64 43 68 69 6c 64  escr.appendChild
5fb0: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72  (oGrammalecte.cr
5fc0: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
5fd0: 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61  {className: "gra
5fe0: 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b  mmalecte_lxg_tok
5ff0: 65 6e 20 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c  en grammalecte_l
6000: 78 67 5f 74 6f 6b 65 6e 5f 22 20 2b 20 6f 54 6f  xg_token_" + oTo
6010: 6b 65 6e 2e 73 54 79 70 65 2c 20 74 65 78 74 43  ken.sType, textC
6020: 6f 6e 74 65 6e 74 3a 20 6f 54 6f 6b 65 6e 2e 73  ontent: oToken.s
6030: 56 61 6c 75 65 7d 29 29 3b 0a 20 20 20 20 20 20  Value}));.      
6040: 20 20 20 20 20 20 78 54 6f 6b 65 6e 44 65 73 63        xTokenDesc
6050: 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47  r.appendChild(oG
6060: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
6070: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
6080: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
6090: 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f  lecte_lxg_token_
60a0: 63 6f 6c 6f 6e 22 2c 20 74 65 78 74 43 6f 6e 74  colon", textCont
60b0: 65 6e 74 3a 20 22 3a 22 7d 29 29 3b 0a 20 20 20  ent: ":"}));.   
60c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 54 6f           if (oTo
60d0: 6b 65 6e 2e 61 4c 61 62 65 6c 2e 6c 65 6e 67 74  ken.aLabel.lengt
60e0: 68 20 3d 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20  h === 1) {.     
60f0: 20 20 20 20 20 20 20 20 20 20 20 78 54 6f 6b 65             xToke
6100: 6e 44 65 73 63 72 2e 61 70 70 65 6e 64 43 68 69  nDescr.appendChi
6110: 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e  ld(oGrammalecte.
6120: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
6130: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
6140: 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 6d  rammalecte_lxg_m
6150: 6f 72 70 68 5f 65 6c 65 6d 5f 69 6e 6c 69 6e 65  orph_elem_inline
6160: 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20  ", textContent: 
6170: 6f 54 6f 6b 65 6e 2e 61 4c 61 62 65 6c 5b 30 5d  oToken.aLabel[0]
6180: 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  }));.           
6190: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
61a0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 4d            let xM
61b0: 6f 72 70 68 4c 69 73 74 20 3d 20 6f 47 72 61 6d  orphList = oGram
61c0: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
61d0: 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73  de("div", {class
61e0: 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63  Name: "grammalec
61f0: 74 65 5f 6c 78 67 5f 6d 6f 72 70 68 5f 6c 69 73  te_lxg_morph_lis
6200: 74 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  t"});.          
6210: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 73        for (let s
6220: 4c 61 62 65 6c 20 6f 66 20 6f 54 6f 6b 65 6e 2e  Label of oToken.
6230: 61 4c 61 62 65 6c 29 20 7b 0a 20 20 20 20 20 20  aLabel) {.      
6240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 4d                xM
6250: 6f 72 70 68 4c 69 73 74 2e 61 70 70 65 6e 64 43  orphList.appendC
6260: 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74  hild(oGrammalect
6270: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
6280: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
6290: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67  "grammalecte_lxg
62a0: 5f 6d 6f 72 70 68 5f 65 6c 65 6d 22 2c 20 74 65  _morph_elem", te
62b0: 78 74 43 6f 6e 74 65 6e 74 3a 20 22 e2 80 a2 e2  xtContent: "....
62c0: 80 af 22 20 2b 20 73 4c 61 62 65 6c 7d 29 29 3b  .." + sLabel}));
62d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
62e0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
62f0: 20 20 20 78 54 6f 6b 65 6e 44 65 73 63 72 2e 61     xTokenDescr.a
6300: 70 70 65 6e 64 43 68 69 6c 64 28 78 4d 6f 72 70  ppendChild(xMorp
6310: 68 4c 69 73 74 29 3b 0a 20 20 20 20 20 20 20 20  hList);.        
6320: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
6330: 20 20 72 65 74 75 72 6e 20 78 54 6f 6b 65 6e 44    return xTokenD
6340: 65 73 63 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a  escr;.        }.
6350: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65          catch (e
6360: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
6370: 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20  showError(e);.  
6380: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20        }.    }.. 
6390: 20 20 20 73 65 74 48 69 64 64 65 6e 20 28 73 43     setHidden (sC
63a0: 6c 61 73 73 2c 20 62 48 69 64 64 65 6e 29 20 7b  lass, bHidden) {
63b0: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 50 61  .        let xPa
63c0: 6e 65 6c 43 6f 6e 74 65 6e 74 20 3d 20 74 68 69  nelContent = thi
63d0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
63e0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
63f0: 6c 65 63 74 65 5f 70 61 6e 65 6c 5f 63 6f 6e 74  lecte_panel_cont
6400: 65 6e 74 27 29 3b 0a 20 20 20 20 20 20 20 20 66  ent');.        f
6410: 6f 72 20 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66  or (let xNode of
6420: 20 78 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 67   xPanelContent.g
6430: 65 74 45 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73  etElementsByClas
6440: 73 4e 61 6d 65 28 73 43 6c 61 73 73 29 29 20 7b  sName(sClass)) {
6450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f  .            xNo
6460: 64 65 2e 68 69 64 64 65 6e 20 3d 20 62 48 69 64  de.hidden = bHid
6470: 64 65 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  den;.        }. 
6480: 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 43 6f 6e     }..    // Con
6490: 6a 75 67 75 65 75 72 0a 0a 20 20 20 20 6c 69 73  jugueur..    lis
64a0: 74 65 6e 43 6f 6e 6a 20 28 29 20 7b 0a 20 20 20  tenConj () {.   
64b0: 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 62       if (!this.b
64c0: 4c 69 73 74 65 6e 43 6f 6e 6a 29 20 7b 0a 20 20  ListenConj) {.  
64d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 62 75 74            // but
64e0: 74 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  ton.            
64f0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
6500: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
6510: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 62 75  mmalecte_conj_bu
6520: 74 74 6f 6e 27 29 2e 61 64 64 45 76 65 6e 74 4c  tton').addEventL
6530: 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c  istener("click",
6540: 20 28 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e 63   (e) => { this.c
6550: 6f 6e 6a 75 67 61 74 65 56 65 72 62 28 29 3b 20  onjugateVerb(); 
6560: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
6570: 2f 2f 20 74 65 78 74 20 66 69 65 6c 64 0a 20 20  // text field.  
6580: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
6590: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
65a0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
65b0: 74 65 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 61  te_conj_verb').a
65c0: 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28  ddEventListener(
65d0: 22 63 68 61 6e 67 65 22 2c 20 28 65 29 20 3d 3e  "change", (e) =>
65e0: 20 7b 20 74 68 69 73 2e 63 6f 6e 6a 75 67 61 74   { this.conjugat
65f0: 65 56 65 72 62 28 29 3b 20 7d 29 3b 0a 20 20 20  eVerb(); });.   
6600: 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 70 74 69           // opti
6610: 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  ons.            
6620: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
6630: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
6640: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 6e  mmalecte_conj_on
6650: 65 67 27 29 2e 61 64 64 45 76 65 6e 74 4c 69 73  eg').addEventLis
6660: 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c 20 28  tener("click", (
6670: 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e 75 70 64  e) => { this.upd
6680: 61 74 65 43 6f 6e 6a 28 29 3b 20 7d 29 3b 0a 20  ateConj(); });. 
6690: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
66a0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
66b0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
66c0: 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e  cte_conj_opro').
66d0: 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72  addEventListener
66e0: 28 22 63 6c 69 63 6b 22 2c 20 28 65 29 20 3d 3e  ("click", (e) =>
66f0: 20 7b 20 74 68 69 73 2e 75 70 64 61 74 65 43 6f   { this.updateCo
6700: 6e 6a 28 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20  nj(); });.      
6710: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
6720: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
6730: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
6740: 6f 6e 6a 5f 6f 69 6e 74 27 29 2e 61 64 64 45 76  onj_oint').addEv
6750: 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c 69  entListener("cli
6760: 63 6b 22 2c 20 28 65 29 20 3d 3e 20 7b 20 74 68  ck", (e) => { th
6770: 69 73 2e 75 70 64 61 74 65 43 6f 6e 6a 28 29 3b  is.updateConj();
6780: 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20   });.           
6790: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
67a0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
67b0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f  ammalecte_conj_o
67c0: 66 65 6d 27 29 2e 61 64 64 45 76 65 6e 74 4c 69  fem').addEventLi
67d0: 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c 20  stener("click", 
67e0: 28 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e 75 70  (e) => { this.up
67f0: 64 61 74 65 43 6f 6e 6a 28 29 3b 20 7d 29 3b 0a  dateConj(); });.
6800: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
6810: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
6820: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
6830: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29  ecte_conj_otco')
6840: 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65  .addEventListene
6850: 72 28 22 63 6c 69 63 6b 22 2c 20 28 65 29 20 3d  r("click", (e) =
6860: 3e 20 7b 20 74 68 69 73 2e 75 70 64 61 74 65 43  > { this.updateC
6870: 6f 6e 6a 28 29 3b 20 7d 29 3b 0a 20 20 20 20 20  onj(); });.     
6880: 20 20 20 20 20 20 20 74 68 69 73 2e 62 4c 69 73         this.bLis
6890: 74 65 6e 43 6f 6e 6a 20 3d 20 74 72 75 65 3b 0a  tenConj = true;.
68a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
68b0: 0a 20 20 20 20 63 6f 6e 6a 75 67 61 74 65 56 65  .    conjugateVe
68c0: 72 62 20 28 73 56 65 72 62 3d 22 22 29 20 7b 0a  rb (sVerb="") {.
68d0: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
68e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73            if (!s
68f0: 56 65 72 62 29 20 7b 0a 20 20 20 20 20 20 20 20  Verb) {.        
6900: 20 20 20 20 20 20 20 20 73 56 65 72 62 20 3d 20          sVerb = 
6910: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
6920: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
6930: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76 65  mmalecte_conj_ve
6940: 72 62 27 29 2e 76 61 6c 75 65 3b 0a 20 20 20 20  rb').value;.    
6950: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
6960: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
6970: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
6980: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
6990: 6f 6e 6a 5f 6f 6e 65 67 27 29 2e 63 68 65 63 6b  onj_oneg').check
69a0: 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20  ed = false;.    
69b0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
69c0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
69d0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
69e0: 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65  _conj_opro').che
69f0: 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20  cked = false;.  
6a00: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
6a10: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
6a20: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
6a30: 74 65 5f 63 6f 6e 6a 5f 6f 69 6e 74 27 29 2e 63  te_conj_oint').c
6a40: 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a  hecked = false;.
6a50: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
6a60: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
6a70: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
6a80: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29  ecte_conj_otco')
6a90: 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65  .checked = false
6aa0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
6ab0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
6ac0: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
6ad0: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 66 65 6d  alecte_conj_ofem
6ae0: 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c  ').checked = fal
6af0: 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  se;.            
6b00: 2f 2f 20 72 65 71 75 65 73 74 20 61 6e 61 6c 79  // request analy
6b10: 7a 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20  zing.           
6b20: 20 73 56 65 72 62 20 3d 20 73 56 65 72 62 2e 74   sVerb = sVerb.t
6b30: 72 69 6d 28 29 2e 74 6f 4c 6f 77 65 72 43 61 73  rim().toLowerCas
6b40: 65 28 29 2e 72 65 70 6c 61 63 65 28 2f e2 80 99  e().replace(/...
6b50: 2f 67 2c 20 22 27 22 29 2e 72 65 70 6c 61 63 65  /g, "'").replace
6b60: 28 2f 20 20 2b 2f 67 2c 20 22 20 22 29 3b 0a 20  (/  +/g, " ");. 
6b70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
6b80: 56 65 72 62 29 20 7b 0a 20 20 20 20 20 20 20 20  Verb) {.        
6b90: 20 20 20 20 20 20 20 20 69 66 20 28 73 56 65 72          if (sVer
6ba0: 62 2e 73 74 61 72 74 73 57 69 74 68 28 22 6e 65  b.startsWith("ne
6bb0: 20 70 61 73 20 22 29 29 20 7b 0a 20 20 20 20 20   pas ")) {.     
6bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
6bd0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
6be0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
6bf0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 6e 65  malecte_conj_one
6c00: 67 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 74 72  g').checked = tr
6c10: 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue;.            
6c20: 20 20 20 20 20 20 20 20 73 56 65 72 62 20 3d 20          sVerb = 
6c30: 73 56 65 72 62 2e 73 6c 69 63 65 28 37 29 3b 0a  sVerb.slice(7);.
6c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c50: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
6c60: 20 20 69 66 20 28 73 56 65 72 62 2e 73 74 61 72    if (sVerb.star
6c70: 74 73 57 69 74 68 28 22 73 65 20 22 29 29 20 7b  tsWith("se ")) {
6c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6c90: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
6ca0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
6cb0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
6cc0: 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65  nj_opro').checke
6cd0: 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20  d = true;.      
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 56                sV
6cf0: 65 72 62 20 3d 20 73 56 65 72 62 2e 73 6c 69 63  erb = sVerb.slic
6d00: 65 28 33 29 3b 0a 20 20 20 20 20 20 20 20 20 20  e(3);.          
6d10: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
6d20: 28 73 56 65 72 62 2e 73 74 61 72 74 73 57 69 74  (sVerb.startsWit
6d30: 68 28 22 73 27 22 29 29 20 7b 0a 20 20 20 20 20  h("s'")) {.     
6d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
6d50: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
6d60: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
6d70: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72  malecte_conj_opr
6d80: 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 74 72  o').checked = tr
6d90: 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue;.            
6da0: 20 20 20 20 20 20 20 20 73 56 65 72 62 20 3d 20          sVerb = 
6db0: 73 56 65 72 62 2e 73 6c 69 63 65 28 32 29 3b 0a  sVerb.slice(2);.
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6dd0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
6de0: 20 20 69 66 20 28 73 56 65 72 62 2e 65 6e 64 73    if (sVerb.ends
6df0: 57 69 74 68 28 22 3f 22 29 29 20 7b 0a 20 20 20  With("?")) {.   
6e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e10: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
6e20: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
6e30: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f  ammalecte_conj_o
6e40: 69 6e 74 27 29 2e 63 68 65 63 6b 65 64 20 3d 20  int').checked = 
6e50: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20  true;.          
6e60: 20 20 20 20 20 20 20 20 20 20 73 56 65 72 62 20            sVerb 
6e70: 3d 20 73 56 65 72 62 2e 73 6c 69 63 65 28 30 2c  = sVerb.slice(0,
6e80: 2d 31 29 2e 74 72 69 6d 28 29 3b 0a 20 20 20 20  -1).trim();.    
6e90: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
6ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
6eb0: 20 28 73 56 65 72 62 29 20 7b 0a 20 20 20 20 20   (sVerb) {.     
6ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
6ed0: 68 69 73 2e 73 56 65 72 62 20 3d 20 73 56 65 72  his.sVerb = sVer
6ee0: 62 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  b;.             
6ef0: 20 20 20 20 20 20 20 74 68 69 73 2e 75 70 64 61         this.upda
6f00: 74 65 43 6f 6e 6a 28 74 72 75 65 29 3b 0a 20 20  teConj(true);.  
6f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
6f20: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
6f30: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
6f40: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
6f50: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
6f60: 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e  cte_conj_verb').
6f70: 76 61 6c 75 65 20 3d 20 22 22 3b 0a 20 20 20 20  value = "";.    
6f80: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
6f90: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
6fa0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61      }.        ca
6fb0: 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20  tch (e) {.      
6fc0: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 65 72        console.er
6fd0: 72 6f 72 28 65 2e 66 69 6c 65 4e 61 6d 65 20 2b  ror(e.fileName +
6fe0: 20 22 5c 6e 22 20 2b 20 65 2e 6e 61 6d 65 20 2b   "\n" + e.name +
6ff0: 20 22 5c 6e 6c 69 6e 65 3a 20 22 20 2b 20 65 2e   "\nline: " + e.
7000: 6c 69 6e 65 4e 75 6d 62 65 72 20 2b 20 22 5c 6e  lineNumber + "\n
7010: 22 20 2b 20 65 2e 6d 65 73 73 61 67 65 29 3b 0a  " + e.message);.
7020: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
7030: 0a 20 20 20 20 75 70 64 61 74 65 43 6f 6e 6a 20  .    updateConj 
7040: 28 62 53 74 61 72 74 3d 66 61 6c 73 65 29 20 7b  (bStart=false) {
7050: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 62 50 72  .        let bPr
7060: 6f 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74  o = this.xParent
7070: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
7080: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
7090: 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65 64  j_opro').checked
70a0: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 62 4e  ;.        let bN
70b0: 65 67 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e  eg = this.xParen
70c0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
70d0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
70e0: 6e 6a 5f 6f 6e 65 67 27 29 2e 63 68 65 63 6b 65  nj_oneg').checke
70f0: 64 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 62  d;.        let b
7100: 54 70 73 43 6f 20 3d 20 74 68 69 73 2e 78 50 61  TpsCo = this.xPa
7110: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7120: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7130: 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29 2e 63 68 65  _conj_otco').che
7140: 63 6b 65 64 3b 0a 20 20 20 20 20 20 20 20 6c 65  cked;.        le
7150: 74 20 62 49 6e 74 20 3d 20 74 68 69 73 2e 78 50  t bInt = this.xP
7160: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
7170: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
7180: 65 5f 63 6f 6e 6a 5f 6f 69 6e 74 27 29 2e 63 68  e_conj_oint').ch
7190: 65 63 6b 65 64 3b 0a 20 20 20 20 20 20 20 20 6c  ecked;.        l
71a0: 65 74 20 62 46 65 6d 20 3d 20 74 68 69 73 2e 78  et bFem = this.x
71b0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
71c0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
71d0: 74 65 5f 63 6f 6e 6a 5f 6f 66 65 6d 27 29 2e 63  te_conj_ofem').c
71e0: 68 65 63 6b 65 64 3b 0a 20 20 20 20 20 20 20 20  hecked;.        
71f0: 69 66 20 28 74 68 69 73 2e 73 56 65 72 62 29 20  if (this.sVerb) 
7200: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 47  {.            xG
7210: 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70  rammalectePort.p
7220: 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20 20  ostMessage({.   
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 43 6f               sCo
7240: 6d 6d 61 6e 64 3a 20 22 67 65 74 56 65 72 62 22  mmand: "getVerb"
7250: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
7260: 20 20 64 50 61 72 61 6d 3a 20 7b 73 56 65 72 62    dParam: {sVerb
7270: 3a 20 74 68 69 73 2e 73 56 65 72 62 2c 20 62 50  : this.sVerb, bP
7280: 72 6f 3a 20 62 50 72 6f 2c 20 62 4e 65 67 3a 20  ro: bPro, bNeg: 
7290: 62 4e 65 67 2c 20 62 54 70 73 43 6f 3a 20 62 54  bNeg, bTpsCo: bT
72a0: 70 73 43 6f 2c 20 62 49 6e 74 3a 20 62 49 6e 74  psCo, bInt: bInt
72b0: 2c 20 62 46 65 6d 3a 20 62 46 65 6d 7d 2c 0a 20  , bFem: bFem},. 
72c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
72d0: 49 6e 66 6f 3a 20 7b 62 53 74 61 72 74 3a 20 62  Info: {bStart: b
72e0: 53 74 61 72 74 7d 0a 20 20 20 20 20 20 20 20 20  Start}.         
72f0: 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d     });.        }
7300: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6f 6e 6a  .    }..    conj
7310: 75 67 61 74 65 57 69 74 68 20 28 6f 56 65 72 62  ugateWith (oVerb
7320: 2c 20 6f 43 6f 6e 6a 54 61 62 6c 65 29 20 7b 0a  , oConjTable) {.
7330: 20 20 20 20 20 20 20 20 2f 2f 20 66 75 6e 63 74          // funct
7340: 69 6f 6e 20 63 61 6c 6c 65 64 20 77 68 65 6e 20  ion called when 
7350: 72 65 73 75 6c 74 73 20 63 6f 6d 65 20 66 72 6f  results come fro
7360: 6d 20 74 68 65 20 57 6f 72 6b 65 72 0a 20 20 20  m the Worker.   
7370: 20 20 20 20 20 69 66 20 28 6f 56 65 72 62 29 20       if (oVerb) 
7380: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
7390: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
73a0: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
73b0: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62  alecte_conj_verb
73c0: 27 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d  ').style.color =
73d0: 20 22 23 39 39 39 39 39 39 22 3b 0a 20 20 20 20   "#999999";.    
73e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
73f0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7400: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7410: 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 76 61 6c  _conj_verb').val
7420: 75 65 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20  ue = "";.       
7430: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7440: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7450: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7460: 6e 6a 5f 76 65 72 62 5f 74 69 74 6c 65 27 29 2e  nj_verb_title').
7470: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 56  textContent = oV
7480: 65 72 62 2e 73 56 65 72 62 3b 0a 20 20 20 20 20  erb.sVerb;.     
7490: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
74a0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
74b0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
74c0: 63 6f 6e 6a 5f 76 65 72 62 5f 69 6e 66 6f 27 29  conj_verb_info')
74d0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
74e0: 56 65 72 62 2e 73 49 6e 66 6f 3b 0a 20 20 20 20  Verb.sInfo;.    
74f0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
7500: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7510: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7520: 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27 29  _conj_opro_lbl')
7530: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
7540: 56 65 72 62 2e 73 50 72 6f 4c 61 62 65 6c 3b 0a  Verb.sProLabel;.
7550: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7560: 6f 56 65 72 62 2e 62 55 6e 63 6f 6d 70 6c 65 74  oVerb.bUncomplet
7570: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
7580: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7590: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
75a0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
75b0: 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65  nj_opro').checke
75c0: 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20  d = false;.     
75d0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
75e0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
75f0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
7600: 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e  cte_conj_opro').
7610: 64 69 73 61 62 6c 65 64 20 3d 20 74 72 75 65 3b  disabled = true;
7620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7630: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
7640: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
7650: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f  ammalecte_conj_o
7660: 70 72 6f 5f 6c 62 6c 27 29 2e 73 74 79 6c 65 2e  pro_lbl').style.
7670: 63 6f 6c 6f 72 20 3d 20 22 23 43 43 43 22 3b 0a  color = "#CCC";.
7680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7690: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
76a0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
76b0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74  mmalecte_conj_ot
76c0: 63 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 66  co').checked = f
76d0: 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20  alse;.          
76e0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
76f0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
7700: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
7710: 6f 6e 6a 5f 6f 74 63 6f 27 29 2e 64 69 73 61 62  onj_otco').disab
7720: 6c 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20  led = true;.    
7730: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7740: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
7750: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7760: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 5f 6c  ecte_conj_otco_l
7770: 62 6c 27 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72  bl').style.color
7780: 20 3d 20 22 23 43 43 43 22 3b 0a 20 20 20 20 20   = "#CCC";.     
7790: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
77a0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
77b0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
77c0: 63 74 65 5f 63 6f 6e 6a 5f 6e 6f 74 65 27 29 2e  cte_conj_note').
77d0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 43  textContent = "C
77e0: 65 20 76 65 72 62 65 20 6e e2 80 99 61 20 70 61  e verbe n...a pa
77f0: 73 20 65 6e 63 6f 72 65 20 c3 a9 74 c3 a9 20 76  s encore ..t.. v
7800: c3 a9 72 69 66 69 c3 a9 2e 20 43 e2 80 99 65 73  ..rifi... C...es
7810: 74 20 70 6f 75 72 71 75 6f 69 20 6c 65 73 20 6f  t pourquoi les o
7820: 70 74 69 6f 6e 73 20 e2 80 9c 70 72 6f 6e 6f 6d  ptions ...pronom
7830: 69 6e 61 6c e2 80 9d 20 65 74 20 e2 80 9c 74 65  inal... et ...te
7840: 6d 70 73 20 63 6f 6d 70 6f 73 c3 a9 73 e2 80 9d  mps compos..s...
7850: 20 73 6f 6e 74 20 64 c3 a9 73 61 63 74 69 76 c3   sont d..sactiv.
7860: a9 65 73 2e 22 3b 0a 20 20 20 20 20 20 20 20 20  .es.";.         
7870: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20     } else {.    
7880: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7890: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
78a0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
78b0: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29  ecte_conj_otco')
78c0: 2e 64 69 73 61 62 6c 65 64 20 3d 20 66 61 6c 73  .disabled = fals
78d0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e;.             
78e0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
78f0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
7900: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
7910: 5f 6f 74 63 6f 5f 6c 62 6c 27 29 2e 73 74 79 6c  _otco_lbl').styl
7920: 65 2e 63 6f 6c 6f 72 20 3d 20 22 23 30 30 30 22  e.color = "#000"
7930: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
7940: 20 20 69 66 20 28 6f 56 65 72 62 2e 6e 50 72 6f    if (oVerb.nPro
7950: 6e 6f 6d 69 6e 61 62 6c 65 20 3d 3d 20 30 29 20  nominable == 0) 
7960: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
7970: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
7980: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
7990: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
79a0: 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b  onj_opro').check
79b0: 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20  ed = false;.    
79c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79d0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
79e0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
79f0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70  mmalecte_conj_op
7a00: 72 6f 27 29 2e 64 69 73 61 62 6c 65 64 20 3d 20  ro').disabled = 
7a10: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20  false;.         
7a20: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
7a30: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
7a40: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
7a50: 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c 62  cte_conj_opro_lb
7a60: 6c 27 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20  l').style.color 
7a70: 3d 20 22 23 30 30 30 22 3b 0a 20 20 20 20 20 20  = "#000";.      
7a80: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
7a90: 20 69 66 20 28 6f 56 65 72 62 2e 6e 50 72 6f 6e   if (oVerb.nPron
7aa0: 6f 6d 69 6e 61 62 6c 65 20 3d 3d 20 31 29 20 7b  ominable == 1) {
7ab0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7ac0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7ad0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7ae0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7af0: 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65  nj_opro').checke
7b00: 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20  d = true;.      
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
7b20: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
7b30: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
7b40: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f  alecte_conj_opro
7b50: 27 29 2e 64 69 73 61 62 6c 65 64 20 3d 20 74 72  ').disabled = tr
7b60: 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue;.            
7b70: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
7b80: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7b90: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7ba0: 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27 29  _conj_opro_lbl')
7bb0: 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22  .style.color = "
7bc0: 23 43 43 43 22 3b 0a 20 20 20 20 20 20 20 20 20  #CCC";.         
7bd0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 20         } else { 
7be0: 2f 2f 20 2d 31 20 6f 72 20 31 20 6f 72 20 65 72  // -1 or 1 or er
7bf0: 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  ror.            
7c00: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
7c10: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7c20: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7c30: 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65  _conj_opro').che
7c40: 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20  cked = false;.  
7c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c60: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
7c70: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
7c80: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
7c90: 6f 70 72 6f 27 29 2e 64 69 73 61 62 6c 65 64 20  opro').disabled 
7ca0: 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20  = true;.        
7cb0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7cc0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
7cd0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7ce0: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c  ecte_conj_opro_l
7cf0: 62 6c 27 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72  bl').style.color
7d00: 20 3d 20 22 23 43 43 43 22 3b 0a 20 20 20 20 20   = "#CCC";.     
7d10: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
7d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
7d30: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
7d40: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
7d50: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6e 6f 74 65 27  lecte_conj_note'
7d60: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
7d70: 22 e2 9d a6 22 3b 0a 20 20 20 20 20 20 20 20 20  "...";.         
7d80: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
7d90: 20 74 68 69 73 2e 64 69 73 70 6c 61 79 43 6f 6e   this.displayCon
7da0: 6a 28 6f 43 6f 6e 6a 54 61 62 6c 65 29 3b 0a 20  j(oConjTable);. 
7db0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a         } else {.
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7dd0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
7de0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7df0: 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62 27 29  ecte_conj_verb')
7e00: 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22  .style.color = "
7e10: 23 42 42 34 34 31 31 22 3b 0a 20 20 20 20 20 20  #BB4411";.      
7e20: 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64    }.    }..    d
7e30: 69 73 70 6c 61 79 43 6f 6e 6a 20 28 6f 43 6f 6e  isplayConj (oCon
7e40: 6a 54 61 62 6c 65 29 20 7b 0a 20 20 20 20 20 20  jTable) {.      
7e50: 20 20 2f 2f 20 66 75 6e 63 74 69 6f 6e 20 63 61    // function ca
7e60: 6c 6c 65 64 20 77 68 65 6e 20 72 65 73 75 6c 74  lled when result
7e70: 73 20 63 6f 6d 65 20 66 72 6f 6d 20 74 68 65 20  s come from the 
7e80: 57 6f 72 6b 65 72 0a 20 20 20 20 20 20 20 20 69  Worker.        i
7e90: 66 20 28 6f 43 6f 6e 6a 54 61 62 6c 65 20 3d 3d  f (oConjTable ==
7ea0: 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20  = null) {.      
7eb0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20        return;.  
7ec0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
7ed0: 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20  try {.          
7ee0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
7ef0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
7f00: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
7f10: 76 65 72 62 27 29 2e 54 65 78 74 20 3d 20 22 22  verb').Text = ""
7f20: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ;.            //
7f30: 20 69 6e 66 69 6e 69 74 69 66 0a 20 20 20 20 20   infinitif.     
7f40: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
7f50: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
7f60: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
7f70: 63 6f 6e 6a 5f 69 6e 66 69 27 29 2e 74 65 78 74  conj_infi').text
7f80: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
7f90: 61 62 6c 65 5b 22 69 6e 66 69 22 5d 20 7c 7c 20  able["infi"] || 
7fa0: 22 c2 a0 22 3b 20 2f 2f 20 73 6f 6d 65 74 68 69  ".."; // somethi
7fb0: 6e 67 20 6f 72 20 6e 62 73 70 0a 20 20 20 20 20  ng or nbsp.     
7fc0: 20 20 20 20 20 20 20 2f 2f 20 70 61 72 74 69 63         // partic
7fd0: 69 70 65 20 70 72 c3 a9 73 65 6e 74 0a 20 20 20  ipe pr..sent.   
7fe0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
7ff0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
8000: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
8010: 65 5f 63 6f 6e 6a 5f 70 70 72 65 27 29 2e 74 65  e_conj_ppre').te
8020: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8030: 6a 54 61 62 6c 65 5b 22 70 70 72 65 22 5d 20 7c  jTable["ppre"] |
8040: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
8050: 20 20 20 20 2f 2f 20 70 61 72 74 69 63 69 70 65      // participe
8060: 73 20 70 61 73 73 c3 a9 73 0a 20 20 20 20 20 20  s pass..s.      
8070: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
8080: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
8090: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
80a0: 6f 6e 6a 5f 70 70 61 73 31 27 29 2e 74 65 78 74  onj_ppas1').text
80b0: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
80c0: 61 62 6c 65 5b 22 70 70 61 73 31 22 5d 20 7c 7c  able["ppas1"] ||
80d0: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
80e0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
80f0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
8100: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
8110: 5f 70 70 61 73 32 27 29 2e 74 65 78 74 43 6f 6e  _ppas2').textCon
8120: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8130: 65 5b 22 70 70 61 73 32 22 5d 20 7c 7c 20 22 c2  e["ppas2"] || ".
8140: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
8150: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
8160: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
8170: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 70  mmalecte_conj_pp
8180: 61 73 33 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  as3').textConten
8190: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
81a0: 70 70 61 73 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b  ppas3"] || "..";
81b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
81c0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
81d0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
81e0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 70 61 73 34  lecte_conj_ppas4
81f0: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
8200: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 70 70 61   oConjTable["ppa
8210: 73 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  s4"] || "..";.  
8220: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6d 70            // imp
8230: c3 a9 72 61 74 69 66 0a 20 20 20 20 20 20 20 20  ..ratif.        
8240: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8250: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8260: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8270: 6a 5f 74 5f 69 6d 70 65 27 29 2e 74 65 78 74 43  j_t_impe').textC
8280: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8290: 62 6c 65 5b 22 74 5f 69 6d 70 65 22 5d 20 7c 7c  ble["t_impe"] ||
82a0: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
82b0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
82c0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
82d0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
82e0: 5f 69 6d 70 65 31 27 29 2e 74 65 78 74 43 6f 6e  _impe1').textCon
82f0: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8300: 65 5b 22 69 6d 70 65 31 22 5d 20 7c 7c 20 22 c2  e["impe1"] || ".
8310: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
8320: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
8330: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
8340: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 6d  mmalecte_conj_im
8350: 70 65 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  pe2').textConten
8360: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
8370: 69 6d 70 65 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b  impe2"] || "..";
8380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
8390: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
83a0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
83b0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 6d 70 65 33  lecte_conj_impe3
83c0: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
83d0: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 6d 70   oConjTable["imp
83e0: 65 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  e3"] || "..";.  
83f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 72 c3            // pr.
8400: a9 73 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20  .sent.          
8410: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8420: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8430: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8440: 74 5f 69 70 72 65 27 29 2e 74 65 78 74 43 6f 6e  t_ipre').textCon
8450: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8460: 65 5b 22 74 5f 69 70 72 65 22 5d 20 7c 7c 20 22  e["t_ipre"] || "
8470: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
8480: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
8490: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
84a0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69  ammalecte_conj_i
84b0: 70 72 65 31 27 29 2e 74 65 78 74 43 6f 6e 74 65  pre1').textConte
84c0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
84d0: 22 69 70 72 65 31 22 5d 20 7c 7c 20 22 c2 a0 22  "ipre1"] || ".."
84e0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
84f0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
8500: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
8510: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 72 65  alecte_conj_ipre
8520: 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  2').textContent 
8530: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70  = oConjTable["ip
8540: 72 65 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  re2"] || "..";. 
8550: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
8560: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
8570: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
8580: 63 74 65 5f 63 6f 6e 6a 5f 69 70 72 65 33 27 29  cte_conj_ipre3')
8590: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
85a0: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70 72 65 33  ConjTable["ipre3
85b0: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
85c0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
85d0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
85e0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
85f0: 5f 63 6f 6e 6a 5f 69 70 72 65 34 27 29 2e 74 65  _conj_ipre4').te
8600: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8610: 6a 54 61 62 6c 65 5b 22 69 70 72 65 34 22 5d 20  jTable["ipre4"] 
8620: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8630: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
8640: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8650: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8660: 6e 6a 5f 69 70 72 65 35 27 29 2e 74 65 78 74 43  nj_ipre5').textC
8670: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8680: 62 6c 65 5b 22 69 70 72 65 35 22 5d 20 7c 7c 20  ble["ipre5"] || 
8690: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
86a0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
86b0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
86c0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
86d0: 69 70 72 65 36 27 29 2e 74 65 78 74 43 6f 6e 74  ipre6').textCont
86e0: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
86f0: 5b 22 69 70 72 65 36 22 5d 20 7c 7c 20 22 c2 a0  ["ipre6"] || "..
8700: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ";.            /
8710: 2f 20 69 6d 70 61 72 66 61 69 74 0a 20 20 20 20  / imparfait.    
8720: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8730: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8740: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
8750: 5f 63 6f 6e 6a 5f 74 5f 69 69 6d 70 27 29 2e 74  _conj_t_iimp').t
8760: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
8770: 6e 6a 54 61 62 6c 65 5b 22 74 5f 69 69 6d 70 22  njTable["t_iimp"
8780: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
8790: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
87a0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
87b0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
87c0: 63 6f 6e 6a 5f 69 69 6d 70 31 27 29 2e 74 65 78  conj_iimp1').tex
87d0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
87e0: 54 61 62 6c 65 5b 22 69 69 6d 70 31 22 5d 20 7c  Table["iimp1"] |
87f0: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
8800: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8810: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8820: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8830: 6a 5f 69 69 6d 70 32 27 29 2e 74 65 78 74 43 6f  j_iimp2').textCo
8840: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
8850: 6c 65 5b 22 69 69 6d 70 32 22 5d 20 7c 7c 20 22  le["iimp2"] || "
8860: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
8870: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
8880: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
8890: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69  ammalecte_conj_i
88a0: 69 6d 70 33 27 29 2e 74 65 78 74 43 6f 6e 74 65  imp3').textConte
88b0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
88c0: 22 69 69 6d 70 33 22 5d 20 7c 7c 20 22 c2 a0 22  "iimp3"] || ".."
88d0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
88e0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
88f0: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
8900: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d 70  alecte_conj_iimp
8910: 34 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  4').textContent 
8920: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 69  = oConjTable["ii
8930: 6d 70 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  mp4"] || "..";. 
8940: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
8950: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
8960: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
8970: 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d 70 35 27 29  cte_conj_iimp5')
8980: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
8990: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 69 6d 70 35  ConjTable["iimp5
89a0: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
89b0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
89c0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
89d0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
89e0: 5f 63 6f 6e 6a 5f 69 69 6d 70 36 27 29 2e 74 65  _conj_iimp6').te
89f0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8a00: 6a 54 61 62 6c 65 5b 22 69 69 6d 70 36 22 5d 20  jTable["iimp6"] 
8a10: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8a20: 20 20 20 20 20 2f 2f 20 70 61 73 73 c3 a9 20 73       // pass.. s
8a30: 69 6d 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20  imple.          
8a40: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8a50: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8a60: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8a70: 74 5f 69 70 73 69 27 29 2e 74 65 78 74 43 6f 6e  t_ipsi').textCon
8a80: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8a90: 65 5b 22 74 5f 69 70 73 69 22 5d 20 7c 7c 20 22  e["t_ipsi"] || "
8aa0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
8ab0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
8ac0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
8ad0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69  ammalecte_conj_i
8ae0: 70 73 69 31 27 29 2e 74 65 78 74 43 6f 6e 74 65  psi1').textConte
8af0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
8b00: 22 69 70 73 69 31 22 5d 20 7c 7c 20 22 c2 a0 22  "ipsi1"] || ".."
8b10: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
8b20: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
8b30: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
8b40: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 73 69  alecte_conj_ipsi
8b50: 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  2').textContent 
8b60: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70  = oConjTable["ip
8b70: 73 69 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  si2"] || "..";. 
8b80: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
8b90: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
8ba0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
8bb0: 63 74 65 5f 63 6f 6e 6a 5f 69 70 73 69 33 27 29  cte_conj_ipsi3')
8bc0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
8bd0: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70 73 69 33  ConjTable["ipsi3
8be0: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
8bf0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8c00: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8c10: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
8c20: 5f 63 6f 6e 6a 5f 69 70 73 69 34 27 29 2e 74 65  _conj_ipsi4').te
8c30: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8c40: 6a 54 61 62 6c 65 5b 22 69 70 73 69 34 22 5d 20  jTable["ipsi4"] 
8c50: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8c60: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
8c70: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8c80: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8c90: 6e 6a 5f 69 70 73 69 35 27 29 2e 74 65 78 74 43  nj_ipsi5').textC
8ca0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8cb0: 62 6c 65 5b 22 69 70 73 69 35 22 5d 20 7c 7c 20  ble["ipsi5"] || 
8cc0: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8cd0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8ce0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8cf0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8d00: 69 70 73 69 36 27 29 2e 74 65 78 74 43 6f 6e 74  ipsi6').textCont
8d10: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8d20: 5b 22 69 70 73 69 36 22 5d 20 7c 7c 20 22 c2 a0  ["ipsi6"] || "..
8d30: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ";.            /
8d40: 2f 20 66 75 74 75 72 0a 20 20 20 20 20 20 20 20  / futur.        
8d50: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8d60: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8d70: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8d80: 6a 5f 74 5f 69 66 75 74 27 29 2e 74 65 78 74 43  j_t_ifut').textC
8d90: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8da0: 62 6c 65 5b 22 74 5f 69 66 75 74 22 5d 20 7c 7c  ble["t_ifut"] ||
8db0: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
8dc0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
8dd0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
8de0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
8df0: 5f 69 66 75 74 31 27 29 2e 74 65 78 74 43 6f 6e  _ifut1').textCon
8e00: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8e10: 65 5b 22 69 66 75 74 31 22 5d 20 7c 7c 20 22 c2  e["ifut1"] || ".
8e20: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
8e30: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
8e40: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
8e50: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 66  mmalecte_conj_if
8e60: 75 74 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  ut2').textConten
8e70: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
8e80: 69 66 75 74 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b  ifut2"] || "..";
8e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
8ea0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
8eb0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
8ec0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 66 75 74 33  lecte_conj_ifut3
8ed0: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
8ee0: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 66 75   oConjTable["ifu
8ef0: 74 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  t3"] || "..";.  
8f00: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8f10: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
8f20: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
8f30: 74 65 5f 63 6f 6e 6a 5f 69 66 75 74 34 27 29 2e  te_conj_ifut4').
8f40: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
8f50: 6f 6e 6a 54 61 62 6c 65 5b 22 69 66 75 74 34 22  onjTable["ifut4"
8f60: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
8f70: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
8f80: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
8f90: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
8fa0: 63 6f 6e 6a 5f 69 66 75 74 35 27 29 2e 74 65 78  conj_ifut5').tex
8fb0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
8fc0: 54 61 62 6c 65 5b 22 69 66 75 74 35 22 5d 20 7c  Table["ifut5"] |
8fd0: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
8fe0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8ff0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9000: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9010: 6a 5f 69 66 75 74 36 27 29 2e 74 65 78 74 43 6f  j_ifut6').textCo
9020: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
9030: 6c 65 5b 22 69 66 75 74 36 22 5d 20 7c 7c 20 22  le["ifut6"] || "
9040: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
9050: 20 2f 2f 20 43 6f 6e 64 69 74 69 6f 6e 6e 65 6c   // Conditionnel
9060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9070: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9080: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9090: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 63 6f 6e  lecte_conj_t_con
90a0: 64 61 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  da').textContent
90b0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 74   = oConjTable["t
90c0: 5f 63 6f 6e 64 61 22 5d 20 7c 7c 20 22 c2 a0 22  _conda"] || ".."
90d0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
90e0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
90f0: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
9100: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64  alecte_conj_cond
9110: 61 31 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  a1').textContent
9120: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63   = oConjTable["c
9130: 6f 6e 64 61 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b  onda1"] || "..";
9140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9150: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9160: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9170: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61  lecte_conj_conda
9180: 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  2').textContent 
9190: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f  = oConjTable["co
91a0: 6e 64 61 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  nda2"] || "..";.
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
91c0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
91d0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
91e0: 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 33  ecte_conj_conda3
91f0: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
9200: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e   oConjTable["con
9210: 64 61 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  da3"] || "..";. 
9220: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
9230: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
9240: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
9250: 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 34 27  cte_conj_conda4'
9260: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
9270: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64  oConjTable["cond
9280: 61 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  a4"] || "..";.  
9290: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
92a0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
92b0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
92c0: 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 35 27 29  te_conj_conda5')
92d0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
92e0: 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 61  ConjTable["conda
92f0: 35 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  5"] || "..";.   
9300: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
9310: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
9320: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
9330: 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 36 27 29 2e  e_conj_conda6').
9340: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
9350: 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 61 36  onjTable["conda6
9360: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
9370: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
9380: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
9390: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
93a0: 5f 63 6f 6e 6a 5f 74 5f 63 6f 6e 64 62 27 29 2e  _conj_t_condb').
93b0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
93c0: 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f 63 6f 6e 64  onjTable["t_cond
93d0: 62 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  b"] || "..";.   
93e0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
93f0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
9400: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
9410: 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 62 31 27 29 2e  e_conj_condb1').
9420: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
9430: 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 62 31  onjTable["condb1
9440: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
9450: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
9460: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
9470: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
9480: 5f 63 6f 6e 6a 5f 63 6f 6e 64 62 32 27 29 2e 74  _conj_condb2').t
9490: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
94a0: 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 62 32 22  njTable["condb2"
94b0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
94c0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
94d0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
94e0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
94f0: 63 6f 6e 6a 5f 63 6f 6e 64 62 33 27 29 2e 74 65  conj_condb3').te
9500: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
9510: 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 62 33 22 5d  jTable["condb3"]
9520: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
9530: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
9540: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
9550: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
9560: 6f 6e 6a 5f 63 6f 6e 64 62 34 27 29 2e 74 65 78  onj_condb4').tex
9570: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
9580: 54 61 62 6c 65 5b 22 63 6f 6e 64 62 34 22 5d 20  Table["condb4"] 
9590: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
95a0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
95b0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
95c0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
95d0: 6e 6a 5f 63 6f 6e 64 62 35 27 29 2e 74 65 78 74  nj_condb5').text
95e0: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
95f0: 61 62 6c 65 5b 22 63 6f 6e 64 62 35 22 5d 20 7c  able["condb5"] |
9600: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
9610: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
9620: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9630: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9640: 6a 5f 63 6f 6e 64 62 36 27 29 2e 74 65 78 74 43  j_condb6').textC
9650: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
9660: 62 6c 65 5b 22 63 6f 6e 64 62 36 22 5d 20 7c 7c  ble["condb6"] ||
9670: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
9680: 20 20 20 2f 2f 20 73 75 62 6a 6f 6e 63 74 69 66     // subjonctif
9690: 20 70 72 c3 a9 73 65 6e 74 0a 20 20 20 20 20 20   pr..sent.      
96a0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
96b0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
96c0: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
96d0: 6f 6e 6a 5f 74 5f 73 70 72 65 27 29 2e 74 65 78  onj_t_spre').tex
96e0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
96f0: 54 61 62 6c 65 5b 22 74 5f 73 70 72 65 22 5d 20  Table["t_spre"] 
9700: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
9710: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
9720: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
9730: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
9740: 6e 6a 5f 73 70 72 65 31 27 29 2e 74 65 78 74 43  nj_spre1').textC
9750: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
9760: 62 6c 65 5b 22 73 70 72 65 31 22 5d 20 7c 7c 20  ble["spre1"] || 
9770: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
9780: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
9790: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
97a0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
97b0: 73 70 72 65 32 27 29 2e 74 65 78 74 43 6f 6e 74  spre2').textCont
97c0: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
97d0: 5b 22 73 70 72 65 32 22 5d 20 7c 7c 20 22 c2 a0  ["spre2"] || "..
97e0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
97f0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
9800: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
9810: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 70 72  malecte_conj_spr
9820: 65 33 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  e3').textContent
9830: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73   = oConjTable["s
9840: 70 72 65 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  pre3"] || "..";.
9850: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
9860: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
9870: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
9880: 65 63 74 65 5f 63 6f 6e 6a 5f 73 70 72 65 34 27  ecte_conj_spre4'
9890: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
98a0: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 70 72 65  oConjTable["spre
98b0: 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  4"] || "..";.   
98c0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
98d0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
98e0: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
98f0: 65 5f 63 6f 6e 6a 5f 73 70 72 65 35 27 29 2e 74  e_conj_spre5').t
9900: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
9910: 6e 6a 54 61 62 6c 65 5b 22 73 70 72 65 35 22 5d  njTable["spre5"]
9920: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
9930: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
9940: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
9950: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
9960: 6f 6e 6a 5f 73 70 72 65 36 27 29 2e 74 65 78 74  onj_spre6').text
9970: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
9980: 61 62 6c 65 5b 22 73 70 72 65 36 22 5d 20 7c 7c  able["spre6"] ||
9990: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
99a0: 20 20 20 2f 2f 20 73 75 62 6a 6f 6e 63 74 69 66     // subjonctif
99b0: 20 69 6d 70 61 72 66 61 69 74 0a 20 20 20 20 20   imparfait.     
99c0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
99d0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
99e0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
99f0: 63 6f 6e 6a 5f 74 5f 73 69 6d 70 27 29 2e 74 65  conj_t_simp').te
9a00: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
9a10: 6a 54 61 62 6c 65 5b 22 74 5f 73 69 6d 70 22 5d  jTable["t_simp"]
9a20: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
9a30: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
9a40: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
9a50: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
9a60: 6f 6e 6a 5f 73 69 6d 70 31 27 29 2e 74 65 78 74  onj_simp1').text
9a70: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
9a80: 61 62 6c 65 5b 22 73 69 6d 70 31 22 5d 20 7c 7c  able["simp1"] ||
9a90: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
9aa0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
9ab0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
9ac0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
9ad0: 5f 73 69 6d 70 32 27 29 2e 74 65 78 74 43 6f 6e  _simp2').textCon
9ae0: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
9af0: 65 5b 22 73 69 6d 70 32 22 5d 20 7c 7c 20 22 c2  e["simp2"] || ".
9b00: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
9b10: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
9b20: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
9b30: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 69  mmalecte_conj_si
9b40: 6d 70 33 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  mp3').textConten
9b50: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
9b60: 73 69 6d 70 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b  simp3"] || "..";
9b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9b80: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9b90: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9ba0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70 34  lecte_conj_simp4
9bb0: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
9bc0: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 69 6d   oConjTable["sim
9bd0: 70 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  p4"] || "..";.  
9be0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
9bf0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
9c00: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
9c10: 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70 35 27 29 2e  te_conj_simp5').
9c20: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
9c30: 6f 6e 6a 54 61 62 6c 65 5b 22 73 69 6d 70 35 22  onjTable["simp5"
9c40: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
9c50: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
9c60: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
9c70: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
9c80: 63 6f 6e 6a 5f 73 69 6d 70 36 27 29 2e 74 65 78  conj_simp6').tex
9c90: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
9ca0: 54 61 62 6c 65 5b 22 73 69 6d 70 36 22 5d 20 7c  Table["simp6"] |
9cb0: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
9cc0: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
9cd0: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
9ce0: 20 20 63 6f 6e 73 6f 6c 65 2e 65 72 72 6f 72 28    console.error(
9cf0: 65 2e 66 69 6c 65 4e 61 6d 65 20 2b 20 22 5c 6e  e.fileName + "\n
9d00: 22 20 2b 20 65 2e 6e 61 6d 65 20 2b 20 22 5c 6e  " + e.name + "\n
9d10: 6c 69 6e 65 3a 20 22 20 2b 20 65 2e 6c 69 6e 65  line: " + e.line
9d20: 4e 75 6d 62 65 72 20 2b 20 22 5c 6e 22 20 2b 20  Number + "\n" + 
9d30: 65 2e 6d 65 73 73 61 67 65 29 3b 0a 20 20 20 20  e.message);.    
9d40: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a      }.    }.}...
9d50: 63 6c 61 73 73 20 47 72 61 6d 6d 61 6c 65 63 74  class Grammalect
9d60: 65 54 6f 6f 6c 74 69 70 20 7b 0a 0a 20 20 20 20  eTooltip {..    
9d70: 63 6f 6e 73 74 72 75 63 74 6f 72 20 28 78 50 61  constructor (xPa
9d80: 72 65 6e 74 2c 20 78 47 43 50 61 6e 65 6c 43 6f  rent, xGCPanelCo
9d90: 6e 74 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20  ntent) {.       
9da0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 20 3d 20   this.xParent = 
9db0: 78 50 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20  xParent;.       
9dc0: 20 74 68 69 73 2e 73 45 72 72 6f 72 49 64 20 3d   this.sErrorId =
9dd0: 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74   null;.        t
9de0: 68 69 73 2e 62 44 65 62 75 67 20 3d 20 66 61 6c  his.bDebug = fal
9df0: 73 65 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  se;.        this
9e00: 2e 78 54 6f 6f 6c 74 69 70 20 3d 20 6f 47 72 61  .xTooltip = oGra
9e10: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e  mmalecte.createN
9e20: 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64 3a 20  ode("div", {id: 
9e30: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f  "grammalecte_too
9e40: 6c 74 69 70 22 7d 29 3b 0a 20 20 20 20 20 20 20  ltip"});.       
9e50: 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72   this.xTooltipAr
9e60: 72 6f 77 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  row = oGrammalec
9e70: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 69  te.createNode("i
9e80: 6d 67 22 2c 20 7b 0a 20 20 20 20 20 20 20 20 20  mg", {.         
9e90: 20 20 20 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65     id: "grammale
9ea0: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 61 72 72 6f  cte_tooltip_arro
9eb0: 77 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  w",.            
9ec0: 73 72 63 3a 20 22 64 61 74 61 3a 69 6d 61 67 65  src: "data:image
9ed0: 2f 70 6e 67 3b 62 61 73 65 36 34 2c 69 56 42 4f  /png;base64,iVBO
9ee0: 52 77 30 4b 47 67 6f 41 41 41 41 4e 53 55 68 45  Rw0KGgoAAAANSUhE
9ef0: 55 67 41 41 41 41 67 41 41 41 41 49 43 41 59 41  UgAAAAgAAAAICAYA
9f00: 41 41 44 45 44 37 36 4c 41 41 41 41 42 47 64 42  AADED76LAAAABGdB
9f10: 54 55 45 41 41 4c 47 50 43 2f 78 68 42 51 41 41  TUEAALGPC/xhBQAA
9f20: 41 41 6c 77 53 46 6c 7a 41 41 41 4f 77 41 41 41  AAlwSFlzAAAOwAAA
9f30: 44 73 41 42 61 74 61 4a 43 51 41 41 41 42 6c 30  DsABataJCQAAABl0
9f40: 52 56 68 30 55 32 39 6d 64 48 64 68 63 6d 55 41  RVh0U29mdHdhcmUA
9f50: 63 47 46 70 62 6e 51 75 62 6d 56 30 49 44 51 75  cGFpbnQubmV0IDQu
9f60: 4d 43 34 78 4e 7a 4e 75 6e 32 4d 41 41 41 41 6e  MC4xNzNun2MAAAAn
9f70: 53 55 52 42 56 43 68 54 59 2f 6a 2f 2f 7a 38 63  SURBVChTY/j//z8c
9f80: 71 2f 6b 57 2f 77 64 68 5a 44 45 4d 53 58 52 46  q/kW/wdhZDEMSXRF
9f90: 57 43 56 68 47 4b 77 41 6d 77 51 79 48 6e 67 46  WCVhGKwAmwQyHngF
9fa0: 78 66 38 42 35 66 4f 47 59 66 65 46 70 59 6f 41  xf8B5fOGYfeFpYoA
9fb0: 41 41 41 41 53 55 56 4f 52 4b 35 43 59 49 49 3d  AAAASUVORK5CYII=
9fc0: 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61  ",.            a
9fd0: 6c 74 3a 20 22 5e 22 2c 0a 20 20 20 20 20 20 20  lt: "^",.       
9fe0: 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20   });.        // 
9ff0: 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20  message.        
a000: 6c 65 74 20 78 4d 65 73 73 61 67 65 42 6c 6f 63  let xMessageBloc
a010: 6b 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  k = oGrammalecte
a020: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
a030: 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c  ", {id: "grammal
a040: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6d 65 73  ecte_tooltip_mes
a050: 73 61 67 65 5f 62 6c 6f 63 6b 22 7d 29 3b 0a 20  sage_block"});. 
a060: 20 20 20 20 20 20 20 78 4d 65 73 73 61 67 65 42         xMessageB
a070: 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64  lock.appendChild
a080: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72  (oGrammalecte.cr
a090: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
a0a0: 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  {id: "grammalect
a0b0: 65 5f 74 6f 6f 6c 74 69 70 5f 72 75 6c 65 5f 69  e_tooltip_rule_i
a0c0: 64 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 78  d"}));.        x
a0d0: 4d 65 73 73 61 67 65 42 6c 6f 63 6b 2e 61 70 70  MessageBlock.app
a0e0: 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61  endChild(oGramma
a0f0: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
a100: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
a110: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
a120: 70 5f 6d 65 73 73 61 67 65 22 2c 20 74 65 78 74  p_message", text
a130: 43 6f 6e 74 65 6e 74 3a 20 22 45 72 72 65 75 72  Content: "Erreur
a140: 2e 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 74  ."}));.        t
a150: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 61 70 70  his.xTooltip.app
a160: 65 6e 64 43 68 69 6c 64 28 78 4d 65 73 73 61 67  endChild(xMessag
a170: 65 42 6c 6f 63 6b 29 3b 0a 20 20 20 20 20 20 20  eBlock);.       
a180: 20 2f 2f 20 73 75 67 67 65 73 74 69 6f 6e 73 0a   // suggestions.
a190: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f          this.xTo
a1a0: 6f 6c 74 69 70 2e 61 70 70 65 6e 64 43 68 69 6c  oltip.appendChil
a1b0: 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  d(oGrammalecte.c
a1c0: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
a1d0: 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63   {id: "grammalec
a1e0: 74 65 5f 74 6f 6f 6c 74 69 70 5f 73 75 67 67 5f  te_tooltip_sugg_
a1f0: 74 69 74 6c 65 22 2c 20 74 65 78 74 43 6f 6e 74  title", textCont
a200: 65 6e 74 3a 20 22 53 55 47 47 45 53 54 49 4f 4e  ent: "SUGGESTION
a210: 53 e2 80 af 3a 22 7d 29 29 3b 0a 20 20 20 20 20  S...:"}));.     
a220: 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70     this.xTooltip
a230: 53 75 67 67 42 6c 6f 63 6b 20 3d 20 6f 47 72 61  SuggBlock = oGra
a240: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e  mmalecte.createN
a250: 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64 3a 20  ode("div", {id: 
a260: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f  "grammalecte_too
a270: 6c 74 69 70 5f 73 75 67 67 5f 62 6c 6f 63 6b 22  ltip_sugg_block"
a280: 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  });.        this
a290: 2e 78 54 6f 6f 6c 74 69 70 2e 61 70 70 65 6e 64  .xTooltip.append
a2a0: 43 68 69 6c 64 28 74 68 69 73 2e 78 54 6f 6f 6c  Child(this.xTool
a2b0: 74 69 70 53 75 67 67 42 6c 6f 63 6b 29 3b 0a 20  tipSuggBlock);. 
a2c0: 20 20 20 20 20 20 20 2f 2f 20 61 63 74 69 6f 6e         // action
a2d0: 73 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 41  s.        let xA
a2e0: 63 74 69 6f 6e 73 20 3d 20 6f 47 72 61 6d 6d 61  ctions = oGramma
a2f0: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
a300: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
a310: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
a320: 70 5f 61 63 74 69 6f 6e 73 22 7d 29 3b 0a 20 20  p_actions"});.  
a330: 20 20 20 20 20 20 78 41 63 74 69 6f 6e 73 2e 61        xActions.a
a340: 70 70 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d  ppendChild(oGram
a350: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
a360: 64 65 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22  de("div", {id: "
a370: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
a380: 74 69 70 5f 69 67 6e 6f 72 65 22 2c 20 74 65 78  tip_ignore", tex
a390: 74 43 6f 6e 74 65 6e 74 3a 20 22 49 67 6e 6f 72  tContent: "Ignor
a3a0: 65 72 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20  er"}));.        
a3b0: 78 41 63 74 69 6f 6e 73 2e 61 70 70 65 6e 64 43  xActions.appendC
a3c0: 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74  hild(oGrammalect
a3d0: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
a3e0: 76 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61  v", {id: "gramma
a3f0: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72  lecte_tooltip_ur
a400: 6c 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a  l", textContent:
a410: 20 22 56 6f 75 6c 65 7a 2d 76 6f 75 73 20 65 6e   "Voulez-vous en
a420: 20 73 61 76 6f 69 72 20 70 6c 75 73 e2 80 af 3f   savoir plus...?
a430: e2 80 a6 22 7d 2c 20 7b 75 72 6c 3a 20 22 22 7d  ..."}, {url: ""}
a440: 29 29 3b 0a 20 20 20 20 20 20 20 20 78 41 63 74  ));.        xAct
a450: 69 6f 6e 73 2e 61 70 70 65 6e 64 43 68 69 6c 64  ions.appendChild
a460: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72  (oGrammalecte.cr
a470: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
a480: 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  {id: "grammalect
a490: 65 5f 74 6f 6f 6c 74 69 70 5f 64 62 5f 73 65 61  e_tooltip_db_sea
a4a0: 72 63 68 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e  rch", textConten
a4b0: 74 3a 20 22 20 e2 80 ba e2 80 ba e2 80 ba 20 62  t: " ......... b
a4c0: 61 73 65 20 64 65 20 64 6f 6e 6e c3 a9 65 73 22  ase de donn..es"
a4d0: 7d 2c 20 7b 75 72 6c 3a 20 22 22 7d 29 29 3b 0a  }, {url: ""}));.
a4e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f          this.xTo
a4f0: 6f 6c 74 69 70 2e 61 70 70 65 6e 64 43 68 69 6c  oltip.appendChil
a500: 64 28 78 41 63 74 69 6f 6e 73 29 3b 0a 20 20 20  d(xActions);.   
a510: 20 20 20 20 20 2f 2f 20 61 64 64 20 74 6f 6f 6c       // add tool
a520: 74 69 70 20 74 6f 20 74 68 65 20 70 61 67 65 0a  tip to the page.
a530: 20 20 20 20 20 20 20 20 78 47 43 50 61 6e 65 6c          xGCPanel
a540: 43 6f 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43 68  Content.appendCh
a550: 69 6c 64 28 74 68 69 73 2e 78 54 6f 6f 6c 74 69  ild(this.xToolti
a560: 70 29 3b 0a 20 20 20 20 20 20 20 20 78 47 43 50  p);.        xGCP
a570: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65  anelContent.appe
a580: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78 54 6f  ndChild(this.xTo
a590: 6f 6c 74 69 70 41 72 72 6f 77 29 3b 0a 20 20 20  oltipArrow);.   
a5a0: 20 7d 0a 0a 20 20 20 20 73 68 6f 77 20 28 78 50   }..    show (xP
a5b0: 61 72 61 67 72 61 70 68 2c 20 73 4e 6f 64 65 45  aragraph, sNodeE
a5c0: 72 72 6f 72 49 64 29 20 7b 20 20 2f 2f 20 65 72  rrorId) {  // er
a5d0: 72 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a  r.        try {.
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 77              // w
a5f0: 65 20 6b 69 6c 6c 20 61 75 74 6f 72 65 66 72 65  e kill autorefre
a600: 73 68 20 66 6f 72 20 73 61 66 65 74 79 0a 20 20  sh for safety.  
a610: 20 20 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77            window
a620: 2e 63 6c 65 61 72 54 69 6d 65 6f 75 74 28 70 61  .clearTimeout(pa
a630: 72 73 65 49 6e 74 28 78 50 61 72 61 67 72 61 70  rseInt(xParagrap
a640: 68 2e 64 61 74 61 73 65 74 2e 74 69 6d 65 72 5f  h.dataset.timer_
a650: 69 64 2c 20 31 30 29 29 3b 0a 20 20 20 20 20 20  id, 10));.      
a660: 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20        //.       
a670: 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 45 72       let xNodeEr
a680: 72 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74  r = this.xParent
a690: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
a6a0: 73 4e 6f 64 65 45 72 72 6f 72 49 64 29 3b 0a 20  sNodeErrorId);. 
a6b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a6c0: 73 45 72 72 6f 72 49 64 20 3d 20 78 4e 6f 64 65  sErrorId = xNode
a6d0: 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72 6f  Err.dataset.erro
a6e0: 72 5f 69 64 3b 20 2f 2f 20 77 65 20 73 74 6f 72  r_id; // we stor
a6f0: 65 20 65 72 72 6f 72 5f 69 64 20 68 65 72 65 20  e error_id here 
a700: 74 6f 20 6b 6e 6f 77 20 69 66 20 73 70 65 6c 6c  to know if spell
a710: 5f 73 75 67 67 65 73 74 69 6f 6e 73 20 61 72 65  _suggestions are
a720: 20 67 69 76 65 6e 20 74 6f 20 74 68 65 20 72 69   given to the ri
a730: 67 68 74 20 77 6f 72 64 2e 0a 20 20 20 20 20 20  ght word..      
a740: 20 20 20 20 20 20 6c 65 74 20 6e 54 6f 6f 6c 74        let nToolt
a750: 69 70 4c 65 66 74 4c 69 6d 69 74 20 3d 20 6f 47  ipLeftLimit = oG
a760: 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61  rammalecte.oGCPa
a770: 6e 65 6c 2e 67 65 74 57 69 64 74 68 28 29 20 2d  nel.getWidth() -
a780: 20 33 33 30 3b 20 2f 2f 20 70 61 72 61 67 72 61   330; // paragra
a790: 70 68 20 77 69 64 74 68 20 2d 20 74 6f 6f 6c 74  ph width - toolt
a7a0: 69 70 20 77 69 64 74 68 0a 20 20 20 20 20 20 20  ip width.       
a7b0: 20 20 20 20 20 6c 65 74 20 6e 41 72 72 6f 77 4c       let nArrowL
a7c0: 69 6d 69 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65  imit = oGrammale
a7d0: 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 67 65 74  cte.oGCPanel.get
a7e0: 57 69 64 74 68 28 29 20 2d 20 32 30 3b 0a 20 20  Width() - 20;.  
a7f0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
a800: 54 6f 6f 6c 74 69 70 41 72 72 6f 77 2e 73 74 79  TooltipArrow.sty
a810: 6c 65 2e 74 6f 70 20 3d 20 28 78 4e 6f 64 65 45  le.top = (xNodeE
a820: 72 72 2e 6f 66 66 73 65 74 54 6f 70 20 2b 20 31  rr.offsetTop + 1
a830: 36 29 20 2b 20 22 70 78 22 3b 0a 20 20 20 20 20  6) + "px";.     
a840: 20 20 20 20 20 20 20 6c 65 74 20 6e 55 73 65 66         let nUsef
a850: 75 6c 45 72 72 6f 72 57 69 64 74 68 20 3d 20 28  ulErrorWidth = (
a860: 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74  (xNodeErr.offset
a870: 4c 65 66 74 20 2b 20 78 4e 6f 64 65 45 72 72 2e  Left + xNodeErr.
a880: 6f 66 66 73 65 74 57 69 64 74 68 29 20 3e 20 6e  offsetWidth) > n
a890: 41 72 72 6f 77 4c 69 6d 69 74 29 20 3f 20 28 6e  ArrowLimit) ? (n
a8a0: 41 72 72 6f 77 4c 69 6d 69 74 20 2d 20 78 4e 6f  ArrowLimit - xNo
a8b0: 64 65 45 72 72 2e 6f 66 66 73 65 74 4c 65 66 74  deErr.offsetLeft
a8c0: 29 20 3a 20 78 4e 6f 64 65 45 72 72 2e 6f 66 66  ) : xNodeErr.off
a8d0: 73 65 74 57 69 64 74 68 3b 0a 20 20 20 20 20 20  setWidth;.      
a8e0: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
a8f0: 74 69 70 41 72 72 6f 77 2e 73 74 79 6c 65 2e 6c  tipArrow.style.l
a900: 65 66 74 20 3d 20 28 78 4e 6f 64 65 45 72 72 2e  eft = (xNodeErr.
a910: 6f 66 66 73 65 74 4c 65 66 74 20 2b 20 4d 61 74  offsetLeft + Mat
a920: 68 2e 66 6c 6f 6f 72 28 28 6e 55 73 65 66 75 6c  h.floor((nUseful
a930: 45 72 72 6f 72 57 69 64 74 68 20 2f 20 32 29 29  ErrorWidth / 2))
a940: 20 2d 20 34 29 20 2b 20 22 70 78 22 3b 20 2f 2f   - 4) + "px"; //
a950: 20 34 20 69 73 20 68 61 6c 66 20 74 68 65 20 77   4 is half the w
a960: 69 64 74 68 20 6f 66 20 74 68 65 20 61 72 72 6f  idth of the arro
a970: 77 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  w..            t
a980: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 73 74 79  his.xTooltip.sty
a990: 6c 65 2e 74 6f 70 20 3d 20 28 78 4e 6f 64 65 45  le.top = (xNodeE
a9a0: 72 72 2e 6f 66 66 73 65 74 54 6f 70 20 2b 20 32  rr.offsetTop + 2
a9b0: 30 29 20 2b 20 22 70 78 22 3b 0a 20 20 20 20 20  0) + "px";.     
a9c0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f         this.xToo
a9d0: 6c 74 69 70 2e 73 74 79 6c 65 2e 6c 65 66 74 20  ltip.style.left 
a9e0: 3d 20 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73  = (xNodeErr.offs
a9f0: 65 74 4c 65 66 74 20 3e 20 6e 54 6f 6f 6c 74 69  etLeft > nToolti
aa00: 70 4c 65 66 74 4c 69 6d 69 74 29 20 3f 20 6e 54  pLeftLimit) ? nT
aa10: 6f 6f 6c 74 69 70 4c 65 66 74 4c 69 6d 69 74 20  ooltipLeftLimit 
aa20: 2b 20 22 70 78 22 20 3a 20 78 4e 6f 64 65 45 72  + "px" : xNodeEr
aa30: 72 2e 6f 66 66 73 65 74 4c 65 66 74 20 2b 20 22  r.offsetLeft + "
aa40: 70 78 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  px";.           
aa50: 20 69 66 20 28 78 4e 6f 64 65 45 72 72 2e 64 61   if (xNodeErr.da
aa60: 74 61 73 65 74 2e 65 72 72 6f 72 5f 74 79 70 65  taset.error_type
aa70: 20 3d 3d 3d 20 22 67 72 61 6d 6d 61 72 22 29 20   === "grammar") 
aa80: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
aa90: 20 20 2f 2f 20 67 72 61 6d 6d 61 72 20 65 72 72    // grammar err
aaa0: 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  or.             
aab0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
aac0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
aad0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
aae0: 74 69 70 5f 64 62 5f 73 65 61 72 63 68 22 29 2e  tip_db_search").
aaf0: 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20  style.display = 
ab00: 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20  "none";.        
ab10: 20 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f 64          if (xNod
ab20: 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63 5f  eErr.dataset.gc_
ab30: 6d 65 73 73 61 67 65 2e 69 6e 63 6c 75 64 65 73  message.includes
ab40: 28 22 20 23 23 22 29 29 20 7b 0a 20 20 20 20 20  (" ##")) {.     
ab50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
ab60: 68 69 73 2e 62 44 65 62 75 67 20 3d 20 74 72 75  his.bDebug = tru
ab70: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e;.             
ab80: 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6c 61         // displa
ab90: 79 20 72 75 6c 65 20 69 64 0a 20 20 20 20 20 20  y rule id.      
aba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
abb0: 74 20 6e 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64  t n = xNodeErr.d
abc0: 61 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67  ataset.gc_messag
abd0: 65 2e 69 6e 64 65 78 4f 66 28 22 20 23 23 22 29  e.indexOf(" ##")
abe0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
abf0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
ac00: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
ac10: 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74  d("grammalecte_t
ac20: 6f 6f 6c 74 69 70 5f 6d 65 73 73 61 67 65 22 29  ooltip_message")
ac30: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 78  .textContent = x
ac40: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
ac50: 67 63 5f 6d 65 73 73 61 67 65 2e 73 6c 69 63 65  gc_message.slice
ac60: 28 30 2c 20 6e 29 3b 0a 20 20 20 20 20 20 20 20  (0, n);.        
ac70: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
ac80: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
ac90: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
aca0: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 72 75 6c  ecte_tooltip_rul
acb0: 65 5f 69 64 22 29 2e 74 65 78 74 43 6f 6e 74 65  e_id").textConte
acc0: 6e 74 20 3d 20 22 52 c3 a8 67 6c 65 e2 80 af 3a  nt = "R..gle...:
acd0: 20 22 20 2b 20 78 4e 6f 64 65 45 72 72 2e 64 61   " + xNodeErr.da
ace0: 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65  taset.gc_message
acf0: 2e 73 6c 69 63 65 28 6e 2b 32 29 3b 0a 20 20 20  .slice(n+2);.   
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
ad20: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
ad30: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
ad40: 70 5f 72 75 6c 65 5f 69 64 22 29 2e 73 74 79 6c  p_rule_id").styl
ad50: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f  e.display = "blo
ad60: 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ck";.           
ad70: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
ad80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad90: 20 20 74 68 69 73 2e 62 44 65 62 75 67 20 3d 20    this.bDebug = 
ada0: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20  false;.         
adb0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
adc0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
add0: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
ade0: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6d 65 73 73  cte_tooltip_mess
adf0: 61 67 65 22 29 2e 74 65 78 74 43 6f 6e 74 65 6e  age").textConten
ae00: 74 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64 61 74  t = xNodeErr.dat
ae10: 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65 3b  aset.gc_message;
ae20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ae30: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
ae40: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
ae50: 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f  ("grammalecte_to
ae60: 6f 6c 74 69 70 5f 72 75 6c 65 5f 69 64 22 29 2e  oltip_rule_id").
ae70: 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20  style.display = 
ae80: 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20  "none";.        
ae90: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
aea0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 78 4e            if (xN
aeb0: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67  odeErr.dataset.g
aec0: 63 5f 75 72 6c 20 21 3d 20 22 22 29 20 7b 0a 20  c_url != "") {. 
aed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aee0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
aef0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
af00: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
af10: 74 69 70 5f 75 72 6c 22 29 2e 64 61 74 61 73 65  tip_url").datase
af20: 74 2e 75 72 6c 20 3d 20 78 4e 6f 64 65 45 72 72  t.url = xNodeErr
af30: 2e 64 61 74 61 73 65 74 2e 67 63 5f 75 72 6c 3b  .dataset.gc_url;
af40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
af50: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
af60: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
af70: 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f  ("grammalecte_to
af80: 6f 6c 74 69 70 5f 75 72 6c 22 29 2e 73 74 79 6c  oltip_url").styl
af90: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 69 6e 6c  e.display = "inl
afa0: 69 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 20 20  ine";.          
afb0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
afc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
afd0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
afe0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
aff0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
b000: 74 69 70 5f 75 72 6c 22 29 2e 64 61 74 61 73 65  tip_url").datase
b010: 74 2e 75 72 6c 20 3d 20 22 22 3b 0a 20 20 20 20  t.url = "";.    
b020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b030: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
b040: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61  ElementById("gra
b050: 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70  mmalecte_tooltip
b060: 5f 75 72 6c 22 29 2e 73 74 79 6c 65 2e 64 69 73  _url").style.dis
b070: 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20  play = "none";. 
b080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
b090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b0a0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
b0b0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
b0c0: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
b0d0: 70 5f 69 67 6e 6f 72 65 22 29 2e 64 61 74 61 73  p_ignore").datas
b0e0: 65 74 2e 65 72 72 6f 72 5f 69 64 20 3d 20 78 4e  et.error_id = xN
b0f0: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65  odeErr.dataset.e
b100: 72 72 6f 72 5f 69 64 3b 0a 20 20 20 20 20 20 20  rror_id;.       
b110: 20 20 20 20 20 20 20 20 20 6c 65 74 20 69 53 75           let iSu
b120: 67 67 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20  gg = 0;.        
b130: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c 65          this.cle
b140: 61 72 53 75 67 67 65 73 74 69 6f 6e 42 6c 6f 63  arSuggestionBloc
b150: 6b 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  k();.           
b160: 20 20 20 20 20 69 66 20 28 78 4e 6f 64 65 45 72       if (xNodeEr
b170: 72 2e 64 61 74 61 73 65 74 2e 73 75 67 67 65 73  r.dataset.sugges
b180: 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 20 3e 20 30  tions.length > 0
b190: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
b1a0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74          for (let
b1b0: 20 73 53 75 67 67 20 6f 66 20 78 4e 6f 64 65 45   sSugg of xNodeE
b1c0: 72 72 2e 64 61 74 61 73 65 74 2e 73 75 67 67 65  rr.dataset.sugge
b1d0: 73 74 69 6f 6e 73 2e 73 70 6c 69 74 28 22 7c 22  stions.split("|"
b1e0: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  )) {.           
b1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
b200: 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42 6c  s.xTooltipSuggBl
b210: 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ock.appendChild(
b220: 74 68 69 73 2e 5f 63 72 65 61 74 65 53 75 67 67  this._createSugg
b230: 65 73 74 69 6f 6e 28 78 4e 6f 64 65 45 72 72 2e  estion(xNodeErr.
b240: 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64  dataset.error_id
b250: 2c 20 30 2c 20 69 53 75 67 67 2c 20 73 53 75 67  , 0, iSugg, sSug
b260: 67 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  g));.           
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
b280: 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42 6c  s.xTooltipSuggBl
b290: 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ock.appendChild(
b2a0: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54  document.createT
b2b0: 65 78 74 4e 6f 64 65 28 22 20 22 29 29 3b 0a 20  extNode(" "));. 
b2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2d0: 20 20 20 20 20 20 20 69 53 75 67 67 20 2b 3d 20         iSugg += 
b2e0: 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  1;.             
b2f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
b300: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
b310: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
b320: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
b330: 74 69 70 53 75 67 67 42 6c 6f 63 6b 2e 74 65 78  tipSuggBlock.tex
b340: 74 43 6f 6e 74 65 6e 74 20 3d 20 22 41 75 63 75  tContent = "Aucu
b350: 6e 65 2e 22 3b 0a 20 20 20 20 20 20 20 20 20 20  ne.";.          
b360: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
b370: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
b380: 20 20 69 66 20 28 78 4e 6f 64 65 45 72 72 2e 64    if (xNodeErr.d
b390: 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 74 79 70  ataset.error_typ
b3a0: 65 20 3d 3d 3d 20 22 73 70 65 6c 6c 69 6e 67 22  e === "spelling"
b3b0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
b3c0: 20 20 20 20 2f 2f 20 73 70 65 6c 6c 69 6e 67 20      // spelling 
b3d0: 6d 69 73 74 61 6b 65 0a 20 20 20 20 20 20 20 20  mistake.        
b3e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
b3f0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
b400: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
b410: 5f 74 6f 6f 6c 74 69 70 5f 6d 65 73 73 61 67 65  _tooltip_message
b420: 22 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ").textContent =
b430: 20 22 4d 6f 74 20 69 6e 63 6f 6e 6e 75 20 64 75   "Mot inconnu du
b440: 20 64 69 63 74 69 6f 6e 6e 61 69 72 65 2e 22 3b   dictionnaire.";
b450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b460: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
b470: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
b480: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
b490: 70 5f 69 67 6e 6f 72 65 22 29 2e 64 61 74 61 73  p_ignore").datas
b4a0: 65 74 2e 65 72 72 6f 72 5f 69 64 20 3d 20 78 4e  et.error_id = xN
b4b0: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65  odeErr.dataset.e
b4c0: 72 72 6f 72 5f 69 64 3b 0a 20 20 20 20 20 20 20  rror_id;.       
b4d0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
b4e0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
b4f0: 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74  ById("grammalect
b500: 65 5f 74 6f 6f 6c 74 69 70 5f 72 75 6c 65 5f 69  e_tooltip_rule_i
b510: 64 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  d").style.displa
b520: 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20  y = "none";.    
b530: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
b540: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
b550: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
b560: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c  ecte_tooltip_url
b570: 22 29 2e 64 61 74 61 73 65 74 2e 75 72 6c 20 3d  ").dataset.url =
b580: 20 22 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20   "";.           
b590: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
b5a0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
b5b0: 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f  ("grammalecte_to
b5c0: 6f 6c 74 69 70 5f 75 72 6c 22 29 2e 73 74 79 6c  oltip_url").styl
b5d0: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e  e.display = "non
b5e0: 65 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e";.            
b5f0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 62 44 65      if (this.bDe
b600: 62 75 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20  bug) {.         
b610: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
b620: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
b630: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
b640: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 64 62 5f 73  cte_tooltip_db_s
b650: 65 61 72 63 68 22 29 2e 73 74 79 6c 65 2e 64 69  earch").style.di
b660: 73 70 6c 61 79 20 3d 20 22 69 6e 6c 69 6e 65 22  splay = "inline"
b670: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
b680: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
b690: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
b6a0: 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74  d("grammalecte_t
b6b0: 6f 6f 6c 74 69 70 5f 64 62 5f 73 65 61 72 63 68  ooltip_db_search
b6c0: 22 29 2e 64 61 74 61 73 65 74 2e 75 72 6c 20 3d  ").dataset.url =
b6d0: 20 22 68 74 74 70 73 3a 2f 2f 67 72 61 6d 6d 61   "https://gramma
b6e0: 6c 65 63 74 65 2e 6e 65 74 2f 64 69 63 74 69 6f  lecte.net/dictio
b6f0: 6e 61 72 79 2e 70 68 70 3f 70 72 6a 3d 66 72 26  nary.php?prj=fr&
b700: 6c 65 6d 6d 61 3d 22 2b 78 4e 6f 64 65 45 72 72  lemma="+xNodeErr
b710: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 3b 0a 20 20  .textContent;.  
b720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
b730: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
b740: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
b750: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
b760: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
b770: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 64 62 5f 73  cte_tooltip_db_s
b780: 65 61 72 63 68 22 29 2e 73 74 79 6c 65 2e 64 69  earch").style.di
b790: 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a  splay = "none";.
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7b0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
b7c0: 20 20 74 68 69 73 2e 63 6c 65 61 72 53 75 67 67    this.clearSugg
b7d0: 65 73 74 69 6f 6e 42 6c 6f 63 6b 28 29 3b 0a 20  estionBlock();. 
b7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
b7f0: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67  his.xTooltipSugg
b800: 42 6c 6f 63 6b 2e 74 65 78 74 43 6f 6e 74 65 6e  Block.textConten
b810: 74 20 3d 20 22 52 65 63 68 65 72 63 68 65 20 64  t = "Recherche d
b820: 65 20 67 72 61 70 68 69 65 73 20 70 6f 73 73 69  e graphies possi
b830: 62 6c 65 73 e2 80 a6 22 3b 0a 20 20 20 20 20 20  bles...";.      
b840: 20 20 20 20 20 20 20 20 20 20 78 47 72 61 6d 6d            xGramm
b850: 61 6c 65 63 74 65 50 6f 72 74 2e 70 6f 73 74 4d  alectePort.postM
b860: 65 73 73 61 67 65 28 7b 0a 20 20 20 20 20 20 20  essage({.       
b870: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 43 6f               sCo
b880: 6d 6d 61 6e 64 3a 20 22 67 65 74 53 70 65 6c 6c  mmand: "getSpell
b890: 53 75 67 67 65 73 74 69 6f 6e 73 22 2c 0a 20 20  Suggestions",.  
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8b0: 20 20 64 50 61 72 61 6d 3a 20 7b 73 57 6f 72 64    dParam: {sWord
b8c0: 3a 20 78 4e 6f 64 65 45 72 72 2e 74 65 78 74 43  : xNodeErr.textC
b8d0: 6f 6e 74 65 6e 74 7d 2c 0a 20 20 20 20 20 20 20  ontent},.       
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 49 6e               dIn
b8f0: 66 6f 3a 20 7b 73 45 72 72 6f 72 49 64 3a 20 78  fo: {sErrorId: x
b900: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
b910: 65 72 72 6f 72 5f 69 64 7d 0a 20 20 20 20 20 20  error_id}.      
b920: 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20            });.  
b930: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
b940: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f          this.xTo
b950: 6f 6c 74 69 70 41 72 72 6f 77 2e 73 74 79 6c 65  oltipArrow.style
b960: 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f 63  .display = "bloc
b970: 6b 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  k";.            
b980: 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 73 74  this.xTooltip.st
b990: 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 62  yle.display = "b
b9a0: 6c 6f 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 7d  lock";.        }
b9b0: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
b9c0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
b9d0: 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20   showError(e);. 
b9e0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a         }.    }..
b9f0: 20 20 20 20 63 6c 65 61 72 53 75 67 67 65 73 74      clearSuggest
ba00: 69 6f 6e 42 6c 6f 63 6b 20 28 29 20 7b 0a 20 20  ionBlock () {.  
ba10: 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 68 69        while (thi
ba20: 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42 6c  s.xTooltipSuggBl
ba30: 6f 63 6b 2e 66 69 72 73 74 43 68 69 6c 64 29 20  ock.firstChild) 
ba40: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
ba50: 69 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42  is.xTooltipSuggB
ba60: 6c 6f 63 6b 2e 72 65 6d 6f 76 65 43 68 69 6c 64  lock.removeChild
ba70: 28 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 53 75  (this.xTooltipSu
ba80: 67 67 42 6c 6f 63 6b 2e 66 69 72 73 74 43 68 69  ggBlock.firstChi
ba90: 6c 64 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  ld);.        }. 
baa0: 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 54 6f 6f     }..    setToo
bab0: 6c 74 69 70 43 6f 6c 6f 72 20 28 29 20 7b 0a 20  ltipColor () {. 
bac0: 20 20 20 20 20 20 20 2f 2f 20 74 6f 64 6f 0a 20         // todo. 
bad0: 20 20 20 7d 0a 0a 20 20 20 20 68 69 64 65 20 28     }..    hide (
bae0: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ) {.        this
baf0: 2e 78 54 6f 6f 6c 74 69 70 41 72 72 6f 77 2e 73  .xTooltipArrow.s
bb00: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22  tyle.display = "
bb10: 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 74  none";.        t
bb20: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 73 74 79  his.xTooltip.sty
bb30: 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f  le.display = "no
bb40: 6e 65 22 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ne";.    }..    
bb50: 5f 63 72 65 61 74 65 53 75 67 67 65 73 74 69 6f  _createSuggestio
bb60: 6e 20 28 73 45 72 72 6f 72 49 64 2c 20 69 53 75  n (sErrorId, iSu
bb70: 67 67 42 6c 6f 63 6b 2c 20 69 53 75 67 67 2c 20  ggBlock, iSugg, 
bb80: 73 53 75 67 67 29 20 7b 0a 20 20 20 20 20 20 20  sSugg) {.       
bb90: 20 6c 65 74 20 78 4e 6f 64 65 53 75 67 67 20 3d   let xNodeSugg =
bba0: 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65   document.create
bbb0: 45 6c 65 6d 65 6e 74 28 22 64 69 76 22 29 3b 0a  Element("div");.
bbc0: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 53 75 67          xNodeSug
bbd0: 67 2e 69 64 20 3d 20 22 67 72 61 6d 6d 61 6c 65  g.id = "grammale
bbe0: 63 74 65 5f 73 75 67 67 22 20 2b 20 73 45 72 72  cte_sugg" + sErr
bbf0: 6f 72 49 64 20 2b 20 22 2d 22 20 2b 20 69 53 75  orId + "-" + iSu
bc00: 67 67 42 6c 6f 63 6b 2e 74 6f 53 74 72 69 6e 67  ggBlock.toString
bc10: 28 29 20 2b 20 22 2d 22 20 2b 20 69 53 75 67 67  () + "-" + iSugg
bc20: 2e 74 6f 53 74 72 69 6e 67 28 29 3b 0a 20 20 20  .toString();.   
bc30: 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e 63       xNodeSugg.c
bc40: 6c 61 73 73 4e 61 6d 65 20 3d 20 22 67 72 61 6d  lassName = "gram
bc50: 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f  malecte_tooltip_
bc60: 73 75 67 67 22 3b 0a 20 20 20 20 20 20 20 20 78  sugg";.        x
bc70: 4e 6f 64 65 53 75 67 67 2e 64 61 74 61 73 65 74  NodeSugg.dataset
bc80: 2e 65 72 72 6f 72 5f 69 64 20 3d 20 73 45 72 72  .error_id = sErr
bc90: 6f 72 49 64 3b 0a 20 20 20 20 20 20 20 20 78 4e  orId;.        xN
bca0: 6f 64 65 53 75 67 67 2e 74 65 78 74 43 6f 6e 74  odeSugg.textCont
bcb0: 65 6e 74 20 3d 20 73 53 75 67 67 3b 0a 20 20 20  ent = sSugg;.   
bcc0: 20 20 20 20 20 72 65 74 75 72 6e 20 78 4e 6f 64       return xNod
bcd0: 65 53 75 67 67 3b 0a 20 20 20 20 7d 0a 0a 20 20  eSugg;.    }..  
bce0: 20 20 73 65 74 53 70 65 6c 6c 53 75 67 67 65 73    setSpellSugges
bcf0: 74 69 6f 6e 73 46 6f 72 20 28 73 57 6f 72 64 2c  tionsFor (sWord,
bd00: 20 61 53 75 67 67 2c 20 69 53 75 67 67 42 6c 6f   aSugg, iSuggBlo
bd10: 63 6b 2c 20 73 45 72 72 6f 72 49 64 29 20 7b 0a  ck, sErrorId) {.
bd20: 20 20 20 20 20 20 20 20 2f 2f 20 73 70 65 6c 6c          // spell
bd30: 20 63 68 65 63 6b 69 6e 67 20 73 75 67 67 65 73   checking sugges
bd40: 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 74 72  tions.        tr
bd50: 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  y {.            
bd60: 69 66 20 28 73 45 72 72 6f 72 49 64 20 3d 3d 3d  if (sErrorId ===
bd70: 20 74 68 69 73 2e 73 45 72 72 6f 72 49 64 29 20   this.sErrorId) 
bd80: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
bd90: 20 20 6c 65 74 20 78 53 75 67 67 42 6c 6f 63 6b    let xSuggBlock
bda0: 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e   = this.xParent.
bdb0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
bdc0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
bdd0: 74 69 70 5f 73 75 67 67 5f 62 6c 6f 63 6b 22 29  tip_sugg_block")
bde0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
bdf0: 20 20 69 66 20 28 69 53 75 67 67 42 6c 6f 63 6b    if (iSuggBlock
be00: 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20   == 0) {.       
be10: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53 75               xSu
be20: 67 67 42 6c 6f 63 6b 2e 74 65 78 74 43 6f 6e 74  ggBlock.textCont
be30: 65 6e 74 20 3d 20 22 22 3b 0a 20 20 20 20 20 20  ent = "";.      
be40: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
be50: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
be60: 21 61 53 75 67 67 20 7c 7c 20 61 53 75 67 67 2e  !aSugg || aSugg.
be70: 6c 65 6e 67 74 68 20 3d 3d 20 30 29 20 7b 0a 20  length == 0) {. 
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be90: 20 20 20 69 66 20 28 69 53 75 67 67 42 6c 6f 63     if (iSuggBloc
bea0: 6b 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20  k == 0) {.      
beb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bec0: 20 20 78 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70    xSuggBlock.app
bed0: 65 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e  endChild(documen
bee0: 74 2e 63 72 65 61 74 65 54 65 78 74 4e 6f 64 65  t.createTextNode
bef0: 28 22 41 75 63 75 6e 65 2e 22 29 29 3b 0a 20 20  ("Aucune."));.  
bf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf10: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
bf20: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
bf30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf40: 20 69 66 20 28 69 53 75 67 67 42 6c 6f 63 6b 20   if (iSuggBlock 
bf50: 3e 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20  > 0) {.         
bf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
bf70: 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e 64  SuggBlock.append
bf80: 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63  Child(oGrammalec
bf90: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
bfa0: 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a  iv", {className:
bfb0: 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f   "grammalecte_to
bfc0: 6f 6c 74 69 70 5f 6f 74 68 65 72 5f 73 75 67 67  oltip_other_sugg
bfd0: 5f 74 69 74 6c 65 22 2c 20 74 65 78 74 43 6f 6e  _title", textCon
bfe0: 74 65 6e 74 3a 20 22 41 55 54 52 45 53 20 53 55  tent: "AUTRES SU
bff0: 47 47 45 53 54 49 4f 4e 53 e2 80 af 3a 22 7d 29  GGESTIONS...:"})
c000: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
c010: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
c020: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74               let
c030: 20 69 53 75 67 67 20 3d 20 30 3b 0a 20 20 20 20   iSugg = 0;.    
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c050: 66 6f 72 20 28 6c 65 74 20 73 53 75 67 67 20 6f  for (let sSugg o
c060: 66 20 61 53 75 67 67 29 20 7b 0a 20 20 20 20 20  f aSugg) {.     
c070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c080: 20 20 20 78 53 75 67 67 42 6c 6f 63 6b 2e 61 70     xSuggBlock.ap
c090: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 5f  pendChild(this._
c0a0: 63 72 65 61 74 65 53 75 67 67 65 73 74 69 6f 6e  createSuggestion
c0b0: 28 73 45 72 72 6f 72 49 64 2c 20 69 53 75 67 67  (sErrorId, iSugg
c0c0: 42 6c 6f 63 6b 2c 20 69 53 75 67 67 2c 20 73 53  Block, iSugg, sS
c0d0: 75 67 67 29 29 3b 0a 20 20 20 20 20 20 20 20 20  ugg));.         
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
c0f0: 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e 64  SuggBlock.append
c100: 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63  Child(document.c
c110: 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22 20  reateTextNode(" 
c120: 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "));.           
c130: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 53 75               iSu
c140: 67 67 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20  gg += 1;.       
c150: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
c160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
c180: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
c190: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
c1a0: 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 53 75           let xSu
c1b0: 67 67 42 6c 6f 63 6b 20 3d 20 74 68 69 73 2e 78  ggBlock = this.x
c1c0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
c1d0: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
c1e0: 74 65 5f 74 6f 6f 6c 74 69 70 5f 73 75 67 67 5f  te_tooltip_sugg_
c1f0: 62 6c 6f 63 6b 22 29 3b 0a 20 20 20 20 20 20 20  block");.       
c200: 20 20 20 20 20 78 53 75 67 67 42 6c 6f 63 6b 2e       xSuggBlock.
c210: 61 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75  appendChild(docu
c220: 6d 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74 4e  ment.createTextN
c230: 6f 64 65 28 22 23 20 4f 75 70 73 2e 20 4c 65 20  ode("# Oups. Le 
c240: 6d c3 a9 63 61 6e 69 73 6d 65 20 64 65 20 73 75  m..canisme de su
c250: 67 67 65 73 74 69 6f 6e 20 6f 72 74 68 6f 67 72  ggestion orthogr
c260: 61 70 68 69 71 75 65 20 61 20 72 65 6e 63 6f 6e  aphique a rencon
c270: 74 72 c3 a9 20 75 6e 20 62 75 67 e2 80 a6 20 28  tr.. un bug... (
c280: 43 65 20 6d 6f 64 75 6c 65 20 65 73 74 20 65 6e  Ce module est en
c290: 63 6f 72 65 20 65 6e 20 70 68 61 73 65 20 ce b2  core en phase ..
c2a0: 2e 29 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20  .)"));.         
c2b0: 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b     showError(e);
c2c0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
c2d0: 0a 7d 0a 0a 0a 63 6c 61 73 73 20 47 72 61 6d 6d  .}...class Gramm
c2e0: 61 6c 65 63 74 65 54 65 78 74 43 6f 6e 74 72 6f  alecteTextContro
c2f0: 6c 20 7b 0a 0a 20 20 20 20 63 6f 6e 73 74 72 75  l {..    constru
c300: 63 74 6f 72 20 28 29 20 7b 0a 20 20 20 20 20 20  ctor () {.      
c310: 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d 20 6e    this.xNode = n
c320: 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74 68 69  ull;.        thi
c330: 73 2e 64 50 61 72 61 67 72 61 70 68 20 3d 20 6e  s.dParagraph = n
c340: 65 77 20 4d 61 70 28 29 3b 0a 20 20 20 20 20 20  ew Map();.      
c350: 20 20 74 68 69 73 2e 62 54 65 78 74 41 72 65 61    this.bTextArea
c360: 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 7d 0a 0a   = null;.    }..
c370: 20 20 20 20 73 65 74 4e 6f 64 65 20 28 78 4e 6f      setNode (xNo
c380: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68  de) {.        th
c390: 69 73 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20  is.clear();.    
c3a0: 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d      this.xNode =
c3b0: 20 78 4e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20   xNode;.        
c3c0: 74 68 69 73 2e 62 54 65 78 74 41 72 65 61 20 3d  this.bTextArea =
c3d0: 20 28 78 4e 6f 64 65 2e 74 61 67 4e 61 6d 65 20   (xNode.tagName 
c3e0: 3d 3d 20 22 54 45 58 54 41 52 45 41 22 20 7c 7c  == "TEXTAREA" ||
c3f0: 20 78 4e 6f 64 65 2e 74 61 67 4e 61 6d 65 20 3d   xNode.tagName =
c400: 3d 20 22 49 4e 50 55 54 22 29 3b 0a 20 20 20 20  = "INPUT");.    
c410: 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 62 54      if (!this.bT
c420: 65 78 74 41 72 65 61 29 20 7b 0a 20 20 20 20 20  extArea) {.     
c430: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
c440: 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 61 64 64  cte.oGCPanel.add
c450: 4d 65 73 73 61 67 65 54 6f 47 43 50 61 6e 65 6c  MessageToGCPanel
c460: 28 22 41 74 74 65 6e 74 69 6f 6e e2 80 af 3a 20  ("Attention...: 
c470: 4c 61 20 7a 6f 6e 65 20 64 65 20 74 65 78 74 65  La zone de texte
c480: 20 61 6e 61 6c 79 73 c3 a9 65 20 65 73 74 20 75   analys..e est u
c490: 6e 20 63 68 61 6d 70 20 74 65 78 74 75 65 6c 20  n champ textuel 
c4a0: 65 6e 72 69 63 68 69 20 73 75 73 63 65 70 74 69  enrichi suscepti
c4b0: 62 6c 65 20 64 65 20 63 6f 6e 74 65 6e 69 72 20  ble de contenir 
c4c0: 64 65 73 20 c3 a9 6c c3 a9 6d 65 6e 74 73 20 6e  des ..l..ments n
c4d0: 6f 6e 20 74 65 78 74 75 65 6c 73 20 71 75 69 20  on textuels qui 
c4e0: 73 65 72 6f 6e 74 20 65 66 66 61 63 c3 a9 73 20  seront effac..s 
c4f0: 6c 6f 72 73 20 64 65 20 6c 61 20 63 6f 72 72 65  lors de la corre
c500: 63 74 69 6f 6e 2e 22 29 3b 0a 20 20 20 20 20 20  ction.");.      
c510: 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68 69 73    }.        this
c520: 2e 78 4e 6f 64 65 2e 64 69 73 61 62 6c 65 64 20  .xNode.disabled 
c530: 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20  = true;.        
c540: 74 68 69 73 2e 6c 6f 61 64 54 65 78 74 28 28 74  this.loadText((t
c550: 68 69 73 2e 62 54 65 78 74 41 72 65 61 29 20 3f  his.bTextArea) ?
c560: 20 74 68 69 73 2e 78 4e 6f 64 65 2e 76 61 6c 75   this.xNode.valu
c570: 65 20 3a 20 74 68 69 73 2e 78 4e 6f 64 65 2e 69  e : this.xNode.i
c580: 6e 6e 65 72 54 65 78 74 29 3b 0a 20 20 20 20 7d  nnerText);.    }
c590: 0a 0a 20 20 20 20 73 65 74 54 65 78 74 20 28 73  ..    setText (s
c5a0: 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20  Text) {.        
c5b0: 74 68 69 73 2e 63 6c 65 61 72 28 29 3b 0a 20 20  this.clear();.  
c5c0: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
c5d0: 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 61 64 64 4d  te.oGCPanel.addM
c5e0: 65 73 73 61 67 65 54 6f 47 43 50 61 6e 65 6c 28  essageToGCPanel(
c5f0: 22 4e 6f 74 65 e2 80 af 3a 20 41 75 63 75 6e 20  "Note...: Aucun 
c600: 63 68 61 6d 70 20 74 65 78 74 75 65 6c 20 64 c3  champ textuel d.
c610: a9 66 69 6e 69 2e 20 4c 65 73 20 63 68 61 6e 67  .fini. Les chang
c620: 65 6d 65 6e 74 73 20 6e 65 20 73 65 72 6f 6e 74  ements ne seront
c630: 20 70 61 73 20 72 c3 a9 70 65 72 63 75 74 c3 a9   pas r..percut..
c640: 73 20 73 75 72 20 6c 61 20 7a 6f 6e 65 20 64 e2  s sur la zone d.
c650: 80 99 6f c3 b9 20 6c 65 20 74 65 78 74 65 20 61  ..o.. le texte a
c660: 20 c3 a9 74 c3 a9 20 65 78 74 72 61 69 74 2e 22   ..t.. extrait."
c670: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
c680: 6c 6f 61 64 54 65 78 74 28 73 54 65 78 74 29 3b  loadText(sText);
c690: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6c 65 61  .    }..    clea
c6a0: 72 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69  r () {.        i
c6b0: 66 20 28 74 68 69 73 2e 78 4e 6f 64 65 20 21 3d  f (this.xNode !=
c6c0: 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20  = null) {.      
c6d0: 20 20 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65        this.xNode
c6e0: 2e 64 69 73 61 62 6c 65 64 20 3d 20 66 61 6c 73  .disabled = fals
c6f0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e;.            t
c700: 68 69 73 2e 62 54 65 78 74 41 72 65 61 20 3d 20  his.bTextArea = 
c710: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20  false;.         
c720: 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d 20     this.xNode = 
c730: 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 7d 0a  null;.        }.
c740: 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 50 61          this.dPa
c750: 72 61 67 72 61 70 68 2e 63 6c 65 61 72 28 29 3b  ragraph.clear();
c760: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 67 65 74 54  .    }..    getT
c770: 65 78 74 20 28 29 20 7b 0a 20 20 20 20 20 20 20  ext () {.       
c780: 20 6c 65 74 20 73 54 65 78 74 20 3d 20 22 22 3b   let sText = "";
c790: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 50  .        this.dP
c7a0: 61 72 61 67 72 61 70 68 2e 66 6f 72 45 61 63 68  aragraph.forEach
c7b0: 28 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 2c 20  (function (val, 
c7c0: 6b 65 79 29 20 7b 0a 20 20 20 20 20 20 20 20 20  key) {.         
c7d0: 20 20 20 73 54 65 78 74 20 2b 3d 20 76 61 6c 20     sText += val 
c7e0: 2b 20 22 5c 6e 22 3b 0a 20 20 20 20 20 20 20 20  + "\n";.        
c7f0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75  });.        retu
c800: 72 6e 20 73 54 65 78 74 2e 73 6c 69 63 65 28 30  rn sText.slice(0
c810: 2c 2d 31 29 2e 6e 6f 72 6d 61 6c 69 7a 65 28 22  ,-1).normalize("
c820: 4e 46 43 22 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  NFC");.    }..  
c830: 20 20 73 65 74 50 61 72 61 67 72 61 70 68 20 28    setParagraph (
c840: 69 50 61 72 61 67 72 61 70 68 2c 20 73 54 65 78  iParagraph, sTex
c850: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69  t) {.        thi
c860: 73 2e 64 50 61 72 61 67 72 61 70 68 2e 73 65 74  s.dParagraph.set
c870: 28 69 50 61 72 61 67 72 61 70 68 2c 20 73 54 65  (iParagraph, sTe
c880: 78 74 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  xt);.    }..    
c890: 6c 6f 61 64 54 65 78 74 20 28 73 54 65 78 74 29  loadText (sText)
c8a0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74   {.        if (t
c8b0: 79 70 65 6f 66 28 73 54 65 78 74 29 20 3d 3d 3d  ypeof(sText) ===
c8c0: 20 22 73 74 72 69 6e 67 22 29 20 7b 0a 20 20 20   "string") {.   
c8d0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 50           this.dP
c8e0: 61 72 61 67 72 61 70 68 2e 63 6c 65 61 72 28 29  aragraph.clear()
c8f0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ;.            le
c900: 74 20 69 20 3d 20 30 3b 0a 20 20 20 20 20 20 20  t i = 0;.       
c910: 20 20 20 20 20 6c 65 74 20 69 53 74 61 72 74 20       let iStart 
c920: 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20  = 0;.           
c930: 20 6c 65 74 20 69 45 6e 64 20 3d 20 30 3b 0a 20   let iEnd = 0;. 
c940: 20 20 20 20 20 20 20 20 20 20 20 73 54 65 78 74             sText
c950: 20 3d 20 73 54 65 78 74 2e 72 65 70 6c 61 63 65   = sText.replace
c960: 28 2f 5c 72 5c 6e 2f 67 2c 20 22 5c 6e 22 29 2e  (/\r\n/g, "\n").
c970: 72 65 70 6c 61 63 65 28 2f 5c 72 2f 67 2c 20 22  replace(/\r/g, "
c980: 5c 6e 22 29 2e 6e 6f 72 6d 61 6c 69 7a 65 28 22  \n").normalize("
c990: 4e 46 43 22 29 3b 0a 20 20 20 20 20 20 20 20 20  NFC");.         
c9a0: 20 20 20 77 68 69 6c 65 20 28 28 69 45 6e 64 20     while ((iEnd 
c9b0: 3d 20 73 54 65 78 74 2e 69 6e 64 65 78 4f 66 28  = sText.indexOf(
c9c0: 22 5c 6e 22 2c 20 69 53 74 61 72 74 29 29 20 21  "\n", iStart)) !
c9d0: 3d 3d 20 2d 31 29 20 7b 0a 20 20 20 20 20 20 20  == -1) {.       
c9e0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 50           this.dP
c9f0: 61 72 61 67 72 61 70 68 2e 73 65 74 28 69 2c 20  aragraph.set(i, 
ca00: 73 54 65 78 74 2e 73 6c 69 63 65 28 69 53 74 61  sText.slice(iSta
ca10: 72 74 2c 20 69 45 6e 64 29 29 3b 0a 20 20 20 20  rt, iEnd));.    
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 69 2b 2b 3b              i++;
ca30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ca40: 20 69 53 74 61 72 74 20 3d 20 69 45 6e 64 2b 31   iStart = iEnd+1
ca50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ;.            }.
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
ca70: 2e 64 50 61 72 61 67 72 61 70 68 2e 73 65 74 28  .dParagraph.set(
ca80: 69 2c 20 73 54 65 78 74 2e 73 6c 69 63 65 28 69  i, sText.slice(i
ca90: 53 74 61 72 74 29 29 3b 0a 20 20 20 20 20 20 20  Start));.       
caa0: 20 20 20 20 20 2f 2f 63 6f 6e 73 6f 6c 65 2e 6c       //console.l
cab0: 6f 67 28 22 50 61 72 61 67 72 61 70 68 73 20 6e  og("Paragraphs n
cac0: 75 6d 62 65 72 3a 20 22 20 2b 20 28 69 2b 31 29  umber: " + (i+1)
cad0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
cae0: 20 7d 0a 0a 20 20 20 20 65 72 61 73 65 4e 6f 64   }..    eraseNod
caf0: 65 43 6f 6e 74 65 6e 74 20 28 29 20 7b 0a 20 20  eContent () {.  
cb00: 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 68 69        while (thi
cb10: 73 2e 78 4e 6f 64 65 2e 66 69 72 73 74 43 68 69  s.xNode.firstChi
cb20: 6c 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ld) {.          
cb30: 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e 72 65 6d    this.xNode.rem
cb40: 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 78 4e  oveChild(this.xN
cb50: 6f 64 65 2e 66 69 72 73 74 43 68 69 6c 64 29 3b  ode.firstChild);
cb60: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
cb70: 0a 0a 20 20 20 20 77 72 69 74 65 20 28 29 20 7b  ..    write () {
cb80: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
cb90: 73 2e 78 4e 6f 64 65 20 21 3d 3d 20 6e 75 6c 6c  s.xNode !== null
cba0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
cbb0: 6c 65 74 20 73 54 65 78 74 20 3d 20 22 22 3b 0a  let sText = "";.
cbc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
cbd0: 74 68 69 73 2e 62 54 65 78 74 41 72 65 61 29 20  this.bTextArea) 
cbe0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
cbf0: 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e 76 61 6c    this.xNode.val
cc00: 75 65 20 3d 20 74 68 69 73 2e 67 65 74 54 65 78  ue = this.getTex
cc10: 74 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  t();.           
cc20: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
cc30: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65            this.e
cc40: 72 61 73 65 4e 6f 64 65 43 6f 6e 74 65 6e 74 28  raseNodeContent(
cc50: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
cc60: 20 20 20 74 68 69 73 2e 64 50 61 72 61 67 72 61     this.dParagra
cc70: 70 68 2e 66 6f 72 45 61 63 68 28 28 76 61 6c 2c  ph.forEach((val,
cc80: 20 6b 65 79 29 20 3d 3e 20 7b 0a 20 20 20 20 20   key) => {.     
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
cca0: 68 69 73 2e 78 4e 6f 64 65 2e 61 70 70 65 6e 64  his.xNode.append
ccb0: 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63  Child(document.c
ccc0: 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 76 61  reateTextNode(va
ccd0: 6c 2e 6e 6f 72 6d 61 6c 69 7a 65 28 22 4e 46 43  l.normalize("NFC
cce0: 22 29 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ")));.          
ccf0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
cd00: 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64  Node.appendChild
cd10: 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65  (document.create
cd20: 45 6c 65 6d 65 6e 74 28 22 62 72 22 29 29 3b 0a  Element("br"));.
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd40: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
cd50: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  }.        }.    
cd60: 7d 0a 7d 0a                                      }.}.