Grammalecte  Hex Artifact Content

Artifact 1c3cef7a06f5613abcb890a9b47b0d583a5b75f898fc36f58d79dae7327e61d8:


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 6e 4c 61 73 74 52 65 73 75 6c 74 20 3d 20 30  .nLastResult = 0
0af0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 4c 65 78 69  .        // Lexi
0b00: 63 6f 67 72 61 70 68 65 72 0a 20 20 20 20 20 20  cographer.      
0b10: 20 20 74 68 69 73 2e 6e 4c 78 67 43 6f 75 6e 74    this.nLxgCount
0b20: 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 74 68   = 0;.        th
0b30: 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74  is.xLxgPanelCont
0b40: 65 6e 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  ent = oGrammalec
0b50: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
0b60: 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d  iv", {id: "gramm
0b70: 61 6c 65 63 74 65 5f 6c 78 67 5f 70 61 6e 65 6c  alecte_lxg_panel
0b80: 5f 63 6f 6e 74 65 6e 74 22 7d 29 3b 0a 20 20 20  _content"});.   
0b90: 20 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65 6c       this.xPanel
0ba0: 43 6f 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43 68  Content.appendCh
0bb0: 69 6c 64 28 74 68 69 73 2e 78 4c 78 67 50 61 6e  ild(this.xLxgPan
0bc0: 65 6c 43 6f 6e 74 65 6e 74 29 3b 0a 20 20 20 20  elContent);.    
0bd0: 20 20 20 20 2f 2f 20 43 6f 6e 6a 75 67 75 65 75      // Conjugueu
0be0: 72 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  r.        this.x
0bf0: 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  ConjPanelContent
0c00: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
0c10: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
0c20: 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65  , {id: "grammale
0c30: 63 74 65 5f 63 6f 6e 6a 5f 70 61 6e 65 6c 5f 63  cte_conj_panel_c
0c40: 6f 6e 74 65 6e 74 22 7d 29 3b 0a 20 20 20 20 20  ontent"});.     
0c50: 20 20 20 74 68 69 73 2e 78 43 6f 6e 6a 50 61 6e     this.xConjPan
0c60: 65 6c 43 6f 6e 74 65 6e 74 2e 69 6e 6e 65 72 48  elContent.innerH
0c70: 54 4d 4c 20 3d 20 73 47 72 61 6d 6d 61 6c 65 63  TML = sGrammalec
0c80: 74 65 43 6f 6e 6a 75 67 75 65 75 72 48 54 4d 4c  teConjugueurHTML
0c90: 3b 20 20 2f 2f 20 40 52 65 76 69 65 77 65 72 73  ;  // @Reviewers
0ca0: 3a 20 73 47 72 61 6d 6d 61 6c 65 63 74 65 43 6f  : sGrammalecteCo
0cb0: 6e 6a 75 67 75 65 75 72 48 54 4d 4c 20 69 73 20  njugueurHTML is 
0cc0: 61 20 63 6f 6e 73 74 20 76 61 6c 75 65 20 64 65  a const value de
0cd0: 66 69 6e 65 64 20 69 6e 20 3c 63 6f 6e 74 65 6e  fined in <conten
0ce0: 74 5f 73 63 72 69 70 74 73 2f 68 74 6d 6c 5f 73  t_scripts/html_s
0cf0: 72 63 2e 6a 73 3e 0a 20 20 20 20 20 20 20 20 74  rc.js>.        t
0d00: 68 69 73 2e 78 50 61 6e 65 6c 43 6f 6e 74 65 6e  his.xPanelConten
0d10: 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68  t.appendChild(th
0d20: 69 73 2e 78 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e  is.xConjPanelCon
0d30: 74 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 74  tent);.        t
0d40: 68 69 73 2e 73 56 65 72 62 20 3d 20 22 22 3b 0a  his.sVerb = "";.
0d50: 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 4c 69          this.bLi
0d60: 73 74 65 6e 43 6f 6e 6a 20 3d 20 66 61 6c 73 65  stenConj = false
0d70: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 72 65  ;.    }..    cre
0d80: 61 74 65 4d 65 6e 75 20 28 29 20 7b 0a 20 20 20  ateMenu () {.   
0d90: 20 20 20 20 20 74 68 69 73 2e 78 4d 65 6e 75 20       this.xMenu 
0da0: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
0db0: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
0dc0: 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72   {className: "gr
0dd0: 61 6d 6d 61 6c 65 63 74 65 5f 70 61 6e 65 6c 5f  ammalecte_panel_
0de0: 6d 65 6e 75 22 7d 29 3b 0a 20 20 20 20 20 20 20  menu"});.       
0df0: 20 2f 2f 20 74 61 62 73 0a 20 20 20 20 20 20 20   // tabs.       
0e00: 20 74 68 69 73 2e 78 54 46 42 75 74 74 6f 6e 20   this.xTFButton 
0e10: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
0e20: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
0e30: 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72   {className: "gr
0e40: 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 62  ammalecte_menu_b
0e50: 75 74 74 6f 6e 22 2c 20 74 65 78 74 43 6f 6e 74  utton", textCont
0e60: 65 6e 74 3a 20 22 46 6f 72 6d 61 74 65 75 72 20  ent: "Formateur 
0e70: 64 65 20 74 65 78 74 65 22 7d 29 3b 0a 20 20 20  de texte"});.   
0e80: 20 20 20 20 20 74 68 69 73 2e 78 45 64 69 74 6f       this.xEdito
0e90: 72 42 75 74 74 6f 6e 20 3d 20 6f 47 72 61 6d 6d  rButton = oGramm
0ea0: 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64  alecte.createNod
0eb0: 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e  e("div", {classN
0ec0: 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  ame: "grammalect
0ed0: 65 5f 6d 65 6e 75 5f 62 75 74 74 6f 6e 22 2c 20  e_menu_button", 
0ee0: 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 c3 89  textContent: "..
0ef0: 64 69 74 65 75 72 22 7d 29 3b 0a 20 20 20 20 20  diteur"});.     
0f00: 20 20 20 74 68 69 73 2e 78 4c 78 67 42 75 74 74     this.xLxgButt
0f10: 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  on = oGrammalect
0f20: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
0f30: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
0f40: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e  "grammalecte_men
0f50: 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78 74 43  u_button", textC
0f60: 6f 6e 74 65 6e 74 3a 20 22 4c 65 78 69 63 6f 67  ontent: "Lexicog
0f70: 72 61 70 68 65 22 7d 29 3b 0a 20 20 20 20 20 20  raphe"});.      
0f80: 20 20 74 68 69 73 2e 78 43 6f 6e 6a 42 75 74 74    this.xConjButt
0f90: 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  on = oGrammalect
0fa0: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
0fb0: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
0fc0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e  "grammalecte_men
0fd0: 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78 74 43  u_button", textC
0fe0: 6f 6e 74 65 6e 74 3a 20 22 43 6f 6e 6a 75 67 75  ontent: "Conjugu
0ff0: 65 75 72 22 7d 29 3b 0a 20 20 20 20 20 20 20 20  eur"});.        
1000: 2f 2f 20 62 75 74 74 6f 6e 73 0a 20 20 20 20 20  // buttons.     
1010: 20 20 20 74 68 69 73 2e 78 4c 65 78 45 64 69 74     this.xLexEdit
1020: 42 75 74 74 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61  Button = oGramma
1030: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
1040: 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61  ("div", {classNa
1050: 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  me: "grammalecte
1060: 5f 6d 65 6e 75 5f 73 75 62 62 75 74 74 6f 6e 22  _menu_subbutton"
1070: 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22  , textContent: "
1080: c3 89 64 69 74 4c 65 78 22 2c 20 74 69 74 6c 65  ..ditLex", title
1090: 3a 20 22 4f 75 76 72 69 72 20 6c e2 80 99 c3 a9  : "Ouvrir l.....
10a0: 64 69 74 65 75 72 20 6c 65 78 69 63 61 6c 22 2c  diteur lexical",
10b0: 20 73 74 79 6c 65 3a 20 22 62 61 63 6b 67 72 6f   style: "backgro
10c0: 75 6e 64 2d 63 6f 6c 6f 72 3a 20 68 73 6c 28 32  und-color: hsl(2
10d0: 31 30 2c 20 35 30 25 2c 20 34 30 25 29 22 7d 29  10, 50%, 40%)"})
10e0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  ;.        this.x
10f0: 4c 78 67 42 75 74 74 6f 6e 2e 61 70 70 65 6e 64  LxgButton.append
1100: 43 68 69 6c 64 28 74 68 69 73 2e 78 4c 65 78 45  Child(this.xLexE
1110: 64 69 74 42 75 74 74 6f 6e 29 0a 20 20 20 20 20  ditButton).     
1120: 20 20 20 74 68 69 73 2e 78 41 75 74 6f 52 65 66     this.xAutoRef
1130: 72 65 73 68 20 3d 20 6f 47 72 61 6d 6d 61 6c 65  resh = oGrammale
1140: 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22  cte.createNode("
1150: 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65  div", {className
1160: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d  : "grammalecte_m
1170: 65 6e 75 5f 73 75 62 62 75 74 74 6f 6e 22 2c 20  enu_subbutton", 
1180: 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 41 75  textContent: "Au
1190: 74 6f 52 61 66 72 22 2c 20 74 69 74 6c 65 3a 20  toRafr", title: 
11a0: 22 41 75 74 6f 2d 72 61 66 72 61 c3 ae 63 68 69  "Auto-rafra..chi
11b0: 73 73 65 6d 65 6e 74 20 64 65 20 6c 61 20 63 6f  ssement de la co
11c0: 72 72 65 63 74 69 6f 6e 20 67 72 61 6d 6d 61 74  rrection grammat
11d0: 69 63 61 6c 65 20 28 33 20 73 20 61 70 72 c3 a8  icale (3 s apr..
11e0: 73 20 6c 61 20 64 65 72 6e 69 c3 a8 72 65 20 66  s la derni..re f
11f0: 72 61 70 70 65 29 22 7d 29 0a 20 20 20 20 20 20  rappe)"}).      
1200: 20 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42 75    this.xEditorBu
1210: 74 74 6f 6e 2e 61 70 70 65 6e 64 43 68 69 6c 64  tton.appendChild
1220: 28 74 68 69 73 2e 78 41 75 74 6f 52 65 66 72 65  (this.xAutoRefre
1230: 73 68 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  sh);.        thi
1240: 73 2e 62 41 75 74 6f 52 65 66 72 65 73 68 20 3d  s.bAutoRefresh =
1250: 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 62 41   oGrammalecte.bA
1260: 75 74 6f 52 65 66 72 65 73 68 3b 0a 20 20 20 20  utoRefresh;.    
1270: 20 20 20 20 74 68 69 73 2e 73 65 74 41 75 74 6f      this.setAuto
1280: 52 65 66 72 65 73 68 42 75 74 74 6f 6e 28 29 3b  RefreshButton();
1290: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54  .        this.xT
12a0: 46 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20  FButton.onclick 
12b0: 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20  = () => {.      
12c0: 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
12d0: 62 57 6f 72 6b 69 6e 67 29 20 7b 0a 20 20 20 20  bWorking) {.    
12e0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 47 72 61              oGra
12f0: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 54  mmalecte.createT
1300: 46 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20 20 20  FPanel();.      
1310: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
1320: 61 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65 6c 2e  alecte.oTFPanel.
1330: 73 74 61 72 74 28 29 3b 0a 20 20 20 20 20 20 20  start();.       
1340: 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61           oGramma
1350: 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65 6c 2e 73  lecte.oTFPanel.s
1360: 68 6f 77 28 29 3b 0a 20 20 20 20 20 20 20 20 20  how();.         
1370: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 3b 0a     }.        };.
1380: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 45 64          this.xEd
1390: 69 74 6f 72 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69  itorButton.oncli
13a0: 63 6b 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20  ck = () => {.   
13b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68           if (!th
13c0: 69 73 2e 62 57 6f 72 6b 69 6e 67 29 20 7b 0a 20  is.bWorking) {. 
13d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
13e0: 68 69 73 2e 73 68 6f 77 45 64 69 74 6f 72 28 29  his.showEditor()
13f0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ;.            }.
1400: 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20          };.     
1410: 20 20 20 74 68 69 73 2e 78 41 75 74 6f 52 65 66     this.xAutoRef
1420: 72 65 73 68 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28  resh.onclick = (
1430: 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20  ) => {.         
1440: 20 20 20 74 68 69 73 2e 62 41 75 74 6f 52 65 66     this.bAutoRef
1450: 72 65 73 68 20 3d 20 21 74 68 69 73 2e 62 41 75  resh = !this.bAu
1460: 74 6f 52 65 66 72 65 73 68 3b 0a 20 20 20 20 20  toRefresh;.     
1470: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
1480: 63 74 65 2e 62 41 75 74 6f 52 65 66 72 65 73 68  cte.bAutoRefresh
1490: 20 3d 20 74 68 69 73 2e 62 41 75 74 6f 52 65 66   = this.bAutoRef
14a0: 72 65 73 68 3b 0a 20 20 20 20 20 20 20 20 20 20  resh;.          
14b0: 20 20 62 72 6f 77 73 65 72 2e 73 74 6f 72 61 67    browser.storag
14c0: 65 2e 6c 6f 63 61 6c 2e 73 65 74 28 7b 22 61 75  e.local.set({"au
14d0: 74 6f 72 65 66 72 65 73 68 5f 6f 70 74 69 6f 6e  torefresh_option
14e0: 22 3a 20 74 68 69 73 2e 62 41 75 74 6f 52 65 66  ": this.bAutoRef
14f0: 72 65 73 68 7d 29 3b 0a 20 20 20 20 20 20 20 20  resh});.        
1500: 20 20 20 20 74 68 69 73 2e 73 65 74 41 75 74 6f      this.setAuto
1510: 52 65 66 72 65 73 68 42 75 74 74 6f 6e 28 29 3b  RefreshButton();
1520: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
1530: 20 20 20 74 68 69 73 2e 78 4c 78 67 42 75 74 74     this.xLxgButt
1540: 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28 29 20  on.onclick = () 
1550: 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  => {.           
1560: 20 69 66 20 28 21 74 68 69 73 2e 62 57 6f 72 6b   if (!this.bWork
1570: 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ing) {.         
1580: 20 20 20 20 20 20 20 74 68 69 73 2e 73 68 6f 77         this.show
1590: 4c 65 78 69 63 6f 67 72 61 70 68 65 72 28 29 3b  Lexicographer();
15a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15b0: 20 74 68 69 73 2e 63 6c 65 61 72 4c 65 78 69 63   this.clearLexic
15c0: 6f 67 72 61 70 68 65 72 28 29 3b 0a 20 20 20 20  ographer();.    
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
15e0: 2e 73 74 61 72 74 57 61 69 74 49 63 6f 6e 28 29  .startWaitIcon()
15f0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
1600: 20 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f    xGrammalectePo
1610: 72 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b  rt.postMessage({
1620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1630: 20 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22       sCommand: "
1640: 67 65 74 4c 69 73 74 4f 66 54 6f 6b 65 6e 73 22  getListOfTokens"
1650: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
1660: 20 20 20 20 20 20 64 50 61 72 61 6d 3a 20 7b 73        dParam: {s
1670: 54 65 78 74 3a 20 74 68 69 73 2e 6f 54 65 78 74  Text: this.oText
1680: 43 6f 6e 74 72 6f 6c 2e 67 65 74 54 65 78 74 28  Control.getText(
1690: 29 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  )},.            
16a0: 20 20 20 20 20 20 20 20 64 49 6e 66 6f 3a 20 28          dInfo: (
16b0: 28 74 68 69 73 2e 78 4e 6f 64 65 29 20 3f 20 7b  (this.xNode) ? {
16c0: 73 54 65 78 74 41 72 65 61 49 64 3a 20 74 68 69  sTextAreaId: thi
16d0: 73 2e 78 4e 6f 64 65 2e 69 64 7d 20 3a 20 7b 7d  s.xNode.id} : {}
16e0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16f0: 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
1700: 20 20 20 20 20 20 2f 2a 78 47 72 61 6d 6d 61 6c        /*xGrammal
1710: 65 63 74 65 50 6f 72 74 2e 70 6f 73 74 4d 65 73  ectePort.postMes
1720: 73 61 67 65 28 7b 0a 20 20 20 20 20 20 20 20 20  sage({.         
1730: 20 20 20 20 20 20 20 20 20 20 20 73 43 6f 6d 6d             sComm
1740: 61 6e 64 3a 20 22 70 61 72 73 65 46 75 6c 6c 22  and: "parseFull"
1750: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
1760: 20 20 20 20 20 20 64 50 61 72 61 6d 3a 20 7b 73        dParam: {s
1770: 54 65 78 74 3a 20 74 68 69 73 2e 6f 54 65 78 74  Text: this.oText
1780: 43 6f 6e 74 72 6f 6c 2e 67 65 74 54 65 78 74 28  Control.getText(
1790: 29 2c 20 73 43 6f 75 6e 74 72 79 3a 20 22 46 52  ), sCountry: "FR
17a0: 22 2c 20 62 44 65 62 75 67 3a 20 66 61 6c 73 65  ", bDebug: false
17b0: 2c 20 62 43 6f 6e 74 65 78 74 3a 20 66 61 6c 73  , bContext: fals
17c0: 65 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  e},.            
17d0: 20 20 20 20 20 20 20 20 64 49 6e 66 6f 3a 20 28          dInfo: (
17e0: 28 74 68 69 73 2e 78 4e 6f 64 65 29 20 3f 20 7b  (this.xNode) ? {
17f0: 73 54 65 78 74 41 72 65 61 49 64 3a 20 74 68 69  sTextAreaId: thi
1800: 73 2e 78 4e 6f 64 65 2e 69 64 7d 20 3a 20 7b 7d  s.xNode.id} : {}
1810: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1820: 20 20 7d 29 3b 2a 2f 0a 20 20 20 20 20 20 20 20    });*/.        
1830: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 3b      }.        };
1840: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 43  .        this.xC
1850: 6f 6e 6a 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63  onjButton.onclic
1860: 6b 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20  k = () => {.    
1870: 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69          if (!thi
1880: 73 2e 62 57 6f 72 6b 69 6e 67 29 20 7b 0a 20 20  s.bWorking) {.  
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
18a0: 69 73 2e 73 68 6f 77 43 6f 6e 6a 75 67 75 65 75  is.showConjugueu
18b0: 72 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  r();.           
18c0: 20 7d 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20   }.        };.  
18d0: 20 20 20 20 20 20 74 68 69 73 2e 78 4c 65 78 45        this.xLexE
18e0: 64 69 74 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63  ditButton.onclic
18f0: 6b 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20  k = () => {.    
1900: 20 20 20 20 20 20 20 20 78 47 72 61 6d 6d 61 6c          xGrammal
1910: 65 63 74 65 50 6f 72 74 2e 70 6f 73 74 4d 65 73  ectePort.postMes
1920: 73 61 67 65 28 7b 73 43 6f 6d 6d 61 6e 64 3a 20  sage({sCommand: 
1930: 22 6f 70 65 6e 4c 65 78 69 63 6f 6e 45 64 69 74  "openLexiconEdit
1940: 6f 72 22 2c 20 64 50 61 72 61 6d 3a 20 6e 75 6c  or", dParam: nul
1950: 6c 2c 20 64 49 6e 66 6f 3a 20 6e 75 6c 6c 7d 29  l, dInfo: null})
1960: 3b 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20  ;.        };.   
1970: 20 20 20 20 20 2f 2f 20 41 64 64 20 74 61 62 73       // Add tabs
1980: 20 74 6f 20 6d 65 6e 75 0a 20 20 20 20 20 20 20   to menu.       
1990: 20 74 68 69 73 2e 78 4d 65 6e 75 2e 61 70 70 65   this.xMenu.appe
19a0: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78 54 46  ndChild(this.xTF
19b0: 42 75 74 74 6f 6e 29 0a 20 20 20 20 20 20 20 20  Button).        
19c0: 74 68 69 73 2e 78 4d 65 6e 75 2e 61 70 70 65 6e  this.xMenu.appen
19d0: 64 43 68 69 6c 64 28 74 68 69 73 2e 78 45 64 69  dChild(this.xEdi
19e0: 74 6f 72 42 75 74 74 6f 6e 29 0a 20 20 20 20 20  torButton).     
19f0: 20 20 20 74 68 69 73 2e 78 4d 65 6e 75 2e 61 70     this.xMenu.ap
1a00: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78  pendChild(this.x
1a10: 4c 78 67 42 75 74 74 6f 6e 29 0a 20 20 20 20 20  LxgButton).     
1a20: 20 20 20 74 68 69 73 2e 78 4d 65 6e 75 2e 61 70     this.xMenu.ap
1a30: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78  pendChild(this.x
1a40: 43 6f 6e 6a 42 75 74 74 6f 6e 29 0a 20 20 20 20  ConjButton).    
1a50: 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65 6c 42      this.xPanelB
1a60: 61 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  ar.appendChild(t
1a70: 68 69 73 2e 78 4d 65 6e 75 29 3b 0a 20 20 20 20  his.xMenu);.    
1a80: 7d 0a 0a 20 20 20 20 73 74 61 72 74 20 28 77 68  }..    start (wh
1a90: 61 74 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68  at) {.        th
1aa0: 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e 68 69 64 65  is.oTooltip.hide
1ab0: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
1ac0: 2e 62 57 6f 72 6b 69 6e 67 20 3d 20 66 61 6c 73  .bWorking = fals
1ad0: 65 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  e;.        this.
1ae0: 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20 20  clear();.       
1af0: 20 74 68 69 73 2e 68 69 64 65 4d 65 73 73 61 67   this.hideMessag
1b00: 65 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  e();.        thi
1b10: 73 2e 72 65 73 65 74 54 69 6d 65 72 28 29 3b 0a  s.resetTimer();.
1b20: 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
1b30: 6f 66 28 77 68 61 74 29 20 3d 3d 3d 20 22 73 74  of(what) === "st
1b40: 72 69 6e 67 22 29 20 7b 0a 20 20 20 20 20 20 20  ring") {.       
1b50: 20 20 20 20 20 2f 2f 20 74 65 78 74 0a 20 20 20       // text.   
1b60: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e           this.xN
1b70: 6f 64 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20  ode = null;.    
1b80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 65          this.oTe
1b90: 78 74 43 6f 6e 74 72 6f 6c 2e 73 65 74 54 65 78  xtControl.setTex
1ba0: 74 28 77 68 61 74 29 3b 0a 20 20 20 20 20 20 20  t(what);.       
1bb0: 20 7d 20 65 6c 73 65 20 69 66 20 28 77 68 61 74   } else if (what
1bc0: 2e 6e 6f 64 65 54 79 70 65 20 26 26 20 77 68 61  .nodeType && wha
1bd0: 74 2e 6e 6f 64 65 54 79 70 65 20 3d 3d 3d 20 31  t.nodeType === 1
1be0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1bf0: 2f 2f 20 6e 6f 64 65 0a 20 20 20 20 20 20 20 20  // node.        
1c00: 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d      this.xNode =
1c10: 20 77 68 61 74 3b 0a 20 20 20 20 20 20 20 20 20   what;.         
1c20: 20 20 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e     this.oTextCon
1c30: 74 72 6f 6c 2e 73 65 74 4e 6f 64 65 28 74 68 69  trol.setNode(thi
1c40: 73 2e 78 4e 6f 64 65 29 3b 0a 20 20 20 20 20 20  s.xNode);.      
1c50: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
1c60: 20 20 20 20 20 20 20 2f 2f 20 65 72 72 6f 72 0a         // error.
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 6f 47 72 61              oGra
1c80: 6d 6d 61 6c 65 63 74 65 2e 6f 4d 65 73 73 61 67  mmalecte.oMessag
1c90: 65 42 6f 78 2e 73 68 6f 77 4d 65 73 73 61 67 65  eBox.showMessage
1ca0: 28 22 5b 42 55 47 5d 20 41 6e 61 6c 79 73 65 20  ("[BUG] Analyse 
1cb0: 64 e2 80 99 75 6e 20 c3 a9 6c c3 a9 6d 65 6e 74  d...un ..l..ment
1cc0: 20 69 6e 63 6f 6e 6e 75 e2 80 a6 22 29 3b 0a 20   inconnu...");. 
1cd0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f             conso
1ce0: 6c 65 2e 6c 6f 67 28 22 47 72 61 6d 6d 61 6c 65  le.log("Grammale
1cf0: 63 74 65 20 5b 62 75 67 5d 3a 22 2c 20 77 68 61  cte [bug]:", wha
1d00: 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  t);.        }.  
1d10: 20 20 7d 0a 0a 20 20 20 20 73 65 74 41 75 74 6f    }..    setAuto
1d20: 52 65 66 72 65 73 68 42 75 74 74 6f 6e 20 28 29  RefreshButton ()
1d30: 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   {.        this.
1d40: 78 41 75 74 6f 52 65 66 72 65 73 68 2e 73 74 79  xAutoRefresh.sty
1d50: 6c 65 2e 62 61 63 6b 67 72 6f 75 6e 64 43 6f 6c  le.backgroundCol
1d60: 6f 72 20 3d 20 28 74 68 69 73 2e 62 41 75 74 6f  or = (this.bAuto
1d70: 52 65 66 72 65 73 68 29 20 3f 20 22 68 73 6c 28  Refresh) ? "hsl(
1d80: 31 35 30 2c 20 35 30 25 2c 20 35 30 25 29 22 20  150, 50%, 50%)" 
1d90: 3a 20 22 22 3b 0a 20 20 20 20 20 20 20 20 74 68  : "";.        th
1da0: 69 73 2e 78 41 75 74 6f 52 65 66 72 65 73 68 2e  is.xAutoRefresh.
1db0: 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 28 74  style.color = (t
1dc0: 68 69 73 2e 62 41 75 74 6f 52 65 66 72 65 73 68  his.bAutoRefresh
1dd0: 29 20 3f 20 22 68 73 6c 28 31 35 30 2c 20 35 30  ) ? "hsl(150, 50
1de0: 25 2c 20 39 36 25 29 22 20 3a 20 22 22 3b 0a 20  %, 96%)" : "";. 
1df0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 41 75 74         this.xAut
1e00: 6f 52 65 66 72 65 73 68 2e 73 74 79 6c 65 2e 6f  oRefresh.style.o
1e10: 70 61 63 69 74 79 20 3d 20 28 74 68 69 73 2e 62  pacity = (this.b
1e20: 41 75 74 6f 52 65 66 72 65 73 68 29 20 3f 20 22  AutoRefresh) ? "
1e30: 31 22 20 3a 20 22 22 3b 0a 20 20 20 20 7d 0a 0a  1" : "";.    }..
1e40: 20 20 20 20 72 65 63 68 65 63 6b 41 6c 6c 20 28      recheckAll (
1e50: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ) {.        this
1e60: 2e 6f 54 6f 6f 6c 74 69 70 2e 68 69 64 65 28 29  .oTooltip.hide()
1e70: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73  ;.        this.s
1e80: 68 6f 77 45 64 69 74 6f 72 28 29 3b 0a 20 20 20  howEditor();.   
1e90: 20 20 20 20 20 74 68 69 73 2e 63 6c 65 61 72 28       this.clear(
1ea0: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
1eb0: 73 74 61 72 74 57 61 69 74 49 63 6f 6e 28 29 3b  startWaitIcon();
1ec0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65  .        this.re
1ed0: 73 65 74 54 69 6d 65 72 28 29 3b 0a 20 20 20 20  setTimer();.    
1ee0: 20 20 20 20 78 47 72 61 6d 6d 61 6c 65 63 74 65      xGrammalecte
1ef0: 50 6f 72 74 2e 70 6f 73 74 4d 65 73 73 61 67 65  Port.postMessage
1f00: 28 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ({.            s
1f10: 43 6f 6d 6d 61 6e 64 3a 20 22 70 61 72 73 65 41  Command: "parseA
1f20: 6e 64 53 70 65 6c 6c 63 68 65 63 6b 22 2c 0a 20  ndSpellcheck",. 
1f30: 20 20 20 20 20 20 20 20 20 20 20 64 50 61 72 61             dPara
1f40: 6d 3a 20 7b 73 54 65 78 74 3a 20 74 68 69 73 2e  m: {sText: this.
1f50: 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 67 65 74  oTextControl.get
1f60: 54 65 78 74 28 29 2c 20 73 43 6f 75 6e 74 72 79  Text(), sCountry
1f70: 3a 20 22 46 52 22 2c 20 62 44 65 62 75 67 3a 20  : "FR", bDebug: 
1f80: 66 61 6c 73 65 2c 20 62 43 6f 6e 74 65 78 74 3a  false, bContext:
1f90: 20 66 61 6c 73 65 7d 2c 0a 20 20 20 20 20 20 20   false},.       
1fa0: 20 20 20 20 20 64 49 6e 66 6f 3a 20 28 28 74 68       dInfo: ((th
1fb0: 69 73 2e 78 4e 6f 64 65 29 20 3f 20 7b 73 54 65  is.xNode) ? {sTe
1fc0: 78 74 41 72 65 61 49 64 3a 20 74 68 69 73 2e 78  xtAreaId: this.x
1fd0: 4e 6f 64 65 2e 69 64 7d 20 3a 20 7b 7d 29 0a 20  Node.id} : {}). 
1fe0: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d         });.    }
1ff0: 0a 0a 20 20 20 20 73 68 6f 77 45 64 69 74 6f 72  ..    showEditor
2000: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68   () {.        th
2010: 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74  is.switchContent
2020: 4f 6e 28 74 68 69 73 2e 78 47 43 50 61 6e 65 6c  On(this.xGCPanel
2030: 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e 78 45  Content, this.xE
2040: 64 69 74 6f 72 42 75 74 74 6f 6e 29 3b 0a 20 20  ditorButton);.  
2050: 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63        this.switc
2060: 68 43 6f 6e 74 65 6e 74 4f 66 66 28 74 68 69 73  hContentOff(this
2070: 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65 6e  .xLxgPanelConten
2080: 74 2c 20 74 68 69 73 2e 78 4c 78 67 42 75 74 74  t, this.xLxgButt
2090: 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  on);.        thi
20a0: 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74 4f  s.switchContentO
20b0: 66 66 28 74 68 69 73 2e 78 43 6f 6e 6a 50 61 6e  ff(this.xConjPan
20c0: 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e  elContent, this.
20d0: 78 43 6f 6e 6a 42 75 74 74 6f 6e 29 3b 0a 20 20  xConjButton);.  
20e0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65        this.xPane
20f0: 6c 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75  l.style.backgrou
2100: 6e 64 20 3d 20 22 22 3b 0a 20 20 20 20 7d 0a 0a  nd = "";.    }..
2110: 20 20 20 20 73 68 6f 77 4c 65 78 69 63 6f 67 72      showLexicogr
2120: 61 70 68 65 72 20 28 29 20 7b 0a 20 20 20 20 20  apher () {.     
2130: 20 20 20 74 68 69 73 2e 73 77 69 74 63 68 43 6f     this.switchCo
2140: 6e 74 65 6e 74 4f 66 66 28 74 68 69 73 2e 78 47  ntentOff(this.xG
2150: 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c 20 74  CPanelContent, t
2160: 68 69 73 2e 78 45 64 69 74 6f 72 42 75 74 74 6f  his.xEditorButto
2170: 6e 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  n);.        this
2180: 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74 4f 6e  .switchContentOn
2190: 28 74 68 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43  (this.xLxgPanelC
21a0: 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e 78 4c 78  ontent, this.xLx
21b0: 67 42 75 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20  gButton);.      
21c0: 20 20 74 68 69 73 2e 73 77 69 74 63 68 43 6f 6e    this.switchCon
21d0: 74 65 6e 74 4f 66 66 28 74 68 69 73 2e 78 43 6f  tentOff(this.xCo
21e0: 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c 20  njPanelContent, 
21f0: 74 68 69 73 2e 78 43 6f 6e 6a 42 75 74 74 6f 6e  this.xConjButton
2200: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
2210: 78 50 61 6e 65 6c 2e 73 74 79 6c 65 2e 62 61 63  xPanel.style.bac
2220: 6b 67 72 6f 75 6e 64 20 3d 20 22 22 3b 0a 20 20  kground = "";.  
2230: 20 20 7d 0a 0a 20 20 20 20 73 68 6f 77 43 6f 6e    }..    showCon
2240: 6a 75 67 75 65 75 72 20 28 29 20 7b 0a 20 20 20  jugueur () {.   
2250: 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63 68       this.switch
2260: 43 6f 6e 74 65 6e 74 4f 66 66 28 74 68 69 73 2e  ContentOff(this.
2270: 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c  xGCPanelContent,
2280: 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42 75 74   this.xEditorBut
2290: 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74 68  ton);.        th
22a0: 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74  is.switchContent
22b0: 4f 66 66 28 74 68 69 73 2e 78 4c 78 67 50 61 6e  Off(this.xLxgPan
22c0: 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e  elContent, this.
22d0: 78 4c 78 67 42 75 74 74 6f 6e 29 3b 0a 20 20 20  xLxgButton);.   
22e0: 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63 68       this.switch
22f0: 43 6f 6e 74 65 6e 74 4f 6e 28 74 68 69 73 2e 78  ContentOn(this.x
2300: 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  ConjPanelContent
2310: 2c 20 74 68 69 73 2e 78 43 6f 6e 6a 42 75 74 74  , this.xConjButt
2320: 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  on);.        thi
2330: 73 2e 78 50 61 6e 65 6c 2e 73 74 79 6c 65 2e 62  s.xPanel.style.b
2340: 61 63 6b 67 72 6f 75 6e 64 20 3d 20 22 6c 69 6e  ackground = "lin
2350: 65 61 72 2d 67 72 61 64 69 65 6e 74 28 74 6f 20  ear-gradient(to 
2360: 62 6f 74 74 6f 6d 2c 20 68 73 6c 61 28 30 2c 30  bottom, hsla(0,0
2370: 25 2c 31 30 30 25 2c 31 29 20 30 25 2c 20 68 73  %,100%,1) 0%, hs
2380: 6c 61 28 30 2c 30 25 2c 39 35 25 2c 31 29 20 35  la(0,0%,95%,1) 5
2390: 35 25 2c 20 68 73 6c 61 28 30 2c 30 25 2c 39 30  5%, hsla(0,0%,90
23a0: 25 2c 31 29 20 31 30 30 25 29 22 3b 0a 20 20 20  %,1) 100%)";.   
23b0: 20 20 20 20 20 74 68 69 73 2e 6c 69 73 74 65 6e       this.listen
23c0: 43 6f 6e 6a 28 29 3b 0a 20 20 20 20 20 20 20 20  Conj();.        
23d0: 69 66 20 28 21 74 68 69 73 2e 73 56 65 72 62 29  if (!this.sVerb)
23e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   {.            t
23f0: 68 69 73 2e 63 6f 6e 6a 75 67 61 74 65 56 65 72  his.conjugateVer
2400: 62 28 22 c3 aa 74 72 65 22 29 3b 0a 20 20 20 20  b("..tre");.    
2410: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
2420: 20 73 77 69 74 63 68 43 6f 6e 74 65 6e 74 4f 6e   switchContentOn
2430: 20 28 78 43 6f 6e 74 65 6e 74 2c 20 78 4e 6f 64   (xContent, xNod
2440: 65 42 75 74 74 6f 6e 29 20 7b 0a 20 20 20 20 20  eButton) {.     
2450: 20 20 20 78 43 6f 6e 74 65 6e 74 2e 73 74 79 6c     xContent.styl
2460: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f  e.display = "blo
2470: 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f  ck";.        xNo
2480: 64 65 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 62  deButton.style.b
2490: 61 63 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d  ackgroundColor =
24a0: 20 22 68 73 6c 28 32 31 30 2c 20 36 30 25 2c 20   "hsl(210, 60%, 
24b0: 34 30 25 29 22 3b 0a 20 20 20 20 20 20 20 20 78  40%)";.        x
24c0: 4e 6f 64 65 42 75 74 74 6f 6e 2e 73 74 79 6c 65  NodeButton.style
24d0: 2e 74 65 78 74 53 68 61 64 6f 77 20 3d 20 22 32  .textShadow = "2
24e0: 70 78 20 30 20 30 20 68 73 6c 61 28 32 31 30 2c  px 0 0 hsla(210,
24f0: 20 34 30 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20   40%, 35%, .5), 
2500: 2d 32 70 78 20 30 20 30 20 68 73 6c 61 28 32 31  -2px 0 0 hsla(21
2510: 30 2c 20 34 30 25 2c 20 33 35 25 2c 20 2e 35 29  0, 40%, 35%, .5)
2520: 2c 20 30 20 32 70 78 20 30 20 68 73 6c 61 28 32  , 0 2px 0 hsla(2
2530: 31 30 2c 20 34 30 25 2c 20 33 35 25 2c 20 2e 35  10, 40%, 35%, .5
2540: 29 2c 20 30 20 2d 32 70 78 20 30 20 68 73 6c 61  ), 0 -2px 0 hsla
2550: 28 32 31 30 2c 20 34 30 25 2c 20 33 35 25 2c 20  (210, 40%, 35%, 
2560: 2e 35 29 2c 20 31 70 78 20 31 70 78 20 68 73 6c  .5), 1px 1px hsl
2570: 61 28 32 31 30 2c 20 34 30 25 2c 20 33 35 25 2c  a(210, 40%, 35%,
2580: 20 2e 35 29 2c 20 2d 31 70 78 20 2d 31 70 78 20   .5), -1px -1px 
2590: 30 20 68 73 6c 61 28 32 31 30 2c 20 34 30 25 2c  0 hsla(210, 40%,
25a0: 20 33 35 25 2c 20 2e 35 29 2c 20 31 70 78 20 2d   35%, .5), 1px -
25b0: 31 70 78 20 30 20 68 73 6c 61 28 32 31 30 2c 20  1px 0 hsla(210, 
25c0: 34 30 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20 2d  40%, 35%, .5), -
25d0: 31 70 78 20 31 70 78 20 30 20 68 73 6c 61 28 32  1px 1px 0 hsla(2
25e0: 31 30 2c 20 33 30 25 2c 20 33 35 25 2c 20 2e 35  10, 30%, 35%, .5
25f0: 29 22 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  )";.    }..    s
2600: 77 69 74 63 68 43 6f 6e 74 65 6e 74 4f 66 66 20  witchContentOff 
2610: 28 78 43 6f 6e 74 65 6e 74 2c 20 78 4e 6f 64 65  (xContent, xNode
2620: 42 75 74 74 6f 6e 29 20 7b 0a 20 20 20 20 20 20  Button) {.      
2630: 20 20 78 43 6f 6e 74 65 6e 74 2e 73 74 79 6c 65    xContent.style
2640: 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65  .display = "none
2650: 22 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  ";.        xNode
2660: 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 62 61 63  Button.style.bac
2670: 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 22  kgroundColor = "
2680: 22 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  ";.        xNode
2690: 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 74 65 78  Button.style.tex
26a0: 74 53 68 61 64 6f 77 20 3d 20 22 22 3b 0a 20 20  tShadow = "";.  
26b0: 20 20 7d 0a 0a 20 20 20 20 63 6c 65 61 72 20 28    }..    clear (
26c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 6c  ) {.        whil
26d0: 65 20 28 74 68 69 73 2e 78 50 61 72 61 67 72 61  e (this.xParagra
26e0: 70 68 4c 69 73 74 2e 66 69 72 73 74 43 68 69 6c  phList.firstChil
26f0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  d) {.           
2700: 20 74 68 69 73 2e 78 50 61 72 61 67 72 61 70 68   this.xParagraph
2710: 4c 69 73 74 2e 72 65 6d 6f 76 65 43 68 69 6c 64  List.removeChild
2720: 28 74 68 69 73 2e 78 50 61 72 61 67 72 61 70 68  (this.xParagraph
2730: 4c 69 73 74 2e 66 69 72 73 74 43 68 69 6c 64 29  List.firstChild)
2740: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
2750: 20 20 20 20 74 68 69 73 2e 61 49 67 6e 6f 72 65      this.aIgnore
2760: 64 45 72 72 6f 72 73 2e 63 6c 65 61 72 28 29 3b  dErrors.clear();
2770: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 68 69 64 65  .    }..    hide
2780: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66   () {.        if
2790: 20 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f   (oGrammalecte.o
27a0: 54 46 50 61 6e 65 6c 29 20 7b 20 6f 47 72 61 6d  TFPanel) { oGram
27b0: 6d 61 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65 6c  malecte.oTFPanel
27c0: 2e 68 69 64 65 28 29 3b 20 7d 0a 20 20 20 20 20  .hide(); }.     
27d0: 20 20 20 69 66 20 28 6f 47 72 61 6d 6d 61 6c 65     if (oGrammale
27e0: 63 74 65 2e 6f 4d 65 73 73 61 67 65 42 6f 78 29  cte.oMessageBox)
27f0: 20 7b 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   { oGrammalecte.
2800: 6f 4d 65 73 73 61 67 65 42 6f 78 2e 68 69 64 65  oMessageBox.hide
2810: 28 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 6f 47  (); }.        oG
2820: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 6c 65 61 72  rammalecte.clear
2830: 52 69 67 68 74 43 6c 69 63 6b 65 64 4e 6f 64 65  RightClickedNode
2840: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
2850: 2e 78 50 61 6e 65 6c 2e 73 74 79 6c 65 2e 64 69  .xPanel.style.di
2860: 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a  splay = "none";.
2870: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 65          this.oTe
2880: 78 74 43 6f 6e 74 72 6f 6c 2e 63 6c 65 61 72 28  xtControl.clear(
2890: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 64  );.    }..    ad
28a0: 64 50 61 72 61 67 72 61 70 68 52 65 73 75 6c 74  dParagraphResult
28b0: 20 28 6f 52 65 73 75 6c 74 29 20 7b 0a 20 20 20   (oResult) {.   
28c0: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
28d0: 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 73 65         this.rese
28e0: 74 54 69 6d 65 72 28 29 3b 0a 20 20 20 20 20 20  tTimer();.      
28f0: 20 20 20 20 20 20 69 66 20 28 6f 52 65 73 75 6c        if (oResul
2900: 74 20 26 26 20 28 6f 52 65 73 75 6c 74 2e 73 50  t && (oResult.sP
2910: 61 72 61 67 72 61 70 68 2e 74 72 69 6d 28 29 20  aragraph.trim() 
2920: 21 3d 3d 20 22 22 20 7c 7c 20 6f 52 65 73 75 6c  !== "" || oResul
2930: 74 2e 61 47 72 61 6d 6d 45 72 72 2e 6c 65 6e 67  t.aGrammErr.leng
2940: 74 68 20 3e 20 30 20 7c 7c 20 6f 52 65 73 75 6c  th > 0 || oResul
2950: 74 2e 61 53 70 65 6c 6c 45 72 72 2e 6c 65 6e 67  t.aSpellErr.leng
2960: 74 68 20 3e 20 30 29 29 20 7b 0a 20 20 20 20 20  th > 0)) {.     
2970: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78             let x
2980: 4e 6f 64 65 44 69 76 20 3d 20 6f 47 72 61 6d 6d  NodeDiv = oGramm
2990: 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64  alecte.createNod
29a0: 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e  e("div", {classN
29b0: 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  ame: "grammalect
29c0: 65 5f 70 61 72 61 67 72 61 70 68 5f 62 6c 6f 63  e_paragraph_bloc
29d0: 6b 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  k"});.          
29e0: 20 20 20 20 20 20 2f 2f 20 61 63 74 69 6f 6e 73        // actions
29f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a00: 20 6c 65 74 20 78 41 63 74 69 6f 6e 73 42 61 72   let xActionsBar
2a10: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
2a20: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
2a30: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
2a40: 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72 61 67  rammalecte_parag
2a50: 72 61 70 68 5f 61 63 74 69 6f 6e 73 22 7d 29 3b  raph_actions"});
2a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a70: 20 78 41 63 74 69 6f 6e 73 42 61 72 2e 61 70 70   xActionsBar.app
2a80: 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61  endChild(oGramma
2a90: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
2aa0: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
2ab0: 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22  ammalecte_check"
2ac0: 20 2b 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61   + oResult.iPara
2ad0: 4e 75 6d 2c 20 63 6c 61 73 73 4e 61 6d 65 3a 20  Num, className: 
2ae0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72  "grammalecte_par
2af0: 61 67 72 61 70 68 5f 62 75 74 74 6f 6e 20 67 72  agraph_button gr
2b00: 61 6d 6d 61 6c 65 63 74 65 5f 67 72 65 65 6e 22  ammalecte_green"
2b10: 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22  , textContent: "
2b20: e2 86 bb 22 2c 20 74 69 74 6c 65 3a 20 22 52 c3  ...", title: "R.
2b30: a9 61 6e 61 6c 79 73 65 72 e2 80 a6 22 7d 2c 20  .analyser..."}, 
2b40: 7b 70 61 72 61 5f 6e 75 6d 3a 20 6f 52 65 73 75  {para_num: oResu
2b50: 6c 74 2e 69 50 61 72 61 4e 75 6d 7d 29 29 3b 0a  lt.iParaNum}));.
2b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b70: 78 41 63 74 69 6f 6e 73 42 61 72 2e 61 70 70 65  xActionsBar.appe
2b80: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
2b90: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
2ba0: 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61  "div", {id: "gra
2bb0: 6d 6d 61 6c 65 63 74 65 5f 68 69 64 65 22 20 2b  mmalecte_hide" +
2bc0: 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61 4e 75   oResult.iParaNu
2bd0: 6d 2c 20 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  m, className: "g
2be0: 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72 61 67  rammalecte_parag
2bf0: 72 61 70 68 5f 62 75 74 74 6f 6e 20 67 72 61 6d  raph_button gram
2c00: 6d 61 6c 65 63 74 65 5f 72 65 64 22 2c 20 74 65  malecte_red", te
2c10: 78 74 43 6f 6e 74 65 6e 74 3a 20 22 c3 97 22 2c  xtContent: "..",
2c20: 20 74 69 74 6c 65 3a 20 22 43 61 63 68 65 72 22   title: "Cacher"
2c30: 2c 20 73 74 79 6c 65 3a 20 22 66 6f 6e 74 2d 77  , style: "font-w
2c40: 65 69 67 68 74 3a 20 62 6f 6c 64 3b 22 7d 29 29  eight: bold;"}))
2c50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
2c60: 20 20 2f 2f 20 70 61 72 61 67 72 61 70 68 0a 20    // paragraph. 
2c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2c80: 65 74 20 78 50 61 72 61 67 72 61 70 68 20 3d 20  et xParagraph = 
2c90: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
2ca0: 61 74 65 4e 6f 64 65 28 22 70 22 2c 20 7b 69 64  ateNode("p", {id
2cb0: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70  : "grammalecte_p
2cc0: 61 72 61 67 72 61 70 68 22 2b 6f 52 65 73 75 6c  aragraph"+oResul
2cd0: 74 2e 69 50 61 72 61 4e 75 6d 2c 20 63 6c 61 73  t.iParaNum, clas
2ce0: 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65  sName: "grammale
2cf0: 63 74 65 5f 70 61 72 61 67 72 61 70 68 22 2c 20  cte_paragraph", 
2d00: 6c 61 6e 67 3a 20 22 66 72 22 2c 20 63 6f 6e 74  lang: "fr", cont
2d10: 65 6e 74 45 64 69 74 61 62 6c 65 3a 20 22 74 72  entEditable: "tr
2d20: 75 65 22 7d 2c 20 7b 70 61 72 61 5f 6e 75 6d 3a  ue"}, {para_num:
2d30: 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61 4e 75   oResult.iParaNu
2d40: 6d 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  m});.           
2d50: 20 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e       xParagraph.
2d60: 73 65 74 41 74 74 72 69 62 75 74 65 28 22 73 70  setAttribute("sp
2d70: 65 6c 6c 63 68 65 63 6b 22 2c 20 22 66 61 6c 73  ellcheck", "fals
2d80: 65 22 29 3b 20 2f 2f 20 64 6f 65 73 6e e2 80 99  e"); // doesn...
2d90: 74 20 73 65 65 6d 20 70 6f 73 73 69 62 6c 65 20  t seem possible 
2da0: 74 6f 20 75 73 65 20 e2 80 9c 73 70 65 6c 6c 63  to use ...spellc
2db0: 68 65 63 6b e2 80 9d 20 61 73 20 61 20 63 6f 6d  heck... as a com
2dc0: 6d 6f 6e 20 61 74 74 72 69 62 75 74 65 2e 0a 20  mon attribute.. 
2dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2de0: 50 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65  Paragraph.datase
2df0: 74 2e 74 69 6d 65 72 5f 69 64 20 3d 20 22 30 22  t.timer_id = "0"
2e00: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
2e10: 20 20 78 50 61 72 61 67 72 61 70 68 2e 61 64 64    xParagraph.add
2e20: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 69  EventListener("i
2e30: 6e 70 75 74 22 2c 20 66 75 6e 63 74 69 6f 6e 20  nput", function 
2e40: 28 78 45 76 65 6e 74 29 20 7b 0a 20 20 20 20 20  (xEvent) {.     
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2e60: 66 20 28 74 68 69 73 2e 62 41 75 74 6f 52 65 66  f (this.bAutoRef
2e70: 72 65 73 68 29 20 7b 0a 20 20 20 20 20 20 20 20  resh) {.        
2e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e90: 2f 2f 20 74 69 6d 65 72 20 66 6f 72 20 72 65 66  // timer for ref
2ea0: 72 65 73 68 69 6e 67 20 61 6e 61 6c 79 73 69 73  reshing analysis
2eb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ec0: 20 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e           window.
2ed0: 63 6c 65 61 72 54 69 6d 65 6f 75 74 28 70 61 72  clearTimeout(par
2ee0: 73 65 49 6e 74 28 78 50 61 72 61 67 72 61 70 68  seInt(xParagraph
2ef0: 2e 64 61 74 61 73 65 74 2e 74 69 6d 65 72 5f 69  .dataset.timer_i
2f00: 64 2c 20 31 30 29 29 3b 0a 20 20 20 20 20 20 20  d, 10));.       
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f20: 20 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61   xParagraph.data
2f30: 73 65 74 2e 74 69 6d 65 72 5f 69 64 20 3d 20 77  set.timer_id = w
2f40: 69 6e 64 6f 77 2e 73 65 74 54 69 6d 65 6f 75 74  indow.setTimeout
2f50: 28 74 68 69 73 2e 72 65 63 68 65 63 6b 50 61 72  (this.recheckPar
2f60: 61 67 72 61 70 68 2e 62 69 6e 64 28 74 68 69 73  agraph.bind(this
2f70: 29 2c 20 33 30 30 30 2c 20 6f 52 65 73 75 6c 74  ), 3000, oResult
2f80: 2e 69 50 61 72 61 4e 75 6d 29 3b 0a 20 20 20 20  .iParaNum);.    
2f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
2fb0: 20 20 20 20 20 20 2f 2f 20 77 72 69 74 65 20 74        // write t
2fc0: 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  ext.            
2fd0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 65          this.oTe
2fe0: 78 74 43 6f 6e 74 72 6f 6c 2e 73 65 74 50 61 72  xtControl.setPar
2ff0: 61 67 72 61 70 68 28 70 61 72 73 65 49 6e 74 28  agraph(parseInt(
3000: 78 45 76 65 6e 74 2e 74 61 72 67 65 74 2e 64 61  xEvent.target.da
3010: 74 61 73 65 74 2e 70 61 72 61 5f 6e 75 6d 2c 20  taset.para_num, 
3020: 31 30 29 2c 20 74 68 69 73 2e 70 75 72 67 65 54  10), this.purgeT
3030: 65 78 74 28 78 45 76 65 6e 74 2e 74 61 72 67 65  ext(xEvent.targe
3040: 74 2e 74 65 78 74 43 6f 6e 74 65 6e 74 29 29 3b  t.textContent));
3050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3060: 20 20 20 20 20 74 68 69 73 2e 6f 54 65 78 74 43       this.oTextC
3070: 6f 6e 74 72 6f 6c 2e 77 72 69 74 65 28 29 3b 0a  ontrol.write();.
3080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3090: 7d 2e 62 69 6e 64 28 74 68 69 73 29 0a 20 20 20  }.bind(this).   
30a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 20 74               , t
30b0: 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20  rue);.          
30c0: 20 20 20 20 20 20 74 68 69 73 2e 5f 74 61 67 50        this._tagP
30d0: 61 72 61 67 72 61 70 68 28 78 50 61 72 61 67 72  aragraph(xParagr
30e0: 61 70 68 2c 20 6f 52 65 73 75 6c 74 2e 73 50 61  aph, oResult.sPa
30f0: 72 61 67 72 61 70 68 2c 20 6f 52 65 73 75 6c 74  ragraph, oResult
3100: 2e 69 50 61 72 61 4e 75 6d 2c 20 6f 52 65 73 75  .iParaNum, oResu
3110: 6c 74 2e 61 47 72 61 6d 6d 45 72 72 2c 20 6f 52  lt.aGrammErr, oR
3120: 65 73 75 6c 74 2e 61 53 70 65 6c 6c 45 72 72 29  esult.aSpellErr)
3130: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
3140: 20 20 2f 2f 20 63 72 65 61 74 69 6f 6e 0a 20 20    // creation.  
3150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 4e                xN
3160: 6f 64 65 44 69 76 2e 61 70 70 65 6e 64 43 68 69  odeDiv.appendChi
3170: 6c 64 28 78 41 63 74 69 6f 6e 73 42 61 72 29 3b  ld(xActionsBar);
3180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3190: 20 78 4e 6f 64 65 44 69 76 2e 61 70 70 65 6e 64   xNodeDiv.append
31a0: 43 68 69 6c 64 28 78 50 61 72 61 67 72 61 70 68  Child(xParagraph
31b0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
31c0: 20 20 20 74 68 69 73 2e 78 50 61 72 61 67 72 61     this.xParagra
31d0: 70 68 4c 69 73 74 2e 61 70 70 65 6e 64 43 68 69  phList.appendChi
31e0: 6c 64 28 78 4e 6f 64 65 44 69 76 29 3b 0a 20 20  ld(xNodeDiv);.  
31f0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
3200: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61      }.        ca
3210: 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20  tch (e) {.      
3220: 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28        showError(
3230: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
3240: 20 20 7d 0a 0a 20 20 20 20 72 65 73 65 74 54 69    }..    resetTi
3250: 6d 65 72 20 28 29 20 7b 0a 20 20 20 20 20 20 20  mer () {.       
3260: 20 74 68 69 73 2e 6e 4c 61 73 74 52 65 73 75 6c   this.nLastResul
3270: 74 20 3d 20 44 61 74 65 2e 6e 6f 77 28 29 3b 0a  t = Date.now();.
3280: 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 63          window.c
3290: 6c 65 61 72 54 69 6d 65 6f 75 74 28 74 68 69 73  learTimeout(this
32a0: 2e 6e 54 69 6d 65 72 29 3b 0a 20 20 20 20 20 20  .nTimer);.      
32b0: 20 20 74 68 69 73 2e 6e 54 69 6d 65 72 20 3d 20    this.nTimer = 
32c0: 77 69 6e 64 6f 77 2e 73 65 74 54 69 6d 65 6f 75  window.setTimeou
32d0: 74 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  t(.            o
32e0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50  Grammalecte.oGCP
32f0: 61 6e 65 6c 2e 73 68 6f 77 4d 65 73 73 61 67 65  anel.showMessage
3300: 2e 62 69 6e 64 28 74 68 69 73 29 2c 0a 20 20 20  .bind(this),.   
3310: 20 20 20 20 20 20 20 20 20 35 30 30 30 2c 0a 20           5000,. 
3320: 20 20 20 20 20 20 20 20 20 20 20 22 4c 65 20 73             "Le s
3330: 65 72 76 65 75 72 20 67 72 61 6d 6d 61 74 69 63  erveur grammatic
3340: 61 6c 20 73 65 6d 62 6c 65 20 6e 65 20 70 6c 75  al semble ne plu
3350: 73 20 72 c3 a9 70 6f 6e 64 72 65 2e 22 2c 0a 20  s r..pondre.",. 
3360: 20 20 20 20 20 20 20 20 20 20 20 22 41 72 72 c3             "Arr.
3370: aa 74 65 72 20 65 74 20 72 65 6c 61 6e 63 65 72  .ter et relancer
3380: 20 6c 65 20 73 65 72 76 65 75 72 20 67 72 61 6d   le serveur gram
3390: 6d 61 74 69 63 61 6c 2e 22 2c 0a 20 20 20 20 20  matical.",.     
33a0: 20 20 20 20 20 20 20 22 72 65 73 74 61 72 74 57         "restartW
33b0: 6f 72 6b 65 72 22 0a 20 20 20 20 20 20 20 20 29  orker".        )
33c0: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 65 6e 64  ;.    }..    end
33d0: 54 69 6d 65 72 20 28 29 20 7b 0a 20 20 20 20 20  Timer () {.     
33e0: 20 20 20 77 69 6e 64 6f 77 2e 63 6c 65 61 72 54     window.clearT
33f0: 69 6d 65 6f 75 74 28 74 68 69 73 2e 6e 54 69 6d  imeout(this.nTim
3400: 65 72 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  er);.    }..    
3410: 72 65 63 68 65 63 6b 50 61 72 61 67 72 61 70 68  recheckParagraph
3420: 20 28 69 50 61 72 61 4e 75 6d 29 20 7b 0a 20 20   (iParaNum) {.  
3430: 20 20 20 20 20 20 6c 65 74 20 73 50 61 72 61 67        let sParag
3440: 72 61 70 68 49 64 20 3d 20 22 67 72 61 6d 6d 61  raphId = "gramma
3450: 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70 68 22  lecte_paragraph"
3460: 20 2b 20 69 50 61 72 61 4e 75 6d 3b 0a 20 20 20   + iParaNum;.   
3470: 20 20 20 20 20 6c 65 74 20 78 50 61 72 61 67 72       let xParagr
3480: 61 70 68 20 3d 20 74 68 69 73 2e 78 50 61 72 65  aph = this.xPare
3490: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
34a0: 64 28 73 50 61 72 61 67 72 61 70 68 49 64 29 3b  d(sParagraphId);
34b0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62  .        this._b
34c0: 6c 6f 63 6b 50 61 72 61 67 72 61 70 68 28 78 50  lockParagraph(xP
34d0: 61 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20 20  aragraph);.     
34e0: 20 20 20 6c 65 74 20 73 54 65 78 74 20 3d 20 74     let sText = t
34f0: 68 69 73 2e 70 75 72 67 65 54 65 78 74 28 78 50  his.purgeText(xP
3500: 61 72 61 67 72 61 70 68 2e 74 65 78 74 43 6f 6e  aragraph.textCon
3510: 74 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 78  tent);.        x
3520: 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e  GrammalectePort.
3530: 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20  postMessage({.  
3540: 20 20 20 20 20 20 20 20 20 20 73 43 6f 6d 6d 61            sComma
3550: 6e 64 3a 20 22 70 61 72 73 65 41 6e 64 53 70 65  nd: "parseAndSpe
3560: 6c 6c 63 68 65 63 6b 31 22 2c 0a 20 20 20 20 20  llcheck1",.     
3570: 20 20 20 20 20 20 20 64 50 61 72 61 6d 3a 20 7b         dParam: {
3580: 73 54 65 78 74 3a 20 73 54 65 78 74 2c 20 73 43  sText: sText, sC
3590: 6f 75 6e 74 72 79 3a 20 22 46 52 22 2c 20 62 44  ountry: "FR", bD
35a0: 65 62 75 67 3a 20 66 61 6c 73 65 2c 20 62 43 6f  ebug: false, bCo
35b0: 6e 74 65 78 74 3a 20 66 61 6c 73 65 7d 2c 0a 20  ntext: false},. 
35c0: 20 20 20 20 20 20 20 20 20 20 20 64 49 6e 66 6f             dInfo
35d0: 3a 20 7b 73 50 61 72 61 67 72 61 70 68 49 64 3a  : {sParagraphId:
35e0: 20 73 50 61 72 61 67 72 61 70 68 49 64 7d 0a 20   sParagraphId}. 
35f0: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20         });.     
3600: 20 20 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e     this.oTextCon
3610: 74 72 6f 6c 2e 73 65 74 50 61 72 61 67 72 61 70  trol.setParagrap
3620: 68 28 69 50 61 72 61 4e 75 6d 2c 20 73 54 65 78  h(iParaNum, sTex
3630: 74 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  t);.        this
3640: 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 77 72  .oTextControl.wr
3650: 69 74 65 28 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  ite();.    }..  
3660: 20 20 72 65 66 72 65 73 68 50 61 72 61 67 72 61    refreshParagra
3670: 70 68 20 28 73 50 61 72 61 67 72 61 70 68 49 64  ph (sParagraphId
3680: 2c 20 6f 52 65 73 75 6c 74 29 20 7b 0a 20 20 20  , oResult) {.   
3690: 20 20 20 20 20 2f 2f 20 66 75 6e 63 74 69 6f 6e       // function
36a0: 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 72 65 73   called when res
36b0: 75 6c 74 73 20 61 72 65 20 73 65 6e 74 20 62 79  ults are sent by
36c0: 20 74 68 65 20 57 6f 72 6b 65 72 0a 20 20 20 20   the Worker.    
36d0: 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20      try {.      
36e0: 20 20 20 20 20 20 6c 65 74 20 78 50 61 72 61 67        let xParag
36f0: 72 61 70 68 20 3d 20 74 68 69 73 2e 78 50 61 72  raph = this.xPar
3700: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
3710: 49 64 28 73 50 61 72 61 67 72 61 70 68 49 64 29  Id(sParagraphId)
3720: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ;.            //
3730: 20 73 61 76 65 20 63 61 72 65 74 20 70 6f 73 69   save caret posi
3740: 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20  tion.           
3750: 20 6c 65 74 20 5b 6e 53 74 61 72 74 2c 20 6e 45   let [nStart, nE
3760: 6e 64 5d 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  nd] = oGrammalec
3770: 74 65 2e 67 65 74 43 61 72 65 74 50 6f 73 69 74  te.getCaretPosit
3780: 69 6f 6e 28 78 50 61 72 61 67 72 61 70 68 29 3b  ion(xParagraph);
3790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 50 61  .            xPa
37a0: 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74 2e  ragraph.dataset.
37b0: 63 61 72 65 74 5f 70 6f 73 69 74 69 6f 6e 5f 73  caret_position_s
37c0: 74 61 72 74 20 3d 20 6e 53 74 61 72 74 3b 0a 20  tart = nStart;. 
37d0: 20 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61             xPara
37e0: 67 72 61 70 68 2e 64 61 74 61 73 65 74 2e 63 61  graph.dataset.ca
37f0: 72 65 74 5f 70 6f 73 69 74 69 6f 6e 5f 65 6e 64  ret_position_end
3800: 20 3d 20 6e 45 6e 64 3b 0a 20 20 20 20 20 20 20   = nEnd;.       
3810: 20 20 20 20 20 2f 2f 20 65 72 61 73 65 20 74 65       // erase te
3820: 78 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  xte.            
3830: 78 50 61 72 61 67 72 61 70 68 2e 74 65 78 74 43  xParagraph.textC
3840: 6f 6e 74 65 6e 74 20 3d 20 22 22 3b 0a 20 20 20  ontent = "";.   
3850: 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 63 72           // recr
3860: 65 61 74 65 20 61 6e 64 20 72 65 74 61 67 0a 20  eate and retag. 
3870: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
3880: 5f 74 61 67 50 61 72 61 67 72 61 70 68 28 78 50  _tagParagraph(xP
3890: 61 72 61 67 72 61 70 68 2c 20 6f 52 65 73 75 6c  aragraph, oResul
38a0: 74 2e 73 50 61 72 61 67 72 61 70 68 2c 20 73 50  t.sParagraph, sP
38b0: 61 72 61 67 72 61 70 68 49 64 2e 73 6c 69 63 65  aragraphId.slice
38c0: 28 32 31 29 2c 20 6f 52 65 73 75 6c 74 2e 61 47  (21), oResult.aG
38d0: 72 61 6d 6d 45 72 72 2c 20 6f 52 65 73 75 6c 74  rammErr, oResult
38e0: 2e 61 53 70 65 6c 6c 45 72 72 29 3b 0a 20 20 20  .aSpellErr);.   
38f0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66           this._f
3900: 72 65 65 50 61 72 61 67 72 61 70 68 28 78 50 61  reeParagraph(xPa
3910: 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20 20 20  ragraph);.      
3920: 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63    }.        catc
3930: 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20  h (e) {.        
3940: 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29      showError(e)
3950: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
3960: 7d 0a 0a 20 20 20 20 5f 74 61 67 50 61 72 61 67  }..    _tagParag
3970: 72 61 70 68 20 28 78 50 61 72 61 67 72 61 70 68  raph (xParagraph
3980: 2c 20 73 50 61 72 61 67 72 61 70 68 2c 20 69 50  , sParagraph, iP
3990: 61 72 61 4e 75 6d 2c 20 61 53 70 65 6c 6c 45 72  araNum, aSpellEr
39a0: 72 2c 20 61 47 72 61 6d 6d 45 72 72 29 20 7b 0a  r, aGrammErr) {.
39b0: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
39c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 47            if (aG
39d0: 72 61 6d 6d 45 72 72 2e 6c 65 6e 67 74 68 20 3d  rammErr.length =
39e0: 3d 3d 20 30 20 20 26 26 20 20 61 53 70 65 6c 6c  == 0  &&  aSpell
39f0: 45 72 72 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30  Err.length === 0
3a00: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
3a10: 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 74      xParagraph.t
3a20: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 73 50 61  extContent = sPa
3a30: 72 61 67 72 61 70 68 3b 0a 20 20 20 20 20 20 20  ragraph;.       
3a40: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
3a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
3a60: 20 20 20 20 20 20 20 20 20 20 20 61 47 72 61 6d             aGram
3a70: 6d 45 72 72 2e 70 75 73 68 28 2e 2e 2e 61 53 70  mErr.push(...aSp
3a80: 65 6c 6c 45 72 72 29 3b 0a 20 20 20 20 20 20 20  ellErr);.       
3a90: 20 20 20 20 20 61 47 72 61 6d 6d 45 72 72 2e 73       aGrammErr.s
3aa0: 6f 72 74 28 66 75 6e 63 74 69 6f 6e 20 28 61 2c  ort(function (a,
3ab0: 20 62 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20   b) {.          
3ac0: 20 20 20 20 20 20 69 66 20 28 61 5b 22 6e 53 74        if (a["nSt
3ad0: 61 72 74 22 5d 20 3c 20 62 5b 22 6e 53 74 61 72  art"] < b["nStar
3ae0: 74 22 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20  t"]).           
3af0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3b00: 2d 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  -1;.            
3b10: 20 20 20 20 69 66 20 28 61 5b 22 6e 53 74 61 72      if (a["nStar
3b20: 74 22 5d 20 3e 20 62 5b 22 6e 53 74 61 72 74 22  t"] > b["nStart"
3b30: 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ]).             
3b40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b         return 1;
3b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3b60: 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 20   return 0;.     
3b70: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20         });.     
3b80: 20 20 20 20 20 20 20 6c 65 74 20 6e 45 72 72 20         let nErr 
3b90: 3d 20 30 3b 20 2f 2f 20 77 65 20 63 6f 75 6e 74  = 0; // we count
3ba0: 20 65 72 72 6f 72 73 20 74 6f 20 67 69 76 65 20   errors to give 
3bb0: 74 68 65 6d 20 61 6e 20 69 64 65 6e 74 69 66 69  them an identifi
3bc0: 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  er.            l
3bd0: 65 74 20 6e 45 6e 64 4c 61 73 74 45 72 72 20 3d  et nEndLastErr =
3be0: 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   0;.            
3bf0: 66 6f 72 20 28 6c 65 74 20 6f 45 72 72 20 6f 66  for (let oErr of
3c00: 20 61 47 72 61 6d 6d 45 72 72 29 20 7b 0a 20 20   aGrammErr) {.  
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
3c20: 74 20 6e 53 74 61 72 74 20 3d 20 6f 45 72 72 5b  t nStart = oErr[
3c30: 22 6e 53 74 61 72 74 22 5d 3b 0a 20 20 20 20 20  "nStart"];.     
3c40: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 6e             let n
3c50: 45 6e 64 20 3d 20 6f 45 72 72 5b 22 6e 45 6e 64  End = oErr["nEnd
3c60: 22 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  "];.            
3c70: 20 20 20 20 69 66 20 28 6e 53 74 61 72 74 20 3e      if (nStart >
3c80: 3d 20 6e 45 6e 64 4c 61 73 74 45 72 72 29 20 7b  = nEndLastErr) {
3c90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ca0: 20 20 20 20 20 6f 45 72 72 5b 27 73 45 72 72 6f       oErr['sErro
3cb0: 72 49 64 27 5d 20 3d 20 69 50 61 72 61 4e 75 6d  rId'] = iParaNum
3cc0: 20 2b 20 22 2d 22 20 2b 20 6e 45 72 72 2e 74 6f   + "-" + nErr.to
3cd0: 53 74 72 69 6e 67 28 29 3b 20 2f 2f 20 65 72 72  String(); // err
3ce0: 6f 72 20 69 64 65 6e 74 69 66 69 65 72 0a 20 20  or identifier.  
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d00: 20 20 6f 45 72 72 5b 27 73 49 67 6e 6f 72 65 64    oErr['sIgnored
3d10: 4b 65 79 27 5d 20 3d 20 69 50 61 72 61 4e 75 6d  Key'] = iParaNum
3d20: 20 2b 20 22 3a 22 20 2b 20 6e 53 74 61 72 74 2e   + ":" + nStart.
3d30: 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 3a 22  toString() + ":"
3d40: 20 2b 20 73 50 61 72 61 67 72 61 70 68 2e 73 6c   + sParagraph.sl
3d50: 69 63 65 28 6e 53 74 61 72 74 2c 20 6e 45 6e 64  ice(nStart, nEnd
3d60: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
3d70: 20 20 20 20 20 20 20 69 66 20 28 6e 45 6e 64 4c         if (nEndL
3d80: 61 73 74 45 72 72 20 3c 20 6e 53 74 61 72 74 29  astErr < nStart)
3d90: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
3da0: 20 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61             xPara
3db0: 67 72 61 70 68 2e 61 70 70 65 6e 64 43 68 69 6c  graph.appendChil
3dc0: 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74  d(document.creat
3dd0: 65 54 65 78 74 4e 6f 64 65 28 73 50 61 72 61 67  eTextNode(sParag
3de0: 72 61 70 68 2e 73 6c 69 63 65 28 6e 45 6e 64 4c  raph.slice(nEndL
3df0: 61 73 74 45 72 72 2c 20 6e 53 74 61 72 74 29 29  astErr, nStart))
3e00: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
3e10: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50 61               xPa
3e30: 72 61 67 72 61 70 68 2e 61 70 70 65 6e 64 43 68  ragraph.appendCh
3e40: 69 6c 64 28 74 68 69 73 2e 5f 63 72 65 61 74 65  ild(this._create
3e50: 45 72 72 6f 72 28 73 50 61 72 61 67 72 61 70 68  Error(sParagraph
3e60: 2e 73 6c 69 63 65 28 6e 53 74 61 72 74 2c 20 6e  .slice(nStart, n
3e70: 45 6e 64 29 2c 20 6f 45 72 72 29 29 3b 0a 20 20  End), oErr));.  
3e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e90: 20 20 6e 45 6e 64 4c 61 73 74 45 72 72 20 3d 20    nEndLastErr = 
3ea0: 6e 45 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20  nEnd;.          
3eb0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
3ec0: 20 20 20 20 20 20 20 20 6e 45 72 72 20 2b 3d 20          nErr += 
3ed0: 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  1;.            }
3ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
3ef0: 28 6e 45 6e 64 4c 61 73 74 45 72 72 20 3c 3d 20  (nEndLastErr <= 
3f00: 73 50 61 72 61 67 72 61 70 68 2e 6c 65 6e 67 74  sParagraph.lengt
3f10: 68 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  h) {.           
3f20: 20 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e       xParagraph.
3f30: 61 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75  appendChild(docu
3f40: 6d 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74 4e  ment.createTextN
3f50: 6f 64 65 28 73 50 61 72 61 67 72 61 70 68 2e 73  ode(sParagraph.s
3f60: 6c 69 63 65 28 6e 45 6e 64 4c 61 73 74 45 72 72  lice(nEndLastErr
3f70: 29 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  )));.           
3f80: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20   }.        }.   
3f90: 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b       catch (e) {
3fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f  .            sho
3fb0: 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20  wError(e);.     
3fc0: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
3fd0: 5f 63 72 65 61 74 65 45 72 72 6f 72 20 28 73 55  _createError (sU
3fe0: 6e 64 65 72 6c 69 6e 65 64 2c 20 6f 45 72 72 29  nderlined, oErr)
3ff0: 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78   {.        let x
4000: 4e 6f 64 65 45 72 72 20 3d 20 64 6f 63 75 6d 65  NodeErr = docume
4010: 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74  nt.createElement
4020: 28 22 6d 61 72 6b 22 29 3b 0a 20 20 20 20 20 20  ("mark");.      
4030: 20 20 78 4e 6f 64 65 45 72 72 2e 69 64 20 3d 20    xNodeErr.id = 
4040: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72  "grammalecte_err
4050: 22 20 2b 20 6f 45 72 72 5b 27 73 45 72 72 6f 72  " + oErr['sError
4060: 49 64 27 5d 3b 0a 20 20 20 20 20 20 20 20 78 4e  Id'];.        xN
4070: 6f 64 65 45 72 72 2e 74 65 78 74 43 6f 6e 74 65  odeErr.textConte
4080: 6e 74 20 3d 20 73 55 6e 64 65 72 6c 69 6e 65 64  nt = sUnderlined
4090: 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45  ;.        xNodeE
40a0: 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72  rr.dataset.error
40b0: 5f 69 64 20 3d 20 6f 45 72 72 5b 27 73 45 72 72  _id = oErr['sErr
40c0: 6f 72 49 64 27 5d 3b 0a 20 20 20 20 20 20 20 20  orId'];.        
40d0: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
40e0: 2e 69 67 6e 6f 72 65 64 5f 6b 65 79 20 3d 20 6f  .ignored_key = o
40f0: 45 72 72 5b 27 73 49 67 6e 6f 72 65 64 4b 65 79  Err['sIgnoredKey
4100: 27 5d 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64  '];.        xNod
4110: 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72  eErr.dataset.err
4120: 6f 72 5f 74 79 70 65 20 3d 20 28 6f 45 72 72 5b  or_type = (oErr[
4130: 27 73 54 79 70 65 27 5d 20 3d 3d 3d 20 22 57 4f  'sType'] === "WO
4140: 52 44 22 29 20 3f 20 22 73 70 65 6c 6c 69 6e 67  RD") ? "spelling
4150: 22 20 3a 20 22 67 72 61 6d 6d 61 72 22 3b 0a 20  " : "grammar";. 
4160: 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f 64 65         if (xNode
4170: 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72 6f  Err.dataset.erro
4180: 72 5f 74 79 70 65 20 3d 3d 3d 20 22 67 72 61 6d  r_type === "gram
4190: 6d 61 72 22 29 20 7b 0a 20 20 20 20 20 20 20 20  mar") {.        
41a0: 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61 74      xNodeErr.dat
41b0: 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65 20  aset.gc_message 
41c0: 3d 20 6f 45 72 72 5b 27 73 4d 65 73 73 61 67 65  = oErr['sMessage
41d0: 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  '];.            
41e0: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
41f0: 2e 67 63 5f 75 72 6c 20 3d 20 6f 45 72 72 5b 27  .gc_url = oErr['
4200: 55 52 4c 27 5d 3b 0a 20 20 20 20 20 20 20 20 20  URL'];.         
4210: 20 20 20 69 66 20 28 78 4e 6f 64 65 45 72 72 2e     if (xNodeErr.
4220: 64 61 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61  dataset.gc_messa
4230: 67 65 2e 69 6e 63 6c 75 64 65 73 28 22 20 23 22  ge.includes(" #"
4240: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  )) {.           
4250: 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61       xNodeErr.da
4260: 74 61 73 65 74 2e 6c 69 6e 65 5f 69 64 20 3d 20  taset.line_id = 
4270: 6f 45 72 72 5b 27 73 4c 69 6e 65 49 64 27 5d 3b  oErr['sLineId'];
4280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4290: 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65   xNodeErr.datase
42a0: 74 2e 72 75 6c 65 5f 69 64 20 3d 20 6f 45 72 72  t.rule_id = oErr
42b0: 5b 27 73 52 75 6c 65 49 64 27 5d 3b 0a 20 20 20  ['sRuleId'];.   
42c0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
42d0: 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e         xNodeErr.
42e0: 64 61 74 61 73 65 74 2e 73 75 67 67 65 73 74 69  dataset.suggesti
42f0: 6f 6e 73 20 3d 20 6f 45 72 72 5b 22 61 53 75 67  ons = oErr["aSug
4300: 67 65 73 74 69 6f 6e 73 22 5d 2e 6a 6f 69 6e 28  gestions"].join(
4310: 22 7c 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  "|");.        }.
4320: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72          xNodeErr
4330: 2e 63 6c 61 73 73 4e 61 6d 65 20 3d 20 28 74 68  .className = (th
4340: 69 73 2e 61 49 67 6e 6f 72 65 64 45 72 72 6f 72  is.aIgnoredError
4350: 73 2e 68 61 73 28 78 4e 6f 64 65 45 72 72 2e 64  s.has(xNodeErr.d
4360: 61 74 61 73 65 74 2e 69 67 6e 6f 72 65 64 5f 6b  ataset.ignored_k
4370: 65 79 29 29 20 3f 20 22 67 72 61 6d 6d 61 6c 65  ey)) ? "grammale
4380: 63 74 65 5f 65 72 72 6f 72 5f 69 67 6e 6f 72 65  cte_error_ignore
4390: 64 22 20 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  d" : "grammalect
43a0: 65 5f 65 72 72 6f 72 22 3b 0a 20 20 20 20 20 20  e_error";.      
43b0: 20 20 78 4e 6f 64 65 45 72 72 2e 73 74 79 6c 65    xNodeErr.style
43c0: 2e 62 61 63 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72  .backgroundColor
43d0: 20 3d 20 28 6f 45 72 72 5b 27 73 54 79 70 65 27   = (oErr['sType'
43e0: 5d 20 3d 3d 3d 20 22 57 4f 52 44 22 29 20 3f 20  ] === "WORD") ? 
43f0: 22 68 73 6c 28 30 2c 20 35 30 25 2c 20 35 30 25  "hsl(0, 50%, 50%
4400: 29 22 20 3a 20 6f 45 72 72 5b 22 61 43 6f 6c 6f  )" : oErr["aColo
4410: 72 22 5d 3b 0a 20 20 20 20 20 20 20 20 72 65 74  r"];.        ret
4420: 75 72 6e 20 78 4e 6f 64 65 45 72 72 3b 0a 20 20  urn xNodeErr;.  
4430: 20 20 7d 0a 0a 20 20 20 20 5f 62 6c 6f 63 6b 50    }..    _blockP
4440: 61 72 61 67 72 61 70 68 20 28 78 50 61 72 61 67  aragraph (xParag
4450: 72 61 70 68 29 20 7b 0a 20 20 20 20 20 20 20 20  raph) {.        
4460: 78 50 61 72 61 67 72 61 70 68 2e 63 6f 6e 74 65  xParagraph.conte
4470: 6e 74 45 64 69 74 61 62 6c 65 20 3d 20 22 66 61  ntEditable = "fa
4480: 6c 73 65 22 3b 0a 20 20 20 20 20 20 20 20 74 68  lse";.        th
4490: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
44a0: 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d  ementById("gramm
44b0: 61 6c 65 63 74 65 5f 63 68 65 63 6b 22 2b 78 50  alecte_check"+xP
44c0: 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74  aragraph.dataset
44d0: 2e 70 61 72 61 5f 6e 75 6d 29 2e 74 65 78 74 43  .para_num).textC
44e0: 6f 6e 74 65 6e 74 20 3d 20 22 21 21 22 3b 0a 20  ontent = "!!";. 
44f0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
4500: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
4510: 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id("grammalecte_
4520: 63 68 65 63 6b 22 2b 78 50 61 72 61 67 72 61 70  check"+xParagrap
4530: 68 2e 64 61 74 61 73 65 74 2e 70 61 72 61 5f 6e  h.dataset.para_n
4540: 75 6d 29 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72  um).style.backgr
4550: 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 22 68 73 6c  oundColor = "hsl
4560: 28 30 2c 20 35 30 25 2c 20 35 30 25 29 22 3b 0a  (0, 50%, 50%)";.
4570: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
4580: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
4590: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
45a0: 5f 63 68 65 63 6b 22 2b 78 50 61 72 61 67 72 61  _check"+xParagra
45b0: 70 68 2e 64 61 74 61 73 65 74 2e 70 61 72 61 5f  ph.dataset.para_
45c0: 6e 75 6d 29 2e 73 74 79 6c 65 2e 62 6f 78 53 68  num).style.boxSh
45d0: 61 64 6f 77 20 3d 20 22 30 20 30 20 30 20 33 70  adow = "0 0 0 3p
45e0: 78 20 68 73 6c 61 28 30 2c 20 30 25 2c 20 35 30  x hsla(0, 0%, 50
45f0: 25 2c 20 2e 32 29 22 3b 0a 20 20 20 20 20 20 20  %, .2)";.       
4600: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
4610: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
4620: 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22  ammalecte_check"
4630: 2b 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61  +xParagraph.data
4640: 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 73 74  set.para_num).st
4650: 79 6c 65 2e 61 6e 69 6d 61 74 69 6f 6e 20 3d 20  yle.animation = 
4660: 22 67 72 61 6d 6d 61 6c 65 63 74 65 2d 70 75 6c  "grammalecte-pul
4670: 73 65 20 31 73 20 6c 69 6e 65 61 72 20 69 6e 66  se 1s linear inf
4680: 69 6e 69 74 65 22 3b 0a 20 20 20 20 7d 0a 0a 20  inite";.    }.. 
4690: 20 20 20 5f 66 72 65 65 50 61 72 61 67 72 61 70     _freeParagrap
46a0: 68 20 28 78 50 61 72 61 67 72 61 70 68 29 20 7b  h (xParagraph) {
46b0: 0a 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72  .        xParagr
46c0: 61 70 68 2e 63 6f 6e 74 65 6e 74 45 64 69 74 61  aph.contentEdita
46d0: 62 6c 65 20 3d 20 22 74 72 75 65 22 3b 0a 20 20  ble = "true";.  
46e0: 20 20 20 20 20 20 69 66 20 28 78 50 61 72 61 67        if (xParag
46f0: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 63 61 72  raph.dataset.car
4700: 65 74 5f 70 6f 73 69 74 69 6f 6e 5f 73 74 61 72  et_position_star
4710: 74 20 21 3d 3d 20 22 2d 31 22 29 20 7b 0a 20 20  t !== "-1") {.  
4720: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 6e 53            let nS
4730: 74 61 72 74 20 3d 20 70 61 72 73 65 49 6e 74 28  tart = parseInt(
4740: 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61 73  xParagraph.datas
4750: 65 74 2e 63 61 72 65 74 5f 70 6f 73 69 74 69 6f  et.caret_positio
4760: 6e 5f 73 74 61 72 74 2c 20 31 30 29 3b 0a 20 20  n_start, 10);.  
4770: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 6e 45            let nE
4780: 6e 64 20 3d 20 70 61 72 73 65 49 6e 74 28 78 50  nd = parseInt(xP
4790: 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74  aragraph.dataset
47a0: 2e 63 61 72 65 74 5f 70 6f 73 69 74 69 6f 6e 5f  .caret_position_
47b0: 65 6e 64 2c 20 31 30 29 3b 0a 20 20 20 20 20 20  end, 10);.      
47c0: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
47d0: 74 65 2e 73 65 74 43 61 72 65 74 50 6f 73 69 74  te.setCaretPosit
47e0: 69 6f 6e 28 78 50 61 72 61 67 72 61 70 68 2c 20  ion(xParagraph, 
47f0: 6e 53 74 61 72 74 2c 20 6e 45 6e 64 29 3b 0a 20  nStart, nEnd);. 
4800: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
4810: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
4820: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
4830: 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22  ammalecte_check"
4840: 2b 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61  +xParagraph.data
4850: 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 74 65  set.para_num).te
4860: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 e2 86 bb  xtContent = "...
4870: 22 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ";.        this.
4880: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
4890: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
48a0: 63 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72 61  cte_check"+xPara
48b0: 67 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70 61  graph.dataset.pa
48c0: 72 61 5f 6e 75 6d 29 2e 73 74 79 6c 65 2e 62 61  ra_num).style.ba
48d0: 63 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20  ckgroundColor = 
48e0: 22 22 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  "";.        this
48f0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
4900: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
4910: 65 63 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72  ecte_check"+xPar
4920: 61 67 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70  agraph.dataset.p
4930: 61 72 61 5f 6e 75 6d 29 2e 73 74 79 6c 65 2e 61  ara_num).style.a
4940: 6e 69 6d 61 74 69 6f 6e 20 3d 20 22 22 3b 0a 20  nimation = "";. 
4950: 20 20 20 20 20 20 20 73 65 74 54 69 6d 65 6f 75         setTimeou
4960: 74 28 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 78  t(() => { this.x
4970: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
4980: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
4990: 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72 61 67  te_check"+xParag
49a0: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70 61 72  raph.dataset.par
49b0: 61 5f 6e 75 6d 29 2e 73 74 79 6c 65 2e 62 6f 78  a_num).style.box
49c0: 53 68 61 64 6f 77 20 3d 20 22 22 3b 20 7d 2c 20  Shadow = ""; }, 
49d0: 35 30 30 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  500);.    }..   
49e0: 20 61 70 70 6c 79 53 75 67 67 65 73 74 69 6f 6e   applySuggestion
49f0: 20 28 73 4e 6f 64 65 53 75 67 67 49 64 29 20 7b   (sNodeSuggId) {
4a00: 20 2f 2f 20 73 75 67 67 0a 20 20 20 20 20 20 20   // sugg.       
4a10: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20   try {.         
4a20: 20 20 20 6c 65 74 20 73 45 72 72 6f 72 49 64 20     let sErrorId 
4a30: 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67  = this.xParent.g
4a40: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 73 4e  etElementById(sN
4a50: 6f 64 65 53 75 67 67 49 64 29 2e 64 61 74 61 73  odeSuggId).datas
4a60: 65 74 2e 65 72 72 6f 72 5f 69 64 3b 0a 20 20 20  et.error_id;.   
4a70: 20 20 20 20 20 20 20 20 20 2f 2f 6c 65 74 20 73           //let s
4a80: 50 61 72 61 4e 75 6d 20 3d 20 73 45 72 72 6f 72  ParaNum = sError
4a90: 49 64 2e 73 6c 69 63 65 28 30 2c 20 73 45 72 72  Id.slice(0, sErr
4aa0: 6f 72 49 64 2e 69 6e 64 65 78 4f 66 28 22 2d 22  orId.indexOf("-"
4ab0: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ));.            
4ac0: 6c 65 74 20 78 4e 6f 64 65 45 72 72 20 3d 20 74  let xNodeErr = t
4ad0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
4ae0: 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d  lementById("gram
4af0: 6d 61 6c 65 63 74 65 5f 65 72 72 22 20 2b 20 73  malecte_err" + s
4b00: 45 72 72 6f 72 49 64 29 3b 0a 20 20 20 20 20 20  ErrorId);.      
4b10: 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 74        xNodeErr.t
4b20: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 74 68 69  extContent = thi
4b30: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
4b40: 6d 65 6e 74 42 79 49 64 28 73 4e 6f 64 65 53 75  mentById(sNodeSu
4b50: 67 67 49 64 29 2e 74 65 78 74 43 6f 6e 74 65 6e  ggId).textConten
4b60: 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  t;.            x
4b70: 4e 6f 64 65 45 72 72 2e 63 6c 61 73 73 4e 61 6d  NodeErr.classNam
4b80: 65 20 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  e = "grammalecte
4b90: 5f 65 72 72 6f 72 5f 63 6f 72 72 65 63 74 65 64  _error_corrected
4ba0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  ";.            x
4bb0: 4e 6f 64 65 45 72 72 2e 72 65 6d 6f 76 65 41 74  NodeErr.removeAt
4bc0: 74 72 69 62 75 74 65 28 22 73 74 79 6c 65 22 29  tribute("style")
4bd0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
4be0: 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e 68 69 64 65  is.oTooltip.hide
4bf0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
4c00: 74 68 69 73 2e 72 65 63 68 65 63 6b 50 61 72 61  this.recheckPara
4c10: 67 72 61 70 68 28 70 61 72 73 65 49 6e 74 28 73  graph(parseInt(s
4c20: 45 72 72 6f 72 49 64 2e 73 6c 69 63 65 28 30 2c  ErrorId.slice(0,
4c30: 20 73 45 72 72 6f 72 49 64 2e 69 6e 64 65 78 4f   sErrorId.indexO
4c40: 66 28 22 2d 22 29 29 2c 20 31 30 29 29 3b 0a 20  f("-")), 10));. 
4c50: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
4c60: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
4c70: 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72           showErr
4c80: 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  or(e);.        }
4c90: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 67 6e 6f  .    }..    igno
4ca0: 72 65 45 72 72 6f 72 20 28 73 49 67 6e 6f 72 65  reError (sIgnore
4cb0: 42 75 74 74 6f 6e 49 64 29 20 7b 20 20 2f 2f 20  ButtonId) {  // 
4cc0: 69 67 6e 6f 72 65 0a 20 20 20 20 20 20 20 20 74  ignore.        t
4cd0: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
4ce0: 20 6c 65 74 20 73 45 72 72 6f 72 49 64 20 3d 20   let sErrorId = 
4cf0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
4d00: 45 6c 65 6d 65 6e 74 42 79 49 64 28 73 49 67 6e  ElementById(sIgn
4d10: 6f 72 65 42 75 74 74 6f 6e 49 64 29 2e 64 61 74  oreButtonId).dat
4d20: 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b 0a 20  aset.error_id;. 
4d30: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78             let x
4d40: 4e 6f 64 65 45 72 72 20 3d 20 74 68 69 73 2e 78  NodeErr = this.x
4d50: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
4d60: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
4d70: 74 65 5f 65 72 72 22 20 2b 20 73 45 72 72 6f 72  te_err" + sError
4d80: 49 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  Id);.           
4d90: 20 74 68 69 73 2e 61 49 67 6e 6f 72 65 64 45 72   this.aIgnoredEr
4da0: 72 6f 72 73 2e 61 64 64 28 78 4e 6f 64 65 45 72  rors.add(xNodeEr
4db0: 72 2e 64 61 74 61 73 65 74 2e 69 67 6e 6f 72 65  r.dataset.ignore
4dc0: 64 5f 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 20  d_key);.        
4dd0: 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 63 6c 61      xNodeErr.cla
4de0: 73 73 4e 61 6d 65 20 3d 20 22 67 72 61 6d 6d 61  ssName = "gramma
4df0: 6c 65 63 74 65 5f 65 72 72 6f 72 5f 69 67 6e 6f  lecte_error_igno
4e00: 72 65 64 22 3b 0a 20 20 20 20 20 20 20 20 20 20  red";.          
4e10: 20 20 74 68 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e    this.oTooltip.
4e20: 68 69 64 65 28 29 3b 0a 20 20 20 20 20 20 20 20  hide();.        
4e30: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
4e40: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
4e50: 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a    showError(e);.
4e60: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
4e70: 0a 20 20 20 20 70 75 72 67 65 54 65 78 74 20 28  .    purgeText (
4e80: 73 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20  sText) {.       
4e90: 20 72 65 74 75 72 6e 20 73 54 65 78 74 2e 72 65   return sText.re
4ea0: 70 6c 61 63 65 28 2f 26 6e 62 73 70 3b 2f 67 2c  place(/&nbsp;/g,
4eb0: 20 22 20 22 29 2e 72 65 70 6c 61 63 65 28 2f 26   " ").replace(/&
4ec0: 6c 74 3b 2f 67 2c 20 22 3c 22 29 2e 72 65 70 6c  lt;/g, "<").repl
4ed0: 61 63 65 28 2f 26 67 74 3b 2f 67 2c 20 22 3e 22  ace(/&gt;/g, ">"
4ee0: 29 2e 72 65 70 6c 61 63 65 28 2f 26 61 6d 70 3b  ).replace(/&amp;
4ef0: 2f 67 2c 20 22 26 22 29 3b 0a 20 20 20 20 7d 0a  /g, "&");.    }.
4f00: 0a 20 20 20 20 61 64 64 53 75 6d 6d 61 72 79 20  .    addSummary 
4f10: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20  () {.        // 
4f20: 74 6f 64 6f 0a 20 20 20 20 7d 0a 0a 20 20 20 20  todo.    }..    
4f30: 61 64 64 4d 65 73 73 61 67 65 54 6f 47 43 50 61  addMessageToGCPa
4f40: 6e 65 6c 20 28 73 4d 65 73 73 61 67 65 29 20 7b  nel (sMessage) {
4f50: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f  .        let xNo
4f60: 64 65 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  de = oGrammalect
4f70: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
4f80: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
4f90: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 6e  "grammalecte_pan
4fa0: 65 6c 5f 66 6c 6f 77 5f 6d 65 73 73 61 67 65 22  el_flow_message"
4fb0: 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 73  , textContent: s
4fc0: 4d 65 73 73 61 67 65 7d 29 3b 0a 20 20 20 20 20  Message});.     
4fd0: 20 20 20 74 68 69 73 2e 78 50 61 72 61 67 72 61     this.xParagra
4fe0: 70 68 4c 69 73 74 2e 61 70 70 65 6e 64 43 68 69  phList.appendChi
4ff0: 6c 64 28 78 4e 6f 64 65 29 3b 0a 20 20 20 20 7d  ld(xNode);.    }
5000: 0a 0a 20 20 20 20 63 6f 70 79 54 65 78 74 54 6f  ..    copyTextTo
5010: 43 6c 69 70 62 6f 61 72 64 20 28 29 20 7b 0a 20  Clipboard () {. 
5020: 20 20 20 20 20 20 20 74 68 69 73 2e 73 74 61 72         this.star
5030: 74 57 61 69 74 49 63 6f 6e 28 29 3b 0a 20 20 20  tWaitIcon();.   
5040: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
5050: 20 20 20 20 20 20 20 6c 65 74 20 73 54 65 78 74         let sText
5060: 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20 20   = "";.         
5070: 20 20 20 2f 2f 20 44 61 6e 73 20 75 6e 20 73 68     // Dans un sh
5080: 61 64 6f 77 2c 20 3c 74 68 69 73 2e 78 50 61 72  adow, <this.xPar
5090: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42  ent.getElementsB
50a0: 79 43 6c 61 73 73 4e 61 6d 65 3e 20 6e e2 80 99  yClassName> n...
50b0: 65 78 69 73 74 65 20 70 61 73 2e 0a 20 20 20 20  existe pas..    
50c0: 20 20 20 20 20 20 20 20 6c 65 74 20 78 45 6c 65          let xEle
50d0: 6d 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74  m = this.xParent
50e0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
50f0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 67 63 5f  "grammalecte_gc_
5100: 70 61 6e 65 6c 22 29 3b 0a 20 20 20 20 20 20 20  panel");.       
5110: 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 78 4e       for (let xN
5120: 6f 64 65 20 6f 66 20 78 45 6c 65 6d 2e 67 65 74  ode of xElem.get
5130: 45 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73 73 4e  ElementsByClassN
5140: 61 6d 65 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  ame("grammalecte
5150: 5f 70 61 72 61 67 72 61 70 68 22 29 29 20 7b 0a  _paragraph")) {.
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5170: 73 54 65 78 74 20 2b 3d 20 78 4e 6f 64 65 2e 74  sText += xNode.t
5180: 65 78 74 43 6f 6e 74 65 6e 74 20 2b 20 22 5c 6e  extContent + "\n
5190: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ";.            }
51a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
51b0: 73 2e 5f 73 65 6e 64 54 65 78 74 54 6f 43 6c 69  s._sendTextToCli
51c0: 70 62 6f 61 72 64 28 73 54 65 78 74 29 3b 0a 20  pboard(sText);. 
51d0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
51e0: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
51f0: 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72           showErr
5200: 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  or(e);.        }
5210: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74  .        this.st
5220: 6f 70 57 61 69 74 49 63 6f 6e 28 29 3b 0a 20 20  opWaitIcon();.  
5230: 20 20 7d 0a 0a 20 20 20 20 5f 73 65 6e 64 54 65    }..    _sendTe
5240: 78 74 54 6f 43 6c 69 70 62 6f 61 72 64 20 28 73  xtToClipboard (s
5250: 54 65 78 74 29 20 20 7b 0a 20 20 20 20 20 20 20  Text)  {.       
5260: 20 74 68 69 73 2e 78 43 6c 69 70 62 6f 61 72 64   this.xClipboard
5270: 42 75 74 74 6f 6e 2e 74 65 78 74 43 6f 6e 74 65  Button.textConte
5280: 6e 74 20 3d 20 22 e2 87 92 20 70 72 65 73 73 65  nt = "... presse
5290: 2d 70 61 70 69 65 72 73 22 3b 0a 20 20 20 20 20  -papiers";.     
52a0: 20 20 20 69 66 20 28 6e 61 76 69 67 61 74 6f 72     if (navigator
52b0: 2e 63 6c 69 70 62 6f 61 72 64 20 26 26 20 6e 61  .clipboard && na
52c0: 76 69 67 61 74 6f 72 2e 63 6c 69 70 62 6f 61 72  vigator.clipboar
52d0: 64 2e 77 72 69 74 65 54 65 78 74 29 20 7b 0a 20  d.writeText) {. 
52e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 69             // Fi
52f0: 72 65 66 6f 78 20 36 33 2b 2c 20 43 68 72 6f 6d  refox 63+, Chrom
5300: 65 20 36 36 2b 0a 20 20 20 20 20 20 20 20 20 20  e 66+.          
5310: 20 20 2f 2f 20 57 6f 72 6b 69 6e 67 20 64 72 61    // Working dra
5320: 66 74 3a 20 68 74 74 70 73 3a 2f 2f 64 65 76 65  ft: https://deve
5330: 6c 6f 70 65 72 2e 6d 6f 7a 69 6c 6c 61 2e 6f 72  loper.mozilla.or
5340: 67 2f 65 6e 2d 55 53 2f 64 6f 63 73 2f 57 65 62  g/en-US/docs/Web
5350: 2f 41 50 49 2f 43 6c 69 70 62 6f 61 72 64 0a 20  /API/Clipboard. 
5360: 20 20 20 20 20 20 20 20 20 20 20 6e 61 76 69 67             navig
5370: 61 74 6f 72 2e 63 6c 69 70 62 6f 61 72 64 2e 77  ator.clipboard.w
5380: 72 69 74 65 54 65 78 74 28 73 54 65 78 74 29 0a  riteText(sText).
5390: 20 20 20 20 20 20 20 20 20 20 20 20 2e 74 68 65              .the
53a0: 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n(.             
53b0: 20 20 20 28 72 65 73 29 20 3d 3e 20 7b 20 77 69     (res) => { wi
53c0: 6e 64 6f 77 2e 73 65 74 54 69 6d 65 6f 75 74 28  ndow.setTimeout(
53d0: 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 78 43 6c  () => { this.xCl
53e0: 69 70 62 6f 61 72 64 42 75 74 74 6f 6e 2e 74 65  ipboardButton.te
53f0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 f0 9f 93  xtContent = "...
5400: 8b 22 3b 20 7d 2c 20 32 30 30 30 29 3b 20 7d 0a  ."; }, 2000); }.
5410: 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20              ).  
5420: 20 20 20 20 20 20 20 20 20 20 2e 63 61 74 63 68            .catch
5430: 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  (.              
5440: 20 20 28 65 29 20 3d 3e 20 7b 20 63 6f 6e 73 6f    (e) => { conso
5450: 6c 65 2e 65 72 72 6f 72 28 65 29 3b 20 74 68 69  le.error(e); thi
5460: 73 2e 5f 73 65 6e 64 54 65 78 74 54 6f 43 6c 69  s._sendTextToCli
5470: 70 62 6f 61 72 64 28 73 54 65 78 74 29 3b 20 7d  pboard(sText); }
5480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0a  .            );.
5490: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
54a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
54b0: 73 2e 5f 73 65 6e 64 54 65 78 74 54 6f 43 6c 69  s._sendTextToCli
54c0: 70 62 6f 61 72 64 46 61 6c 6c 62 61 63 6b 28 73  pboardFallback(s
54d0: 54 65 78 74 29 3b 0a 20 20 20 20 20 20 20 20 7d  Text);.        }
54e0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 73 65 6e  .    }..    _sen
54f0: 64 54 65 78 74 54 6f 43 6c 69 70 62 6f 61 72 64  dTextToClipboard
5500: 46 61 6c 6c 62 61 63 6b 20 28 73 54 65 78 74 29  Fallback (sText)
5510: 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b   {.        try {
5520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
5530: 73 6f 6c 65 2e 6c 6f 67 28 22 73 65 6e 64 20 74  sole.log("send t
5540: 65 78 74 20 74 6f 20 63 6c 69 70 62 6f 61 72 64  ext to clipboard
5550: 20 66 61 6c 6c 62 61 63 6b 22 29 3b 0a 20 20 20   fallback");.   
5560: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 6f 70 79           // Copy
5570: 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 20 66 61   to clipboard fa
5580: 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20  llback.         
5590: 20 20 20 2f 2f 20 72 65 63 69 70 65 20 66 72 6f     // recipe fro
55a0: 6d 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62  m https://github
55b0: 2e 63 6f 6d 2f 6d 64 6e 2f 77 65 62 65 78 74 65  .com/mdn/webexte
55c0: 6e 73 69 6f 6e 73 2d 65 78 61 6d 70 6c 65 73 2f  nsions-examples/
55d0: 62 6c 6f 62 2f 6d 61 73 74 65 72 2f 63 6f 6e 74  blob/master/cont
55e0: 65 78 74 2d 6d 65 6e 75 2d 63 6f 70 79 2d 6c 69  ext-menu-copy-li
55f0: 6e 6b 2d 77 69 74 68 2d 74 79 70 65 73 2f 63 6c  nk-with-types/cl
5600: 69 70 62 6f 61 72 64 2d 68 65 6c 70 65 72 2e 6a  ipboard-helper.j
5610: 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75  s.            fu
5620: 6e 63 74 69 6f 6e 20 73 65 74 43 6c 69 70 62 6f  nction setClipbo
5630: 61 72 64 44 61 74 61 20 28 78 45 76 65 6e 74 29  ardData (xEvent)
5640: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
5650: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 72 65 6d 6f     document.remo
5660: 76 65 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28  veEventListener(
5670: 22 63 6f 70 79 22 2c 20 73 65 74 43 6c 69 70 62  "copy", setClipb
5680: 6f 61 72 64 44 61 74 61 2c 20 74 72 75 65 29 3b  oardData, true);
5690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
56a0: 20 78 45 76 65 6e 74 2e 73 74 6f 70 49 6d 6d 65   xEvent.stopImme
56b0: 64 69 61 74 65 50 72 6f 70 61 67 61 74 69 6f 6e  diatePropagation
56c0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
56d0: 20 20 20 20 78 45 76 65 6e 74 2e 70 72 65 76 65      xEvent.preve
56e0: 6e 74 44 65 66 61 75 6c 74 28 29 3b 0a 20 20 20  ntDefault();.   
56f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 45 76               xEv
5700: 65 6e 74 2e 63 6c 69 70 62 6f 61 72 64 44 61 74  ent.clipboardDat
5710: 61 2e 73 65 74 44 61 74 61 28 22 74 65 78 74 2f  a.setData("text/
5720: 70 6c 61 69 6e 22 2c 20 73 54 65 78 74 29 3b 0a  plain", sText);.
5730: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
5740: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
5750: 6e 74 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65  nt.addEventListe
5760: 6e 65 72 28 22 63 6f 70 79 22 2c 20 73 65 74 43  ner("copy", setC
5770: 6c 69 70 62 6f 61 72 64 44 61 74 61 2c 20 74 72  lipboardData, tr
5780: 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ue);.           
5790: 20 64 6f 63 75 6d 65 6e 74 2e 65 78 65 63 43 6f   document.execCo
57a0: 6d 6d 61 6e 64 28 22 63 6f 70 79 22 29 3b 0a 20  mmand("copy");. 
57b0: 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 64 6f             windo
57c0: 77 2e 73 65 74 54 69 6d 65 6f 75 74 28 28 29 20  w.setTimeout(() 
57d0: 3d 3e 20 7b 20 74 68 69 73 2e 78 43 6c 69 70 62  => { this.xClipb
57e0: 6f 61 72 64 42 75 74 74 6f 6e 2e 74 65 78 74 43  oardButton.textC
57f0: 6f 6e 74 65 6e 74 20 3d 20 22 f0 9f 93 8b 22 3b  ontent = "....";
5800: 20 7d 2c 20 32 30 30 30 29 3b 0a 20 20 20 20 20   }, 2000);.     
5810: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74     }.        cat
5820: 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20  ch (e) {.       
5830: 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 65 72 72       console.err
5840: 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  or(e);.        }
5850: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 4c  .    }..    // L
5860: 65 78 69 63 6f 67 72 61 70 68 65 72 0a 0a 20 20  exicographer..  
5870: 20 20 63 6c 65 61 72 4c 65 78 69 63 6f 67 72 61    clearLexicogra
5880: 70 68 65 72 20 28 29 20 7b 0a 20 20 20 20 20 20  pher () {.      
5890: 20 20 74 68 69 73 2e 6e 4c 78 67 43 6f 75 6e 74    this.nLxgCount
58a0: 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 77 68   = 0;.        wh
58b0: 69 6c 65 20 28 74 68 69 73 2e 78 4c 78 67 50 61  ile (this.xLxgPa
58c0: 6e 65 6c 43 6f 6e 74 65 6e 74 2e 66 69 72 73 74  nelContent.first
58d0: 43 68 69 6c 64 29 20 7b 0a 20 20 20 20 20 20 20  Child) {.       
58e0: 20 20 20 20 20 74 68 69 73 2e 78 4c 78 67 50 61       this.xLxgPa
58f0: 6e 65 6c 43 6f 6e 74 65 6e 74 2e 72 65 6d 6f 76  nelContent.remov
5900: 65 43 68 69 6c 64 28 74 68 69 73 2e 78 4c 78 67  eChild(this.xLxg
5910: 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 66 69 72  PanelContent.fir
5920: 73 74 43 68 69 6c 64 29 3b 0a 20 20 20 20 20 20  stChild);.      
5930: 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61    }.    }..    a
5940: 64 64 4c 78 67 53 65 70 61 72 61 74 6f 72 20 28  ddLxgSeparator (
5950: 73 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20  sText) {.       
5960: 20 69 66 20 28 74 68 69 73 2e 78 4c 78 67 50 61   if (this.xLxgPa
5970: 6e 65 6c 43 6f 6e 74 65 6e 74 2e 74 65 78 74 43  nelContent.textC
5980: 6f 6e 74 65 6e 74 20 21 3d 3d 20 22 22 29 20 7b  ontent !== "") {
5990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
59a0: 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65  s.xLxgPanelConte
59b0: 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f  nt.appendChild(o
59c0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
59d0: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
59e0: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
59f0: 61 6c 65 63 74 65 5f 6c 78 67 5f 73 65 70 61 72  alecte_lxg_separ
5a00: 61 74 6f 72 22 2c 20 74 65 78 74 43 6f 6e 74 65  ator", textConte
5a10: 6e 74 3a 20 73 54 65 78 74 7d 29 29 3b 0a 20 20  nt: sText}));.  
5a20: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20        }.    }.. 
5a30: 20 20 20 61 64 64 4d 65 73 73 61 67 65 54 6f 4c     addMessageToL
5a40: 78 67 50 61 6e 65 6c 20 28 73 4d 65 73 73 61 67  xgPanel (sMessag
5a50: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74  e) {.        let
5a60: 20 78 4e 6f 64 65 20 3d 20 6f 47 72 61 6d 6d 61   xNode = oGramma
5a70: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
5a80: 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61  ("div", {classNa
5a90: 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  me: "grammalecte
5aa0: 5f 70 61 6e 65 6c 5f 66 6c 6f 77 5f 6d 65 73 73  _panel_flow_mess
5ab0: 61 67 65 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e  age", textConten
5ac0: 74 3a 20 73 4d 65 73 73 61 67 65 7d 29 3b 0a 20  t: sMessage});. 
5ad0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 4c 78 67         this.xLxg
5ae0: 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70 70  PanelContent.app
5af0: 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64 65 29 3b  endChild(xNode);
5b00: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 64 64 4c  .    }..    addL
5b10: 69 73 74 4f 66 54 6f 6b 65 6e 73 20 28 6c 54 6f  istOfTokens (lTo
5b20: 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 74  ken) {.        t
5b30: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
5b40: 20 69 66 20 28 6c 54 6f 6b 65 6e 29 20 7b 0a 20   if (lToken) {. 
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
5b60: 68 69 73 2e 6e 4c 78 67 43 6f 75 6e 74 20 2b 3d  his.nLxgCount +=
5b70: 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   1;.            
5b80: 20 20 20 20 6c 65 74 20 78 54 6f 6b 65 6e 4c 69      let xTokenLi
5b90: 73 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  st = oGrammalect
5ba0: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
5bb0: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
5bc0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67  "grammalecte_lxg
5bd0: 5f 6c 69 73 74 5f 6f 66 5f 74 6f 6b 65 6e 73 22  _list_of_tokens"
5be0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
5bf0: 20 20 20 20 78 54 6f 6b 65 6e 4c 69 73 74 2e 61      xTokenList.a
5c00: 70 70 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d  ppendChild(oGram
5c10: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
5c20: 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73  de("div", {class
5c30: 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63  Name: "grammalec
5c40: 74 65 5f 6c 78 67 5f 6c 69 73 74 5f 6e 75 6d 22  te_lxg_list_num"
5c50: 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 74  , textContent: t
5c60: 68 69 73 2e 6e 4c 78 67 43 6f 75 6e 74 7d 29 29  his.nLxgCount}))
5c70: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
5c80: 20 20 66 6f 72 20 28 6c 65 74 20 6f 54 6f 6b 65    for (let oToke
5c90: 6e 20 6f 66 20 6c 54 6f 6b 65 6e 29 20 7b 0a 20  n of lToken) {. 
5ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cb0: 20 20 20 78 54 6f 6b 65 6e 4c 69 73 74 2e 61 70     xTokenList.ap
5cc0: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 5f  pendChild(this._
5cd0: 63 72 65 61 74 65 54 6f 6b 65 6e 42 6c 6f 63 6b  createTokenBlock
5ce0: 28 6f 54 6f 6b 65 6e 29 29 3b 0a 20 20 20 20 20  (oToken));.     
5cf0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
5d10: 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65  s.xLxgPanelConte
5d20: 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  nt.appendChild(x
5d30: 54 6f 6b 65 6e 4c 69 73 74 29 3b 0a 20 20 20 20  TokenList);.    
5d40: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
5d50: 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63    }.        catc
5d60: 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20  h (e) {.        
5d70: 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29      showError(e)
5d80: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
5d90: 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74 65 54 6f  }..    _createTo
5da0: 6b 65 6e 42 6c 6f 63 6b 20 28 6f 54 6f 6b 65 6e  kenBlock (oToken
5db0: 29 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  ) {.        let 
5dc0: 78 54 6f 6b 65 6e 42 6c 6f 63 6b 20 3d 20 6f 47  xTokenBlock = oG
5dd0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
5de0: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
5df0: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
5e00: 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f  lecte_lxg_token_
5e10: 62 6c 6f 63 6b 22 7d 29 3b 0a 20 20 20 20 20 20  block"});.      
5e20: 20 20 78 54 6f 6b 65 6e 42 6c 6f 63 6b 2e 61 70    xTokenBlock.ap
5e30: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 5f  pendChild(this._
5e40: 63 72 65 61 74 65 54 6f 6b 65 6e 44 65 73 63 72  createTokenDescr
5e50: 28 6f 54 6f 6b 65 6e 29 29 3b 0a 20 20 20 20 20  (oToken));.     
5e60: 20 20 20 69 66 20 28 6f 54 6f 6b 65 6e 2e 61 53     if (oToken.aS
5e70: 75 62 45 6c 65 6d 29 20 7b 0a 20 20 20 20 20 20  ubElem) {.      
5e80: 20 20 20 20 20 20 6c 65 74 20 78 53 75 62 42 6c        let xSubBl
5e90: 6f 63 6b 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  ock = oGrammalec
5ea0: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
5eb0: 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a  iv", {className:
5ec0: 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78   "grammalecte_lx
5ed0: 67 5f 74 6f 6b 65 6e 5f 73 75 62 62 6c 6f 63 6b  g_token_subblock
5ee0: 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "});.           
5ef0: 20 66 6f 72 20 28 6c 65 74 20 6f 53 75 62 45 6c   for (let oSubEl
5f00: 65 6d 20 6f 66 20 6f 54 6f 6b 65 6e 2e 61 53 75  em of oToken.aSu
5f10: 62 45 6c 65 6d 29 20 7b 0a 20 20 20 20 20 20 20  bElem) {.       
5f20: 20 20 20 20 20 20 20 20 20 78 53 75 62 42 6c 6f           xSubBlo
5f30: 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  ck.appendChild(t
5f40: 68 69 73 2e 5f 63 72 65 61 74 65 54 6f 6b 65 6e  his._createToken
5f50: 44 65 73 63 72 28 6f 53 75 62 45 6c 65 6d 29 29  Descr(oSubElem))
5f60: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ;.            }.
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 78 54 6f 6b              xTok
5f80: 65 6e 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68  enBlock.appendCh
5f90: 69 6c 64 28 78 53 75 62 42 6c 6f 63 6b 29 3b 0a  ild(xSubBlock);.
5fa0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
5fb0: 20 20 72 65 74 75 72 6e 20 78 54 6f 6b 65 6e 42    return xTokenB
5fc0: 6c 6f 63 6b 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  lock;.    }..   
5fd0: 20 5f 63 72 65 61 74 65 54 6f 6b 65 6e 44 65 73   _createTokenDes
5fe0: 63 72 20 28 6f 54 6f 6b 65 6e 29 20 7b 0a 20 20  cr (oToken) {.  
5ff0: 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20        try {.    
6000: 20 20 20 20 20 20 20 20 6c 65 74 20 78 54 6f 6b          let xTok
6010: 65 6e 44 65 73 63 72 20 3d 20 6f 47 72 61 6d 6d  enDescr = oGramm
6020: 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64  alecte.createNod
6030: 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e  e("div", {classN
6040: 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  ame: "grammalect
6050: 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f 64 65 73 63  e_lxg_token_desc
6060: 72 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  r"});.          
6070: 20 20 69 66 20 28 6f 54 6f 6b 65 6e 2e 73 54 79    if (oToken.sTy
6080: 70 65 20 3d 3d 20 22 4c 4f 43 50 22 29 20 7b 0a  pe == "LOCP") {.
6090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60a0: 78 54 6f 6b 65 6e 44 65 73 63 72 2e 61 70 70 65  xTokenDescr.appe
60b0: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
60c0: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
60d0: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
60e0: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
60f0: 6c 78 67 5f 74 6f 6b 65 6e 5f 61 6c 73 6f 22 2c  lxg_token_also",
6100: 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 70   textContent: "p
6110: 6f 73 73 69 62 6c 65 6d 65 6e 74 20 e2 80 ba 20  ossiblement ... 
6120: 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  "}));.          
6130: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
6140: 78 54 6f 6b 65 6e 44 65 73 63 72 2e 61 70 70 65  xTokenDescr.appe
6150: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
6160: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
6170: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
6180: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
6190: 6c 78 67 5f 74 6f 6b 65 6e 20 67 72 61 6d 6d 61  lxg_token gramma
61a0: 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f  lecte_lxg_token_
61b0: 22 20 2b 20 6f 54 6f 6b 65 6e 2e 73 54 79 70 65  " + oToken.sType
61c0: 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 6f  , textContent: o
61d0: 54 6f 6b 65 6e 2e 73 56 61 6c 75 65 7d 29 29 3b  Token.sValue}));
61e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 54 6f  .            xTo
61f0: 6b 65 6e 44 65 73 63 72 2e 61 70 70 65 6e 64 43  kenDescr.appendC
6200: 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74  hild(oGrammalect
6210: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
6220: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
6230: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67  "grammalecte_lxg
6240: 5f 74 6f 6b 65 6e 5f 63 6f 6c 6f 6e 22 2c 20 74  _token_colon", t
6250: 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 3a 22 7d  extContent: ":"}
6260: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ));.            
6270: 69 66 20 28 6f 54 6f 6b 65 6e 2e 61 4c 61 62 65  if (oToken.aLabe
6280: 6c 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 31 29 20  l.length === 1) 
6290: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
62a0: 20 20 78 54 6f 6b 65 6e 44 65 73 63 72 2e 61 70    xTokenDescr.ap
62b0: 70 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d  pendChild(oGramm
62c0: 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64  alecte.createNod
62d0: 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e  e("div", {classN
62e0: 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  ame: "grammalect
62f0: 65 5f 6c 78 67 5f 6d 6f 72 70 68 5f 65 6c 65 6d  e_lxg_morph_elem
6300: 5f 69 6e 6c 69 6e 65 22 2c 20 74 65 78 74 43 6f  _inline", textCo
6310: 6e 74 65 6e 74 3a 20 6f 54 6f 6b 65 6e 2e 61 4c  ntent: oToken.aL
6320: 61 62 65 6c 5b 30 5d 7d 29 29 3b 0a 20 20 20 20  abel[0]}));.    
6330: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
6340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6350: 20 6c 65 74 20 78 4d 6f 72 70 68 4c 69 73 74 20   let xMorphList 
6360: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
6370: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
6380: 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72   {className: "gr
6390: 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 6d 6f  ammalecte_lxg_mo
63a0: 72 70 68 5f 6c 69 73 74 22 7d 29 3b 0a 20 20 20  rph_list"});.   
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
63c0: 20 28 6c 65 74 20 73 4c 61 62 65 6c 20 6f 66 20   (let sLabel of 
63d0: 6f 54 6f 6b 65 6e 2e 61 4c 61 62 65 6c 29 20 7b  oToken.aLabel) {
63e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
63f0: 20 20 20 20 20 78 4d 6f 72 70 68 4c 69 73 74 2e       xMorphList.
6400: 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47 72 61  appendChild(oGra
6410: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e  mmalecte.createN
6420: 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73  ode("div", {clas
6430: 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65  sName: "grammale
6440: 63 74 65 5f 6c 78 67 5f 6d 6f 72 70 68 5f 65 6c  cte_lxg_morph_el
6450: 65 6d 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74  em", textContent
6460: 3a 20 22 e2 80 a2 e2 80 af 22 20 2b 20 73 4c 61  : "......" + sLa
6470: 62 65 6c 7d 29 29 3b 0a 20 20 20 20 20 20 20 20  bel}));.        
6480: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
6490: 20 20 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e            xToken
64a0: 44 65 73 63 72 2e 61 70 70 65 6e 64 43 68 69 6c  Descr.appendChil
64b0: 64 28 78 4d 6f 72 70 68 4c 69 73 74 29 3b 0a 20  d(xMorphList);. 
64c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
64d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
64e0: 78 54 6f 6b 65 6e 44 65 73 63 72 3b 0a 20 20 20  xTokenDescr;.   
64f0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63       }.        c
6500: 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20  atch (e) {.     
6510: 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72         showError
6520: 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  (e);.        }. 
6530: 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 48 69 64     }..    setHid
6540: 64 65 6e 20 28 73 43 6c 61 73 73 2c 20 62 48 69  den (sClass, bHi
6550: 64 64 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 20  dden) {.        
6560: 6c 65 74 20 78 50 61 6e 65 6c 43 6f 6e 74 65 6e  let xPanelConten
6570: 74 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74  t = this.xParent
6580: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
6590: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 6e  'grammalecte_pan
65a0: 65 6c 5f 63 6f 6e 74 65 6e 74 27 29 3b 0a 20 20  el_content');.  
65b0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 78        for (let x
65c0: 4e 6f 64 65 20 6f 66 20 78 50 61 6e 65 6c 43 6f  Node of xPanelCo
65d0: 6e 74 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ntent.getElement
65e0: 73 42 79 43 6c 61 73 73 4e 61 6d 65 28 73 43 6c  sByClassName(sCl
65f0: 61 73 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20  ass)) {.        
6600: 20 20 20 20 78 4e 6f 64 65 2e 68 69 64 64 65 6e      xNode.hidden
6610: 20 3d 20 62 48 69 64 64 65 6e 3b 0a 20 20 20 20   = bHidden;.    
6620: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
6630: 20 2f 2f 20 43 6f 6e 6a 75 67 75 65 75 72 0a 0a   // Conjugueur..
6640: 20 20 20 20 6c 69 73 74 65 6e 43 6f 6e 6a 20 28      listenConj (
6650: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ) {.        if (
6660: 21 74 68 69 73 2e 62 4c 69 73 74 65 6e 43 6f 6e  !this.bListenCon
6670: 6a 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  j) {.           
6680: 20 2f 2f 20 62 75 74 74 6f 6e 0a 20 20 20 20 20   // button.     
6690: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
66a0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
66b0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
66c0: 63 6f 6e 6a 5f 62 75 74 74 6f 6e 27 29 2e 61 64  conj_button').ad
66d0: 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22  dEventListener("
66e0: 63 6c 69 63 6b 22 2c 20 28 65 29 20 3d 3e 20 7b  click", (e) => {
66f0: 20 74 68 69 73 2e 63 6f 6e 6a 75 67 61 74 65 56   this.conjugateV
6700: 65 72 62 28 29 3b 20 7d 29 3b 0a 20 20 20 20 20  erb(); });.     
6710: 20 20 20 20 20 20 20 2f 2f 20 74 65 78 74 20 66         // text f
6720: 69 65 6c 64 0a 20 20 20 20 20 20 20 20 20 20 20  ield.           
6730: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
6740: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
6750: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76  ammalecte_conj_v
6760: 65 72 62 27 29 2e 61 64 64 45 76 65 6e 74 4c 69  erb').addEventLi
6770: 73 74 65 6e 65 72 28 22 63 68 61 6e 67 65 22 2c  stener("change",
6780: 20 28 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e 63   (e) => { this.c
6790: 6f 6e 6a 75 67 61 74 65 56 65 72 62 28 29 3b 20  onjugateVerb(); 
67a0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
67b0: 2f 2f 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 20  // options.     
67c0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
67d0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
67e0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
67f0: 63 6f 6e 6a 5f 6f 6e 65 67 27 29 2e 61 64 64 45  conj_oneg').addE
6800: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c  ventListener("cl
6810: 69 63 6b 22 2c 20 28 65 29 20 3d 3e 20 7b 20 74  ick", (e) => { t
6820: 68 69 73 2e 75 70 64 61 74 65 43 6f 6e 6a 28 29  his.updateConj()
6830: 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ; });.          
6840: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
6850: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
6860: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
6870: 6f 70 72 6f 27 29 2e 61 64 64 45 76 65 6e 74 4c  opro').addEventL
6880: 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c  istener("click",
6890: 20 28 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e 75   (e) => { this.u
68a0: 70 64 61 74 65 43 6f 6e 6a 28 29 3b 20 7d 29 3b  pdateConj(); });
68b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
68c0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
68d0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
68e0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 69 6e 74 27  lecte_conj_oint'
68f0: 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e  ).addEventListen
6900: 65 72 28 22 63 6c 69 63 6b 22 2c 20 28 65 29 20  er("click", (e) 
6910: 3d 3e 20 7b 20 74 68 69 73 2e 75 70 64 61 74 65  => { this.update
6920: 43 6f 6e 6a 28 29 3b 20 7d 29 3b 0a 20 20 20 20  Conj(); });.    
6930: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
6940: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
6950: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
6960: 5f 63 6f 6e 6a 5f 6f 66 65 6d 27 29 2e 61 64 64  _conj_ofem').add
6970: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63  EventListener("c
6980: 6c 69 63 6b 22 2c 20 28 65 29 20 3d 3e 20 7b 20  lick", (e) => { 
6990: 74 68 69 73 2e 75 70 64 61 74 65 43 6f 6e 6a 28  this.updateConj(
69a0: 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20  ); });.         
69b0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
69c0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
69d0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
69e0: 5f 6f 74 63 6f 27 29 2e 61 64 64 45 76 65 6e 74  _otco').addEvent
69f0: 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22  Listener("click"
6a00: 2c 20 28 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e  , (e) => { this.
6a10: 75 70 64 61 74 65 43 6f 6e 6a 28 29 3b 20 7d 29  updateConj(); })
6a20: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
6a30: 69 73 2e 62 4c 69 73 74 65 6e 43 6f 6e 6a 20 3d  is.bListenConj =
6a40: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d   true;.        }
6a50: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6f 6e 6a  .    }..    conj
6a60: 75 67 61 74 65 56 65 72 62 20 28 73 56 65 72 62  ugateVerb (sVerb
6a70: 3d 22 22 29 20 7b 0a 20 20 20 20 20 20 20 20 74  ="") {.        t
6a80: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
6a90: 20 69 66 20 28 21 73 56 65 72 62 29 20 7b 0a 20   if (!sVerb) {. 
6aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6ab0: 56 65 72 62 20 3d 20 74 68 69 73 2e 78 50 61 72  Verb = this.xPar
6ac0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
6ad0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
6ae0: 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 76 61 6c 75  conj_verb').valu
6af0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  e;.            }
6b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
6b10: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
6b20: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
6b30: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 6e 65 67 27  lecte_conj_oneg'
6b40: 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73  ).checked = fals
6b50: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e;.            t
6b60: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
6b70: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
6b80: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72  malecte_conj_opr
6b90: 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61  o').checked = fa
6ba0: 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20  lse;.           
6bb0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
6bc0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
6bd0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f  ammalecte_conj_o
6be0: 69 6e 74 27 29 2e 63 68 65 63 6b 65 64 20 3d 20  int').checked = 
6bf0: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20  false;.         
6c00: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
6c10: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
6c20: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
6c30: 5f 6f 74 63 6f 27 29 2e 63 68 65 63 6b 65 64 20  _otco').checked 
6c40: 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20  = false;.       
6c50: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
6c60: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
6c70: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
6c80: 6e 6a 5f 6f 66 65 6d 27 29 2e 63 68 65 63 6b 65  nj_ofem').checke
6c90: 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20  d = false;.     
6ca0: 20 20 20 20 20 20 20 2f 2f 20 72 65 71 75 65 73         // reques
6cb0: 74 20 61 6e 61 6c 79 7a 69 6e 67 0a 20 20 20 20  t analyzing.    
6cc0: 20 20 20 20 20 20 20 20 73 56 65 72 62 20 3d 20          sVerb = 
6cd0: 73 56 65 72 62 2e 74 72 69 6d 28 29 2e 74 6f 4c  sVerb.trim().toL
6ce0: 6f 77 65 72 43 61 73 65 28 29 2e 72 65 70 6c 61  owerCase().repla
6cf0: 63 65 28 2f e2 80 99 2f 67 2c 20 22 27 22 29 2e  ce(/.../g, "'").
6d00: 72 65 70 6c 61 63 65 28 2f 20 20 2b 2f 67 2c 20  replace(/  +/g, 
6d10: 22 20 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  " ");.          
6d20: 20 20 69 66 20 28 73 56 65 72 62 29 20 7b 0a 20    if (sVerb) {. 
6d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6d40: 66 20 28 73 56 65 72 62 2e 73 74 61 72 74 73 57  f (sVerb.startsW
6d50: 69 74 68 28 22 6e 65 20 70 61 73 20 22 29 29 20  ith("ne pas ")) 
6d60: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
6d70: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
6d80: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
6d90: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
6da0: 6f 6e 6a 5f 6f 6e 65 67 27 29 2e 63 68 65 63 6b  onj_oneg').check
6db0: 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20  ed = true;.     
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6dd0: 56 65 72 62 20 3d 20 73 56 65 72 62 2e 73 6c 69  Verb = sVerb.sli
6de0: 63 65 28 37 29 3b 0a 20 20 20 20 20 20 20 20 20  ce(7);.         
6df0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
6e00: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 56 65           if (sVe
6e10: 72 62 2e 73 74 61 72 74 73 57 69 74 68 28 22 73  rb.startsWith("s
6e20: 65 20 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  e ")) {.        
6e30: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
6e40: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
6e50: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
6e60: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29  ecte_conj_opro')
6e70: 2e 63 68 65 63 6b 65 64 20 3d 20 74 72 75 65 3b  .checked = true;
6e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6e90: 20 20 20 20 20 73 56 65 72 62 20 3d 20 73 56 65       sVerb = sVe
6ea0: 72 62 2e 73 6c 69 63 65 28 33 29 3b 0a 20 20 20  rb.slice(3);.   
6eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
6ec0: 6c 73 65 20 69 66 20 28 73 56 65 72 62 2e 73 74  lse if (sVerb.st
6ed0: 61 72 74 73 57 69 74 68 28 22 73 27 22 29 29 20  artsWith("s'")) 
6ee0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
6ef0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
6f00: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
6f10: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
6f20: 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b  onj_opro').check
6f30: 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20  ed = true;.     
6f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6f50: 56 65 72 62 20 3d 20 73 56 65 72 62 2e 73 6c 69  Verb = sVerb.sli
6f60: 63 65 28 32 29 3b 0a 20 20 20 20 20 20 20 20 20  ce(2);.         
6f70: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
6f80: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 56 65           if (sVe
6f90: 72 62 2e 65 6e 64 73 57 69 74 68 28 22 3f 22 29  rb.endsWith("?")
6fa0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
6fb0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
6fc0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
6fd0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
6fe0: 5f 63 6f 6e 6a 5f 6f 69 6e 74 27 29 2e 63 68 65  _conj_oint').che
6ff0: 63 6b 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20  cked = true;.   
7000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7010: 20 73 56 65 72 62 20 3d 20 73 56 65 72 62 2e 73   sVerb = sVerb.s
7020: 6c 69 63 65 28 30 2c 2d 31 29 2e 74 72 69 6d 28  lice(0,-1).trim(
7030: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
7040: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
7050: 20 20 20 20 20 69 66 20 28 73 56 65 72 62 29 20       if (sVerb) 
7060: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
7070: 20 20 20 20 20 20 74 68 69 73 2e 73 56 65 72 62        this.sVerb
7080: 20 3d 20 73 56 65 72 62 3b 0a 20 20 20 20 20 20   = sVerb;.      
7090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
70a0: 69 73 2e 75 70 64 61 74 65 43 6f 6e 6a 28 74 72  is.updateConj(tr
70b0: 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ue);.           
70c0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
70d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70e0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
70f0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
7100: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
7110: 76 65 72 62 27 29 2e 76 61 6c 75 65 20 3d 20 22  verb').value = "
7120: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ";.             
7130: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
7140: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20   }.        }.   
7150: 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b       catch (e) {
7160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
7170: 73 6f 6c 65 2e 65 72 72 6f 72 28 65 2e 66 69 6c  sole.error(e.fil
7180: 65 4e 61 6d 65 20 2b 20 22 5c 6e 22 20 2b 20 65  eName + "\n" + e
7190: 2e 6e 61 6d 65 20 2b 20 22 5c 6e 6c 69 6e 65 3a  .name + "\nline:
71a0: 20 22 20 2b 20 65 2e 6c 69 6e 65 4e 75 6d 62 65   " + e.lineNumbe
71b0: 72 20 2b 20 22 5c 6e 22 20 2b 20 65 2e 6d 65 73  r + "\n" + e.mes
71c0: 73 61 67 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  sage);.        }
71d0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 75 70 64 61  .    }..    upda
71e0: 74 65 43 6f 6e 6a 20 28 62 53 74 61 72 74 3d 66  teConj (bStart=f
71f0: 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20  alse) {.        
7200: 6c 65 74 20 62 50 72 6f 20 3d 20 74 68 69 73 2e  let bPro = this.
7210: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
7220: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
7230: 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e  cte_conj_opro').
7240: 63 68 65 63 6b 65 64 3b 0a 20 20 20 20 20 20 20  checked;.       
7250: 20 6c 65 74 20 62 4e 65 67 20 3d 20 74 68 69 73   let bNeg = this
7260: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
7270: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7280: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 6e 65 67 27 29  ecte_conj_oneg')
7290: 2e 63 68 65 63 6b 65 64 3b 0a 20 20 20 20 20 20  .checked;.      
72a0: 20 20 6c 65 74 20 62 54 70 73 43 6f 20 3d 20 74    let bTpsCo = t
72b0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
72c0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
72d0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63  malecte_conj_otc
72e0: 6f 27 29 2e 63 68 65 63 6b 65 64 3b 0a 20 20 20  o').checked;.   
72f0: 20 20 20 20 20 6c 65 74 20 62 49 6e 74 20 3d 20       let bInt = 
7300: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
7310: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
7320: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 69  mmalecte_conj_oi
7330: 6e 74 27 29 2e 63 68 65 63 6b 65 64 3b 0a 20 20  nt').checked;.  
7340: 20 20 20 20 20 20 6c 65 74 20 62 46 65 6d 20 3d        let bFem =
7350: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
7360: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
7370: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f  ammalecte_conj_o
7380: 66 65 6d 27 29 2e 63 68 65 63 6b 65 64 3b 0a 20  fem').checked;. 
7390: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
73a0: 73 56 65 72 62 29 20 7b 0a 20 20 20 20 20 20 20  sVerb) {.       
73b0: 20 20 20 20 20 78 47 72 61 6d 6d 61 6c 65 63 74       xGrammalect
73c0: 65 50 6f 72 74 2e 70 6f 73 74 4d 65 73 73 61 67  ePort.postMessag
73d0: 65 28 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e({.            
73e0: 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 67      sCommand: "g
73f0: 65 74 56 65 72 62 22 2c 0a 20 20 20 20 20 20 20  etVerb",.       
7400: 20 20 20 20 20 20 20 20 20 64 50 61 72 61 6d 3a           dParam:
7410: 20 7b 73 56 65 72 62 3a 20 74 68 69 73 2e 73 56   {sVerb: this.sV
7420: 65 72 62 2c 20 62 50 72 6f 3a 20 62 50 72 6f 2c  erb, bPro: bPro,
7430: 20 62 4e 65 67 3a 20 62 4e 65 67 2c 20 62 54 70   bNeg: bNeg, bTp
7440: 73 43 6f 3a 20 62 54 70 73 43 6f 2c 20 62 49 6e  sCo: bTpsCo, bIn
7450: 74 3a 20 62 49 6e 74 2c 20 62 46 65 6d 3a 20 62  t: bInt, bFem: b
7460: 46 65 6d 7d 2c 0a 20 20 20 20 20 20 20 20 20 20  Fem},.          
7470: 20 20 20 20 20 20 64 49 6e 66 6f 3a 20 7b 62 53        dInfo: {bS
7480: 74 61 72 74 3a 20 62 53 74 61 72 74 7d 0a 20 20  tart: bStart}.  
7490: 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20            });.  
74a0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20        }.    }.. 
74b0: 20 20 20 63 6f 6e 6a 75 67 61 74 65 57 69 74 68     conjugateWith
74c0: 20 28 6f 56 65 72 62 2c 20 6f 43 6f 6e 6a 54 61   (oVerb, oConjTa
74d0: 62 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 2f  ble) {.        /
74e0: 2f 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65  / function calle
74f0: 64 20 77 68 65 6e 20 72 65 73 75 6c 74 73 20 63  d when results c
7500: 6f 6d 65 20 66 72 6f 6d 20 74 68 65 20 57 6f 72  ome from the Wor
7510: 6b 65 72 0a 20 20 20 20 20 20 20 20 69 66 20 28  ker.        if (
7520: 6f 56 65 72 62 29 20 7b 0a 20 20 20 20 20 20 20  oVerb) {.       
7530: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7540: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7550: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7560: 6e 6a 5f 76 65 72 62 27 29 2e 73 74 79 6c 65 2e  nj_verb').style.
7570: 63 6f 6c 6f 72 20 3d 20 22 23 39 39 39 39 39 39  color = "#999999
7580: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
7590: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
75a0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
75b0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72  malecte_conj_ver
75c0: 62 27 29 2e 76 61 6c 75 65 20 3d 20 22 22 3b 0a  b').value = "";.
75d0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
75e0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
75f0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7600: 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62 5f 74  ecte_conj_verb_t
7610: 69 74 6c 65 27 29 2e 74 65 78 74 43 6f 6e 74 65  itle').textConte
7620: 6e 74 20 3d 20 6f 56 65 72 62 2e 73 56 65 72 62  nt = oVerb.sVerb
7630: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
7640: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
7650: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
7660: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62  alecte_conj_verb
7670: 5f 69 6e 66 6f 27 29 2e 74 65 78 74 43 6f 6e 74  _info').textCont
7680: 65 6e 74 20 3d 20 6f 56 65 72 62 2e 73 49 6e 66  ent = oVerb.sInf
7690: 6f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  o;.            t
76a0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
76b0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
76c0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72  malecte_conj_opr
76d0: 6f 5f 6c 62 6c 27 29 2e 74 65 78 74 43 6f 6e 74  o_lbl').textCont
76e0: 65 6e 74 20 3d 20 6f 56 65 72 62 2e 73 50 72 6f  ent = oVerb.sPro
76f0: 4c 61 62 65 6c 3b 0a 20 20 20 20 20 20 20 20 20  Label;.         
7700: 20 20 20 69 66 20 28 6f 56 65 72 62 2e 62 55 6e     if (oVerb.bUn
7710: 63 6f 6d 70 6c 65 74 65 29 20 7b 0a 20 20 20 20  complete) {.    
7720: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7730: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
7740: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7750: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29  ecte_conj_opro')
7760: 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65  .checked = false
7770: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
7780: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
7790: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
77a0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
77b0: 6f 70 72 6f 27 29 2e 64 69 73 61 62 6c 65 64 20  opro').disabled 
77c0: 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20  = true;.        
77d0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
77e0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
77f0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7800: 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27 29  _conj_opro_lbl')
7810: 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22  .style.color = "
7820: 23 43 43 43 22 3b 0a 20 20 20 20 20 20 20 20 20  #CCC";.         
7830: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
7840: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
7850: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
7860: 63 6f 6e 6a 5f 6f 74 63 6f 27 29 2e 63 68 65 63  conj_otco').chec
7870: 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20  ked = false;.   
7880: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
7890: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
78a0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
78b0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27  lecte_conj_otco'
78c0: 29 2e 64 69 73 61 62 6c 65 64 20 3d 20 74 72 75  ).disabled = tru
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 43 43 43 22  e.color = "#CCC"
7930: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
7940: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
7950: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
7960: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
7970: 6e 6f 74 65 27 29 2e 74 65 78 74 43 6f 6e 74 65  note').textConte
7980: 6e 74 20 3d 20 22 43 65 20 76 65 72 62 65 20 6e  nt = "Ce verbe n
7990: e2 80 99 61 20 70 61 73 20 65 6e 63 6f 72 65 20  ...a pas encore 
79a0: c3 a9 74 c3 a9 20 76 c3 a9 72 69 66 69 c3 a9 2e  ..t.. v..rifi...
79b0: 20 43 e2 80 99 65 73 74 20 70 6f 75 72 71 75 6f   C...est pourquo
79c0: 69 20 6c 65 73 20 6f 70 74 69 6f 6e 73 20 e2 80  i les options ..
79d0: 9c 70 72 6f 6e 6f 6d 69 6e 61 6c e2 80 9d 20 65  .pronominal... e
79e0: 74 20 e2 80 9c 74 65 6d 70 73 20 63 6f 6d 70 6f  t ...temps compo
79f0: 73 c3 a9 73 e2 80 9d 20 73 6f 6e 74 20 64 c3 a9  s..s... sont d..
7a00: 73 61 63 74 69 76 c3 a9 65 73 2e 22 3b 0a 20 20  sactiv..es.";.  
7a10: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
7a20: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
7a30: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
7a40: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
7a50: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
7a60: 5f 6f 74 63 6f 27 29 2e 64 69 73 61 62 6c 65 64  _otco').disabled
7a70: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20   = false;.      
7a80: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
7a90: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
7aa0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
7ab0: 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 5f 6c 62 6c  te_conj_otco_lbl
7ac0: 27 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d  ').style.color =
7ad0: 20 22 23 30 30 30 22 3b 0a 20 20 20 20 20 20 20   "#000";.       
7ae0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 56 65           if (oVe
7af0: 72 62 2e 6e 50 72 6f 6e 6f 6d 69 6e 61 62 6c 65  rb.nPronominable
7b00: 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20   == 0) {.       
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
7b20: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
7b30: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
7b40: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27  lecte_conj_opro'
7b50: 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73  ).checked = fals
7b60: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e;.             
7b70: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
7b80: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
7b90: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
7ba0: 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 64 69 73 61  conj_opro').disa
7bb0: 62 6c 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20  bled = false;.  
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bd0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
7be0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
7bf0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
7c00: 6f 70 72 6f 5f 6c 62 6c 27 29 2e 73 74 79 6c 65  opro_lbl').style
7c10: 2e 63 6f 6c 6f 72 20 3d 20 22 23 30 30 30 22 3b  .color = "#000";
7c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7c30: 20 7d 20 65 6c 73 65 20 69 66 20 28 6f 56 65 72   } else if (oVer
7c40: 62 2e 6e 50 72 6f 6e 6f 6d 69 6e 61 62 6c 65 20  b.nPronominable 
7c50: 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20  == 1) {.        
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7c70: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
7c80: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
7c90: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29  ecte_conj_opro')
7ca0: 2e 63 68 65 63 6b 65 64 20 3d 20 74 72 75 65 3b  .checked = true;
7cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7cc0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7cd0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7ce0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7cf0: 6e 6a 5f 6f 70 72 6f 27 29 2e 64 69 73 61 62 6c  nj_opro').disabl
7d00: 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20  ed = true;.     
7d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
7d20: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
7d30: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
7d40: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72  malecte_conj_opr
7d50: 6f 5f 6c 62 6c 27 29 2e 73 74 79 6c 65 2e 63 6f  o_lbl').style.co
7d60: 6c 6f 72 20 3d 20 22 23 43 43 43 22 3b 0a 20 20  lor = "#CCC";.  
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
7d80: 65 6c 73 65 20 7b 20 2f 2f 20 2d 31 20 6f 72 20  else { // -1 or 
7d90: 31 20 6f 72 20 65 72 72 6f 72 0a 20 20 20 20 20  1 or error.     
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
7db0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
7dc0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
7dd0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72  malecte_conj_opr
7de0: 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61  o').checked = fa
7df0: 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20  lse;.           
7e00: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
7e10: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
7e20: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
7e30: 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 64 69  e_conj_opro').di
7e40: 73 61 62 6c 65 64 20 3d 20 74 72 75 65 3b 0a 20  sabled = true;. 
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e60: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
7e70: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
7e80: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
7e90: 5f 6f 70 72 6f 5f 6c 62 6c 27 29 2e 73 74 79 6c  _opro_lbl').styl
7ea0: 65 2e 63 6f 6c 6f 72 20 3d 20 22 23 43 43 43 22  e.color = "#CCC"
7eb0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
7ec0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
7ed0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
7ee0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
7ef0: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
7f00: 6a 5f 6e 6f 74 65 27 29 2e 74 65 78 74 43 6f 6e  j_note').textCon
7f10: 74 65 6e 74 20 3d 20 22 e2 9d a6 22 3b 0a 20 20  tent = "...";.  
7f20: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
7f30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 69 73          this.dis
7f40: 70 6c 61 79 43 6f 6e 6a 28 6f 43 6f 6e 6a 54 61  playConj(oConjTa
7f50: 62 6c 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 20  ble);.        } 
7f60: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
7f70: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
7f80: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
7f90: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
7fa0: 5f 76 65 72 62 27 29 2e 73 74 79 6c 65 2e 63 6f  _verb').style.co
7fb0: 6c 6f 72 20 3d 20 22 23 42 42 34 34 31 31 22 3b  lor = "#BB4411";
7fc0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
7fd0: 0a 0a 20 20 20 20 64 69 73 70 6c 61 79 43 6f 6e  ..    displayCon
7fe0: 6a 20 28 6f 43 6f 6e 6a 54 61 62 6c 65 29 20 7b  j (oConjTable) {
7ff0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 66 75 6e 63  .        // func
8000: 74 69 6f 6e 20 63 61 6c 6c 65 64 20 77 68 65 6e  tion called when
8010: 20 72 65 73 75 6c 74 73 20 63 6f 6d 65 20 66 72   results come fr
8020: 6f 6d 20 74 68 65 20 57 6f 72 6b 65 72 0a 20 20  om the Worker.  
8030: 20 20 20 20 20 20 69 66 20 28 6f 43 6f 6e 6a 54        if (oConjT
8040: 61 62 6c 65 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b  able === null) {
8050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
8060: 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  urn;.        }. 
8070: 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20         try {.   
8080: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
8090: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
80a0: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
80b0: 65 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 54 65  e_conj_verb').Te
80c0: 78 74 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20  xt = "";.       
80d0: 20 20 20 20 20 2f 2f 20 69 6e 66 69 6e 69 74 69       // infiniti
80e0: 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  f.            th
80f0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
8100: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
8110: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 6e 66 69  alecte_conj_infi
8120: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
8130: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 6e 66   oConjTable["inf
8140: 69 22 5d 20 7c 7c 20 22 c2 a0 22 3b 20 2f 2f 20  i"] || ".."; // 
8150: 73 6f 6d 65 74 68 69 6e 67 20 6f 72 20 6e 62 73  something or nbs
8160: 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  p.            //
8170: 20 70 61 72 74 69 63 69 70 65 20 70 72 c3 a9 73   participe pr..s
8180: 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  ent.            
8190: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
81a0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
81b0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 70  mmalecte_conj_pp
81c0: 72 65 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  re').textContent
81d0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 70   = oConjTable["p
81e0: 70 72 65 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  pre"] || "..";. 
81f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 61             // pa
8200: 72 74 69 63 69 70 65 73 20 70 61 73 73 c3 a9 73  rticipes pass..s
8210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
8220: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
8230: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
8240: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 70 61 73 31  lecte_conj_ppas1
8250: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
8260: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 70 70 61   oConjTable["ppa
8270: 73 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  s1"] || "..";.  
8280: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8290: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
82a0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
82b0: 74 65 5f 63 6f 6e 6a 5f 70 70 61 73 32 27 29 2e  te_conj_ppas2').
82c0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
82d0: 6f 6e 6a 54 61 62 6c 65 5b 22 70 70 61 73 32 22  onjTable["ppas2"
82e0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
82f0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
8300: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
8310: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
8320: 63 6f 6e 6a 5f 70 70 61 73 33 27 29 2e 74 65 78  conj_ppas3').tex
8330: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
8340: 54 61 62 6c 65 5b 22 70 70 61 73 33 22 5d 20 7c  Table["ppas3"] |
8350: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
8360: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8370: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8380: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8390: 6a 5f 70 70 61 73 34 27 29 2e 74 65 78 74 43 6f  j_ppas4').textCo
83a0: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
83b0: 6c 65 5b 22 70 70 61 73 34 22 5d 20 7c 7c 20 22  le["ppas4"] || "
83c0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
83d0: 20 2f 2f 20 69 6d 70 c3 a9 72 61 74 69 66 0a 20   // imp..ratif. 
83e0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
83f0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
8400: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
8410: 63 74 65 5f 63 6f 6e 6a 5f 74 5f 69 6d 70 65 27  cte_conj_t_impe'
8420: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
8430: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f 69 6d  oConjTable["t_im
8440: 70 65 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  pe"] || "..";.  
8450: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8460: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
8470: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
8480: 74 65 5f 63 6f 6e 6a 5f 69 6d 70 65 31 27 29 2e  te_conj_impe1').
8490: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
84a0: 6f 6e 6a 54 61 62 6c 65 5b 22 69 6d 70 65 31 22  onjTable["impe1"
84b0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
84c0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
84d0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
84e0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
84f0: 63 6f 6e 6a 5f 69 6d 70 65 32 27 29 2e 74 65 78  conj_impe2').tex
8500: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
8510: 54 61 62 6c 65 5b 22 69 6d 70 65 32 22 5d 20 7c  Table["impe2"] |
8520: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
8530: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8540: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8550: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8560: 6a 5f 69 6d 70 65 33 27 29 2e 74 65 78 74 43 6f  j_impe3').textCo
8570: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
8580: 6c 65 5b 22 69 6d 70 65 33 22 5d 20 7c 7c 20 22  le["impe3"] || "
8590: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
85a0: 20 2f 2f 20 70 72 c3 a9 73 65 6e 74 0a 20 20 20   // pr..sent.   
85b0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
85c0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
85d0: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
85e0: 65 5f 63 6f 6e 6a 5f 74 5f 69 70 72 65 27 29 2e  e_conj_t_ipre').
85f0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
8600: 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f 69 70 72 65  onjTable["t_ipre
8610: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
8620: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8630: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8640: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
8650: 5f 63 6f 6e 6a 5f 69 70 72 65 31 27 29 2e 74 65  _conj_ipre1').te
8660: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8670: 6a 54 61 62 6c 65 5b 22 69 70 72 65 31 22 5d 20  jTable["ipre1"] 
8680: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8690: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
86a0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
86b0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
86c0: 6e 6a 5f 69 70 72 65 32 27 29 2e 74 65 78 74 43  nj_ipre2').textC
86d0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
86e0: 62 6c 65 5b 22 69 70 72 65 32 22 5d 20 7c 7c 20  ble["ipre2"] || 
86f0: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8700: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8710: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8720: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8730: 69 70 72 65 33 27 29 2e 74 65 78 74 43 6f 6e 74  ipre3').textCont
8740: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8750: 5b 22 69 70 72 65 33 22 5d 20 7c 7c 20 22 c2 a0  ["ipre3"] || "..
8760: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
8770: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
8780: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
8790: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 72  malecte_conj_ipr
87a0: 65 34 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  e4').textContent
87b0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69   = oConjTable["i
87c0: 70 72 65 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  pre4"] || "..";.
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
87e0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
87f0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
8800: 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 72 65 35 27  ecte_conj_ipre5'
8810: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
8820: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70 72 65  oConjTable["ipre
8830: 35 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  5"] || "..";.   
8840: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
8850: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
8860: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
8870: 65 5f 63 6f 6e 6a 5f 69 70 72 65 36 27 29 2e 74  e_conj_ipre6').t
8880: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
8890: 6e 6a 54 61 62 6c 65 5b 22 69 70 72 65 36 22 5d  njTable["ipre6"]
88a0: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
88b0: 20 20 20 20 20 20 2f 2f 20 69 6d 70 61 72 66 61        // imparfa
88c0: 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  it.            t
88d0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
88e0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
88f0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 69  malecte_conj_t_i
8900: 69 6d 70 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  imp').textConten
8910: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
8920: 74 5f 69 69 6d 70 22 5d 20 7c 7c 20 22 c2 a0 22  t_iimp"] || ".."
8930: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
8940: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
8950: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
8960: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d 70  alecte_conj_iimp
8970: 31 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  1').textContent 
8980: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 69  = oConjTable["ii
8990: 6d 70 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  mp1"] || "..";. 
89a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
89b0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
89c0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
89d0: 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d 70 32 27 29  cte_conj_iimp2')
89e0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
89f0: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 69 6d 70 32  ConjTable["iimp2
8a00: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
8a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8a20: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8a30: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
8a40: 5f 63 6f 6e 6a 5f 69 69 6d 70 33 27 29 2e 74 65  _conj_iimp3').te
8a50: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8a60: 6a 54 61 62 6c 65 5b 22 69 69 6d 70 33 22 5d 20  jTable["iimp3"] 
8a70: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8a80: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
8a90: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8aa0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8ab0: 6e 6a 5f 69 69 6d 70 34 27 29 2e 74 65 78 74 43  nj_iimp4').textC
8ac0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8ad0: 62 6c 65 5b 22 69 69 6d 70 34 22 5d 20 7c 7c 20  ble["iimp4"] || 
8ae0: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8af0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8b00: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8b10: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8b20: 69 69 6d 70 35 27 29 2e 74 65 78 74 43 6f 6e 74  iimp5').textCont
8b30: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8b40: 5b 22 69 69 6d 70 35 22 5d 20 7c 7c 20 22 c2 a0  ["iimp5"] || "..
8b50: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
8b60: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
8b70: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
8b80: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d  malecte_conj_iim
8b90: 70 36 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  p6').textContent
8ba0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69   = oConjTable["i
8bb0: 69 6d 70 36 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  imp6"] || "..";.
8bc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70              // p
8bd0: 61 73 73 c3 a9 20 73 69 6d 70 6c 65 0a 20 20 20  ass.. simple.   
8be0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
8bf0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
8c00: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
8c10: 65 5f 63 6f 6e 6a 5f 74 5f 69 70 73 69 27 29 2e  e_conj_t_ipsi').
8c20: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
8c30: 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f 69 70 73 69  onjTable["t_ipsi
8c40: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
8c50: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8c60: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8c70: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
8c80: 5f 63 6f 6e 6a 5f 69 70 73 69 31 27 29 2e 74 65  _conj_ipsi1').te
8c90: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
8ca0: 6a 54 61 62 6c 65 5b 22 69 70 73 69 31 22 5d 20  jTable["ipsi1"] 
8cb0: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8cc0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
8cd0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8ce0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8cf0: 6e 6a 5f 69 70 73 69 32 27 29 2e 74 65 78 74 43  nj_ipsi2').textC
8d00: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8d10: 62 6c 65 5b 22 69 70 73 69 32 22 5d 20 7c 7c 20  ble["ipsi2"] || 
8d20: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8d30: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8d40: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8d50: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8d60: 69 70 73 69 33 27 29 2e 74 65 78 74 43 6f 6e 74  ipsi3').textCont
8d70: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8d80: 5b 22 69 70 73 69 33 22 5d 20 7c 7c 20 22 c2 a0  ["ipsi3"] || "..
8d90: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
8da0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
8db0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
8dc0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 73  malecte_conj_ips
8dd0: 69 34 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  i4').textContent
8de0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69   = oConjTable["i
8df0: 70 73 69 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  psi4"] || "..";.
8e00: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
8e10: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
8e20: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
8e30: 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 73 69 35 27  ecte_conj_ipsi5'
8e40: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
8e50: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70 73 69  oConjTable["ipsi
8e60: 35 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  5"] || "..";.   
8e70: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
8e80: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
8e90: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
8ea0: 65 5f 63 6f 6e 6a 5f 69 70 73 69 36 27 29 2e 74  e_conj_ipsi6').t
8eb0: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
8ec0: 6e 6a 54 61 62 6c 65 5b 22 69 70 73 69 36 22 5d  njTable["ipsi6"]
8ed0: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
8ee0: 20 20 20 20 20 20 2f 2f 20 66 75 74 75 72 0a 20        // futur. 
8ef0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
8f00: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
8f10: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
8f20: 63 74 65 5f 63 6f 6e 6a 5f 74 5f 69 66 75 74 27  cte_conj_t_ifut'
8f30: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
8f40: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f 69 66  oConjTable["t_if
8f50: 75 74 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  ut"] || "..";.  
8f60: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8f70: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
8f80: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
8f90: 74 65 5f 63 6f 6e 6a 5f 69 66 75 74 31 27 29 2e  te_conj_ifut1').
8fa0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
8fb0: 6f 6e 6a 54 61 62 6c 65 5b 22 69 66 75 74 31 22  onjTable["ifut1"
8fc0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
8fd0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
8fe0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
8ff0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
9000: 63 6f 6e 6a 5f 69 66 75 74 32 27 29 2e 74 65 78  conj_ifut2').tex
9010: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
9020: 54 61 62 6c 65 5b 22 69 66 75 74 32 22 5d 20 7c  Table["ifut2"] |
9030: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
9040: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
9050: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9060: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9070: 6a 5f 69 66 75 74 33 27 29 2e 74 65 78 74 43 6f  j_ifut3').textCo
9080: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
9090: 6c 65 5b 22 69 66 75 74 33 22 5d 20 7c 7c 20 22  le["ifut3"] || "
90a0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
90b0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
90c0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
90d0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69  ammalecte_conj_i
90e0: 66 75 74 34 27 29 2e 74 65 78 74 43 6f 6e 74 65  fut4').textConte
90f0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
9100: 22 69 66 75 74 34 22 5d 20 7c 7c 20 22 c2 a0 22  "ifut4"] || ".."
9110: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
9120: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
9130: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
9140: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 66 75 74  alecte_conj_ifut
9150: 35 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  5').textContent 
9160: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 66  = oConjTable["if
9170: 75 74 35 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  ut5"] || "..";. 
9180: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
9190: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
91a0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
91b0: 63 74 65 5f 63 6f 6e 6a 5f 69 66 75 74 36 27 29  cte_conj_ifut6')
91c0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
91d0: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 66 75 74 36  ConjTable["ifut6
91e0: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
91f0: 20 20 20 20 20 20 20 20 2f 2f 20 43 6f 6e 64 69          // Condi
9200: 74 69 6f 6e 6e 65 6c 0a 20 20 20 20 20 20 20 20  tionnel.        
9210: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
9220: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9230: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9240: 6a 5f 74 5f 63 6f 6e 64 61 27 29 2e 74 65 78 74  j_t_conda').text
9250: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
9260: 61 62 6c 65 5b 22 74 5f 63 6f 6e 64 61 22 5d 20  able["t_conda"] 
9270: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
9280: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
9290: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
92a0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
92b0: 6e 6a 5f 63 6f 6e 64 61 31 27 29 2e 74 65 78 74  nj_conda1').text
92c0: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
92d0: 61 62 6c 65 5b 22 63 6f 6e 64 61 31 22 5d 20 7c  able["conda1"] |
92e0: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
92f0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
9300: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9310: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9320: 6a 5f 63 6f 6e 64 61 32 27 29 2e 74 65 78 74 43  j_conda2').textC
9330: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
9340: 62 6c 65 5b 22 63 6f 6e 64 61 32 22 5d 20 7c 7c  ble["conda2"] ||
9350: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
9360: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
9370: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
9380: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
9390: 5f 63 6f 6e 64 61 33 27 29 2e 74 65 78 74 43 6f  _conda3').textCo
93a0: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
93b0: 6c 65 5b 22 63 6f 6e 64 61 33 22 5d 20 7c 7c 20  le["conda3"] || 
93c0: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
93d0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
93e0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
93f0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
9400: 63 6f 6e 64 61 34 27 29 2e 74 65 78 74 43 6f 6e  conda4').textCon
9410: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
9420: 65 5b 22 63 6f 6e 64 61 34 22 5d 20 7c 7c 20 22  e["conda4"] || "
9430: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
9440: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
9450: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
9460: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63  ammalecte_conj_c
9470: 6f 6e 64 61 35 27 29 2e 74 65 78 74 43 6f 6e 74  onda5').textCont
9480: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
9490: 5b 22 63 6f 6e 64 61 35 22 5d 20 7c 7c 20 22 c2  ["conda5"] || ".
94a0: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
94b0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
94c0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
94d0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f  mmalecte_conj_co
94e0: 6e 64 61 36 27 29 2e 74 65 78 74 43 6f 6e 74 65  nda6').textConte
94f0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
9500: 22 63 6f 6e 64 61 36 22 5d 20 7c 7c 20 22 c2 a0  "conda6"] || "..
9510: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
9520: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
9530: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
9540: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 63  malecte_conj_t_c
9550: 6f 6e 64 62 27 29 2e 74 65 78 74 43 6f 6e 74 65  ondb').textConte
9560: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
9570: 22 74 5f 63 6f 6e 64 62 22 5d 20 7c 7c 20 22 c2  "t_condb"] || ".
9580: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
9590: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
95a0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
95b0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f  mmalecte_conj_co
95c0: 6e 64 62 31 27 29 2e 74 65 78 74 43 6f 6e 74 65  ndb1').textConte
95d0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
95e0: 22 63 6f 6e 64 62 31 22 5d 20 7c 7c 20 22 c2 a0  "condb1"] || "..
95f0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
9600: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
9610: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
9620: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e  malecte_conj_con
9630: 64 62 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  db2').textConten
9640: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
9650: 63 6f 6e 64 62 32 22 5d 20 7c 7c 20 22 c2 a0 22  condb2"] || ".."
9660: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
9670: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
9680: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
9690: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64  alecte_conj_cond
96a0: 62 33 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  b3').textContent
96b0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63   = oConjTable["c
96c0: 6f 6e 64 62 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b  ondb3"] || "..";
96d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
96e0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
96f0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9700: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 62  lecte_conj_condb
9710: 34 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  4').textContent 
9720: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f  = oConjTable["co
9730: 6e 64 62 34 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  ndb4"] || "..";.
9740: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
9750: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
9760: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
9770: 65 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 62 35  ecte_conj_condb5
9780: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
9790: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e   oConjTable["con
97a0: 64 62 35 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  db5"] || "..";. 
97b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
97c0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
97d0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
97e0: 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 62 36 27  cte_conj_condb6'
97f0: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
9800: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64  oConjTable["cond
9810: 62 36 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  b6"] || "..";.  
9820: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 75 62            // sub
9830: 6a 6f 6e 63 74 69 66 20 70 72 c3 a9 73 65 6e 74  jonctif pr..sent
9840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9850: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9860: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9870: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 73 70 72  lecte_conj_t_spr
9880: 65 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  e').textContent 
9890: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f  = oConjTable["t_
98a0: 73 70 72 65 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  spre"] || "..";.
98b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
98c0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
98d0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
98e0: 65 63 74 65 5f 63 6f 6e 6a 5f 73 70 72 65 31 27  ecte_conj_spre1'
98f0: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
9900: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 70 72 65  oConjTable["spre
9910: 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  1"] || "..";.   
9920: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
9930: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
9940: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
9950: 65 5f 63 6f 6e 6a 5f 73 70 72 65 32 27 29 2e 74  e_conj_spre2').t
9960: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
9970: 6e 6a 54 61 62 6c 65 5b 22 73 70 72 65 32 22 5d  njTable["spre2"]
9980: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
9990: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
99a0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
99b0: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
99c0: 6f 6e 6a 5f 73 70 72 65 33 27 29 2e 74 65 78 74  onj_spre3').text
99d0: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
99e0: 61 62 6c 65 5b 22 73 70 72 65 33 22 5d 20 7c 7c  able["spre3"] ||
99f0: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
9a00: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
9a10: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
9a20: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
9a30: 5f 73 70 72 65 34 27 29 2e 74 65 78 74 43 6f 6e  _spre4').textCon
9a40: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
9a50: 65 5b 22 73 70 72 65 34 22 5d 20 7c 7c 20 22 c2  e["spre4"] || ".
9a60: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
9a70: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
9a80: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
9a90: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 70  mmalecte_conj_sp
9aa0: 72 65 35 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  re5').textConten
9ab0: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
9ac0: 73 70 72 65 35 22 5d 20 7c 7c 20 22 c2 a0 22 3b  spre5"] || "..";
9ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9ae0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9af0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9b00: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 70 72 65 36  lecte_conj_spre6
9b10: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
9b20: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 70 72   oConjTable["spr
9b30: 65 36 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  e6"] || "..";.  
9b40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 75 62            // sub
9b50: 6a 6f 6e 63 74 69 66 20 69 6d 70 61 72 66 61 69  jonctif imparfai
9b60: 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  t.            th
9b70: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
9b80: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
9b90: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 73 69  alecte_conj_t_si
9ba0: 6d 70 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  mp').textContent
9bb0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 74   = oConjTable["t
9bc0: 5f 73 69 6d 70 22 5d 20 7c 7c 20 22 c2 a0 22 3b  _simp"] || "..";
9bd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9be0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9bf0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9c00: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70 31  lecte_conj_simp1
9c10: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
9c20: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 69 6d   oConjTable["sim
9c30: 70 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  p1"] || "..";.  
9c40: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
9c50: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
9c60: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
9c70: 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70 32 27 29 2e  te_conj_simp2').
9c80: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
9c90: 6f 6e 6a 54 61 62 6c 65 5b 22 73 69 6d 70 32 22  onjTable["simp2"
9ca0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
9cb0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
9cc0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
9cd0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
9ce0: 63 6f 6e 6a 5f 73 69 6d 70 33 27 29 2e 74 65 78  conj_simp3').tex
9cf0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
9d00: 54 61 62 6c 65 5b 22 73 69 6d 70 33 22 5d 20 7c  Table["simp3"] |
9d10: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
9d20: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
9d30: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9d40: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9d50: 6a 5f 73 69 6d 70 34 27 29 2e 74 65 78 74 43 6f  j_simp4').textCo
9d60: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
9d70: 6c 65 5b 22 73 69 6d 70 34 22 5d 20 7c 7c 20 22  le["simp4"] || "
9d80: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
9d90: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
9da0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
9db0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73  ammalecte_conj_s
9dc0: 69 6d 70 35 27 29 2e 74 65 78 74 43 6f 6e 74 65  imp5').textConte
9dd0: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
9de0: 22 73 69 6d 70 35 22 5d 20 7c 7c 20 22 c2 a0 22  "simp5"] || ".."
9df0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
9e00: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
9e10: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
9e20: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70  alecte_conj_simp
9e30: 36 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  6').textContent 
9e40: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 69  = oConjTable["si
9e50: 6d 70 36 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  mp6"] || "..";. 
9e60: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
9e70: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
9e80: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65           console
9e90: 2e 65 72 72 6f 72 28 65 2e 66 69 6c 65 4e 61 6d  .error(e.fileNam
9ea0: 65 20 2b 20 22 5c 6e 22 20 2b 20 65 2e 6e 61 6d  e + "\n" + e.nam
9eb0: 65 20 2b 20 22 5c 6e 6c 69 6e 65 3a 20 22 20 2b  e + "\nline: " +
9ec0: 20 65 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 2b 20   e.lineNumber + 
9ed0: 22 5c 6e 22 20 2b 20 65 2e 6d 65 73 73 61 67 65  "\n" + e.message
9ee0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
9ef0: 20 7d 0a 7d 0a 0a 0a 63 6c 61 73 73 20 47 72 61   }.}...class Gra
9f00: 6d 6d 61 6c 65 63 74 65 54 6f 6f 6c 74 69 70 20  mmalecteTooltip 
9f10: 7b 0a 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 74  {..    construct
9f20: 6f 72 20 28 78 50 61 72 65 6e 74 2c 20 78 47 43  or (xParent, xGC
9f30: 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 29 20 7b 0a  PanelContent) {.
9f40: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
9f50: 72 65 6e 74 20 3d 20 78 50 61 72 65 6e 74 3b 0a  rent = xParent;.
9f60: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 45 72          this.sEr
9f70: 72 6f 72 49 64 20 3d 20 6e 75 6c 6c 3b 0a 20 20  rorId = null;.  
9f80: 20 20 20 20 20 20 74 68 69 73 2e 62 44 65 62 75        this.bDebu
9f90: 67 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20  g = false;.     
9fa0: 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70     this.xTooltip
9fb0: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
9fc0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
9fd0: 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65  , {id: "grammale
9fe0: 63 74 65 5f 74 6f 6f 6c 74 69 70 22 7d 29 3b 0a  cte_tooltip"});.
9ff0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f          this.xTo
a000: 6f 6c 74 69 70 41 72 72 6f 77 20 3d 20 6f 47 72  oltipArrow = oGr
a010: 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65  ammalecte.create
a020: 4e 6f 64 65 28 22 69 6d 67 22 2c 20 7b 0a 20 20  Node("img", {.  
a030: 20 20 20 20 20 20 20 20 20 20 69 64 3a 20 22 67            id: "g
a040: 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74  rammalecte_toolt
a050: 69 70 5f 61 72 72 6f 77 22 2c 0a 20 20 20 20 20  ip_arrow",.     
a060: 20 20 20 20 20 20 20 73 72 63 3a 20 22 64 61 74         src: "dat
a070: 61 3a 69 6d 61 67 65 2f 70 6e 67 3b 62 61 73 65  a:image/png;base
a080: 36 34 2c 69 56 42 4f 52 77 30 4b 47 67 6f 41 41  64,iVBORw0KGgoAA
a090: 41 41 4e 53 55 68 45 55 67 41 41 41 41 67 41 41  AANSUhEUgAAAAgAA
a0a0: 41 41 49 43 41 59 41 41 41 44 45 44 37 36 4c 41  AAICAYAAADED76LA
a0b0: 41 41 41 42 47 64 42 54 55 45 41 41 4c 47 50 43  AAABGdBTUEAALGPC
a0c0: 2f 78 68 42 51 41 41 41 41 6c 77 53 46 6c 7a 41  /xhBQAAAAlwSFlzA
a0d0: 41 41 4f 77 41 41 41 44 73 41 42 61 74 61 4a 43  AAOwAAADsABataJC
a0e0: 51 41 41 41 42 6c 30 52 56 68 30 55 32 39 6d 64  QAAABl0RVh0U29md
a0f0: 48 64 68 63 6d 55 41 63 47 46 70 62 6e 51 75 62  HdhcmUAcGFpbnQub
a100: 6d 56 30 49 44 51 75 4d 43 34 78 4e 7a 4e 75 6e  mV0IDQuMC4xNzNun
a110: 32 4d 41 41 41 41 6e 53 55 52 42 56 43 68 54 59  2MAAAAnSURBVChTY
a120: 2f 6a 2f 2f 7a 38 63 71 2f 6b 57 2f 77 64 68 5a  /j//z8cq/kW/wdhZ
a130: 44 45 4d 53 58 52 46 57 43 56 68 47 4b 77 41 6d  DEMSXRFWCVhGKwAm
a140: 77 51 79 48 6e 67 46 78 66 38 42 35 66 4f 47 59  wQyHngFxf8B5fOGY
a150: 66 65 46 70 59 6f 41 41 41 41 41 53 55 56 4f 52  feFpYoAAAAASUVOR
a160: 4b 35 43 59 49 49 3d 22 2c 0a 20 20 20 20 20 20  K5CYII=",.      
a170: 20 20 20 20 20 20 61 6c 74 3a 20 22 5e 22 2c 0a        alt: "^",.
a180: 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20          });.    
a190: 20 20 20 20 2f 2f 20 6d 65 73 73 61 67 65 0a 20      // message. 
a1a0: 20 20 20 20 20 20 20 6c 65 74 20 78 4d 65 73 73         let xMess
a1b0: 61 67 65 42 6c 6f 63 6b 20 3d 20 6f 47 72 61 6d  ageBlock = oGram
a1c0: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
a1d0: 64 65 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22  de("div", {id: "
a1e0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
a1f0: 74 69 70 5f 6d 65 73 73 61 67 65 5f 62 6c 6f 63  tip_message_bloc
a200: 6b 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 78 4d  k"});.        xM
a210: 65 73 73 61 67 65 42 6c 6f 63 6b 2e 61 70 70 65  essageBlock.appe
a220: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
a230: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
a240: 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61  "div", {id: "gra
a250: 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70  mmalecte_tooltip
a260: 5f 72 75 6c 65 5f 69 64 22 7d 29 29 3b 0a 20 20  _rule_id"}));.  
a270: 20 20 20 20 20 20 78 4d 65 73 73 61 67 65 42 6c        xMessageBl
a280: 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ock.appendChild(
a290: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
a2a0: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
a2b0: 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  id: "grammalecte
a2c0: 5f 74 6f 6f 6c 74 69 70 5f 6d 65 73 73 61 67 65  _tooltip_message
a2d0: 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20  ", textContent: 
a2e0: 22 45 72 72 65 75 72 2e 22 7d 29 29 3b 0a 20 20  "Erreur."}));.  
a2f0: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
a300: 74 69 70 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  tip.appendChild(
a310: 78 4d 65 73 73 61 67 65 42 6c 6f 63 6b 29 3b 0a  xMessageBlock);.
a320: 20 20 20 20 20 20 20 20 2f 2f 20 73 75 67 67 65          // sugge
a330: 73 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 74  stions.        t
a340: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 61 70 70  his.xTooltip.app
a350: 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61  endChild(oGramma
a360: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
a370: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
a380: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
a390: 70 5f 73 75 67 67 5f 74 69 74 6c 65 22 2c 20 74  p_sugg_title", t
a3a0: 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 53 55 47  extContent: "SUG
a3b0: 47 45 53 54 49 4f 4e 53 e2 80 af 3a 22 7d 29 29  GESTIONS...:"}))
a3c0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  ;.        this.x
a3d0: 54 6f 6f 6c 74 69 70 53 75 67 67 42 6c 6f 63 6b  TooltipSuggBlock
a3e0: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
a3f0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
a400: 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65  , {id: "grammale
a410: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 73 75 67 67  cte_tooltip_sugg
a420: 5f 62 6c 6f 63 6b 22 7d 29 3b 0a 20 20 20 20 20  _block"});.     
a430: 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70     this.xTooltip
a440: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69  .appendChild(thi
a450: 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42 6c  s.xTooltipSuggBl
a460: 6f 63 6b 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f  ock);.        //
a470: 20 61 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20   actions.       
a480: 20 6c 65 74 20 78 41 63 74 69 6f 6e 73 20 3d 20   let xActions = 
a490: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
a4a0: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
a4b0: 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  id: "grammalecte
a4c0: 5f 74 6f 6f 6c 74 69 70 5f 61 63 74 69 6f 6e 73  _tooltip_actions
a4d0: 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 78 41 63  "});.        xAc
a4e0: 74 69 6f 6e 73 2e 61 70 70 65 6e 64 43 68 69 6c  tions.appendChil
a4f0: 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  d(oGrammalecte.c
a500: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
a510: 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63   {id: "grammalec
a520: 74 65 5f 74 6f 6f 6c 74 69 70 5f 69 67 6e 6f 72  te_tooltip_ignor
a530: 65 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a  e", textContent:
a540: 20 22 49 67 6e 6f 72 65 72 22 7d 29 29 3b 0a 20   "Ignorer"}));. 
a550: 20 20 20 20 20 20 20 78 41 63 74 69 6f 6e 73 2e         xActions.
a560: 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47 72 61  appendChild(oGra
a570: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e  mmalecte.createN
a580: 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64 3a 20  ode("div", {id: 
a590: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f  "grammalecte_too
a5a0: 6c 74 69 70 5f 75 72 6c 22 2c 20 74 65 78 74 43  ltip_url", textC
a5b0: 6f 6e 74 65 6e 74 3a 20 22 56 6f 75 6c 65 7a 2d  ontent: "Voulez-
a5c0: 76 6f 75 73 20 65 6e 20 73 61 76 6f 69 72 20 70  vous en savoir p
a5d0: 6c 75 73 e2 80 af 3f e2 80 a6 22 7d 2c 20 7b 75  lus...?..."}, {u
a5e0: 72 6c 3a 20 22 22 7d 29 29 3b 0a 20 20 20 20 20  rl: ""}));.     
a5f0: 20 20 20 78 41 63 74 69 6f 6e 73 2e 61 70 70 65     xActions.appe
a600: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
a610: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
a620: 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61  "div", {id: "gra
a630: 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70  mmalecte_tooltip
a640: 5f 64 62 5f 73 65 61 72 63 68 22 2c 20 74 65 78  _db_search", tex
a650: 74 43 6f 6e 74 65 6e 74 3a 20 22 20 e2 80 ba e2  tContent: " ....
a660: 80 ba e2 80 ba 20 62 61 73 65 20 64 65 20 64 6f  ..... base de do
a670: 6e 6e c3 a9 65 73 22 7d 2c 20 7b 75 72 6c 3a 20  nn..es"}, {url: 
a680: 22 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 74  ""}));.        t
a690: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 61 70 70  his.xTooltip.app
a6a0: 65 6e 64 43 68 69 6c 64 28 78 41 63 74 69 6f 6e  endChild(xAction
a6b0: 73 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 61  s);.        // a
a6c0: 64 64 20 74 6f 6f 6c 74 69 70 20 74 6f 20 74 68  dd tooltip to th
a6d0: 65 20 70 61 67 65 0a 20 20 20 20 20 20 20 20 78  e page.        x
a6e0: 47 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61  GCPanelContent.a
a6f0: 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e  ppendChild(this.
a700: 78 54 6f 6f 6c 74 69 70 29 3b 0a 20 20 20 20 20  xTooltip);.     
a710: 20 20 20 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65     xGCPanelConte
a720: 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  nt.appendChild(t
a730: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72 72 6f  his.xTooltipArro
a740: 77 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  w);.    }..    s
a750: 68 6f 77 20 28 78 50 61 72 61 67 72 61 70 68 2c  how (xParagraph,
a760: 20 73 4e 6f 64 65 45 72 72 6f 72 49 64 29 20 7b   sNodeErrorId) {
a770: 20 20 2f 2f 20 65 72 72 0a 20 20 20 20 20 20 20    // err.       
a780: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20   try {.         
a790: 20 20 20 2f 2f 20 77 65 20 6b 69 6c 6c 20 61 75     // we kill au
a7a0: 74 6f 72 65 66 72 65 73 68 20 66 6f 72 20 73 61  torefresh for sa
a7b0: 66 65 74 79 0a 20 20 20 20 20 20 20 20 20 20 20  fety.           
a7c0: 20 77 69 6e 64 6f 77 2e 63 6c 65 61 72 54 69 6d   window.clearTim
a7d0: 65 6f 75 74 28 70 61 72 73 65 49 6e 74 28 78 50  eout(parseInt(xP
a7e0: 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74  aragraph.dataset
a7f0: 2e 74 69 6d 65 72 5f 69 64 2c 20 31 30 29 29 3b  .timer_id, 10));
a800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a  .            //.
a810: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
a820: 78 4e 6f 64 65 45 72 72 20 3d 20 74 68 69 73 2e  xNodeErr = this.
a830: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
a840: 6e 74 42 79 49 64 28 73 4e 6f 64 65 45 72 72 6f  ntById(sNodeErro
a850: 72 49 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20  rId);.          
a860: 20 20 74 68 69 73 2e 73 45 72 72 6f 72 49 64 20    this.sErrorId 
a870: 3d 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73  = xNodeErr.datas
a880: 65 74 2e 65 72 72 6f 72 5f 69 64 3b 20 2f 2f 20  et.error_id; // 
a890: 77 65 20 73 74 6f 72 65 20 65 72 72 6f 72 5f 69  we store error_i
a8a0: 64 20 68 65 72 65 20 74 6f 20 6b 6e 6f 77 20 69  d here to know i
a8b0: 66 20 73 70 65 6c 6c 5f 73 75 67 67 65 73 74 69  f spell_suggesti
a8c0: 6f 6e 73 20 61 72 65 20 67 69 76 65 6e 20 74 6f  ons are given to
a8d0: 20 74 68 65 20 72 69 67 68 74 20 77 6f 72 64 2e   the right word.
a8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
a8f0: 20 6e 54 6f 6f 6c 74 69 70 4c 65 66 74 4c 69 6d   nTooltipLeftLim
a900: 69 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  it = oGrammalect
a910: 65 2e 6f 47 43 50 61 6e 65 6c 2e 67 65 74 57 69  e.oGCPanel.getWi
a920: 64 74 68 28 29 20 2d 20 33 33 30 3b 20 2f 2f 20  dth() - 330; // 
a930: 70 61 72 61 67 72 61 70 68 20 77 69 64 74 68 20  paragraph width 
a940: 2d 20 74 6f 6f 6c 74 69 70 20 77 69 64 74 68 0a  - tooltip width.
a950: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
a960: 6e 41 72 72 6f 77 4c 69 6d 69 74 20 3d 20 6f 47  nArrowLimit = oG
a970: 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61  rammalecte.oGCPa
a980: 6e 65 6c 2e 67 65 74 57 69 64 74 68 28 29 20 2d  nel.getWidth() -
a990: 20 32 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20   20;.           
a9a0: 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72   this.xTooltipAr
a9b0: 72 6f 77 2e 73 74 79 6c 65 2e 74 6f 70 20 3d 20  row.style.top = 
a9c0: 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74  (xNodeErr.offset
a9d0: 54 6f 70 20 2b 20 31 36 29 20 2b 20 22 70 78 22  Top + 16) + "px"
a9e0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ;.            le
a9f0: 74 20 6e 55 73 65 66 75 6c 45 72 72 6f 72 57 69  t nUsefulErrorWi
aa00: 64 74 68 20 3d 20 28 28 78 4e 6f 64 65 45 72 72  dth = ((xNodeErr
aa10: 2e 6f 66 66 73 65 74 4c 65 66 74 20 2b 20 78 4e  .offsetLeft + xN
aa20: 6f 64 65 45 72 72 2e 6f 66 66 73 65 74 57 69 64  odeErr.offsetWid
aa30: 74 68 29 20 3e 20 6e 41 72 72 6f 77 4c 69 6d 69  th) > nArrowLimi
aa40: 74 29 20 3f 20 28 6e 41 72 72 6f 77 4c 69 6d 69  t) ? (nArrowLimi
aa50: 74 20 2d 20 78 4e 6f 64 65 45 72 72 2e 6f 66 66  t - xNodeErr.off
aa60: 73 65 74 4c 65 66 74 29 20 3a 20 78 4e 6f 64 65  setLeft) : xNode
aa70: 45 72 72 2e 6f 66 66 73 65 74 57 69 64 74 68 3b  Err.offsetWidth;
aa80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
aa90: 73 2e 78 54 6f 6f 6c 74 69 70 41 72 72 6f 77 2e  s.xTooltipArrow.
aaa0: 73 74 79 6c 65 2e 6c 65 66 74 20 3d 20 28 78 4e  style.left = (xN
aab0: 6f 64 65 45 72 72 2e 6f 66 66 73 65 74 4c 65 66  odeErr.offsetLef
aac0: 74 20 2b 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 28  t + Math.floor((
aad0: 6e 55 73 65 66 75 6c 45 72 72 6f 72 57 69 64 74  nUsefulErrorWidt
aae0: 68 20 2f 20 32 29 29 20 2d 20 34 29 20 2b 20 22  h / 2)) - 4) + "
aaf0: 70 78 22 3b 20 2f 2f 20 34 20 69 73 20 68 61 6c  px"; // 4 is hal
ab00: 66 20 74 68 65 20 77 69 64 74 68 20 6f 66 20 74  f the width of t
ab10: 68 65 20 61 72 72 6f 77 2e 0a 20 20 20 20 20 20  he arrow..      
ab20: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
ab30: 74 69 70 2e 73 74 79 6c 65 2e 74 6f 70 20 3d 20  tip.style.top = 
ab40: 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74  (xNodeErr.offset
ab50: 54 6f 70 20 2b 20 32 30 29 20 2b 20 22 70 78 22  Top + 20) + "px"
ab60: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
ab70: 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 73 74 79 6c  is.xTooltip.styl
ab80: 65 2e 6c 65 66 74 20 3d 20 28 78 4e 6f 64 65 45  e.left = (xNodeE
ab90: 72 72 2e 6f 66 66 73 65 74 4c 65 66 74 20 3e 20  rr.offsetLeft > 
aba0: 6e 54 6f 6f 6c 74 69 70 4c 65 66 74 4c 69 6d 69  nTooltipLeftLimi
abb0: 74 29 20 3f 20 6e 54 6f 6f 6c 74 69 70 4c 65 66  t) ? nTooltipLef
abc0: 74 4c 69 6d 69 74 20 2b 20 22 70 78 22 20 3a 20  tLimit + "px" : 
abd0: 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74 4c  xNodeErr.offsetL
abe0: 65 66 74 20 2b 20 22 70 78 22 3b 0a 20 20 20 20  eft + "px";.    
abf0: 20 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f 64          if (xNod
ac00: 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72  eErr.dataset.err
ac10: 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22 67 72 61  or_type === "gra
ac20: 6d 6d 61 72 22 29 20 7b 0a 20 20 20 20 20 20 20  mmar") {.       
ac30: 20 20 20 20 20 20 20 20 20 2f 2f 20 67 72 61 6d           // gram
ac40: 6d 61 72 20 65 72 72 6f 72 0a 20 20 20 20 20 20  mar error.      
ac50: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
ac60: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
ac70: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
ac80: 74 65 5f 74 6f 6f 6c 74 69 70 5f 64 62 5f 73 65  te_tooltip_db_se
ac90: 61 72 63 68 22 29 2e 73 74 79 6c 65 2e 64 69 73  arch").style.dis
aca0: 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20  play = "none";. 
acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
acc0: 66 20 28 78 4e 6f 64 65 45 72 72 2e 64 61 74 61  f (xNodeErr.data
acd0: 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65 2e 69  set.gc_message.i
ace0: 6e 63 6c 75 64 65 73 28 22 20 23 23 22 29 29 20  ncludes(" ##")) 
acf0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
ad00: 20 20 20 20 20 20 74 68 69 73 2e 62 44 65 62 75        this.bDebu
ad10: 67 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20  g = true;.      
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ad30: 20 64 69 73 70 6c 61 79 20 72 75 6c 65 20 69 64   display rule id
ad40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad50: 20 20 20 20 20 6c 65 74 20 6e 20 3d 20 78 4e 6f       let n = xNo
ad60: 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63  deErr.dataset.gc
ad70: 5f 6d 65 73 73 61 67 65 2e 69 6e 64 65 78 4f 66  _message.indexOf
ad80: 28 22 20 23 23 22 29 3b 0a 20 20 20 20 20 20 20  (" ##");.       
ad90: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
ada0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
adb0: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
adc0: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6d 65  lecte_tooltip_me
add0: 73 73 61 67 65 22 29 2e 74 65 78 74 43 6f 6e 74  ssage").textCont
ade0: 65 6e 74 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64  ent = xNodeErr.d
adf0: 61 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67  ataset.gc_messag
ae00: 65 2e 73 6c 69 63 65 28 30 2c 20 6e 29 3b 0a 20  e.slice(0, n);. 
ae10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae20: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
ae30: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
ae40: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
ae50: 74 69 70 5f 72 75 6c 65 5f 69 64 22 29 2e 74 65  tip_rule_id").te
ae60: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 52 c3 a8  xtContent = "R..
ae70: 67 6c 65 e2 80 af 3a 20 22 20 2b 20 78 4e 6f 64  gle...: " + xNod
ae80: 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63 5f  eErr.dataset.gc_
ae90: 6d 65 73 73 61 67 65 2e 73 6c 69 63 65 28 6e 2b  message.slice(n+
aea0: 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  2);.            
aeb0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
aec0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
aed0: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
aee0: 5f 74 6f 6f 6c 74 69 70 5f 72 75 6c 65 5f 69 64  _tooltip_rule_id
aef0: 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79  ").style.display
af00: 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20 20 20 20   = "block";.    
af10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
af20: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
af30: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 44           this.bD
af40: 65 62 75 67 20 3d 20 66 61 6c 73 65 3b 0a 20 20  ebug = false;.  
af50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af60: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
af70: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67  etElementById("g
af80: 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74  rammalecte_toolt
af90: 69 70 5f 6d 65 73 73 61 67 65 22 29 2e 74 65 78  ip_message").tex
afa0: 74 43 6f 6e 74 65 6e 74 20 3d 20 78 4e 6f 64 65  tContent = xNode
afb0: 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63 5f 6d  Err.dataset.gc_m
afc0: 65 73 73 61 67 65 3b 0a 20 20 20 20 20 20 20 20  essage;.        
afd0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
afe0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
aff0: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
b000: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 72 75 6c  ecte_tooltip_rul
b010: 65 5f 69 64 22 29 2e 73 74 79 6c 65 2e 64 69 73  e_id").style.dis
b020: 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20  play = "none";. 
b030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
b040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b050: 20 69 66 20 28 78 4e 6f 64 65 45 72 72 2e 64 61   if (xNodeErr.da
b060: 74 61 73 65 74 2e 67 63 5f 75 72 6c 20 21 3d 20  taset.gc_url != 
b070: 22 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  "") {.          
b080: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
b090: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
b0a0: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
b0b0: 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c 22 29  te_tooltip_url")
b0c0: 2e 64 61 74 61 73 65 74 2e 75 72 6c 20 3d 20 78  .dataset.url = x
b0d0: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
b0e0: 67 63 5f 75 72 6c 3b 0a 20 20 20 20 20 20 20 20  gc_url;.        
b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
b100: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
b110: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
b120: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c  ecte_tooltip_url
b130: 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79  ").style.display
b140: 20 3d 20 22 69 6e 6c 69 6e 65 22 3b 0a 20 20 20   = "inline";.   
b150: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
b160: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
b170: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
b180: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
b190: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
b1a0: 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c 22 29  te_tooltip_url")
b1b0: 2e 64 61 74 61 73 65 74 2e 75 72 6c 20 3d 20 22  .dataset.url = "
b1c0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ";.             
b1d0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
b1e0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
b1f0: 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id("grammalecte_
b200: 74 6f 6f 6c 74 69 70 5f 75 72 6c 22 29 2e 73 74  tooltip_url").st
b210: 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e  yle.display = "n
b220: 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 20 20  one";.          
b230: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
b240: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
b250: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
b260: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
b270: 5f 74 6f 6f 6c 74 69 70 5f 69 67 6e 6f 72 65 22  _tooltip_ignore"
b280: 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f  ).dataset.error_
b290: 69 64 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64 61  id = xNodeErr.da
b2a0: 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b 0a  taset.error_id;.
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2c0: 6c 65 74 20 69 53 75 67 67 20 3d 20 30 3b 0a 20  let iSugg = 0;. 
b2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
b2e0: 68 69 73 2e 63 6c 65 61 72 53 75 67 67 65 73 74  his.clearSuggest
b2f0: 69 6f 6e 42 6c 6f 63 6b 28 29 3b 0a 20 20 20 20  ionBlock();.    
b300: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b310: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
b320: 2e 73 75 67 67 65 73 74 69 6f 6e 73 2e 6c 65 6e  .suggestions.len
b330: 67 74 68 20 3e 20 30 29 20 7b 0a 20 20 20 20 20  gth > 0) {.     
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
b350: 6f 72 20 28 6c 65 74 20 73 53 75 67 67 20 6f 66  or (let sSugg of
b360: 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65   xNodeErr.datase
b370: 74 2e 73 75 67 67 65 73 74 69 6f 6e 73 2e 73 70  t.suggestions.sp
b380: 6c 69 74 28 22 7c 22 29 29 20 7b 0a 20 20 20 20  lit("|")) {.    
b390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3a0: 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69      this.xToolti
b3b0: 70 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e  pSuggBlock.appen
b3c0: 64 43 68 69 6c 64 28 74 68 69 73 2e 5f 63 72 65  dChild(this._cre
b3d0: 61 74 65 53 75 67 67 65 73 74 69 6f 6e 28 78 4e  ateSuggestion(xN
b3e0: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65  odeErr.dataset.e
b3f0: 72 72 6f 72 5f 69 64 2c 20 30 2c 20 69 53 75 67  rror_id, 0, iSug
b400: 67 2c 20 73 53 75 67 67 29 29 3b 0a 20 20 20 20  g, sSugg));.    
b410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b420: 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69      this.xToolti
b430: 70 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e  pSuggBlock.appen
b440: 64 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e  dChild(document.
b450: 63 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22  createTextNode("
b460: 20 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20   "));.          
b470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 53                iS
b480: 75 67 67 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20  ugg += 1;.      
b490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4b0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20  } else {.       
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
b4d0: 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42 6c  s.xTooltipSuggBl
b4e0: 6f 63 6b 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  ock.textContent 
b4f0: 3d 20 22 41 75 63 75 6e 65 2e 22 3b 0a 20 20 20  = "Aucune.";.   
b500: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
b510: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
b520: 20 20 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f           if (xNo
b530: 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72  deErr.dataset.er
b540: 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22 73 70  ror_type === "sp
b550: 65 6c 6c 69 6e 67 22 29 20 7b 0a 20 20 20 20 20  elling") {.     
b560: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 70             // sp
b570: 65 6c 6c 69 6e 67 20 6d 69 73 74 61 6b 65 0a 20  elling mistake. 
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
b590: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
b5a0: 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d  lementById("gram
b5b0: 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f  malecte_tooltip_
b5c0: 6d 65 73 73 61 67 65 22 29 2e 74 65 78 74 43 6f  message").textCo
b5d0: 6e 74 65 6e 74 20 3d 20 22 4d 6f 74 20 69 6e 63  ntent = "Mot inc
b5e0: 6f 6e 6e 75 20 64 75 20 64 69 63 74 69 6f 6e 6e  onnu du dictionn
b5f0: 61 69 72 65 2e 22 3b 0a 20 20 20 20 20 20 20 20  aire.";.        
b600: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
b610: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
b620: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
b630: 5f 74 6f 6f 6c 74 69 70 5f 69 67 6e 6f 72 65 22  _tooltip_ignore"
b640: 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f  ).dataset.error_
b650: 69 64 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64 61  id = xNodeErr.da
b660: 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b 0a  taset.error_id;.
b670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b680: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
b690: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61  ElementById("gra
b6a0: 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70  mmalecte_tooltip
b6b0: 5f 72 75 6c 65 5f 69 64 22 29 2e 73 74 79 6c 65  _rule_id").style
b6c0: 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65  .display = "none
b6d0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ";.             
b6e0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
b6f0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
b700: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
b710: 74 69 70 5f 75 72 6c 22 29 2e 64 61 74 61 73 65  tip_url").datase
b720: 74 2e 75 72 6c 20 3d 20 22 22 3b 0a 20 20 20 20  t.url = "";.    
b730: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
b740: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
b750: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
b760: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c  ecte_tooltip_url
b770: 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79  ").style.display
b780: 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20   = "none";.     
b790: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
b7a0: 68 69 73 2e 62 44 65 62 75 67 29 20 7b 0a 20 20  his.bDebug) {.  
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7c0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
b7d0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67  etElementById("g
b7e0: 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74  rammalecte_toolt
b7f0: 69 70 5f 64 62 5f 73 65 61 72 63 68 22 29 2e 73  ip_db_search").s
b800: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22  tyle.display = "
b810: 69 6e 6c 69 6e 65 22 3b 0a 20 20 20 20 20 20 20  inline";.       
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
b830: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
b840: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
b850: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 64 62  lecte_tooltip_db
b860: 5f 73 65 61 72 63 68 22 29 2e 64 61 74 61 73 65  _search").datase
b870: 74 2e 75 72 6c 20 3d 20 22 68 74 74 70 73 3a 2f  t.url = "https:/
b880: 2f 67 72 61 6d 6d 61 6c 65 63 74 65 2e 6e 65 74  /grammalecte.net
b890: 2f 64 69 63 74 69 6f 6e 61 72 79 2e 70 68 70 3f  /dictionary.php?
b8a0: 70 72 6a 3d 66 72 26 6c 65 6d 6d 61 3d 22 2b 78  prj=fr&lemma="+x
b8b0: 4e 6f 64 65 45 72 72 2e 74 65 78 74 43 6f 6e 74  NodeErr.textCont
b8c0: 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ent;.           
b8d0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8f0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
b900: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67  etElementById("g
b910: 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74  rammalecte_toolt
b920: 69 70 5f 64 62 5f 73 65 61 72 63 68 22 29 2e 73  ip_db_search").s
b930: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22  tyle.display = "
b940: 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 20  none";.         
b950: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
b960: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c           this.cl
b970: 65 61 72 53 75 67 67 65 73 74 69 6f 6e 42 6c 6f  earSuggestionBlo
b980: 63 6b 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ck();.          
b990: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
b9a0: 74 69 70 53 75 67 67 42 6c 6f 63 6b 2e 74 65 78  tipSuggBlock.tex
b9b0: 74 43 6f 6e 74 65 6e 74 20 3d 20 22 52 65 63 68  tContent = "Rech
b9c0: 65 72 63 68 65 20 64 65 20 67 72 61 70 68 69 65  erche de graphie
b9d0: 73 20 70 6f 73 73 69 62 6c 65 73 e2 80 a6 22 3b  s possibles...";
b9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b9f0: 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72   xGrammalectePor
ba00: 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a  t.postMessage({.
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba20: 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 67      sCommand: "g
ba30: 65 74 53 70 65 6c 6c 53 75 67 67 65 73 74 69 6f  etSpellSuggestio
ba40: 6e 73 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ns",.           
ba50: 20 20 20 20 20 20 20 20 20 64 50 61 72 61 6d 3a           dParam:
ba60: 20 7b 73 57 6f 72 64 3a 20 78 4e 6f 64 65 45 72   {sWord: xNodeEr
ba70: 72 2e 74 65 78 74 43 6f 6e 74 65 6e 74 7d 2c 0a  r.textContent},.
ba80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba90: 20 20 20 20 64 49 6e 66 6f 3a 20 7b 73 45 72 72      dInfo: {sErr
baa0: 6f 72 49 64 3a 20 78 4e 6f 64 65 45 72 72 2e 64  orId: xNodeErr.d
bab0: 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 7d  ataset.error_id}
bac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bad0: 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20   });.           
bae0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   }.            t
baf0: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72 72 6f  his.xTooltipArro
bb00: 77 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  w.style.display 
bb10: 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20 20 20 20 20  = "block";.     
bb20: 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f         this.xToo
bb30: 6c 74 69 70 2e 73 74 79 6c 65 2e 64 69 73 70 6c  ltip.style.displ
bb40: 61 79 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20 20  ay = "block";.  
bb50: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
bb60: 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20  catch (e) {.    
bb70: 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f          showErro
bb80: 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  r(e);.        }.
bb90: 20 20 20 20 7d 0a 0a 20 20 20 20 63 6c 65 61 72      }..    clear
bba0: 53 75 67 67 65 73 74 69 6f 6e 42 6c 6f 63 6b 20  SuggestionBlock 
bbb0: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69  () {.        whi
bbc0: 6c 65 20 28 74 68 69 73 2e 78 54 6f 6f 6c 74 69  le (this.xToolti
bbd0: 70 53 75 67 67 42 6c 6f 63 6b 2e 66 69 72 73 74  pSuggBlock.first
bbe0: 43 68 69 6c 64 29 20 7b 0a 20 20 20 20 20 20 20  Child) {.       
bbf0: 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74       this.xToolt
bc00: 69 70 53 75 67 67 42 6c 6f 63 6b 2e 72 65 6d 6f  ipSuggBlock.remo
bc10: 76 65 43 68 69 6c 64 28 74 68 69 73 2e 78 54 6f  veChild(this.xTo
bc20: 6f 6c 74 69 70 53 75 67 67 42 6c 6f 63 6b 2e 66  oltipSuggBlock.f
bc30: 69 72 73 74 43 68 69 6c 64 29 3b 0a 20 20 20 20  irstChild);.    
bc40: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
bc50: 20 73 65 74 54 6f 6f 6c 74 69 70 43 6f 6c 6f 72   setTooltipColor
bc60: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f   () {.        //
bc70: 20 74 6f 64 6f 0a 20 20 20 20 7d 0a 0a 20 20 20   todo.    }..   
bc80: 20 68 69 64 65 20 28 29 20 7b 0a 20 20 20 20 20   hide () {.     
bc90: 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70     this.xTooltip
bca0: 41 72 72 6f 77 2e 73 74 79 6c 65 2e 64 69 73 70  Arrow.style.disp
bcb0: 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20  lay = "none";.  
bcc0: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
bcd0: 74 69 70 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  tip.style.displa
bce0: 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20  y = "none";.    
bcf0: 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74 65 53 75  }..    _createSu
bd00: 67 67 65 73 74 69 6f 6e 20 28 73 45 72 72 6f 72  ggestion (sError
bd10: 49 64 2c 20 69 53 75 67 67 42 6c 6f 63 6b 2c 20  Id, iSuggBlock, 
bd20: 69 53 75 67 67 2c 20 73 53 75 67 67 29 20 7b 0a  iSugg, sSugg) {.
bd30: 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64          let xNod
bd40: 65 53 75 67 67 20 3d 20 64 6f 63 75 6d 65 6e 74  eSugg = document
bd50: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22  .createElement("
bd60: 64 69 76 22 29 3b 0a 20 20 20 20 20 20 20 20 78  div");.        x
bd70: 4e 6f 64 65 53 75 67 67 2e 69 64 20 3d 20 22 67  NodeSugg.id = "g
bd80: 72 61 6d 6d 61 6c 65 63 74 65 5f 73 75 67 67 22  rammalecte_sugg"
bd90: 20 2b 20 73 45 72 72 6f 72 49 64 20 2b 20 22 2d   + sErrorId + "-
bda0: 22 20 2b 20 69 53 75 67 67 42 6c 6f 63 6b 2e 74  " + iSuggBlock.t
bdb0: 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 2d 22 20  oString() + "-" 
bdc0: 2b 20 69 53 75 67 67 2e 74 6f 53 74 72 69 6e 67  + iSugg.toString
bdd0: 28 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64  ();.        xNod
bde0: 65 53 75 67 67 2e 63 6c 61 73 73 4e 61 6d 65 20  eSugg.className 
bdf0: 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74  = "grammalecte_t
be00: 6f 6f 6c 74 69 70 5f 73 75 67 67 22 3b 0a 20 20  ooltip_sugg";.  
be10: 20 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e        xNodeSugg.
be20: 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64  dataset.error_id
be30: 20 3d 20 73 45 72 72 6f 72 49 64 3b 0a 20 20 20   = sErrorId;.   
be40: 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e 74       xNodeSugg.t
be50: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 73 53 75  extContent = sSu
be60: 67 67 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75  gg;.        retu
be70: 72 6e 20 78 4e 6f 64 65 53 75 67 67 3b 0a 20 20  rn xNodeSugg;.  
be80: 20 20 7d 0a 0a 20 20 20 20 73 65 74 53 70 65 6c    }..    setSpel
be90: 6c 53 75 67 67 65 73 74 69 6f 6e 73 46 6f 72 20  lSuggestionsFor 
bea0: 28 73 57 6f 72 64 2c 20 61 53 75 67 67 2c 20 69  (sWord, aSugg, i
beb0: 53 75 67 67 42 6c 6f 63 6b 2c 20 73 45 72 72 6f  SuggBlock, sErro
bec0: 72 49 64 29 20 7b 0a 20 20 20 20 20 20 20 20 2f  rId) {.        /
bed0: 2f 20 73 70 65 6c 6c 20 63 68 65 63 6b 69 6e 67  / spell checking
bee0: 20 73 75 67 67 65 73 74 69 6f 6e 73 0a 20 20 20   suggestions.   
bef0: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
bf00: 20 20 20 20 20 20 20 69 66 20 28 73 45 72 72 6f         if (sErro
bf10: 72 49 64 20 3d 3d 3d 20 74 68 69 73 2e 73 45 72  rId === this.sEr
bf20: 72 6f 72 49 64 29 20 7b 0a 20 20 20 20 20 20 20  rorId) {.       
bf30: 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 53 75           let xSu
bf40: 67 67 42 6c 6f 63 6b 20 3d 20 74 68 69 73 2e 78  ggBlock = this.x
bf50: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
bf60: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
bf70: 74 65 5f 74 6f 6f 6c 74 69 70 5f 73 75 67 67 5f  te_tooltip_sugg_
bf80: 62 6c 6f 63 6b 22 29 3b 0a 20 20 20 20 20 20 20  block");.       
bf90: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 53 75           if (iSu
bfa0: 67 67 42 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b 0a  ggBlock == 0) {.
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfc0: 20 20 20 20 78 53 75 67 67 42 6c 6f 63 6b 2e 74      xSuggBlock.t
bfd0: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b  extContent = "";
bfe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bff0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
c000: 20 20 20 69 66 20 28 21 61 53 75 67 67 20 7c 7c     if (!aSugg ||
c010: 20 61 53 75 67 67 2e 6c 65 6e 67 74 68 20 3d 3d   aSugg.length ==
c020: 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20   0) {.          
c030: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 53            if (iS
c040: 75 67 67 42 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b  uggBlock == 0) {
c050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c060: 20 20 20 20 20 20 20 20 20 78 53 75 67 67 42 6c           xSuggBl
c070: 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ock.appendChild(
c080: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54  document.createT
c090: 65 78 74 4e 6f 64 65 28 22 41 75 63 75 6e 65 2e  extNode("Aucune.
c0a0: 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "));.           
c0b0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
c0c0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
c0d0: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
c0e0: 20 20 20 20 20 20 20 20 69 66 20 28 69 53 75 67          if (iSug
c0f0: 67 42 6c 6f 63 6b 20 3e 20 30 29 20 7b 0a 20 20  gBlock > 0) {.  
c100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c110: 20 20 20 20 20 20 78 53 75 67 67 42 6c 6f 63 6b        xSuggBlock
c120: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47 72  .appendChild(oGr
c130: 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65  ammalecte.create
c140: 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61  Node("div", {cla
c150: 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c  ssName: "grammal
c160: 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6f 74 68  ecte_tooltip_oth
c170: 65 72 5f 73 75 67 67 5f 74 69 74 6c 65 22 2c 20  er_sugg_title", 
c180: 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 41 55  textContent: "AU
c190: 54 52 45 53 20 53 55 47 47 45 53 54 49 4f 4e 53  TRES SUGGESTIONS
c1a0: e2 80 af 3a 22 7d 29 29 3b 0a 20 20 20 20 20 20  ...:"}));.      
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
c1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1d0: 20 20 20 20 6c 65 74 20 69 53 75 67 67 20 3d 20      let iSugg = 
c1e0: 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  0;.             
c1f0: 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20         for (let 
c200: 73 53 75 67 67 20 6f 66 20 61 53 75 67 67 29 20  sSugg of aSugg) 
c210: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
c220: 20 20 20 20 20 20 20 20 20 20 78 53 75 67 67 42            xSuggB
c230: 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64  lock.appendChild
c240: 28 74 68 69 73 2e 5f 63 72 65 61 74 65 53 75 67  (this._createSug
c250: 67 65 73 74 69 6f 6e 28 73 45 72 72 6f 72 49 64  gestion(sErrorId
c260: 2c 20 69 53 75 67 67 42 6c 6f 63 6b 2c 20 69 53  , iSuggBlock, iS
c270: 75 67 67 2c 20 73 53 75 67 67 29 29 3b 0a 20 20  ugg, sSugg));.  
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c290: 20 20 20 20 20 20 78 53 75 67 67 42 6c 6f 63 6b        xSuggBlock
c2a0: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63  .appendChild(doc
c2b0: 75 6d 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74  ument.createText
c2c0: 4e 6f 64 65 28 22 20 22 29 29 3b 0a 20 20 20 20  Node(" "));.    
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 20 20 69 53 75 67 67 20 2b 3d 20 31 3b 0a      iSugg += 1;.
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c300: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
c310: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
c320: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
c330: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65          catch (e
c340: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
c350: 6c 65 74 20 78 53 75 67 67 42 6c 6f 63 6b 20 3d  let xSuggBlock =
c360: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
c370: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
c380: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
c390: 70 5f 73 75 67 67 5f 62 6c 6f 63 6b 22 29 3b 0a  p_sugg_block");.
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 78 53 75 67              xSug
c3b0: 67 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69  gBlock.appendChi
c3c0: 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61  ld(document.crea
c3d0: 74 65 54 65 78 74 4e 6f 64 65 28 22 23 20 4f 75  teTextNode("# Ou
c3e0: 70 73 2e 20 4c 65 20 6d c3 a9 63 61 6e 69 73 6d  ps. Le m..canism
c3f0: 65 20 64 65 20 73 75 67 67 65 73 74 69 6f 6e 20  e de suggestion 
c400: 6f 72 74 68 6f 67 72 61 70 68 69 71 75 65 20 61  orthographique a
c410: 20 72 65 6e 63 6f 6e 74 72 c3 a9 20 75 6e 20 62   rencontr.. un b
c420: 75 67 e2 80 a6 20 28 43 65 20 6d 6f 64 75 6c 65  ug... (Ce module
c430: 20 65 73 74 20 65 6e 63 6f 72 65 20 65 6e 20 70   est encore en p
c440: 68 61 73 65 20 ce b2 2e 29 22 29 29 3b 0a 20 20  hase ...)"));.  
c450: 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72            showEr
c460: 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20  ror(e);.        
c470: 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6c 61 73  }.    }.}...clas
c480: 73 20 47 72 61 6d 6d 61 6c 65 63 74 65 54 65 78  s GrammalecteTex
c490: 74 43 6f 6e 74 72 6f 6c 20 7b 0a 0a 20 20 20 20  tControl {..    
c4a0: 63 6f 6e 73 74 72 75 63 74 6f 72 20 28 29 20 7b  constructor () {
c4b0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e  .        this.xN
c4c0: 6f 64 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20  ode = null;.    
c4d0: 20 20 20 20 74 68 69 73 2e 64 50 61 72 61 67 72      this.dParagr
c4e0: 61 70 68 20 3d 20 6e 65 77 20 4d 61 70 28 29 3b  aph = new Map();
c4f0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 54  .        this.bT
c500: 65 78 74 41 72 65 61 20 3d 20 6e 75 6c 6c 3b 0a  extArea = null;.
c510: 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 4e 6f      }..    setNo
c520: 64 65 20 28 78 4e 6f 64 65 29 20 7b 0a 20 20 20  de (xNode) {.   
c530: 20 20 20 20 20 74 68 69 73 2e 63 6c 65 61 72 28       this.clear(
c540: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
c550: 78 4e 6f 64 65 20 3d 20 78 4e 6f 64 65 3b 0a 20  xNode = xNode;. 
c560: 20 20 20 20 20 20 20 74 68 69 73 2e 62 54 65 78         this.bTex
c570: 74 41 72 65 61 20 3d 20 28 78 4e 6f 64 65 2e 74  tArea = (xNode.t
c580: 61 67 4e 61 6d 65 20 3d 3d 20 22 54 45 58 54 41  agName == "TEXTA
c590: 52 45 41 22 20 7c 7c 20 78 4e 6f 64 65 2e 74 61  REA" || xNode.ta
c5a0: 67 4e 61 6d 65 20 3d 3d 20 22 49 4e 50 55 54 22  gName == "INPUT"
c5b0: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  );.        if (!
c5c0: 74 68 69 73 2e 62 54 65 78 74 41 72 65 61 29 20  this.bTextArea) 
c5d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 47  {.            oG
c5e0: 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61  rammalecte.oGCPa
c5f0: 6e 65 6c 2e 61 64 64 4d 65 73 73 61 67 65 54 6f  nel.addMessageTo
c600: 47 43 50 61 6e 65 6c 28 22 41 74 74 65 6e 74 69  GCPanel("Attenti
c610: 6f 6e e2 80 af 3a 20 4c 61 20 7a 6f 6e 65 20 64  on...: La zone d
c620: 65 20 74 65 78 74 65 20 61 6e 61 6c 79 73 c3 a9  e texte analys..
c630: 65 20 65 73 74 20 75 6e 20 63 68 61 6d 70 20 74  e est un champ t
c640: 65 78 74 75 65 6c 20 65 6e 72 69 63 68 69 20 73  extuel enrichi s
c650: 75 73 63 65 70 74 69 62 6c 65 20 64 65 20 63 6f  usceptible de co
c660: 6e 74 65 6e 69 72 20 64 65 73 20 c3 a9 6c c3 a9  ntenir des ..l..
c670: 6d 65 6e 74 73 20 6e 6f 6e 20 74 65 78 74 75 65  ments non textue
c680: 6c 73 20 71 75 69 20 73 65 72 6f 6e 74 20 65 66  ls qui seront ef
c690: 66 61 63 c3 a9 73 20 6c 6f 72 73 20 64 65 20 6c  fac..s lors de l
c6a0: 61 20 63 6f 72 72 65 63 74 69 6f 6e 2e 22 29 3b  a correction.");
c6b0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
c6c0: 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e 64 69     this.xNode.di
c6d0: 73 61 62 6c 65 64 20 3d 20 74 72 75 65 3b 0a 20  sabled = true;. 
c6e0: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64         this.load
c6f0: 54 65 78 74 28 28 74 68 69 73 2e 62 54 65 78 74  Text((this.bText
c700: 41 72 65 61 29 20 3f 20 74 68 69 73 2e 78 4e 6f  Area) ? this.xNo
c710: 64 65 2e 76 61 6c 75 65 20 3a 20 74 68 69 73 2e  de.value : this.
c720: 78 4e 6f 64 65 2e 69 6e 6e 65 72 54 65 78 74 29  xNode.innerText)
c730: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74  ;.    }..    set
c740: 54 65 78 74 20 28 73 54 65 78 74 29 20 7b 0a 20  Text (sText) {. 
c750: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c 65 61         this.clea
c760: 72 28 29 3b 0a 20 20 20 20 20 20 20 20 6f 47 72  r();.        oGr
c770: 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61 6e  ammalecte.oGCPan
c780: 65 6c 2e 61 64 64 4d 65 73 73 61 67 65 54 6f 47  el.addMessageToG
c790: 43 50 61 6e 65 6c 28 22 4e 6f 74 65 e2 80 af 3a  CPanel("Note...:
c7a0: 20 41 75 63 75 6e 20 63 68 61 6d 70 20 74 65 78   Aucun champ tex
c7b0: 74 75 65 6c 20 64 c3 a9 66 69 6e 69 2e 20 4c 65  tuel d..fini. Le
c7c0: 73 20 63 68 61 6e 67 65 6d 65 6e 74 73 20 6e 65  s changements ne
c7d0: 20 73 65 72 6f 6e 74 20 70 61 73 20 72 c3 a9 70   seront pas r..p
c7e0: 65 72 63 75 74 c3 a9 73 20 73 75 72 20 6c 61 20  ercut..s sur la 
c7f0: 7a 6f 6e 65 20 64 e2 80 99 6f c3 b9 20 6c 65 20  zone d...o.. le 
c800: 74 65 78 74 65 20 61 20 c3 a9 74 c3 a9 20 65 78  texte a ..t.. ex
c810: 74 72 61 69 74 2e 22 29 3b 0a 20 20 20 20 20 20  trait.");.      
c820: 20 20 74 68 69 73 2e 6c 6f 61 64 54 65 78 74 28    this.loadText(
c830: 73 54 65 78 74 29 3b 0a 20 20 20 20 7d 0a 0a 20  sText);.    }.. 
c840: 20 20 20 63 6c 65 61 72 20 28 29 20 7b 0a 20 20     clear () {.  
c850: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 78        if (this.x
c860: 4e 6f 64 65 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b  Node !== null) {
c870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
c880: 73 2e 78 4e 6f 64 65 2e 64 69 73 61 62 6c 65 64  s.xNode.disabled
c890: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20   = false;.      
c8a0: 20 20 20 20 20 20 74 68 69 73 2e 62 54 65 78 74        this.bText
c8b0: 41 72 65 61 20 3d 20 66 61 6c 73 65 3b 0a 20 20  Area = false;.  
c8c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
c8d0: 4e 6f 64 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20  Node = null;.   
c8e0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74       }.        t
c8f0: 68 69 73 2e 64 50 61 72 61 67 72 61 70 68 2e 63  his.dParagraph.c
c900: 6c 65 61 72 28 29 3b 0a 20 20 20 20 7d 0a 0a 20  lear();.    }.. 
c910: 20 20 20 67 65 74 54 65 78 74 20 28 29 20 7b 0a     getText () {.
c920: 20 20 20 20 20 20 20 20 6c 65 74 20 73 54 65 78          let sTex
c930: 74 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20  t = "";.        
c940: 74 68 69 73 2e 64 50 61 72 61 67 72 61 70 68 2e  this.dParagraph.
c950: 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e  forEach(function
c960: 20 28 76 61 6c 2c 20 6b 65 79 29 20 7b 0a 20 20   (val, key) {.  
c970: 20 20 20 20 20 20 20 20 20 20 73 54 65 78 74 20            sText 
c980: 2b 3d 20 76 61 6c 20 2b 20 22 5c 6e 22 3b 0a 20  += val + "\n";. 
c990: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20         });.     
c9a0: 20 20 20 72 65 74 75 72 6e 20 73 54 65 78 74 2e     return sText.
c9b0: 73 6c 69 63 65 28 30 2c 2d 31 29 2e 6e 6f 72 6d  slice(0,-1).norm
c9c0: 61 6c 69 7a 65 28 22 4e 46 43 22 29 3b 0a 20 20  alize("NFC");.  
c9d0: 20 20 7d 0a 0a 20 20 20 20 73 65 74 50 61 72 61    }..    setPara
c9e0: 67 72 61 70 68 20 28 69 50 61 72 61 67 72 61 70  graph (iParagrap
c9f0: 68 2c 20 73 54 65 78 74 29 20 7b 0a 20 20 20 20  h, sText) {.    
ca00: 20 20 20 20 74 68 69 73 2e 64 50 61 72 61 67 72      this.dParagr
ca10: 61 70 68 2e 73 65 74 28 69 50 61 72 61 67 72 61  aph.set(iParagra
ca20: 70 68 2c 20 73 54 65 78 74 29 3b 0a 20 20 20 20  ph, sText);.    
ca30: 7d 0a 0a 20 20 20 20 6c 6f 61 64 54 65 78 74 20  }..    loadText 
ca40: 28 73 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20  (sText) {.      
ca50: 20 20 69 66 20 28 74 79 70 65 6f 66 28 73 54 65    if (typeof(sTe
ca60: 78 74 29 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22  xt) === "string"
ca70: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
ca80: 74 68 69 73 2e 64 50 61 72 61 67 72 61 70 68 2e  this.dParagraph.
ca90: 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20 20  clear();.       
caa0: 20 20 20 20 20 6c 65 74 20 69 20 3d 20 30 3b 0a       let i = 0;.
cab0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
cac0: 69 53 74 61 72 74 20 3d 20 30 3b 0a 20 20 20 20  iStart = 0;.    
cad0: 20 20 20 20 20 20 20 20 6c 65 74 20 69 45 6e 64          let iEnd
cae0: 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20   = 0;.          
caf0: 20 20 73 54 65 78 74 20 3d 20 73 54 65 78 74 2e    sText = sText.
cb00: 72 65 70 6c 61 63 65 28 2f 5c 72 5c 6e 2f 67 2c  replace(/\r\n/g,
cb10: 20 22 5c 6e 22 29 2e 72 65 70 6c 61 63 65 28 2f   "\n").replace(/
cb20: 5c 72 2f 67 2c 20 22 5c 6e 22 29 2e 6e 6f 72 6d  \r/g, "\n").norm
cb30: 61 6c 69 7a 65 28 22 4e 46 43 22 29 3b 0a 20 20  alize("NFC");.  
cb40: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20            while 
cb50: 28 28 69 45 6e 64 20 3d 20 73 54 65 78 74 2e 69  ((iEnd = sText.i
cb60: 6e 64 65 78 4f 66 28 22 5c 6e 22 2c 20 69 53 74  ndexOf("\n", iSt
cb70: 61 72 74 29 29 20 21 3d 3d 20 2d 31 29 20 7b 0a  art)) !== -1) {.
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb90: 74 68 69 73 2e 64 50 61 72 61 67 72 61 70 68 2e  this.dParagraph.
cba0: 73 65 74 28 69 2c 20 73 54 65 78 74 2e 73 6c 69  set(i, sText.sli
cbb0: 63 65 28 69 53 74 61 72 74 2c 20 69 45 6e 64 29  ce(iStart, iEnd)
cbc0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
cbd0: 20 20 20 69 2b 2b 3b 0a 20 20 20 20 20 20 20 20     i++;.        
cbe0: 20 20 20 20 20 20 20 20 69 53 74 61 72 74 20 3d          iStart =
cbf0: 20 69 45 6e 64 2b 31 3b 0a 20 20 20 20 20 20 20   iEnd+1;.       
cc00: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
cc10: 20 20 20 74 68 69 73 2e 64 50 61 72 61 67 72 61     this.dParagra
cc20: 70 68 2e 73 65 74 28 69 2c 20 73 54 65 78 74 2e  ph.set(i, sText.
cc30: 73 6c 69 63 65 28 69 53 74 61 72 74 29 29 3b 0a  slice(iStart));.
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 63 6f              //co
cc50: 6e 73 6f 6c 65 2e 6c 6f 67 28 22 50 61 72 61 67  nsole.log("Parag
cc60: 72 61 70 68 73 20 6e 75 6d 62 65 72 3a 20 22 20  raphs number: " 
cc70: 2b 20 28 69 2b 31 29 29 3b 0a 20 20 20 20 20 20  + (i+1));.      
cc80: 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 65    }.    }..    e
cc90: 72 61 73 65 4e 6f 64 65 43 6f 6e 74 65 6e 74 20  raseNodeContent 
cca0: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69  () {.        whi
ccb0: 6c 65 20 28 74 68 69 73 2e 78 4e 6f 64 65 2e 66  le (this.xNode.f
ccc0: 69 72 73 74 43 68 69 6c 64 29 20 7b 0a 20 20 20  irstChild) {.   
ccd0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e           this.xN
cce0: 6f 64 65 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28  ode.removeChild(
ccf0: 74 68 69 73 2e 78 4e 6f 64 65 2e 66 69 72 73 74  this.xNode.first
cd00: 43 68 69 6c 64 29 3b 0a 20 20 20 20 20 20 20 20  Child);.        
cd10: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 77 72 69  }.    }..    wri
cd20: 74 65 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  te () {.        
cd30: 69 66 20 28 74 68 69 73 2e 78 4e 6f 64 65 20 21  if (this.xNode !
cd40: 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20  == null) {.     
cd50: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
cd60: 62 54 65 78 74 41 72 65 61 29 20 7b 0a 20 20 20  bTextArea) {.   
cd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
cd80: 73 2e 78 4e 6f 64 65 2e 76 61 6c 75 65 20 3d 20  s.xNode.value = 
cd90: 74 68 69 73 2e 67 65 74 54 65 78 74 28 29 3b 0a  this.getText();.
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
cdb0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
cdc0: 20 20 20 20 20 74 68 69 73 2e 65 72 61 73 65 4e       this.eraseN
cdd0: 6f 64 65 43 6f 6e 74 65 6e 74 28 29 3b 0a 20 20  odeContent();.  
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
cdf0: 69 73 2e 64 50 61 72 61 67 72 61 70 68 2e 66 6f  is.dParagraph.fo
ce00: 72 45 61 63 68 28 28 76 61 6c 2c 20 6b 65 79 29  rEach((val, key)
ce10: 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20 20   => {.          
ce20: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
ce30: 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64  Node.appendChild
ce40: 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65  (document.create
ce50: 54 65 78 74 4e 6f 64 65 28 76 61 6c 2e 6e 6f 72  TextNode(val.nor
ce60: 6d 61 6c 69 7a 65 28 22 4e 46 43 22 29 29 29 3b  malize("NFC")));
ce70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ce80: 20 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e       this.xNode.
ce90: 61 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75  appendChild(docu
cea0: 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65  ment.createEleme
ceb0: 6e 74 28 22 62 72 22 29 29 3b 0a 20 20 20 20 20  nt("br"));.     
cec0: 20 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20             });. 
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
cee0: 6f 6e 73 74 20 78 45 76 65 6e 74 20 3d 20 6e 65  onst xEvent = ne
cef0: 77 20 43 75 73 74 6f 6d 45 76 65 6e 74 28 22 67  w CustomEvent("g
cf00: 72 61 6d 6d 61 6c 65 63 74 65 4e 6f 64 65 43 6f  rammalecteNodeCo
cf10: 6e 74 65 6e 74 55 70 64 61 74 65 64 22 2c 20 7b  ntentUpdated", {
cf20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cf30: 20 20 20 20 20 64 65 74 61 69 6c 3a 20 7b 20 74       detail: { t
cf40: 65 78 74 3a 20 5b 2e 2e 2e 74 68 69 73 2e 64 50  ext: [...this.dP
cf50: 61 72 61 67 72 61 70 68 2e 76 61 6c 75 65 73 28  aragraph.values(
cf60: 29 5d 2e 6a 6f 69 6e 28 22 5c 6e 22 29 2e 6e 6f  )].join("\n").no
cf70: 72 6d 61 6c 69 7a 65 28 22 4e 46 43 22 29 20 7d  rmalize("NFC") }
cf80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cf90: 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20   });.           
cfa0: 20 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e       this.xNode.
cfb0: 64 69 73 70 61 74 63 68 45 76 65 6e 74 28 78 45  dispatchEvent(xE
cfc0: 76 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20  vent);.         
cfd0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20     }.        }. 
cfe0: 20 20 20 7d 0a 7d 0a                                }.}.