Grammalecte  Hex Artifact Content

Artifact b3b09d523dd5ec876e90d4770c07487d5d53fc4266f1a002fcf54a78c2e1ac9f:


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 29 29 3b 0a 20 20 20 20 20 20 20  a_num));.       
02d0: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
02e0: 78 45 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73 57  xElem.id.startsW
02f0: 69 74 68 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  ith("grammalecte
0300: 5f 68 69 64 65 22 29 29 20 7b 0a 20 20 20 20 20  _hide")) {.     
0310: 20 20 20 20 20 20 20 20 20 20 20 78 45 6c 65 6d             xElem
0320: 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 70 61 72 65  .parentNode.pare
0330: 6e 74 4e 6f 64 65 2e 73 74 79 6c 65 2e 64 69 73  ntNode.style.dis
0340: 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20  play = "none";. 
0350: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
0360: 65 20 69 66 20 28 78 45 6c 65 6d 2e 69 64 2e 73  e if (xElem.id.s
0370: 74 61 72 74 73 57 69 74 68 28 22 67 72 61 6d 6d  tartsWith("gramm
0380: 61 6c 65 63 74 65 5f 65 72 72 22 29 0a 20 20 20  alecte_err").   
0390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03a0: 20 20 20 20 26 26 20 78 45 6c 65 6d 2e 63 6c 61      && xElem.cla
03b0: 73 73 4e 61 6d 65 20 21 3d 3d 20 22 67 72 61 6d  ssName !== "gram
03c0: 6d 61 6c 65 63 74 65 5f 65 72 72 6f 72 5f 63 6f  malecte_error_co
03d0: 72 72 65 63 74 65 64 22 0a 20 20 20 20 20 20 20  rrected".       
03e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03f0: 26 26 20 78 45 6c 65 6d 2e 63 6c 61 73 73 4e 61  && xElem.classNa
0400: 6d 65 20 21 3d 3d 20 22 67 72 61 6d 6d 61 6c 65  me !== "grammale
0410: 63 74 65 5f 65 72 72 6f 72 5f 69 67 6e 6f 72 65  cte_error_ignore
0420: 64 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  d") {.          
0430: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
0440: 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 6f 54 6f 6f  te.oGCPanel.oToo
0450: 6c 74 69 70 2e 73 68 6f 77 28 78 45 6c 65 6d 2e  ltip.show(xElem.
0460: 69 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  id);.           
0470: 20 7d 20 65 6c 73 65 20 69 66 20 28 78 45 6c 65   } else if (xEle
0480: 6d 2e 69 64 20 3d 3d 3d 20 22 67 72 61 6d 6d 61  m.id === "gramma
0490: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72  lecte_tooltip_ur
04a0: 6c 22 20 20 7c 7c 20 78 45 6c 65 6d 2e 69 64 20  l"  || xElem.id 
04b0: 3d 3d 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  === "grammalecte
04c0: 5f 74 6f 6f 6c 74 69 70 5f 64 62 5f 73 65 61 72  _tooltip_db_sear
04d0: 63 68 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ch") {.         
04e0: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
04f0: 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 6f 70 65  cte.oGCPanel.ope
0500: 6e 55 52 4c 28 78 45 6c 65 6d 2e 64 61 74 61 73  nURL(xElem.datas
0510: 65 74 2e 75 72 6c 29 3b 0a 20 20 20 20 20 20 20  et.url);.       
0520: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
0530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 47                oG
0540: 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61  rammalecte.oGCPa
0550: 6e 65 6c 2e 6f 54 6f 6f 6c 74 69 70 2e 68 69 64  nel.oTooltip.hid
0560: 65 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  e();.           
0570: 20 7d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73   }.        } els
0580: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
0590: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43  oGrammalecte.oGC
05a0: 50 61 6e 65 6c 2e 6f 54 6f 6f 6c 74 69 70 2e 68  Panel.oTooltip.h
05b0: 69 64 65 28 29 3b 0a 20 20 20 20 20 20 20 20 7d  ide();.        }
05c0: 0a 20 20 20 20 7d 0a 20 20 20 20 63 61 74 63 68  .    }.    catch
05d0: 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73   (e) {.        s
05e0: 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20  howError(e);.   
05f0: 20 7d 0a 7d 0a 0a 0a 63 6c 61 73 73 20 47 72 61   }.}...class Gra
0600: 6d 6d 61 6c 65 63 74 65 47 72 61 6d 6d 61 72 43  mmalecteGrammarC
0610: 68 65 63 6b 65 72 20 65 78 74 65 6e 64 73 20 47  hecker extends G
0620: 72 61 6d 6d 61 6c 65 63 74 65 50 61 6e 65 6c 20  rammalectePanel 
0630: 7b 0a 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 20  {.    /*.       
0640: 20 4b 45 59 53 20 66 6f 72 20 69 64 65 6e 74 69   KEYS for identi
0650: 66 69 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20  fiers:.         
0660: 20 20 20 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70     grammalecte_p
0670: 61 72 61 67 72 61 70 68 7b 49 64 7d 20 3a 20 5b  aragraph{Id} : [
0680: 70 61 72 61 67 72 61 70 68 20 6e 75 6d 62 65 72  paragraph number
0690: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 72  ].            gr
06a0: 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 7b  ammalecte_check{
06b0: 49 64 7d 20 20 20 20 20 3a 20 5b 70 61 72 61 67  Id}     : [parag
06c0: 72 61 70 68 20 6e 75 6d 62 65 72 5d 0a 20 20 20  raph number].   
06d0: 20 20 20 20 20 20 20 20 20 67 72 61 6d 6d 61 6c           grammal
06e0: 65 63 74 65 5f 68 69 64 65 7b 49 64 7d 20 20 20  ecte_hide{Id}   
06f0: 20 20 20 3a 20 5b 70 61 72 61 67 72 61 70 68 20     : [paragraph 
0700: 6e 75 6d 62 65 72 5d 0a 20 20 20 20 20 20 20 20  number].        
0710: 20 20 20 20 67 72 61 6d 6d 61 6c 65 63 74 65 5f      grammalecte_
0720: 65 72 72 6f 72 7b 49 64 7d 20 20 20 20 20 3a 20  error{Id}     : 
0730: 5b 70 61 72 61 67 72 61 70 68 20 6e 75 6d 62 65  [paragraph numbe
0740: 72 5d 2d 5b 65 72 72 6f 72 5f 6e 75 6d 62 65 72  r]-[error_number
0750: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 72  ].            gr
0760: 61 6d 6d 61 6c 65 63 74 65 5f 73 75 67 67 7b 49  ammalecte_sugg{I
0770: 64 7d 20 20 20 20 20 20 3a 20 5b 70 61 72 61 67  d}      : [parag
0780: 72 61 70 68 20 6e 75 6d 62 65 72 5d 2d 5b 65 72  raph number]-[er
0790: 72 6f 72 5f 6e 75 6d 62 65 72 5d 2d 2d 5b 73 75  ror_number]--[su
07a0: 67 67 65 73 74 69 6f 6e 5f 6e 75 6d 62 65 72 5d  ggestion_number]
07b0: 0a 20 20 20 20 2a 2f 0a 0a 20 20 20 20 63 6f 6e  .    */..    con
07c0: 73 74 72 75 63 74 6f 72 20 28 2e 2e 2e 61 72 67  structor (...arg
07d0: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 73 75 70  s) {.        sup
07e0: 65 72 28 2e 2e 2e 61 72 67 73 29 3b 0a 20 20 20  er(...args);.   
07f0: 20 20 20 20 20 74 68 69 73 2e 61 49 67 6e 6f 72       this.aIgnor
0800: 65 64 45 72 72 6f 72 73 20 3d 20 6e 65 77 20 53  edErrors = new S
0810: 65 74 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68  et();.        th
0820: 69 73 2e 63 72 65 61 74 65 4d 65 6e 75 28 29 0a  is.createMenu().
0830: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
0840: 6e 65 6c 43 6f 6e 74 65 6e 74 2e 73 74 79 6c 65  nelContent.style
0850: 2e 6d 61 72 67 69 6e 42 6f 74 74 6f 6d 20 3d 20  .marginBottom = 
0860: 22 31 30 70 78 22 3b 0a 20 20 20 20 20 20 20 20  "10px";.        
0870: 2f 2f 20 45 64 69 74 6f 72 0a 20 20 20 20 20 20  // Editor.      
0880: 20 20 74 68 69 73 2e 78 47 43 50 61 6e 65 6c 43    this.xGCPanelC
0890: 6f 6e 74 65 6e 74 20 3d 20 6f 47 72 61 6d 6d 61  ontent = oGramma
08a0: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
08b0: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
08c0: 61 6d 6d 61 6c 65 63 74 65 5f 67 63 5f 70 61 6e  ammalecte_gc_pan
08d0: 65 6c 5f 63 6f 6e 74 65 6e 74 22 7d 29 3b 0a 20  el_content"});. 
08e0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
08f0: 61 67 72 61 70 68 4c 69 73 74 20 3d 20 6f 47 72  agraphList = oGr
0900: 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65  ammalecte.create
0910: 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64 3a  Node("div", {id:
0920: 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61   "grammalecte_pa
0930: 72 61 67 72 61 70 68 5f 6c 69 73 74 22 7d 29 3b  ragraph_list"});
0940: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 47  .        this.xG
0950: 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 70  CPanelContent.ap
0960: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78  pendChild(this.x
0970: 50 61 72 61 67 72 61 70 68 4c 69 73 74 29 3b 0a  ParagraphList);.
0980: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
0990: 6e 65 6c 43 6f 6e 74 65 6e 74 2e 61 64 64 45 76  nelContent.addEv
09a0: 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c 69  entListener("cli
09b0: 63 6b 22 2c 20 6f 6e 47 72 61 6d 6d 61 6c 65 63  ck", onGrammalec
09c0: 74 65 47 43 50 61 6e 65 6c 43 6c 69 63 6b 2c 20  teGCPanelClick, 
09d0: 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20  false);.        
09e0: 74 68 69 73 2e 6f 54 6f 6f 6c 74 69 70 20 3d 20  this.oTooltip = 
09f0: 6e 65 77 20 47 72 61 6d 6d 61 6c 65 63 74 65 54  new GrammalecteT
0a00: 6f 6f 6c 74 69 70 28 74 68 69 73 2e 78 50 61 72  ooltip(this.xPar
0a10: 65 6e 74 2c 20 74 68 69 73 2e 78 47 43 50 61 6e  ent, this.xGCPan
0a20: 65 6c 43 6f 6e 74 65 6e 74 29 3b 0a 20 20 20 20  elContent);.    
0a30: 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65 6c 43      this.xPanelC
0a40: 6f 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43 68 69  ontent.appendChi
0a50: 6c 64 28 74 68 69 73 2e 78 47 43 50 61 6e 65 6c  ld(this.xGCPanel
0a60: 43 6f 6e 74 65 6e 74 29 3b 0a 20 20 20 20 20 20  Content);.      
0a70: 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d 20 6e    this.xNode = n
0a80: 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74 68 69  ull;.        thi
0a90: 73 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 20 3d  s.oTextControl =
0aa0: 20 6e 65 77 20 47 72 61 6d 6d 61 6c 65 63 74 65   new Grammalecte
0ab0: 54 65 78 74 43 6f 6e 74 72 6f 6c 28 29 3b 0a 20  TextControl();. 
0ac0: 20 20 20 20 20 20 20 2f 2f 20 4c 65 78 69 63 6f         // Lexico
0ad0: 67 72 61 70 68 65 72 0a 20 20 20 20 20 20 20 20  grapher.        
0ae0: 74 68 69 73 2e 6e 4c 78 67 43 6f 75 6e 74 20 3d  this.nLxgCount =
0af0: 20 30 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73   0;.        this
0b00: 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65 6e  .xLxgPanelConten
0b10: 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  t = oGrammalecte
0b20: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
0b30: 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c  ", {id: "grammal
0b40: 65 63 74 65 5f 6c 78 67 5f 70 61 6e 65 6c 5f 63  ecte_lxg_panel_c
0b50: 6f 6e 74 65 6e 74 22 7d 29 3b 0a 20 20 20 20 20  ontent"});.     
0b60: 20 20 20 74 68 69 73 2e 78 50 61 6e 65 6c 43 6f     this.xPanelCo
0b70: 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c  ntent.appendChil
0b80: 64 28 74 68 69 73 2e 78 4c 78 67 50 61 6e 65 6c  d(this.xLxgPanel
0b90: 43 6f 6e 74 65 6e 74 29 3b 0a 20 20 20 20 20 20  Content);.      
0ba0: 20 20 2f 2f 20 43 6f 6e 6a 75 67 75 65 75 72 0a    // Conjugueur.
0bb0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 43 6f          this.xCo
0bc0: 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 20 3d  njPanelContent =
0bd0: 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72   oGrammalecte.cr
0be0: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
0bf0: 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  {id: "grammalect
0c00: 65 5f 63 6f 6e 6a 5f 70 61 6e 65 6c 5f 63 6f 6e  e_conj_panel_con
0c10: 74 65 6e 74 22 7d 29 3b 0a 20 20 20 20 20 20 20  tent"});.       
0c20: 20 74 68 69 73 2e 78 43 6f 6e 6a 50 61 6e 65 6c   this.xConjPanel
0c30: 43 6f 6e 74 65 6e 74 2e 69 6e 6e 65 72 48 54 4d  Content.innerHTM
0c40: 4c 20 3d 20 73 47 72 61 6d 6d 61 6c 65 63 74 65  L = sGrammalecte
0c50: 43 6f 6e 6a 75 67 75 65 75 72 48 54 4d 4c 3b 20  ConjugueurHTML; 
0c60: 20 2f 2f 20 40 52 65 76 69 65 77 65 72 73 3a 20   // @Reviewers: 
0c70: 73 47 72 61 6d 6d 61 6c 65 63 74 65 43 6f 6e 6a  sGrammalecteConj
0c80: 75 67 75 65 75 72 48 54 4d 4c 20 69 73 20 61 20  ugueurHTML is a 
0c90: 63 6f 6e 73 74 20 76 61 6c 75 65 20 64 65 66 69  const value defi
0ca0: 6e 65 64 20 69 6e 20 3c 63 6f 6e 74 65 6e 74 5f  ned in <content_
0cb0: 73 63 72 69 70 74 73 2f 68 74 6d 6c 5f 73 72 63  scripts/html_src
0cc0: 2e 6a 73 3e 0a 20 20 20 20 20 20 20 20 74 68 69  .js>.        thi
0cd0: 73 2e 78 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e  s.xPanelContent.
0ce0: 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73  appendChild(this
0cf0: 2e 78 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65  .xConjPanelConte
0d00: 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  nt);.        thi
0d10: 73 2e 73 56 65 72 62 20 3d 20 22 22 3b 0a 20 20  s.sVerb = "";.  
0d20: 20 20 20 20 20 20 74 68 69 73 2e 62 4c 69 73 74        this.bList
0d30: 65 6e 43 6f 6e 6a 20 3d 20 66 61 6c 73 65 3b 0a  enConj = false;.
0d40: 20 20 20 20 7d 0a 0a 20 20 20 20 63 72 65 61 74      }..    creat
0d50: 65 4d 65 6e 75 20 28 29 20 7b 0a 20 20 20 20 20  eMenu () {.     
0d60: 20 20 20 74 68 69 73 2e 78 4d 65 6e 75 20 3d 20     this.xMenu = 
0d70: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
0d80: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
0d90: 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d  className: "gram
0da0: 6d 61 6c 65 63 74 65 5f 70 61 6e 65 6c 5f 6d 65  malecte_panel_me
0db0: 6e 75 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 74  nu"});.        t
0dc0: 68 69 73 2e 78 54 46 42 75 74 74 6f 6e 20 3d 20  his.xTFButton = 
0dd0: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
0de0: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
0df0: 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d  className: "gram
0e00: 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 62 75 74  malecte_menu_but
0e10: 74 6f 6e 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e  ton", textConten
0e20: 74 3a 20 22 46 6f 72 6d 61 74 65 75 72 20 64 65  t: "Formateur de
0e30: 20 74 65 78 74 65 22 7d 29 3b 0a 20 20 20 20 20   texte"});.     
0e40: 20 20 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42     this.xEditorB
0e50: 75 74 74 6f 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c  utton = oGrammal
0e60: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
0e70: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
0e80: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
0e90: 6d 65 6e 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65  menu_button", te
0ea0: 78 74 43 6f 6e 74 65 6e 74 3a 20 22 c3 89 64 69  xtContent: "..di
0eb0: 74 65 75 72 22 7d 29 3b 0a 20 20 20 20 20 20 20  teur"});.       
0ec0: 20 74 68 69 73 2e 78 4c 78 67 42 75 74 74 6f 6e   this.xLxgButton
0ed0: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
0ee0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
0ef0: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
0f00: 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f  rammalecte_menu_
0f10: 62 75 74 74 6f 6e 22 2c 20 74 65 78 74 43 6f 6e  button", textCon
0f20: 74 65 6e 74 3a 20 22 4c 65 78 69 63 6f 67 72 61  tent: "Lexicogra
0f30: 70 68 65 22 7d 29 3b 0a 20 20 20 20 20 20 20 20  phe"});.        
0f40: 74 68 69 73 2e 78 43 6f 6e 6a 42 75 74 74 6f 6e  this.xConjButton
0f50: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
0f60: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
0f70: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
0f80: 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f  rammalecte_menu_
0f90: 62 75 74 74 6f 6e 22 2c 20 74 65 78 74 43 6f 6e  button", textCon
0fa0: 74 65 6e 74 3a 20 22 43 6f 6e 6a 75 67 75 65 75  tent: "Conjugueu
0fb0: 72 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68  r"});.        th
0fc0: 69 73 2e 78 4c 45 42 75 74 74 6f 6e 20 3d 20 6f  is.xLEButton = o
0fd0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
0fe0: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
0ff0: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
1000: 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 62 75 74 74  alecte_menu_butt
1010: 6f 6e 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74  on", textContent
1020: 3a 20 22 e2 80 a2 c3 89 64 69 74 65 75 72 20 6c  : ".....diteur l
1030: 65 78 69 63 61 6c e2 80 a2 22 7d 29 3b 0a 20 20  exical..."});.  
1040: 20 20 20 20 20 20 74 68 69 73 2e 78 54 46 42 75        this.xTFBu
1050: 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28  tton.onclick = (
1060: 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20  ) => {.         
1070: 20 20 20 69 66 20 28 21 74 68 69 73 2e 62 57 6f     if (!this.bWo
1080: 72 6b 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20  rking) {.       
1090: 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61           oGramma
10a0: 6c 65 63 74 65 2e 63 72 65 61 74 65 54 46 50 61  lecte.createTFPa
10b0: 6e 65 6c 28 29 3b 0a 20 20 20 20 20 20 20 20 20  nel();.         
10c0: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
10d0: 63 74 65 2e 6f 54 46 50 61 6e 65 6c 2e 73 74 61  cte.oTFPanel.sta
10e0: 72 74 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  rt();.          
10f0: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
1100: 74 65 2e 6f 54 46 50 61 6e 65 6c 2e 73 68 6f 77  te.oTFPanel.show
1110: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
1120: 7d 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20  }.        };.   
1130: 20 20 20 20 20 74 68 69 73 2e 78 45 64 69 74 6f       this.xEdito
1140: 72 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20  rButton.onclick 
1150: 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20  = () => {.      
1160: 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
1170: 62 57 6f 72 6b 69 6e 67 29 20 7b 0a 20 20 20 20  bWorking) {.    
1180: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1190: 2e 73 68 6f 77 45 64 69 74 6f 72 28 29 3b 0a 20  .showEditor();. 
11a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
11b0: 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20 20       };.        
11c0: 74 68 69 73 2e 78 4c 78 67 42 75 74 74 6f 6e 2e  this.xLxgButton.
11d0: 6f 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d 3e 20  onclick = () => 
11e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  {.            if
11f0: 20 28 21 74 68 69 73 2e 62 57 6f 72 6b 69 6e 67   (!this.bWorking
1200: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1210: 20 20 20 20 74 68 69 73 2e 73 68 6f 77 4c 65 78      this.showLex
1220: 69 63 6f 67 72 61 70 68 65 72 28 29 3b 0a 20 20  icographer();.  
1230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1240: 69 73 2e 63 6c 65 61 72 4c 65 78 69 63 6f 67 72  is.clearLexicogr
1250: 61 70 68 65 72 28 29 3b 0a 20 20 20 20 20 20 20  apher();.       
1260: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74           this.st
1270: 61 72 74 57 61 69 74 49 63 6f 6e 28 29 3b 0a 20  artWaitIcon();. 
1280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
1290: 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e  GrammalectePort.
12a0: 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20  postMessage({.  
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c0: 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 67 65 74    sCommand: "get
12d0: 4c 69 73 74 4f 66 54 6f 6b 65 6e 73 22 2c 0a 20  ListOfTokens",. 
12e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f0: 20 20 20 64 50 61 72 61 6d 3a 20 7b 73 54 65 78     dParam: {sTex
1300: 74 3a 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e  t: this.oTextCon
1310: 74 72 6f 6c 2e 67 65 74 54 65 78 74 28 29 7d 2c  trol.getText()},
1320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1330: 20 20 20 20 20 64 49 6e 66 6f 3a 20 28 28 74 68       dInfo: ((th
1340: 69 73 2e 78 4e 6f 64 65 29 20 3f 20 7b 73 54 65  is.xNode) ? {sTe
1350: 78 74 41 72 65 61 49 64 3a 20 74 68 69 73 2e 78  xtAreaId: this.x
1360: 4e 6f 64 65 2e 69 64 7d 20 3a 20 7b 7d 29 0a 20  Node.id} : {}). 
1370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1380: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  );.            }
1390: 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20  .        };.    
13a0: 20 20 20 20 74 68 69 73 2e 78 43 6f 6e 6a 42 75      this.xConjBu
13b0: 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28  tton.onclick = (
13c0: 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20  ) => {.         
13d0: 20 20 20 69 66 20 28 21 74 68 69 73 2e 62 57 6f     if (!this.bWo
13e0: 72 6b 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20  rking) {.       
13f0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 68           this.sh
1400: 6f 77 43 6f 6e 6a 75 67 75 65 75 72 28 29 3b 0a  owConjugueur();.
1410: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
1420: 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20        };.       
1430: 20 74 68 69 73 2e 78 4c 45 42 75 74 74 6f 6e 2e   this.xLEButton.
1440: 6f 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d 3e 20  onclick = () => 
1450: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 47  {.            xG
1460: 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70  rammalectePort.p
1470: 6f 73 74 4d 65 73 73 61 67 65 28 7b 73 43 6f 6d  ostMessage({sCom
1480: 6d 61 6e 64 3a 20 22 6f 70 65 6e 4c 65 78 69 63  mand: "openLexic
1490: 6f 6e 45 64 69 74 6f 72 22 2c 20 64 50 61 72 61  onEditor", dPara
14a0: 6d 3a 20 6e 75 6c 6c 2c 20 64 49 6e 66 6f 3a 20  m: null, dInfo: 
14b0: 6e 75 6c 6c 7d 29 3b 0a 20 20 20 20 20 20 20 20  null});.        
14c0: 7d 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  };.        this.
14d0: 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43 68 69 6c  xMenu.appendChil
14e0: 64 28 74 68 69 73 2e 78 54 46 42 75 74 74 6f 6e  d(this.xTFButton
14f0: 29 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  ).        this.x
1500: 4d 65 6e 75 2e 61 70 70 65 6e 64 43 68 69 6c 64  Menu.appendChild
1510: 28 74 68 69 73 2e 78 45 64 69 74 6f 72 42 75 74  (this.xEditorBut
1520: 74 6f 6e 29 0a 20 20 20 20 20 20 20 20 74 68 69  ton).        thi
1530: 73 2e 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43 68  s.xMenu.appendCh
1540: 69 6c 64 28 74 68 69 73 2e 78 4c 78 67 42 75 74  ild(this.xLxgBut
1550: 74 6f 6e 29 0a 20 20 20 20 20 20 20 20 74 68 69  ton).        thi
1560: 73 2e 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43 68  s.xMenu.appendCh
1570: 69 6c 64 28 74 68 69 73 2e 78 43 6f 6e 6a 42 75  ild(this.xConjBu
1580: 74 74 6f 6e 29 0a 20 20 20 20 20 20 20 20 74 68  tton).        th
1590: 69 73 2e 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43  is.xMenu.appendC
15a0: 68 69 6c 64 28 74 68 69 73 2e 78 4c 45 42 75 74  hild(this.xLEBut
15b0: 74 6f 6e 29 0a 20 20 20 20 20 20 20 20 74 68 69  ton).        thi
15c0: 73 2e 78 50 61 6e 65 6c 42 61 72 2e 61 70 70 65  s.xPanelBar.appe
15d0: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 78 4d 65  ndChild(this.xMe
15e0: 6e 75 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  nu);.    }..    
15f0: 73 74 61 72 74 20 28 77 68 61 74 29 20 7b 0a 20  start (what) {. 
1600: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 6f 6f         this.oToo
1610: 6c 74 69 70 2e 68 69 64 65 28 29 3b 0a 20 20 20  ltip.hide();.   
1620: 20 20 20 20 20 74 68 69 73 2e 62 57 6f 72 6b 69       this.bWorki
1630: 6e 67 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20  ng = false;.    
1640: 20 20 20 20 74 68 69 73 2e 63 6c 65 61 72 28 29      this.clear()
1650: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 68  ;.        this.h
1660: 69 64 65 4d 65 73 73 61 67 65 28 29 3b 0a 20 20  ideMessage();.  
1670: 20 20 20 20 20 20 69 66 20 28 74 79 70 65 6f 66        if (typeof
1680: 28 77 68 61 74 29 20 3d 3d 3d 20 22 73 74 72 69  (what) === "stri
1690: 6e 67 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ng") {.         
16a0: 20 20 20 2f 2f 20 74 65 78 74 0a 20 20 20 20 20     // text.     
16b0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e 6f 64         this.xNod
16c0: 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20  e = null;.      
16d0: 20 20 20 20 20 20 74 68 69 73 2e 6f 54 65 78 74        this.oText
16e0: 43 6f 6e 74 72 6f 6c 2e 73 65 74 54 65 78 74 28  Control.setText(
16f0: 77 68 61 74 29 3b 0a 20 20 20 20 20 20 20 20 7d  what);.        }
1700: 20 65 6c 73 65 20 69 66 20 28 77 68 61 74 2e 6e   else if (what.n
1710: 6f 64 65 54 79 70 65 20 26 26 20 77 68 61 74 2e  odeType && what.
1720: 6e 6f 64 65 54 79 70 65 20 3d 3d 3d 20 31 29 20  nodeType === 1) 
1730: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  {.            //
1740: 20 6e 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20   node.          
1750: 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d 20 77    this.xNode = w
1760: 68 61 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20  hat;.           
1770: 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e 74 72   this.oTextContr
1780: 6f 6c 2e 73 65 74 4e 6f 64 65 28 74 68 69 73 2e  ol.setNode(this.
1790: 78 4e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20  xNode);.        
17a0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20  } else {.       
17b0: 20 20 20 20 20 2f 2f 20 65 72 72 6f 72 0a 20 20       // error.  
17c0: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
17d0: 61 6c 65 63 74 65 2e 6f 4d 65 73 73 61 67 65 42  alecte.oMessageB
17e0: 6f 78 2e 73 68 6f 77 4d 65 73 73 61 67 65 28 22  ox.showMessage("
17f0: 5b 42 55 47 5d 20 41 6e 61 6c 79 73 65 20 64 e2  [BUG] Analyse d.
1800: 80 99 75 6e 20 c3 a9 6c c3 a9 6d 65 6e 74 20 69  ..un ..l..ment i
1810: 6e 63 6f 6e 6e 75 e2 80 a6 22 29 3b 0a 20 20 20  nconnu...");.   
1820: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65           console
1830: 2e 6c 6f 67 28 22 47 72 61 6d 6d 61 6c 65 63 74  .log("Grammalect
1840: 65 20 5b 62 75 67 5d 3a 22 2c 20 77 68 61 74 29  e [bug]:", what)
1850: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
1860: 7d 0a 0a 20 20 20 20 72 65 63 68 65 63 6b 41 6c  }..    recheckAl
1870: 6c 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74  l () {.        t
1880: 68 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e 68 69 64  his.oTooltip.hid
1890: 65 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  e();.        thi
18a0: 73 2e 73 68 6f 77 45 64 69 74 6f 72 28 29 3b 0a  s.showEditor();.
18b0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c 65          this.cle
18c0: 61 72 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68  ar();.        th
18d0: 69 73 2e 73 74 61 72 74 57 61 69 74 49 63 6f 6e  is.startWaitIcon
18e0: 28 29 3b 0a 20 20 20 20 20 20 20 20 78 47 72 61  ();.        xGra
18f0: 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70 6f 73  mmalectePort.pos
1900: 74 4d 65 73 73 61 67 65 28 7b 0a 20 20 20 20 20  tMessage({.     
1910: 20 20 20 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a         sCommand:
1920: 20 22 70 61 72 73 65 41 6e 64 53 70 65 6c 6c 63   "parseAndSpellc
1930: 68 65 63 6b 22 2c 0a 20 20 20 20 20 20 20 20 20  heck",.         
1940: 20 20 20 64 50 61 72 61 6d 3a 20 7b 73 54 65 78     dParam: {sTex
1950: 74 3a 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e  t: this.oTextCon
1960: 74 72 6f 6c 2e 67 65 74 54 65 78 74 28 29 2c 20  trol.getText(), 
1970: 73 43 6f 75 6e 74 72 79 3a 20 22 46 52 22 2c 20  sCountry: "FR", 
1980: 62 44 65 62 75 67 3a 20 66 61 6c 73 65 2c 20 62  bDebug: false, b
1990: 43 6f 6e 74 65 78 74 3a 20 66 61 6c 73 65 7d 2c  Context: false},
19a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 49 6e  .            dIn
19b0: 66 6f 3a 20 28 28 74 68 69 73 2e 78 4e 6f 64 65  fo: ((this.xNode
19c0: 29 20 3f 20 7b 73 54 65 78 74 41 72 65 61 49 64  ) ? {sTextAreaId
19d0: 3a 20 74 68 69 73 2e 78 4e 6f 64 65 2e 69 64 7d  : this.xNode.id}
19e0: 20 3a 20 7b 7d 29 0a 20 20 20 20 20 20 20 20 7d   : {}).        }
19f0: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 68  );.    }..    sh
1a00: 6f 77 45 64 69 74 6f 72 20 28 29 20 7b 0a 20 20  owEditor () {.  
1a10: 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63        this.switc
1a20: 68 43 6f 6e 74 65 6e 74 4f 6e 28 74 68 69 73 2e  hContentOn(this.
1a30: 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c  xGCPanelContent,
1a40: 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42 75 74   this.xEditorBut
1a50: 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74 68  ton);.        th
1a60: 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e 74  is.switchContent
1a70: 4f 66 66 28 74 68 69 73 2e 78 4c 78 67 50 61 6e  Off(this.xLxgPan
1a80: 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73 2e  elContent, this.
1a90: 78 4c 78 67 42 75 74 74 6f 6e 29 3b 0a 20 20 20  xLxgButton);.   
1aa0: 20 20 20 20 20 74 68 69 73 2e 73 77 69 74 63 68       this.switch
1ab0: 43 6f 6e 74 65 6e 74 4f 66 66 28 74 68 69 73 2e  ContentOff(this.
1ac0: 78 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65 6e  xConjPanelConten
1ad0: 74 2c 20 74 68 69 73 2e 78 43 6f 6e 6a 42 75 74  t, this.xConjBut
1ae0: 74 6f 6e 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  ton);.    }..   
1af0: 20 73 68 6f 77 4c 65 78 69 63 6f 67 72 61 70 68   showLexicograph
1b00: 65 72 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  er () {.        
1b10: 74 68 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65  this.switchConte
1b20: 6e 74 4f 66 66 28 74 68 69 73 2e 78 47 43 50 61  ntOff(this.xGCPa
1b30: 6e 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69 73  nelContent, this
1b40: 2e 78 45 64 69 74 6f 72 42 75 74 74 6f 6e 29 3b  .xEditorButton);
1b50: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 77  .        this.sw
1b60: 69 74 63 68 43 6f 6e 74 65 6e 74 4f 6e 28 74 68  itchContentOn(th
1b70: 69 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74  is.xLxgPanelCont
1b80: 65 6e 74 2c 20 74 68 69 73 2e 78 4c 78 67 42 75  ent, this.xLxgBu
1b90: 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74  tton);.        t
1ba0: 68 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65 6e  his.switchConten
1bb0: 74 4f 66 66 28 74 68 69 73 2e 78 43 6f 6e 6a 50  tOff(this.xConjP
1bc0: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69  anelContent, thi
1bd0: 73 2e 78 43 6f 6e 6a 42 75 74 74 6f 6e 29 3b 0a  s.xConjButton);.
1be0: 20 20 20 20 7d 0a 0a 20 20 20 20 73 68 6f 77 43      }..    showC
1bf0: 6f 6e 6a 75 67 75 65 75 72 20 28 29 20 7b 0a 20  onjugueur () {. 
1c00: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
1c10: 63 68 43 6f 6e 74 65 6e 74 4f 66 66 28 74 68 69  chContentOff(thi
1c20: 73 2e 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65 6e  s.xGCPanelConten
1c30: 74 2c 20 74 68 69 73 2e 78 45 64 69 74 6f 72 42  t, this.xEditorB
1c40: 75 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20  utton);.        
1c50: 74 68 69 73 2e 73 77 69 74 63 68 43 6f 6e 74 65  this.switchConte
1c60: 6e 74 4f 66 66 28 74 68 69 73 2e 78 4c 78 67 50  ntOff(this.xLxgP
1c70: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2c 20 74 68 69  anelContent, thi
1c80: 73 2e 78 4c 78 67 42 75 74 74 6f 6e 29 3b 0a 20  s.xLxgButton);. 
1c90: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
1ca0: 63 68 43 6f 6e 74 65 6e 74 4f 6e 28 74 68 69 73  chContentOn(this
1cb0: 2e 78 43 6f 6e 6a 50 61 6e 65 6c 43 6f 6e 74 65  .xConjPanelConte
1cc0: 6e 74 2c 20 74 68 69 73 2e 78 43 6f 6e 6a 42 75  nt, this.xConjBu
1cd0: 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 74  tton);.        t
1ce0: 68 69 73 2e 6c 69 73 74 65 6e 43 6f 6e 6a 28 29  his.listenConj()
1cf0: 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 74  ;.        if (!t
1d00: 68 69 73 2e 73 56 65 72 62 29 20 7b 0a 20 20 20  his.sVerb) {.   
1d10: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f           this.co
1d20: 6e 6a 75 67 61 74 65 56 65 72 62 28 22 c3 aa 74  njugateVerb("..t
1d30: 72 65 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  re");.        }.
1d40: 20 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74 63      }..    switc
1d50: 68 43 6f 6e 74 65 6e 74 4f 6e 20 28 78 43 6f 6e  hContentOn (xCon
1d60: 74 65 6e 74 2c 20 78 4e 6f 64 65 42 75 74 74 6f  tent, xNodeButto
1d70: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 78 43 6f  n) {.        xCo
1d80: 6e 74 65 6e 74 2e 73 74 79 6c 65 2e 64 69 73 70  ntent.style.disp
1d90: 6c 61 79 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20  lay = "block";. 
1da0: 20 20 20 20 20 20 20 78 4e 6f 64 65 42 75 74 74         xNodeButt
1db0: 6f 6e 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f  on.style.backgro
1dc0: 75 6e 64 43 6f 6c 6f 72 20 3d 20 22 68 73 6c 28  undColor = "hsl(
1dd0: 32 31 30 2c 20 36 30 25 2c 20 34 30 25 29 22 3b  210, 60%, 40%)";
1de0: 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 42 75  .        xNodeBu
1df0: 74 74 6f 6e 2e 73 74 79 6c 65 2e 74 65 78 74 53  tton.style.textS
1e00: 68 61 64 6f 77 20 3d 20 22 32 70 78 20 30 20 30  hadow = "2px 0 0
1e10: 20 68 73 6c 61 28 32 31 30 2c 20 34 30 25 2c 20   hsla(210, 40%, 
1e20: 33 35 25 2c 20 2e 35 29 2c 20 2d 32 70 78 20 30  35%, .5), -2px 0
1e30: 20 30 20 68 73 6c 61 28 32 31 30 2c 20 34 30 25   0 hsla(210, 40%
1e40: 2c 20 33 35 25 2c 20 2e 35 29 2c 20 30 20 32 70  , 35%, .5), 0 2p
1e50: 78 20 30 20 68 73 6c 61 28 32 31 30 2c 20 34 30  x 0 hsla(210, 40
1e60: 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20 30 20 2d  %, 35%, .5), 0 -
1e70: 32 70 78 20 30 20 68 73 6c 61 28 32 31 30 2c 20  2px 0 hsla(210, 
1e80: 34 30 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20 31  40%, 35%, .5), 1
1e90: 70 78 20 31 70 78 20 68 73 6c 61 28 32 31 30 2c  px 1px hsla(210,
1ea0: 20 34 30 25 2c 20 33 35 25 2c 20 2e 35 29 2c 20   40%, 35%, .5), 
1eb0: 2d 31 70 78 20 2d 31 70 78 20 30 20 68 73 6c 61  -1px -1px 0 hsla
1ec0: 28 32 31 30 2c 20 34 30 25 2c 20 33 35 25 2c 20  (210, 40%, 35%, 
1ed0: 2e 35 29 2c 20 31 70 78 20 2d 31 70 78 20 30 20  .5), 1px -1px 0 
1ee0: 68 73 6c 61 28 32 31 30 2c 20 34 30 25 2c 20 33  hsla(210, 40%, 3
1ef0: 35 25 2c 20 2e 35 29 2c 20 2d 31 70 78 20 31 70  5%, .5), -1px 1p
1f00: 78 20 30 20 68 73 6c 61 28 32 31 30 2c 20 33 30  x 0 hsla(210, 30
1f10: 25 2c 20 33 35 25 2c 20 2e 35 29 22 3b 0a 20 20  %, 35%, .5)";.  
1f20: 20 20 7d 0a 0a 20 20 20 20 73 77 69 74 63 68 43    }..    switchC
1f30: 6f 6e 74 65 6e 74 4f 66 66 20 28 78 43 6f 6e 74  ontentOff (xCont
1f40: 65 6e 74 2c 20 78 4e 6f 64 65 42 75 74 74 6f 6e  ent, xNodeButton
1f50: 29 20 7b 0a 20 20 20 20 20 20 20 20 78 43 6f 6e  ) {.        xCon
1f60: 74 65 6e 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c  tent.style.displ
1f70: 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20  ay = "none";.   
1f80: 20 20 20 20 20 78 4e 6f 64 65 42 75 74 74 6f 6e       xNodeButton
1f90: 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75 6e  .style.backgroun
1fa0: 64 43 6f 6c 6f 72 20 3d 20 22 22 3b 0a 20 20 20  dColor = "";.   
1fb0: 20 20 20 20 20 78 4e 6f 64 65 42 75 74 74 6f 6e       xNodeButton
1fc0: 2e 73 74 79 6c 65 2e 74 65 78 74 53 68 61 64 6f  .style.textShado
1fd0: 77 20 3d 20 22 22 3b 0a 20 20 20 20 7d 0a 0a 20  w = "";.    }.. 
1fe0: 20 20 20 63 6c 65 61 72 20 28 29 20 7b 0a 20 20     clear () {.  
1ff0: 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 68 69        while (thi
2000: 73 2e 78 50 61 72 61 67 72 61 70 68 4c 69 73 74  s.xParagraphList
2010: 2e 66 69 72 73 74 43 68 69 6c 64 29 20 7b 0a 20  .firstChild) {. 
2020: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2030: 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e 72  xParagraphList.r
2040: 65 6d 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e  emoveChild(this.
2050: 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e 66  xParagraphList.f
2060: 69 72 73 74 43 68 69 6c 64 29 3b 0a 20 20 20 20  irstChild);.    
2070: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68      }.        th
2080: 69 73 2e 61 49 67 6e 6f 72 65 64 45 72 72 6f 72  is.aIgnoredError
2090: 73 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 7d  s.clear();.    }
20a0: 0a 0a 20 20 20 20 68 69 64 65 20 28 29 20 7b 0a  ..    hide () {.
20b0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 47 72 61          if (oGra
20c0: 6d 6d 61 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65  mmalecte.oTFPane
20d0: 6c 29 20 7b 20 6f 47 72 61 6d 6d 61 6c 65 63 74  l) { oGrammalect
20e0: 65 2e 6f 54 46 50 61 6e 65 6c 2e 68 69 64 65 28  e.oTFPanel.hide(
20f0: 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20  ); }.        if 
2100: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 4d  (oGrammalecte.oM
2110: 65 73 73 61 67 65 42 6f 78 29 20 7b 20 6f 47 72  essageBox) { oGr
2120: 61 6d 6d 61 6c 65 63 74 65 2e 6f 4d 65 73 73 61  ammalecte.oMessa
2130: 67 65 42 6f 78 2e 68 69 64 65 28 29 3b 20 7d 0a  geBox.hide(); }.
2140: 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c          oGrammal
2150: 65 63 74 65 2e 63 6c 65 61 72 52 69 67 68 74 43  ecte.clearRightC
2160: 6c 69 63 6b 65 64 4e 6f 64 65 28 29 3b 0a 20 20  lickedNode();.  
2170: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 6e 65        this.xPane
2180: 6c 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  l.style.display 
2190: 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20  = "none";.      
21a0: 20 20 74 68 69 73 2e 6f 54 65 78 74 43 6f 6e 74    this.oTextCont
21b0: 72 6f 6c 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20  rol.clear();.   
21c0: 20 7d 0a 0a 20 20 20 20 61 64 64 50 61 72 61 67   }..    addParag
21d0: 72 61 70 68 52 65 73 75 6c 74 20 28 6f 52 65 73  raphResult (oRes
21e0: 75 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 20 74  ult) {.        t
21f0: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
2200: 20 69 66 20 28 6f 52 65 73 75 6c 74 20 26 26 20   if (oResult && 
2210: 28 6f 52 65 73 75 6c 74 2e 73 50 61 72 61 67 72  (oResult.sParagr
2220: 61 70 68 2e 74 72 69 6d 28 29 20 21 3d 3d 20 22  aph.trim() !== "
2230: 22 20 7c 7c 20 6f 52 65 73 75 6c 74 2e 61 47 72  " || oResult.aGr
2240: 61 6d 6d 45 72 72 2e 6c 65 6e 67 74 68 20 3e 20  ammErr.length > 
2250: 30 20 7c 7c 20 6f 52 65 73 75 6c 74 2e 61 53 70  0 || oResult.aSp
2260: 65 6c 6c 45 72 72 2e 6c 65 6e 67 74 68 20 3e 20  ellErr.length > 
2270: 30 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  0)) {.          
2280: 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 44        let xNodeD
2290: 69 76 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  iv = oGrammalect
22a0: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
22b0: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
22c0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72  "grammalecte_par
22d0: 61 67 72 61 70 68 5f 62 6c 6f 63 6b 22 7d 29 3b  agraph_block"});
22e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22f0: 20 2f 2f 20 61 63 74 69 6f 6e 73 0a 20 20 20 20   // actions.    
2300: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
2310: 78 41 63 74 69 6f 6e 73 42 61 72 20 3d 20 6f 47  xActionsBar = oG
2320: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
2330: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
2340: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
2350: 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70 68 5f  lecte_paragraph_
2360: 61 63 74 69 6f 6e 73 22 7d 29 3b 0a 20 20 20 20  actions"});.    
2370: 20 20 20 20 20 20 20 20 20 20 20 20 78 41 63 74              xAct
2380: 69 6f 6e 73 42 61 72 2e 61 70 70 65 6e 64 43 68  ionsBar.appendCh
2390: 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65  ild(oGrammalecte
23a0: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
23b0: 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c  ", {id: "grammal
23c0: 65 63 74 65 5f 63 68 65 63 6b 22 20 2b 20 6f 52  ecte_check" + oR
23d0: 65 73 75 6c 74 2e 69 50 61 72 61 4e 75 6d 2c 20  esult.iParaNum, 
23e0: 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d  className: "gram
23f0: 6d 61 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70  malecte_paragrap
2400: 68 5f 62 75 74 74 6f 6e 20 67 72 61 6d 6d 61 6c  h_button grammal
2410: 65 63 74 65 5f 67 72 65 65 6e 22 2c 20 74 65 78  ecte_green", tex
2420: 74 43 6f 6e 74 65 6e 74 3a 20 22 e2 86 bb 22 2c  tContent: "...",
2430: 20 74 69 74 6c 65 3a 20 22 52 c3 a9 61 6e 61 6c   title: "R..anal
2440: 79 73 65 72 e2 80 a6 22 7d 2c 20 7b 70 61 72 61  yser..."}, {para
2450: 5f 6e 75 6d 3a 20 6f 52 65 73 75 6c 74 2e 69 50  _num: oResult.iP
2460: 61 72 61 4e 75 6d 7d 29 29 3b 0a 20 20 20 20 20  araNum}));.     
2470: 20 20 20 20 20 20 20 20 20 20 20 78 41 63 74 69             xActi
2480: 6f 6e 73 42 61 72 2e 61 70 70 65 6e 64 43 68 69  onsBar.appendChi
2490: 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e  ld(oGrammalecte.
24a0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
24b0: 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65  , {id: "grammale
24c0: 63 74 65 5f 68 69 64 65 22 20 2b 20 6f 52 65 73  cte_hide" + oRes
24d0: 75 6c 74 2e 69 50 61 72 61 4e 75 6d 2c 20 63 6c  ult.iParaNum, cl
24e0: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
24f0: 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70 68 5f  lecte_paragraph_
2500: 62 75 74 74 6f 6e 20 67 72 61 6d 6d 61 6c 65 63  button grammalec
2510: 74 65 5f 72 65 64 22 2c 20 74 65 78 74 43 6f 6e  te_red", textCon
2520: 74 65 6e 74 3a 20 22 c3 97 22 2c 20 74 69 74 6c  tent: "..", titl
2530: 65 3a 20 22 43 61 63 68 65 72 22 2c 20 73 74 79  e: "Cacher", sty
2540: 6c 65 3a 20 22 66 6f 6e 74 2d 77 65 69 67 68 74  le: "font-weight
2550: 3a 20 62 6f 6c 64 3b 22 7d 29 29 3b 0a 20 20 20  : bold;"}));.   
2560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2570: 70 61 72 61 67 72 61 70 68 0a 20 20 20 20 20 20  paragraph.      
2580: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 50            let xP
2590: 61 72 61 67 72 61 70 68 20 3d 20 6f 47 72 61 6d  aragraph = oGram
25a0: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
25b0: 64 65 28 22 70 22 2c 20 7b 69 64 3a 20 22 67 72  de("p", {id: "gr
25c0: 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72 61 67 72  ammalecte_paragr
25d0: 61 70 68 22 2b 6f 52 65 73 75 6c 74 2e 69 50 61  aph"+oResult.iPa
25e0: 72 61 4e 75 6d 2c 20 63 6c 61 73 73 4e 61 6d 65  raNum, className
25f0: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70  : "grammalecte_p
2600: 61 72 61 67 72 61 70 68 22 2c 20 6c 61 6e 67 3a  aragraph", lang:
2610: 20 22 66 72 22 2c 20 63 6f 6e 74 65 6e 74 45 64   "fr", contentEd
2620: 69 74 61 62 6c 65 3a 20 22 74 72 75 65 22 7d 2c  itable: "true"},
2630: 20 7b 70 61 72 61 5f 6e 75 6d 3a 20 6f 52 65 73   {para_num: oRes
2640: 75 6c 74 2e 69 50 61 72 61 4e 75 6d 7d 29 3b 0a  ult.iParaNum});.
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2660: 78 50 61 72 61 67 72 61 70 68 2e 73 65 74 41 74  xParagraph.setAt
2670: 74 72 69 62 75 74 65 28 22 73 70 65 6c 6c 63 68  tribute("spellch
2680: 65 63 6b 22 2c 20 22 66 61 6c 73 65 22 29 3b 20  eck", "false"); 
2690: 2f 2f 20 64 6f 65 73 6e e2 80 99 74 20 73 65 65  // doesn...t see
26a0: 6d 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 75 73  m possible to us
26b0: 65 20 e2 80 9c 73 70 65 6c 6c 63 68 65 63 6b e2  e ...spellcheck.
26c0: 80 9d 20 61 73 20 61 20 63 6f 6d 6d 6f 6e 20 61  .. as a common a
26d0: 74 74 72 69 62 75 74 65 2e 0a 20 20 20 20 20 20  ttribute..      
26e0: 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67            xParag
26f0: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 74 69 6d  raph.dataset.tim
2700: 65 72 5f 69 64 20 3d 20 22 30 22 3b 0a 20 20 20  er_id = "0";.   
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50 61               xPa
2720: 72 61 67 72 61 70 68 2e 61 64 64 45 76 65 6e 74  ragraph.addEvent
2730: 4c 69 73 74 65 6e 65 72 28 22 69 6e 70 75 74 22  Listener("input"
2740: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 78 45 76 65  , function (xEve
2750: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  nt) {.          
2760: 20 20 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77            window
2770: 2e 63 6c 65 61 72 54 69 6d 65 6f 75 74 28 70 61  .clearTimeout(pa
2780: 72 73 65 49 6e 74 28 78 50 61 72 61 67 72 61 70  rseInt(xParagrap
2790: 68 2e 64 61 74 61 73 65 74 2e 74 69 6d 65 72 5f  h.dataset.timer_
27a0: 69 64 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  id));.          
27b0: 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67            xParag
27c0: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 74 69 6d  raph.dataset.tim
27d0: 65 72 5f 69 64 20 3d 20 77 69 6e 64 6f 77 2e 73  er_id = window.s
27e0: 65 74 54 69 6d 65 6f 75 74 28 74 68 69 73 2e 72  etTimeout(this.r
27f0: 65 63 68 65 63 6b 50 61 72 61 67 72 61 70 68 2e  echeckParagraph.
2800: 62 69 6e 64 28 74 68 69 73 29 2c 20 33 30 30 30  bind(this), 3000
2810: 2c 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61 4e  , oResult.iParaN
2820: 75 6d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  um);.           
2830: 20 20 20 20 20 20 20 20 20 6c 65 74 20 5b 6e 53           let [nS
2840: 74 61 72 74 2c 20 6e 45 6e 64 5d 20 3d 20 6f 47  tart, nEnd] = oG
2850: 72 61 6d 6d 61 6c 65 63 74 65 2e 67 65 74 43 61  rammalecte.getCa
2860: 72 65 74 50 6f 73 69 74 69 6f 6e 28 78 50 61 72  retPosition(xPar
2870: 61 67 72 61 70 68 29 3b 0a 20 20 20 20 20 20 20  agraph);.       
2880: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50 61               xPa
2890: 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74 2e  ragraph.dataset.
28a0: 63 61 72 65 74 5f 70 6f 73 69 74 69 6f 6e 5f 73  caret_position_s
28b0: 74 61 72 74 20 3d 20 6e 53 74 61 72 74 3b 0a 20  tart = nStart;. 
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d0: 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 64 61     xParagraph.da
28e0: 74 61 73 65 74 2e 63 61 72 65 74 5f 70 6f 73 69  taset.caret_posi
28f0: 74 69 6f 6e 5f 65 6e 64 20 3d 20 6e 45 6e 64 3b  tion_end = nEnd;
2900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2910: 20 20 20 20 20 74 68 69 73 2e 6f 54 65 78 74 43       this.oTextC
2920: 6f 6e 74 72 6f 6c 2e 73 65 74 50 61 72 61 67 72  ontrol.setParagr
2930: 61 70 68 28 70 61 72 73 65 49 6e 74 28 78 45 76  aph(parseInt(xEv
2940: 65 6e 74 2e 74 61 72 67 65 74 2e 64 61 74 61 73  ent.target.datas
2950: 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2c 20 74 68  et.para_num), th
2960: 69 73 2e 70 75 72 67 65 54 65 78 74 28 78 45 76  is.purgeText(xEv
2970: 65 6e 74 2e 74 61 72 67 65 74 2e 74 65 78 74 43  ent.target.textC
2980: 6f 6e 74 65 6e 74 29 29 3b 0a 20 20 20 20 20 20  ontent));.      
2990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
29a0: 69 73 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e  is.oTextControl.
29b0: 77 72 69 74 65 28 29 3b 0a 20 20 20 20 20 20 20  write();.       
29c0: 20 20 20 20 20 20 20 20 20 7d 2e 62 69 6e 64 28           }.bind(
29d0: 74 68 69 73 29 0a 20 20 20 20 20 20 20 20 20 20  this).          
29e0: 20 20 20 20 20 20 2c 20 74 72 75 65 29 3b 0a 20        , true);. 
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2a00: 68 69 73 2e 5f 74 61 67 50 61 72 61 67 72 61 70  his._tagParagrap
2a10: 68 28 78 50 61 72 61 67 72 61 70 68 2c 20 6f 52  h(xParagraph, oR
2a20: 65 73 75 6c 74 2e 73 50 61 72 61 67 72 61 70 68  esult.sParagraph
2a30: 2c 20 6f 52 65 73 75 6c 74 2e 69 50 61 72 61 4e  , oResult.iParaN
2a40: 75 6d 2c 20 6f 52 65 73 75 6c 74 2e 61 47 72 61  um, oResult.aGra
2a50: 6d 6d 45 72 72 2c 20 6f 52 65 73 75 6c 74 2e 61  mmErr, oResult.a
2a60: 53 70 65 6c 6c 45 72 72 29 3b 0a 20 20 20 20 20  SpellErr);.     
2a70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 72             // cr
2a80: 65 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20  eation.         
2a90: 20 20 20 20 20 20 20 78 4e 6f 64 65 44 69 76 2e         xNodeDiv.
2aa0: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 41 63 74  appendChild(xAct
2ab0: 69 6f 6e 73 42 61 72 29 3b 0a 20 20 20 20 20 20  ionsBar);.      
2ac0: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 44            xNodeD
2ad0: 69 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  iv.appendChild(x
2ae0: 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20  Paragraph);.    
2af0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
2b00: 2e 78 50 61 72 61 67 72 61 70 68 4c 69 73 74 2e  .xParagraphList.
2b10: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64  appendChild(xNod
2b20: 65 44 69 76 29 3b 0a 20 20 20 20 20 20 20 20 20  eDiv);.         
2b30: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20     }.        }. 
2b40: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65 29         catch (e)
2b50: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   {.            s
2b60: 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20  howError(e);.   
2b70: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
2b80: 20 20 72 65 63 68 65 63 6b 50 61 72 61 67 72 61    recheckParagra
2b90: 70 68 20 28 69 50 61 72 61 4e 75 6d 29 20 7b 0a  ph (iParaNum) {.
2ba0: 20 20 20 20 20 20 20 20 6c 65 74 20 73 50 61 72          let sPar
2bb0: 61 67 72 61 70 68 49 64 20 3d 20 22 67 72 61 6d  agraphId = "gram
2bc0: 6d 61 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70  malecte_paragrap
2bd0: 68 22 20 2b 20 69 50 61 72 61 4e 75 6d 3b 0a 20  h" + iParaNum;. 
2be0: 20 20 20 20 20 20 20 6c 65 74 20 78 50 61 72 61         let xPara
2bf0: 67 72 61 70 68 20 3d 20 74 68 69 73 2e 78 50 61  graph = this.xPa
2c00: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
2c10: 79 49 64 28 73 50 61 72 61 67 72 61 70 68 49 64  yId(sParagraphId
2c20: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
2c30: 62 6c 6f 63 6b 50 61 72 61 67 72 61 70 68 28 78  blockParagraph(x
2c40: 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20  Paragraph);.    
2c50: 20 20 20 20 6c 65 74 20 73 54 65 78 74 20 3d 20      let sText = 
2c60: 74 68 69 73 2e 70 75 72 67 65 54 65 78 74 28 78  this.purgeText(x
2c70: 50 61 72 61 67 72 61 70 68 2e 74 65 78 74 43 6f  Paragraph.textCo
2c80: 6e 74 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20  ntent);.        
2c90: 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74  xGrammalectePort
2ca0: 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20  .postMessage({. 
2cb0: 20 20 20 20 20 20 20 20 20 20 20 73 43 6f 6d 6d             sComm
2cc0: 61 6e 64 3a 20 22 70 61 72 73 65 41 6e 64 53 70  and: "parseAndSp
2cd0: 65 6c 6c 63 68 65 63 6b 31 22 2c 0a 20 20 20 20  ellcheck1",.    
2ce0: 20 20 20 20 20 20 20 20 64 50 61 72 61 6d 3a 20          dParam: 
2cf0: 7b 73 54 65 78 74 3a 20 73 54 65 78 74 2c 20 73  {sText: sText, s
2d00: 43 6f 75 6e 74 72 79 3a 20 22 46 52 22 2c 20 62  Country: "FR", b
2d10: 44 65 62 75 67 3a 20 66 61 6c 73 65 2c 20 62 43  Debug: false, bC
2d20: 6f 6e 74 65 78 74 3a 20 66 61 6c 73 65 7d 2c 0a  ontext: false},.
2d30: 20 20 20 20 20 20 20 20 20 20 20 20 64 49 6e 66              dInf
2d40: 6f 3a 20 7b 73 50 61 72 61 67 72 61 70 68 49 64  o: {sParagraphId
2d50: 3a 20 73 50 61 72 61 67 72 61 70 68 49 64 7d 0a  : sParagraphId}.
2d60: 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20          });.    
2d70: 20 20 20 20 74 68 69 73 2e 6f 54 65 78 74 43 6f      this.oTextCo
2d80: 6e 74 72 6f 6c 2e 73 65 74 50 61 72 61 67 72 61  ntrol.setParagra
2d90: 70 68 28 69 50 61 72 61 4e 75 6d 2c 20 73 54 65  ph(iParaNum, sTe
2da0: 78 74 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  xt);.        thi
2db0: 73 2e 6f 54 65 78 74 43 6f 6e 74 72 6f 6c 2e 77  s.oTextControl.w
2dc0: 72 69 74 65 28 29 3b 0a 20 20 20 20 7d 0a 0a 20  rite();.    }.. 
2dd0: 20 20 20 72 65 66 72 65 73 68 50 61 72 61 67 72     refreshParagr
2de0: 61 70 68 20 28 73 50 61 72 61 67 72 61 70 68 49  aph (sParagraphI
2df0: 64 2c 20 6f 52 65 73 75 6c 74 29 20 7b 0a 20 20  d, oResult) {.  
2e00: 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20        try {.    
2e10: 20 20 20 20 20 20 20 20 6c 65 74 20 78 50 61 72          let xPar
2e20: 61 67 72 61 70 68 20 3d 20 74 68 69 73 2e 78 50  agraph = this.xP
2e30: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
2e40: 42 79 49 64 28 73 50 61 72 61 67 72 61 70 68 49  ById(sParagraphI
2e50: 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  d);.            
2e60: 78 50 61 72 61 67 72 61 70 68 2e 63 6c 61 73 73  xParagraph.class
2e70: 4e 61 6d 65 20 3d 20 28 6f 52 65 73 75 6c 74 2e  Name = (oResult.
2e80: 61 47 72 61 6d 6d 45 72 72 2e 6c 65 6e 67 74 68  aGrammErr.length
2e90: 20 7c 7c 20 6f 52 65 73 75 6c 74 2e 61 53 70 65   || oResult.aSpe
2ea0: 6c 6c 45 72 72 2e 6c 65 6e 67 74 68 29 20 3f 20  llErr.length) ? 
2eb0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 72  "grammalecte_par
2ec0: 61 67 72 61 70 68 20 73 6f 66 74 72 65 64 22 20  agraph softred" 
2ed0: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70  : "grammalecte_p
2ee0: 61 72 61 67 72 61 70 68 22 3b 0a 20 20 20 20 20  aragraph";.     
2ef0: 20 20 20 20 20 20 20 78 50 61 72 61 67 72 61 70         xParagrap
2f00: 68 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  h.textContent = 
2f10: 22 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  "";.            
2f20: 74 68 69 73 2e 5f 74 61 67 50 61 72 61 67 72 61  this._tagParagra
2f30: 70 68 28 78 50 61 72 61 67 72 61 70 68 2c 20 6f  ph(xParagraph, o
2f40: 52 65 73 75 6c 74 2e 73 50 61 72 61 67 72 61 70  Result.sParagrap
2f50: 68 2c 20 73 50 61 72 61 67 72 61 70 68 49 64 2e  h, sParagraphId.
2f60: 73 6c 69 63 65 28 32 31 29 2c 20 6f 52 65 73 75  slice(21), oResu
2f70: 6c 74 2e 61 47 72 61 6d 6d 45 72 72 2c 20 6f 52  lt.aGrammErr, oR
2f80: 65 73 75 6c 74 2e 61 53 70 65 6c 6c 45 72 72 29  esult.aSpellErr)
2f90: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
2fa0: 69 73 2e 66 72 65 65 50 61 72 61 67 72 61 70 68  is.freeParagraph
2fb0: 28 78 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20  (xParagraph);.  
2fc0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
2fd0: 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20  catch (e) {.    
2fe0: 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f          showErro
2ff0: 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  r(e);.        }.
3000: 20 20 20 20 7d 0a 0a 20 20 20 20 5f 74 61 67 50      }..    _tagP
3010: 61 72 61 67 72 61 70 68 20 28 78 50 61 72 61 67  aragraph (xParag
3020: 72 61 70 68 2c 20 73 50 61 72 61 67 72 61 70 68  raph, sParagraph
3030: 2c 20 69 50 61 72 61 4e 75 6d 2c 20 61 53 70 65  , iParaNum, aSpe
3040: 6c 6c 45 72 72 2c 20 61 47 72 61 6d 6d 45 72 72  llErr, aGrammErr
3050: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20  ) {.        try 
3060: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  {.            if
3070: 20 28 61 47 72 61 6d 6d 45 72 72 2e 6c 65 6e 67   (aGrammErr.leng
3080: 74 68 20 3d 3d 3d 20 30 20 20 26 26 20 20 61 53  th === 0  &&  aS
3090: 70 65 6c 6c 45 72 72 2e 6c 65 6e 67 74 68 20 3d  pellErr.length =
30a0: 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20  == 0) {.        
30b0: 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72 61          xParagra
30c0: 70 68 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ph.textContent =
30d0: 20 73 50 61 72 61 67 72 61 70 68 3b 0a 20 20 20   sParagraph;.   
30e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
30f0: 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20  urn;.           
3100: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61   }.            a
3110: 47 72 61 6d 6d 45 72 72 2e 70 75 73 68 28 2e 2e  GrammErr.push(..
3120: 2e 61 53 70 65 6c 6c 45 72 72 29 3b 0a 20 20 20  .aSpellErr);.   
3130: 20 20 20 20 20 20 20 20 20 61 47 72 61 6d 6d 45           aGrammE
3140: 72 72 2e 73 6f 72 74 28 66 75 6e 63 74 69 6f 6e  rr.sort(function
3150: 20 28 61 2c 20 62 29 20 7b 0a 20 20 20 20 20 20   (a, b) {.      
3160: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 5b            if (a[
3170: 22 6e 53 74 61 72 74 22 5d 20 3c 20 62 5b 22 6e  "nStart"] < b["n
3180: 53 74 61 72 74 22 5d 29 0a 20 20 20 20 20 20 20  Start"]).       
3190: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31a0: 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 20 20  urn -1;.        
31b0: 20 20 20 20 20 20 20 20 69 66 20 28 61 5b 22 6e          if (a["n
31c0: 53 74 61 72 74 22 5d 20 3e 20 62 5b 22 6e 53 74  Start"] > b["nSt
31d0: 61 72 74 22 5d 29 0a 20 20 20 20 20 20 20 20 20  art"]).         
31e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31f0: 6e 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20  n 1;.           
3200: 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20       return 0;. 
3210: 20 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20             });. 
3220: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 6e             let n
3230: 45 72 72 20 3d 20 30 3b 20 2f 2f 20 77 65 20 63  Err = 0; // we c
3240: 6f 75 6e 74 20 65 72 72 6f 72 73 20 74 6f 20 67  ount errors to g
3250: 69 76 65 20 74 68 65 6d 20 61 6e 20 69 64 65 6e  ive them an iden
3260: 74 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 20  tifier.         
3270: 20 20 20 6c 65 74 20 6e 45 6e 64 4c 61 73 74 45     let nEndLastE
3280: 72 72 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20  rr = 0;.        
3290: 20 20 20 20 66 6f 72 20 28 6c 65 74 20 6f 45 72      for (let oEr
32a0: 72 20 6f 66 20 61 47 72 61 6d 6d 45 72 72 29 20  r of aGrammErr) 
32b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
32c0: 20 20 6c 65 74 20 6e 53 74 61 72 74 20 3d 20 6f    let nStart = o
32d0: 45 72 72 5b 22 6e 53 74 61 72 74 22 5d 3b 0a 20  Err["nStart"];. 
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
32f0: 65 74 20 6e 45 6e 64 20 3d 20 6f 45 72 72 5b 22  et nEnd = oErr["
3300: 6e 45 6e 64 22 5d 3b 0a 20 20 20 20 20 20 20 20  nEnd"];.        
3310: 20 20 20 20 20 20 20 20 69 66 20 28 6e 53 74 61          if (nSta
3320: 72 74 20 3e 3d 20 6e 45 6e 64 4c 61 73 74 45 72  rt >= nEndLastEr
3330: 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  r) {.           
3340: 20 20 20 20 20 20 20 20 20 6f 45 72 72 5b 27 73           oErr['s
3350: 45 72 72 6f 72 49 64 27 5d 20 3d 20 69 50 61 72  ErrorId'] = iPar
3360: 61 4e 75 6d 20 2b 20 22 2d 22 20 2b 20 6e 45 72  aNum + "-" + nEr
3370: 72 2e 74 6f 53 74 72 69 6e 67 28 29 3b 20 2f 2f  r.toString(); //
3380: 20 65 72 72 6f 72 20 69 64 65 6e 74 69 66 69 65   error identifie
3390: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  r.              
33a0: 20 20 20 20 20 20 6f 45 72 72 5b 27 73 49 67 6e        oErr['sIgn
33b0: 6f 72 65 64 4b 65 79 27 5d 20 3d 20 69 50 61 72  oredKey'] = iPar
33c0: 61 4e 75 6d 20 2b 20 22 3a 22 20 2b 20 6e 53 74  aNum + ":" + nSt
33d0: 61 72 74 2e 74 6f 53 74 72 69 6e 67 28 29 20 2b  art.toString() +
33e0: 20 22 3a 22 20 2b 20 73 50 61 72 61 67 72 61 70   ":" + sParagrap
33f0: 68 2e 73 6c 69 63 65 28 6e 53 74 61 72 74 2c 20  h.slice(nStart, 
3400: 6e 45 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 20  nEnd);.         
3410: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
3420: 45 6e 64 4c 61 73 74 45 72 72 20 3c 20 6e 53 74  EndLastErr < nSt
3430: 61 72 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20  art) {.         
3440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
3450: 50 61 72 61 67 72 61 70 68 2e 61 70 70 65 6e 64  Paragraph.append
3460: 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63  Child(document.c
3470: 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 73 50  reateTextNode(sP
3480: 61 72 61 67 72 61 70 68 2e 73 6c 69 63 65 28 6e  aragraph.slice(n
3490: 45 6e 64 4c 61 73 74 45 72 72 2c 20 6e 53 74 61  EndLastErr, nSta
34a0: 72 74 29 29 29 3b 0a 20 20 20 20 20 20 20 20 20  rt)));.         
34b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d0: 20 78 50 61 72 61 67 72 61 70 68 2e 61 70 70 65   xParagraph.appe
34e0: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 5f 63 72  ndChild(this._cr
34f0: 65 61 74 65 45 72 72 6f 72 28 73 50 61 72 61 67  eateError(sParag
3500: 72 61 70 68 2e 73 6c 69 63 65 28 6e 53 74 61 72  raph.slice(nStar
3510: 74 2c 20 6e 45 6e 64 29 2c 20 6f 45 72 72 29 29  t, nEnd), oErr))
3520: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
3530: 20 20 20 20 20 20 6e 45 6e 64 4c 61 73 74 45 72        nEndLastEr
3540: 72 20 3d 20 6e 45 6e 64 3b 0a 20 20 20 20 20 20  r = nEnd;.      
3550: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
3560: 20 20 20 20 20 20 20 20 20 20 20 20 6e 45 72 72              nErr
3570: 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20   += 1;.         
3580: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
3590: 20 69 66 20 28 6e 45 6e 64 4c 61 73 74 45 72 72   if (nEndLastErr
35a0: 20 3c 3d 20 73 50 61 72 61 67 72 61 70 68 2e 6c   <= sParagraph.l
35b0: 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 20  ength) {.       
35c0: 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72           xParagr
35d0: 61 70 68 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  aph.appendChild(
35e0: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54  document.createT
35f0: 65 78 74 4e 6f 64 65 28 73 50 61 72 61 67 72 61  extNode(sParagra
3600: 70 68 2e 73 6c 69 63 65 28 6e 45 6e 64 4c 61 73  ph.slice(nEndLas
3610: 74 45 72 72 29 29 29 3b 0a 20 20 20 20 20 20 20  tErr)));.       
3620: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d       }.        }
3630: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
3640: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
3650: 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20   showError(e);. 
3660: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a         }.    }..
3670: 20 20 20 20 5f 63 72 65 61 74 65 45 72 72 6f 72      _createError
3680: 20 28 73 55 6e 64 65 72 6c 69 6e 65 64 2c 20 6f   (sUnderlined, o
3690: 45 72 72 29 20 7b 0a 20 20 20 20 20 20 20 20 6c  Err) {.        l
36a0: 65 74 20 78 4e 6f 64 65 45 72 72 20 3d 20 64 6f  et xNodeErr = do
36b0: 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65  cument.createEle
36c0: 6d 65 6e 74 28 22 6d 61 72 6b 22 29 3b 0a 20 20  ment("mark");.  
36d0: 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 69        xNodeErr.i
36e0: 64 20 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  d = "grammalecte
36f0: 5f 65 72 72 22 20 2b 20 6f 45 72 72 5b 27 73 45  _err" + oErr['sE
3700: 72 72 6f 72 49 64 27 5d 3b 0a 20 20 20 20 20 20  rrorId'];.      
3710: 20 20 78 4e 6f 64 65 45 72 72 2e 74 65 78 74 43    xNodeErr.textC
3720: 6f 6e 74 65 6e 74 20 3d 20 73 55 6e 64 65 72 6c  ontent = sUnderl
3730: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 78 4e  ined;.        xN
3740: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65  odeErr.dataset.e
3750: 72 72 6f 72 5f 69 64 20 3d 20 6f 45 72 72 5b 27  rror_id = oErr['
3760: 73 45 72 72 6f 72 49 64 27 5d 3b 0a 20 20 20 20  sErrorId'];.    
3770: 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61 74      xNodeErr.dat
3780: 61 73 65 74 2e 69 67 6e 6f 72 65 64 5f 6b 65 79  aset.ignored_key
3790: 20 3d 20 6f 45 72 72 5b 27 73 49 67 6e 6f 72 65   = oErr['sIgnore
37a0: 64 4b 65 79 27 5d 3b 0a 20 20 20 20 20 20 20 20  dKey'];.        
37b0: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
37c0: 2e 65 72 72 6f 72 5f 74 79 70 65 20 3d 20 28 6f  .error_type = (o
37d0: 45 72 72 5b 27 73 54 79 70 65 27 5d 20 3d 3d 3d  Err['sType'] ===
37e0: 20 22 57 4f 52 44 22 29 20 3f 20 22 73 70 65 6c   "WORD") ? "spel
37f0: 6c 69 6e 67 22 20 3a 20 22 67 72 61 6d 6d 61 72  ling" : "grammar
3800: 22 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 78  ";.        if (x
3810: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
3820: 65 72 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22  error_type === "
3830: 67 72 61 6d 6d 61 72 22 29 20 7b 0a 20 20 20 20  grammar") {.    
3840: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72          xNodeErr
3850: 2e 64 61 74 61 73 65 74 2e 67 63 5f 6d 65 73 73  .dataset.gc_mess
3860: 61 67 65 20 3d 20 6f 45 72 72 5b 27 73 4d 65 73  age = oErr['sMes
3870: 73 61 67 65 27 5d 3b 0a 20 20 20 20 20 20 20 20  sage'];.        
3880: 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61 74      xNodeErr.dat
3890: 61 73 65 74 2e 67 63 5f 75 72 6c 20 3d 20 6f 45  aset.gc_url = oE
38a0: 72 72 5b 27 55 52 4c 27 5d 3b 0a 20 20 20 20 20  rr['URL'];.     
38b0: 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f 64 65         if (xNode
38c0: 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63 5f 6d  Err.dataset.gc_m
38d0: 65 73 73 61 67 65 2e 69 6e 63 6c 75 64 65 73 28  essage.includes(
38e0: 22 20 23 22 29 29 20 7b 0a 20 20 20 20 20 20 20  " #")) {.       
38f0: 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72           xNodeEr
3900: 72 2e 64 61 74 61 73 65 74 2e 6c 69 6e 65 5f 69  r.dataset.line_i
3910: 64 20 3d 20 6f 45 72 72 5b 27 73 4c 69 6e 65 49  d = oErr['sLineI
3920: 64 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20  d'];.           
3930: 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61       xNodeErr.da
3940: 74 61 73 65 74 2e 72 75 6c 65 5f 69 64 20 3d 20  taset.rule_id = 
3950: 6f 45 72 72 5b 27 73 52 75 6c 65 49 64 27 5d 3b  oErr['sRuleId'];
3960: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
3970: 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65             xNode
3980: 45 72 72 2e 64 61 74 61 73 65 74 2e 73 75 67 67  Err.dataset.sugg
3990: 65 73 74 69 6f 6e 73 20 3d 20 6f 45 72 72 5b 22  estions = oErr["
39a0: 61 53 75 67 67 65 73 74 69 6f 6e 73 22 5d 2e 6a  aSuggestions"].j
39b0: 6f 69 6e 28 22 7c 22 29 3b 0a 20 20 20 20 20 20  oin("|");.      
39c0: 20 20 7d 0a 20 20 20 20 20 20 20 20 78 4e 6f 64    }.        xNod
39d0: 65 45 72 72 2e 63 6c 61 73 73 4e 61 6d 65 20 3d  eErr.className =
39e0: 20 28 74 68 69 73 2e 61 49 67 6e 6f 72 65 64 45   (this.aIgnoredE
39f0: 72 72 6f 72 73 2e 68 61 73 28 78 4e 6f 64 65 45  rrors.has(xNodeE
3a00: 72 72 2e 64 61 74 61 73 65 74 2e 69 67 6e 6f 72  rr.dataset.ignor
3a10: 65 64 5f 6b 65 79 29 29 20 3f 20 22 67 72 61 6d  ed_key)) ? "gram
3a20: 6d 61 6c 65 63 74 65 5f 65 72 72 6f 72 5f 69 67  malecte_error_ig
3a30: 6e 6f 72 65 64 22 20 3a 20 22 67 72 61 6d 6d 61  nored" : "gramma
3a40: 6c 65 63 74 65 5f 65 72 72 6f 72 22 3b 0a 20 20  lecte_error";.  
3a50: 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 73        xNodeErr.s
3a60: 74 79 6c 65 2e 62 61 63 6b 67 72 6f 75 6e 64 43  tyle.backgroundC
3a70: 6f 6c 6f 72 20 3d 20 28 6f 45 72 72 5b 27 73 54  olor = (oErr['sT
3a80: 79 70 65 27 5d 20 3d 3d 3d 20 22 57 4f 52 44 22  ype'] === "WORD"
3a90: 29 20 3f 20 22 68 73 6c 28 30 2c 20 35 30 25 2c  ) ? "hsl(0, 50%,
3aa0: 20 35 30 25 29 22 20 3a 20 6f 45 72 72 5b 22 61   50%)" : oErr["a
3ab0: 43 6f 6c 6f 72 22 5d 3b 0a 20 20 20 20 20 20 20  Color"];.       
3ac0: 20 72 65 74 75 72 6e 20 78 4e 6f 64 65 45 72 72   return xNodeErr
3ad0: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 62 6c 6f  ;.    }..    blo
3ae0: 63 6b 50 61 72 61 67 72 61 70 68 20 28 78 50 61  ckParagraph (xPa
3af0: 72 61 67 72 61 70 68 29 20 7b 0a 20 20 20 20 20  ragraph) {.     
3b00: 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 63 6f     xParagraph.co
3b10: 6e 74 65 6e 74 45 64 69 74 61 62 6c 65 20 3d 20  ntentEditable = 
3b20: 22 66 61 6c 73 65 22 3b 0a 20 20 20 20 20 20 20  "false";.       
3b30: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
3b40: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
3b50: 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22  ammalecte_check"
3b60: 2b 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61  +xParagraph.data
3b70: 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 74 65  set.para_num).te
3b80: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 21 21 22  xtContent = "!!"
3b90: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  ;.        this.x
3ba0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
3bb0: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
3bc0: 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72 61 67  te_check"+xParag
3bd0: 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70 61 72  raph.dataset.par
3be0: 61 5f 6e 75 6d 29 2e 73 74 79 6c 65 2e 62 61 63  a_num).style.bac
3bf0: 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 22  kgroundColor = "
3c00: 68 73 6c 28 30 2c 20 35 30 25 2c 20 35 30 25 29  hsl(0, 50%, 50%)
3c10: 22 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ";.        this.
3c20: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
3c30: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
3c40: 63 74 65 5f 63 68 65 63 6b 22 2b 78 50 61 72 61  cte_check"+xPara
3c50: 67 72 61 70 68 2e 64 61 74 61 73 65 74 2e 70 61  graph.dataset.pa
3c60: 72 61 5f 6e 75 6d 29 2e 73 74 79 6c 65 2e 62 6f  ra_num).style.bo
3c70: 78 53 68 61 64 6f 77 20 3d 20 22 30 20 30 20 30  xShadow = "0 0 0
3c80: 20 33 70 78 20 68 73 6c 61 28 30 2c 20 30 25 2c   3px hsla(0, 0%,
3c90: 20 35 30 25 2c 20 2e 32 29 22 3b 0a 20 20 20 20   50%, .2)";.    
3ca0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
3cb0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
3cc0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 68 65  "grammalecte_che
3cd0: 63 6b 22 2b 78 50 61 72 61 67 72 61 70 68 2e 64  ck"+xParagraph.d
3ce0: 61 74 61 73 65 74 2e 70 61 72 61 5f 6e 75 6d 29  ataset.para_num)
3cf0: 2e 73 74 79 6c 65 2e 61 6e 69 6d 61 74 69 6f 6e  .style.animation
3d00: 20 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 2d   = "grammalecte-
3d10: 70 75 6c 73 65 20 31 73 20 6c 69 6e 65 61 72 20  pulse 1s linear 
3d20: 69 6e 66 69 6e 69 74 65 22 3b 0a 20 20 20 20 7d  infinite";.    }
3d30: 0a 0a 20 20 20 20 66 72 65 65 50 61 72 61 67 72  ..    freeParagr
3d40: 61 70 68 20 28 78 50 61 72 61 67 72 61 70 68 29  aph (xParagraph)
3d50: 20 7b 0a 20 20 20 20 20 20 20 20 78 50 61 72 61   {.        xPara
3d60: 67 72 61 70 68 2e 63 6f 6e 74 65 6e 74 45 64 69  graph.contentEdi
3d70: 74 61 62 6c 65 20 3d 20 22 74 72 75 65 22 3b 0a  table = "true";.
3d80: 20 20 20 20 20 20 20 20 6c 65 74 20 6e 53 74 61          let nSta
3d90: 72 74 20 3d 20 70 61 72 73 65 49 6e 74 28 78 50  rt = parseInt(xP
3da0: 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74  aragraph.dataset
3db0: 2e 63 61 72 65 74 5f 70 6f 73 69 74 69 6f 6e 5f  .caret_position_
3dc0: 73 74 61 72 74 29 3b 0a 20 20 20 20 20 20 20 20  start);.        
3dd0: 6c 65 74 20 6e 45 6e 64 20 3d 20 70 61 72 73 65  let nEnd = parse
3de0: 49 6e 74 28 78 50 61 72 61 67 72 61 70 68 2e 64  Int(xParagraph.d
3df0: 61 74 61 73 65 74 2e 63 61 72 65 74 5f 70 6f 73  ataset.caret_pos
3e00: 69 74 69 6f 6e 5f 65 6e 64 29 3b 0a 20 20 20 20  ition_end);.    
3e10: 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65      oGrammalecte
3e20: 2e 73 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f  .setCaretPositio
3e30: 6e 28 78 50 61 72 61 67 72 61 70 68 2c 20 6e 53  n(xParagraph, nS
3e40: 74 61 72 74 2c 20 6e 45 6e 64 29 3b 0a 20 20 20  tart, nEnd);.   
3e50: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
3e60: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
3e70: 28 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 68  ("grammalecte_ch
3e80: 65 63 6b 22 2b 78 50 61 72 61 67 72 61 70 68 2e  eck"+xParagraph.
3e90: 64 61 74 61 73 65 74 2e 70 61 72 61 5f 6e 75 6d  dataset.para_num
3ea0: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
3eb0: 22 e2 86 bb 22 3b 0a 20 20 20 20 20 20 20 20 74  "...";.        t
3ec0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
3ed0: 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d  lementById("gram
3ee0: 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22 2b 78  malecte_check"+x
3ef0: 50 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65  Paragraph.datase
3f00: 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 73 74 79 6c  t.para_num).styl
3f10: 65 2e 62 61 63 6b 67 72 6f 75 6e 64 43 6f 6c 6f  e.backgroundColo
3f20: 72 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20  r = "";.        
3f30: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
3f40: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61  ElementById("gra
3f50: 6d 6d 61 6c 65 63 74 65 5f 63 68 65 63 6b 22 2b  mmalecte_check"+
3f60: 78 50 61 72 61 67 72 61 70 68 2e 64 61 74 61 73  xParagraph.datas
3f70: 65 74 2e 70 61 72 61 5f 6e 75 6d 29 2e 73 74 79  et.para_num).sty
3f80: 6c 65 2e 61 6e 69 6d 61 74 69 6f 6e 20 3d 20 22  le.animation = "
3f90: 22 3b 0a 20 20 20 20 20 20 20 20 73 65 74 54 69  ";.        setTi
3fa0: 6d 65 6f 75 74 28 28 29 20 3d 3e 20 7b 20 74 68  meout(() => { th
3fb0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
3fc0: 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d  ementById("gramm
3fd0: 61 6c 65 63 74 65 5f 63 68 65 63 6b 22 2b 78 50  alecte_check"+xP
3fe0: 61 72 61 67 72 61 70 68 2e 64 61 74 61 73 65 74  aragraph.dataset
3ff0: 2e 70 61 72 61 5f 6e 75 6d 29 2e 73 74 79 6c 65  .para_num).style
4000: 2e 62 6f 78 53 68 61 64 6f 77 20 3d 20 22 22 3b  .boxShadow = "";
4010: 20 7d 2c 20 35 30 30 29 3b 0a 20 20 20 20 7d 0a   }, 500);.    }.
4020: 0a 20 20 20 20 61 70 70 6c 79 53 75 67 67 65 73  .    applySugges
4030: 74 69 6f 6e 20 28 73 4e 6f 64 65 53 75 67 67 49  tion (sNodeSuggI
4040: 64 29 20 7b 20 2f 2f 20 73 75 67 67 0a 20 20 20  d) { // sugg.   
4050: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
4060: 20 20 20 20 20 20 20 6c 65 74 20 73 45 72 72 6f         let sErro
4070: 72 49 64 20 3d 20 74 68 69 73 2e 78 50 61 72 65  rId = this.xPare
4080: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
4090: 64 28 73 4e 6f 64 65 53 75 67 67 49 64 29 2e 64  d(sNodeSuggId).d
40a0: 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b  ataset.error_id;
40b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c  .            //l
40c0: 65 74 20 73 50 61 72 61 4e 75 6d 20 3d 20 73 45  et sParaNum = sE
40d0: 72 72 6f 72 49 64 2e 73 6c 69 63 65 28 30 2c 20  rrorId.slice(0, 
40e0: 73 45 72 72 6f 72 49 64 2e 69 6e 64 65 78 4f 66  sErrorId.indexOf
40f0: 28 22 2d 22 29 29 3b 0a 20 20 20 20 20 20 20 20  ("-"));.        
4100: 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 45 72 72      let xNodeErr
4110: 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e   = this.xParent.
4120: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
4130: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 65 72 72 22  grammalecte_err"
4140: 20 2b 20 73 45 72 72 6f 72 49 64 29 3b 0a 20 20   + sErrorId);.  
4150: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45            xNodeE
4160: 72 72 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  rr.textContent =
4170: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
4180: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 73 4e 6f  tElementById(sNo
4190: 64 65 53 75 67 67 49 64 29 2e 74 65 78 74 43 6f  deSuggId).textCo
41a0: 6e 74 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20  ntent;.         
41b0: 20 20 20 78 4e 6f 64 65 45 72 72 2e 63 6c 61 73     xNodeErr.clas
41c0: 73 4e 61 6d 65 20 3d 20 22 67 72 61 6d 6d 61 6c  sName = "grammal
41d0: 65 63 74 65 5f 65 72 72 6f 72 5f 63 6f 72 72 65  ecte_error_corre
41e0: 63 74 65 64 22 3b 0a 20 20 20 20 20 20 20 20 20  cted";.         
41f0: 20 20 20 78 4e 6f 64 65 45 72 72 2e 72 65 6d 6f     xNodeErr.remo
4200: 76 65 41 74 74 72 69 62 75 74 65 28 22 73 74 79  veAttribute("sty
4210: 6c 65 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  le");.          
4220: 20 20 74 68 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e    this.oTooltip.
4230: 68 69 64 65 28 29 3b 0a 20 20 20 20 20 20 20 20  hide();.        
4240: 20 20 20 20 74 68 69 73 2e 72 65 63 68 65 63 6b      this.recheck
4250: 50 61 72 61 67 72 61 70 68 28 70 61 72 73 65 49  Paragraph(parseI
4260: 6e 74 28 73 45 72 72 6f 72 49 64 2e 73 6c 69 63  nt(sErrorId.slic
4270: 65 28 30 2c 20 73 45 72 72 6f 72 49 64 2e 69 6e  e(0, sErrorId.in
4280: 64 65 78 4f 66 28 22 2d 22 29 29 29 29 3b 0a 20  dexOf("-"))));. 
4290: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
42a0: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
42b0: 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72           showErr
42c0: 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  or(e);.        }
42d0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 67 6e 6f  .    }..    igno
42e0: 72 65 45 72 72 6f 72 20 28 73 49 67 6e 6f 72 65  reError (sIgnore
42f0: 42 75 74 74 6f 6e 49 64 29 20 7b 20 20 2f 2f 20  ButtonId) {  // 
4300: 69 67 6e 6f 72 65 0a 20 20 20 20 20 20 20 20 74  ignore.        t
4310: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
4320: 20 6c 65 74 20 73 45 72 72 6f 72 49 64 20 3d 20   let sErrorId = 
4330: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
4340: 45 6c 65 6d 65 6e 74 42 79 49 64 28 73 49 67 6e  ElementById(sIgn
4350: 6f 72 65 42 75 74 74 6f 6e 49 64 29 2e 64 61 74  oreButtonId).dat
4360: 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b 0a 20  aset.error_id;. 
4370: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78             let x
4380: 4e 6f 64 65 45 72 72 20 3d 20 74 68 69 73 2e 78  NodeErr = this.x
4390: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
43a0: 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63  tById("grammalec
43b0: 74 65 5f 65 72 72 22 20 2b 20 73 45 72 72 6f 72  te_err" + sError
43c0: 49 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  Id);.           
43d0: 20 74 68 69 73 2e 61 49 67 6e 6f 72 65 64 45 72   this.aIgnoredEr
43e0: 72 6f 72 73 2e 61 64 64 28 78 4e 6f 64 65 45 72  rors.add(xNodeEr
43f0: 72 2e 64 61 74 61 73 65 74 2e 69 67 6e 6f 72 65  r.dataset.ignore
4400: 64 5f 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 20  d_key);.        
4410: 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 63 6c 61      xNodeErr.cla
4420: 73 73 4e 61 6d 65 20 3d 20 22 67 72 61 6d 6d 61  ssName = "gramma
4430: 6c 65 63 74 65 5f 65 72 72 6f 72 5f 69 67 6e 6f  lecte_error_igno
4440: 72 65 64 22 3b 0a 20 20 20 20 20 20 20 20 20 20  red";.          
4450: 20 20 74 68 69 73 2e 6f 54 6f 6f 6c 74 69 70 2e    this.oTooltip.
4460: 68 69 64 65 28 29 3b 0a 20 20 20 20 20 20 20 20  hide();.        
4470: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
4480: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
4490: 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a    showError(e);.
44a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
44b0: 0a 20 20 20 20 70 75 72 67 65 54 65 78 74 20 28  .    purgeText (
44c0: 73 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20  sText) {.       
44d0: 20 72 65 74 75 72 6e 20 73 54 65 78 74 2e 72 65   return sText.re
44e0: 70 6c 61 63 65 28 2f 26 6e 62 73 70 3b 2f 67 2c  place(/&nbsp;/g,
44f0: 20 22 20 22 29 2e 72 65 70 6c 61 63 65 28 2f 26   " ").replace(/&
4500: 6c 74 3b 2f 67 2c 20 22 3c 22 29 2e 72 65 70 6c  lt;/g, "<").repl
4510: 61 63 65 28 2f 26 67 74 3b 2f 67 2c 20 22 3e 22  ace(/&gt;/g, ">"
4520: 29 2e 72 65 70 6c 61 63 65 28 2f 26 61 6d 70 3b  ).replace(/&amp;
4530: 2f 67 2c 20 22 26 22 29 3b 0a 20 20 20 20 7d 0a  /g, "&");.    }.
4540: 0a 20 20 20 20 61 64 64 53 75 6d 6d 61 72 79 20  .    addSummary 
4550: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20  () {.        // 
4560: 74 6f 64 6f 0a 20 20 20 20 7d 0a 0a 20 20 20 20  todo.    }..    
4570: 61 64 64 4d 65 73 73 61 67 65 54 6f 47 43 50 61  addMessageToGCPa
4580: 6e 65 6c 20 28 73 4d 65 73 73 61 67 65 29 20 7b  nel (sMessage) {
4590: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f  .        let xNo
45a0: 64 65 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74  de = oGrammalect
45b0: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
45c0: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
45d0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70 61 6e  "grammalecte_pan
45e0: 65 6c 5f 66 6c 6f 77 5f 6d 65 73 73 61 67 65 22  el_flow_message"
45f0: 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 73  , textContent: s
4600: 4d 65 73 73 61 67 65 7d 29 3b 0a 20 20 20 20 20  Message});.     
4610: 20 20 20 74 68 69 73 2e 78 50 61 72 61 67 72 61     this.xParagra
4620: 70 68 4c 69 73 74 2e 61 70 70 65 6e 64 43 68 69  phList.appendChi
4630: 6c 64 28 78 4e 6f 64 65 29 3b 0a 20 20 20 20 7d  ld(xNode);.    }
4640: 0a 0a 20 20 20 20 5f 63 6f 70 79 54 6f 43 6c 69  ..    _copyToCli
4650: 70 62 6f 61 72 64 20 28 73 54 65 78 74 29 20 20  pboard (sText)  
4660: 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65 63  {.        // rec
4670: 69 70 65 20 66 72 6f 6d 20 68 74 74 70 73 3a 2f  ipe from https:/
4680: 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 64 6e 2f  /github.com/mdn/
4690: 77 65 62 65 78 74 65 6e 73 69 6f 6e 73 2d 65 78  webextensions-ex
46a0: 61 6d 70 6c 65 73 2f 62 6c 6f 62 2f 6d 61 73 74  amples/blob/mast
46b0: 65 72 2f 63 6f 6e 74 65 78 74 2d 6d 65 6e 75 2d  er/context-menu-
46c0: 63 6f 70 79 2d 6c 69 6e 6b 2d 77 69 74 68 2d 74  copy-link-with-t
46d0: 79 70 65 73 2f 63 6c 69 70 62 6f 61 72 64 2d 68  ypes/clipboard-h
46e0: 65 6c 70 65 72 2e 6a 73 0a 20 20 20 20 20 20 20  elper.js.       
46f0: 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 43 6c 69   function setCli
4700: 70 62 6f 61 72 64 44 61 74 61 20 28 78 45 76 65  pboardData (xEve
4710: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  nt) {.          
4720: 20 20 64 6f 63 75 6d 65 6e 74 2e 72 65 6d 6f 76    document.remov
4730: 65 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22  eEventListener("
4740: 63 6f 70 79 22 2c 20 73 65 74 43 6c 69 70 62 6f  copy", setClipbo
4750: 61 72 64 44 61 74 61 2c 20 74 72 75 65 29 3b 0a  ardData, true);.
4760: 20 20 20 20 20 20 20 20 20 20 20 20 78 45 76 65              xEve
4770: 6e 74 2e 73 74 6f 70 49 6d 6d 65 64 69 61 74 65  nt.stopImmediate
4780: 50 72 6f 70 61 67 61 74 69 6f 6e 28 29 3b 0a 20  Propagation();. 
4790: 20 20 20 20 20 20 20 20 20 20 20 78 45 76 65 6e             xEven
47a0: 74 2e 70 72 65 76 65 6e 74 44 65 66 61 75 6c 74  t.preventDefault
47b0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
47c0: 78 45 76 65 6e 74 2e 63 6c 69 70 62 6f 61 72 64  xEvent.clipboard
47d0: 44 61 74 61 2e 73 65 74 44 61 74 61 28 22 74 65  Data.setData("te
47e0: 78 74 2f 70 6c 61 69 6e 22 2c 20 73 54 65 78 74  xt/plain", sText
47f0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
4800: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 61 64       document.ad
4810: 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22  dEventListener("
4820: 63 6f 70 79 22 2c 20 73 65 74 43 6c 69 70 62 6f  copy", setClipbo
4830: 61 72 64 44 61 74 61 2c 20 74 72 75 65 29 3b 0a  ardData, true);.
4840: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
4850: 2e 65 78 65 63 43 6f 6d 6d 61 6e 64 28 22 63 6f  .execCommand("co
4860: 70 79 22 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  py");.    }..   
4870: 20 63 6f 70 79 54 65 78 74 54 6f 43 6c 69 70 62   copyTextToClipb
4880: 6f 61 72 64 20 28 29 20 7b 0a 20 20 20 20 20 20  oard () {.      
4890: 20 20 74 68 69 73 2e 73 74 61 72 74 57 61 69 74    this.startWait
48a0: 49 63 6f 6e 28 29 3b 0a 20 20 20 20 20 20 20 20  Icon();.        
48b0: 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20  try {.          
48c0: 20 20 6c 65 74 20 78 43 6c 69 70 62 6f 61 72 64    let xClipboard
48d0: 42 75 74 74 6f 6e 20 3d 20 74 68 69 73 2e 78 50  Button = this.xP
48e0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
48f0: 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74  ById("grammalect
4900: 65 5f 63 6c 69 70 62 6f 61 72 64 5f 62 75 74 74  e_clipboard_butt
4910: 6f 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  on");.          
4920: 20 20 78 43 6c 69 70 62 6f 61 72 64 42 75 74 74    xClipboardButt
4930: 6f 6e 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  on.textContent =
4940: 20 22 e2 87 92 20 70 72 65 73 73 65 2d 70 61 70   "... presse-pap
4950: 69 65 72 73 22 3b 0a 20 20 20 20 20 20 20 20 20  iers";.         
4960: 20 20 20 6c 65 74 20 73 54 65 78 74 20 3d 20 22     let sText = "
4970: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ";.            /
4980: 2f 20 51 75 61 6e 64 20 63 27 65 73 74 20 64 61  / Quand c'est da
4990: 6e 73 20 75 6e 20 73 68 61 64 6f 77 20 22 74 68  ns un shadow "th
49a0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
49b0: 65 6d 65 6e 74 73 42 79 43 6c 61 73 73 4e 61 6d  ementsByClassNam
49c0: 65 22 20 6e 27 65 78 69 73 74 65 20 70 61 73 2e  e" n'existe pas.
49d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
49e0: 20 78 45 6c 65 6d 20 3d 20 74 68 69 73 2e 78 50   xElem = this.xP
49f0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
4a00: 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74  ById("grammalect
4a10: 65 5f 67 63 5f 70 61 6e 65 6c 22 29 3b 0a 20 20  e_gc_panel");.  
4a20: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c            for (l
4a30: 65 74 20 78 4e 6f 64 65 20 6f 66 20 78 45 6c 65  et xNode of xEle
4a40: 6d 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 43  m.getElementsByC
4a50: 6c 61 73 73 4e 61 6d 65 28 22 67 72 61 6d 6d 61  lassName("gramma
4a60: 6c 65 63 74 65 5f 70 61 72 61 67 72 61 70 68 22  lecte_paragraph"
4a70: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  )) {.           
4a80: 20 20 20 20 20 73 54 65 78 74 20 2b 3d 20 78 4e       sText += xN
4a90: 6f 64 65 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  ode.textContent 
4aa0: 2b 20 22 5c 6e 22 3b 0a 20 20 20 20 20 20 20 20  + "\n";.        
4ab0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
4ac0: 20 20 74 68 69 73 2e 5f 63 6f 70 79 54 6f 43 6c    this._copyToCl
4ad0: 69 70 62 6f 61 72 64 28 73 54 65 78 74 29 3b 0a  ipboard(sText);.
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 64              wind
4af0: 6f 77 2e 73 65 74 54 69 6d 65 6f 75 74 28 28 29  ow.setTimeout(()
4b00: 20 3d 3e 20 7b 20 78 43 6c 69 70 62 6f 61 72 64   => { xClipboard
4b10: 42 75 74 74 6f 6e 2e 74 65 78 74 43 6f 6e 74 65  Button.textConte
4b20: 6e 74 20 3d 20 22 f0 9f 93 8b 22 3b 20 7d 2c 20  nt = "...."; }, 
4b30: 32 30 30 30 29 3b 0a 20 20 20 20 20 20 20 20 7d  2000);.        }
4b40: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
4b50: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
4b60: 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20   showError(e);. 
4b70: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
4b80: 20 74 68 69 73 2e 73 74 6f 70 57 61 69 74 49 63   this.stopWaitIc
4b90: 6f 6e 28 29 3b 0a 20 20 20 20 7d 0a 0a 0a 20 20  on();.    }...  
4ba0: 20 20 2f 2f 20 4c 65 78 69 63 6f 67 72 61 70 68    // Lexicograph
4bb0: 65 72 0a 0a 20 20 20 20 63 6c 65 61 72 4c 65 78  er..    clearLex
4bc0: 69 63 6f 67 72 61 70 68 65 72 20 28 29 20 7b 0a  icographer () {.
4bd0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 4c 78          this.nLx
4be0: 67 43 6f 75 6e 74 20 3d 20 30 3b 0a 20 20 20 20  gCount = 0;.    
4bf0: 20 20 20 20 77 68 69 6c 65 20 28 74 68 69 73 2e      while (this.
4c00: 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  xLxgPanelContent
4c10: 2e 66 69 72 73 74 43 68 69 6c 64 29 20 7b 0a 20  .firstChild) {. 
4c20: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
4c30: 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  xLxgPanelContent
4c40: 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 74 68 69  .removeChild(thi
4c50: 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65  s.xLxgPanelConte
4c60: 6e 74 2e 66 69 72 73 74 43 68 69 6c 64 29 3b 0a  nt.firstChild);.
4c70: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
4c80: 0a 20 20 20 20 61 64 64 4c 78 67 53 65 70 61 72  .    addLxgSepar
4c90: 61 74 6f 72 20 28 73 54 65 78 74 29 20 7b 0a 20  ator (sText) {. 
4ca0: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
4cb0: 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65 6e 74  xLxgPanelContent
4cc0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 21 3d 3d  .textContent !==
4cd0: 20 22 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20   "") {.         
4ce0: 20 20 20 74 68 69 73 2e 78 4c 78 67 50 61 6e 65     this.xLxgPane
4cf0: 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43  lContent.appendC
4d00: 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74  hild(oGrammalect
4d10: 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69  e.createNode("di
4d20: 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20  v", {className: 
4d30: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67  "grammalecte_lxg
4d40: 5f 73 65 70 61 72 61 74 6f 72 22 2c 20 74 65 78  _separator", tex
4d50: 74 43 6f 6e 74 65 6e 74 3a 20 73 54 65 78 74 7d  tContent: sText}
4d60: 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  ));.        }.  
4d70: 20 20 7d 0a 0a 20 20 20 20 61 64 64 4d 65 73 73    }..    addMess
4d80: 61 67 65 54 6f 4c 78 67 50 61 6e 65 6c 20 28 73  ageToLxgPanel (s
4d90: 4d 65 73 73 61 67 65 29 20 7b 0a 20 20 20 20 20  Message) {.     
4da0: 20 20 20 6c 65 74 20 78 4e 6f 64 65 20 3d 20 6f     let xNode = o
4db0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
4dc0: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
4dd0: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
4de0: 61 6c 65 63 74 65 5f 70 61 6e 65 6c 5f 66 6c 6f  alecte_panel_flo
4df0: 77 5f 6d 65 73 73 61 67 65 22 2c 20 74 65 78 74  w_message", text
4e00: 43 6f 6e 74 65 6e 74 3a 20 73 4d 65 73 73 61 67  Content: sMessag
4e10: 65 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  e});.        thi
4e20: 73 2e 78 4c 78 67 50 61 6e 65 6c 43 6f 6e 74 65  s.xLxgPanelConte
4e30: 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  nt.appendChild(x
4e40: 4e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  Node);.    }..  
4e50: 20 20 61 64 64 4c 69 73 74 4f 66 54 6f 6b 65 6e    addListOfToken
4e60: 73 20 28 6c 54 6f 6b 65 6e 29 20 7b 0a 20 20 20  s (lToken) {.   
4e70: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
4e80: 20 20 20 20 20 20 20 69 66 20 28 6c 54 6f 6b 65         if (lToke
4e90: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  n) {.           
4ea0: 20 20 20 20 20 74 68 69 73 2e 6e 4c 78 67 43 6f       this.nLxgCo
4eb0: 75 6e 74 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20  unt += 1;.      
4ec0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 54            let xT
4ed0: 6f 6b 65 6e 4c 69 73 74 20 3d 20 6f 47 72 61 6d  okenList = oGram
4ee0: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
4ef0: 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73  de("div", {class
4f00: 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63  Name: "grammalec
4f10: 74 65 5f 6c 78 67 5f 6c 69 73 74 5f 6f 66 5f 74  te_lxg_list_of_t
4f20: 6f 6b 65 6e 73 22 7d 29 3b 0a 20 20 20 20 20 20  okens"});.      
4f30: 20 20 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e            xToken
4f40: 4c 69 73 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  List.appendChild
4f50: 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72  (oGrammalecte.cr
4f60: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
4f70: 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61  {className: "gra
4f80: 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 6c 69 73  mmalecte_lxg_lis
4f90: 74 5f 6e 75 6d 22 2c 20 74 65 78 74 43 6f 6e 74  t_num", textCont
4fa0: 65 6e 74 3a 20 74 68 69 73 2e 6e 4c 78 67 43 6f  ent: this.nLxgCo
4fb0: 75 6e 74 7d 29 29 3b 0a 20 20 20 20 20 20 20 20  unt}));.        
4fc0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74          for (let
4fd0: 20 6f 54 6f 6b 65 6e 20 6f 66 20 6c 54 6f 6b 65   oToken of lToke
4fe0: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  n) {.           
4ff0: 20 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e 4c           xTokenL
5000: 69 73 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ist.appendChild(
5010: 74 68 69 73 2e 5f 63 72 65 61 74 65 54 6f 6b 65  this._createToke
5020: 6e 42 6c 6f 63 6b 28 6f 54 6f 6b 65 6e 29 29 3b  nBlock(oToken));
5030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5040: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
5050: 20 20 20 74 68 69 73 2e 78 4c 78 67 50 61 6e 65     this.xLxgPane
5060: 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43  lContent.appendC
5070: 68 69 6c 64 28 78 54 6f 6b 65 6e 4c 69 73 74 29  hild(xTokenList)
5080: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ;.            }.
5090: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
50a0: 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20    catch (e) {.  
50b0: 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72            showEr
50c0: 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20  ror(e);.        
50d0: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 63 72  }.    }..    _cr
50e0: 65 61 74 65 54 6f 6b 65 6e 42 6c 6f 63 6b 20 28  eateTokenBlock (
50f0: 6f 54 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20  oToken) {.      
5100: 20 20 6c 65 74 20 78 54 6f 6b 65 6e 42 6c 6f 63    let xTokenBloc
5110: 6b 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  k = oGrammalecte
5120: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
5130: 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22  ", {className: "
5140: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f  grammalecte_lxg_
5150: 74 6f 6b 65 6e 5f 62 6c 6f 63 6b 22 7d 29 3b 0a  token_block"});.
5160: 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e 42 6c          xTokenBl
5170: 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ock.appendChild(
5180: 74 68 69 73 2e 5f 63 72 65 61 74 65 54 6f 6b 65  this._createToke
5190: 6e 44 65 73 63 72 28 6f 54 6f 6b 65 6e 29 29 3b  nDescr(oToken));
51a0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 54 6f  .        if (oTo
51b0: 6b 65 6e 2e 61 53 75 62 45 6c 65 6d 29 20 7b 0a  ken.aSubElem) {.
51c0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
51d0: 78 53 75 62 42 6c 6f 63 6b 20 3d 20 6f 47 72 61  xSubBlock = oGra
51e0: 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e  mmalecte.createN
51f0: 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73  ode("div", {clas
5200: 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65  sName: "grammale
5210: 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f 73 75  cte_lxg_token_su
5220: 62 62 6c 6f 63 6b 22 7d 29 3b 0a 20 20 20 20 20  bblock"});.     
5230: 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20         for (let 
5240: 6f 53 75 62 45 6c 65 6d 20 6f 66 20 6f 54 6f 6b  oSubElem of oTok
5250: 65 6e 2e 61 53 75 62 45 6c 65 6d 29 20 7b 0a 20  en.aSubElem) {. 
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
5270: 53 75 62 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43  SubBlock.appendC
5280: 68 69 6c 64 28 74 68 69 73 2e 5f 63 72 65 61 74  hild(this._creat
5290: 65 54 6f 6b 65 6e 44 65 73 63 72 28 6f 53 75 62  eTokenDescr(oSub
52a0: 45 6c 65 6d 29 29 3b 0a 20 20 20 20 20 20 20 20  Elem));.        
52b0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
52c0: 20 20 78 54 6f 6b 65 6e 42 6c 6f 63 6b 2e 61 70    xTokenBlock.ap
52d0: 70 65 6e 64 43 68 69 6c 64 28 78 53 75 62 42 6c  pendChild(xSubBl
52e0: 6f 63 6b 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  ock);.        }.
52f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 78          return x
5300: 54 6f 6b 65 6e 42 6c 6f 63 6b 3b 0a 20 20 20 20  TokenBlock;.    
5310: 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74 65 54 6f  }..    _createTo
5320: 6b 65 6e 44 65 73 63 72 20 28 6f 54 6f 6b 65 6e  kenDescr (oToken
5330: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20  ) {.        try 
5340: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  {.            le
5350: 74 20 78 54 6f 6b 65 6e 44 65 73 63 72 20 3d 20  t xTokenDescr = 
5360: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
5370: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
5380: 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d  className: "gram
5390: 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65  malecte_lxg_toke
53a0: 6e 5f 64 65 73 63 72 22 7d 29 3b 0a 20 20 20 20  n_descr"});.    
53b0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 54 6f 6b          if (oTok
53c0: 65 6e 2e 73 54 79 70 65 20 3d 3d 20 22 4c 4f 43  en.sType == "LOC
53d0: 50 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  P") {.          
53e0: 20 20 20 20 20 20 78 54 6f 6b 65 6e 44 65 73 63        xTokenDesc
53f0: 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47  r.appendChild(oG
5400: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
5410: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
5420: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
5430: 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f  lecte_lxg_token_
5440: 61 6c 73 6f 22 2c 20 74 65 78 74 43 6f 6e 74 65  also", textConte
5450: 6e 74 3a 20 22 70 6f 73 73 69 62 6c 65 6d 65 6e  nt: "possiblemen
5460: 74 20 e2 80 ba 20 22 7d 29 29 3b 0a 20 20 20 20  t ... "}));.    
5470: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
5480: 20 20 20 20 20 20 78 54 6f 6b 65 6e 44 65 73 63        xTokenDesc
5490: 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47  r.appendChild(oG
54a0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
54b0: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
54c0: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
54d0: 6c 65 63 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 20  lecte_lxg_token 
54e0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f  grammalecte_lxg_
54f0: 74 6f 6b 65 6e 5f 22 20 2b 20 6f 54 6f 6b 65 6e  token_" + oToken
5500: 2e 73 54 79 70 65 2c 20 74 65 78 74 43 6f 6e 74  .sType, textCont
5510: 65 6e 74 3a 20 6f 54 6f 6b 65 6e 2e 73 56 61 6c  ent: oToken.sVal
5520: 75 65 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 20  ue}));.         
5530: 20 20 20 78 54 6f 6b 65 6e 44 65 73 63 72 2e 61     xTokenDescr.a
5540: 70 70 65 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d  ppendChild(oGram
5550: 6d 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f  malecte.createNo
5560: 64 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73  de("div", {class
5570: 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63  Name: "grammalec
5580: 74 65 5f 6c 78 67 5f 74 6f 6b 65 6e 5f 63 6f 6c  te_lxg_token_col
5590: 6f 6e 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74  on", textContent
55a0: 3a 20 22 3a 22 7d 29 29 3b 0a 20 20 20 20 20 20  : ":"}));.      
55b0: 20 20 20 20 20 20 69 66 20 28 6f 54 6f 6b 65 6e        if (oToken
55c0: 2e 61 4c 61 62 65 6c 2e 6c 65 6e 67 74 68 20 3d  .aLabel.length =
55d0: 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20  == 1) {.        
55e0: 20 20 20 20 20 20 20 20 78 54 6f 6b 65 6e 44 65          xTokenDe
55f0: 73 63 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  scr.appendChild(
5600: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
5610: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
5620: 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d  className: "gram
5630: 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 6d 6f 72 70  malecte_lxg_morp
5640: 68 5f 65 6c 65 6d 5f 69 6e 6c 69 6e 65 22 2c 20  h_elem_inline", 
5650: 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 6f 54 6f  textContent: oTo
5660: 6b 65 6e 2e 61 4c 61 62 65 6c 5b 30 5d 7d 29 29  ken.aLabel[0]}))
5670: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ;.            } 
5680: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
5690: 20 20 20 20 20 20 20 6c 65 74 20 78 4d 6f 72 70         let xMorp
56a0: 68 4c 69 73 74 20 3d 20 6f 47 72 61 6d 6d 61 6c  hList = oGrammal
56b0: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
56c0: 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d  "div", {classNam
56d0: 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  e: "grammalecte_
56e0: 6c 78 67 5f 6d 6f 72 70 68 5f 6c 69 73 74 22 7d  lxg_morph_list"}
56f0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
5700: 20 20 20 66 6f 72 20 28 6c 65 74 20 73 4c 61 62     for (let sLab
5710: 65 6c 20 6f 66 20 6f 54 6f 6b 65 6e 2e 61 4c 61  el of oToken.aLa
5720: 62 65 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20  bel) {.         
5730: 20 20 20 20 20 20 20 20 20 20 20 78 4d 6f 72 70             xMorp
5740: 68 4c 69 73 74 2e 61 70 70 65 6e 64 43 68 69 6c  hList.appendChil
5750: 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  d(oGrammalecte.c
5760: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
5770: 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72   {className: "gr
5780: 61 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 6d 6f  ammalecte_lxg_mo
5790: 72 70 68 5f 65 6c 65 6d 22 2c 20 74 65 78 74 43  rph_elem", textC
57a0: 6f 6e 74 65 6e 74 3a 20 22 e2 80 a2 e2 80 af 22  ontent: "......"
57b0: 20 2b 20 73 4c 61 62 65 6c 7d 29 29 3b 0a 20 20   + sLabel}));.  
57c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 78 54 6f 6b 65 6e 44 65 73 63 72 2e 61 70 70 65  xTokenDescr.appe
57f0: 6e 64 43 68 69 6c 64 28 78 4d 6f 72 70 68 4c 69  ndChild(xMorphLi
5800: 73 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  st);.           
5810: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72   }.            r
5820: 65 74 75 72 6e 20 78 54 6f 6b 65 6e 44 65 73 63  eturn xTokenDesc
5830: 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  r;.        }.   
5840: 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b       catch (e) {
5850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f  .            sho
5860: 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20  wError(e);.     
5870: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
5880: 73 65 74 48 69 64 64 65 6e 20 28 73 43 6c 61 73  setHidden (sClas
5890: 73 2c 20 62 48 69 64 64 65 6e 29 20 7b 0a 20 20  s, bHidden) {.  
58a0: 20 20 20 20 20 20 6c 65 74 20 78 50 61 6e 65 6c        let xPanel
58b0: 43 6f 6e 74 65 6e 74 20 3d 20 74 68 69 73 2e 78  Content = this.x
58c0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
58d0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
58e0: 74 65 5f 70 61 6e 65 6c 5f 63 6f 6e 74 65 6e 74  te_panel_content
58f0: 27 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20  ');.        for 
5900: 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20 78 50  (let xNode of xP
5910: 61 6e 65 6c 43 6f 6e 74 65 6e 74 2e 67 65 74 45  anelContent.getE
5920: 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73 73 4e 61  lementsByClassNa
5930: 6d 65 28 73 43 6c 61 73 73 29 29 20 7b 0a 20 20  me(sClass)) {.  
5940: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 2e            xNode.
5950: 68 69 64 64 65 6e 20 3d 20 62 48 69 64 64 65 6e  hidden = bHidden
5960: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
5970: 7d 0a 0a 20 20 20 20 2f 2f 20 43 6f 6e 6a 75 67  }..    // Conjug
5980: 75 65 75 72 0a 0a 20 20 20 20 6c 69 73 74 65 6e  ueur..    listen
5990: 43 6f 6e 6a 20 28 29 20 7b 0a 20 20 20 20 20 20  Conj () {.      
59a0: 20 20 69 66 20 28 21 74 68 69 73 2e 62 4c 69 73    if (!this.bLis
59b0: 74 65 6e 43 6f 6e 6a 29 20 7b 0a 20 20 20 20 20  tenConj) {.     
59c0: 20 20 20 20 20 20 20 2f 2f 20 62 75 74 74 6f 6e         // button
59d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
59e0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
59f0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
5a00: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 62 75 74 74 6f  lecte_conj_butto
5a10: 6e 27 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74  n').addEventList
5a20: 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c 20 28 65  ener("click", (e
5a30: 29 20 3d 3e 20 7b 20 74 68 69 73 2e 63 6f 6e 6a  ) => { this.conj
5a40: 75 67 61 74 65 56 65 72 62 28 29 3b 20 7d 29 3b  ugateVerb(); });
5a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
5a60: 74 65 78 74 20 66 69 65 6c 64 0a 20 20 20 20 20  text field.     
5a70: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
5a80: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
5a90: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
5aa0: 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 61 64 64 45  conj_verb').addE
5ab0: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 68  ventListener("ch
5ac0: 61 6e 67 65 22 2c 20 28 65 29 20 3d 3e 20 7b 20  ange", (e) => { 
5ad0: 74 68 69 73 2e 63 6f 6e 6a 75 67 61 74 65 56 65  this.conjugateVe
5ae0: 72 62 28 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20  rb(); });.      
5af0: 20 20 20 20 20 20 2f 2f 20 6f 70 74 69 6f 6e 73        // options
5b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
5b10: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
5b20: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
5b30: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 6e 65 67 27  lecte_conj_oneg'
5b40: 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e  ).addEventListen
5b50: 65 72 28 22 63 6c 69 63 6b 22 2c 20 28 65 29 20  er("click", (e) 
5b60: 3d 3e 20 7b 20 74 68 69 73 2e 75 70 64 61 74 65  => { this.update
5b70: 43 6f 6e 6a 28 29 3b 20 7d 29 3b 0a 20 20 20 20  Conj(); });.    
5b80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
5b90: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
5ba0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
5bb0: 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 61 64 64  _conj_opro').add
5bc0: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63  EventListener("c
5bd0: 6c 69 63 6b 22 2c 20 28 65 29 20 3d 3e 20 7b 20  lick", (e) => { 
5be0: 74 68 69 73 2e 75 70 64 61 74 65 43 6f 6e 6a 28  this.updateConj(
5bf0: 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20  ); });.         
5c00: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
5c10: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
5c20: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
5c30: 5f 6f 69 6e 74 27 29 2e 61 64 64 45 76 65 6e 74  _oint').addEvent
5c40: 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22  Listener("click"
5c50: 2c 20 28 65 29 20 3d 3e 20 7b 20 74 68 69 73 2e  , (e) => { this.
5c60: 75 70 64 61 74 65 43 6f 6e 6a 28 29 3b 20 7d 29  updateConj(); })
5c70: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
5c80: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
5c90: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
5ca0: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 66 65 6d  alecte_conj_ofem
5cb0: 27 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65  ').addEventListe
5cc0: 6e 65 72 28 22 63 6c 69 63 6b 22 2c 20 28 65 29  ner("click", (e)
5cd0: 20 3d 3e 20 7b 20 74 68 69 73 2e 75 70 64 61 74   => { this.updat
5ce0: 65 43 6f 6e 6a 28 29 3b 20 7d 29 3b 0a 20 20 20  eConj(); });.   
5cf0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
5d00: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
5d10: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
5d20: 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29 2e 61 64  e_conj_otco').ad
5d30: 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22  dEventListener("
5d40: 63 6c 69 63 6b 22 2c 20 28 65 29 20 3d 3e 20 7b  click", (e) => {
5d50: 20 74 68 69 73 2e 75 70 64 61 74 65 43 6f 6e 6a   this.updateConj
5d60: 28 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20  (); });.        
5d70: 20 20 20 20 74 68 69 73 2e 62 4c 69 73 74 65 6e      this.bListen
5d80: 43 6f 6e 6a 20 3d 20 74 72 75 65 3b 0a 20 20 20  Conj = true;.   
5d90: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
5da0: 20 20 63 6f 6e 6a 75 67 61 74 65 56 65 72 62 20    conjugateVerb 
5db0: 28 73 56 65 72 62 3d 22 22 29 20 7b 0a 20 20 20  (sVerb="") {.   
5dc0: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
5dd0: 20 20 20 20 20 20 20 69 66 20 28 21 73 56 65 72         if (!sVer
5de0: 62 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  b) {.           
5df0: 20 20 20 20 20 73 56 65 72 62 20 3d 20 74 68 69       sVerb = thi
5e00: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
5e10: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
5e20: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62 27  lecte_conj_verb'
5e30: 29 2e 76 61 6c 75 65 3b 0a 20 20 20 20 20 20 20  ).value;.       
5e40: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
5e50: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
5e60: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
5e70: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
5e80: 5f 6f 6e 65 67 27 29 2e 63 68 65 63 6b 65 64 20  _oneg').checked 
5e90: 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20  = false;.       
5ea0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
5eb0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
5ec0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
5ed0: 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65  nj_opro').checke
5ee0: 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20  d = false;.     
5ef0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
5f00: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
5f10: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
5f20: 63 6f 6e 6a 5f 6f 69 6e 74 27 29 2e 63 68 65 63  conj_oint').chec
5f30: 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20  ked = false;.   
5f40: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
5f50: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
5f60: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
5f70: 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29 2e 63 68  e_conj_otco').ch
5f80: 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20  ecked = false;. 
5f90: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
5fa0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
5fb0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
5fc0: 63 74 65 5f 63 6f 6e 6a 5f 6f 66 65 6d 27 29 2e  cte_conj_ofem').
5fd0: 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b  checked = false;
5fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
5ff0: 72 65 71 75 65 73 74 20 61 6e 61 6c 79 7a 69 6e  request analyzin
6000: 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 56  g.            sV
6010: 65 72 62 20 3d 20 73 56 65 72 62 2e 74 72 69 6d  erb = sVerb.trim
6020: 28 29 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 29  ().toLowerCase()
6030: 2e 72 65 70 6c 61 63 65 28 2f e2 80 99 2f 67 2c  .replace(/.../g,
6040: 20 22 27 22 29 2e 72 65 70 6c 61 63 65 28 2f 20   "'").replace(/ 
6050: 20 2b 2f 67 2c 20 22 20 22 29 3b 0a 20 20 20 20   +/g, " ");.    
6060: 20 20 20 20 20 20 20 20 69 66 20 28 73 56 65 72          if (sVer
6070: 62 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  b) {.           
6080: 20 20 20 20 20 69 66 20 28 73 56 65 72 62 2e 73       if (sVerb.s
6090: 74 61 72 74 73 57 69 74 68 28 22 6e 65 20 70 61  tartsWith("ne pa
60a0: 73 20 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  s ")) {.        
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
60c0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
60d0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
60e0: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 6e 65 67 27 29  ecte_conj_oneg')
60f0: 2e 63 68 65 63 6b 65 64 20 3d 20 74 72 75 65 3b  .checked = true;
6100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6110: 20 20 20 20 20 73 56 65 72 62 20 3d 20 73 56 65       sVerb = sVe
6120: 72 62 2e 73 6c 69 63 65 28 37 29 3b 0a 20 20 20  rb.slice(7);.   
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6150: 66 20 28 73 56 65 72 62 2e 73 74 61 72 74 73 57  f (sVerb.startsW
6160: 69 74 68 28 22 73 65 20 22 29 29 20 7b 0a 20 20  ith("se ")) {.  
6170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6180: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
6190: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
61a0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
61b0: 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d  opro').checked =
61c0: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20   true;.         
61d0: 20 20 20 20 20 20 20 20 20 20 20 73 56 65 72 62             sVerb
61e0: 20 3d 20 73 56 65 72 62 2e 73 6c 69 63 65 28 33   = sVerb.slice(3
61f0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
6200: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 56     } else if (sV
6210: 65 72 62 2e 73 74 61 72 74 73 57 69 74 68 28 22  erb.startsWith("
6220: 73 27 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  s'")) {.        
6230: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
6240: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
6250: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
6260: 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29  ecte_conj_opro')
6270: 2e 63 68 65 63 6b 65 64 20 3d 20 74 72 75 65 3b  .checked = true;
6280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6290: 20 20 20 20 20 73 56 65 72 62 20 3d 20 73 56 65       sVerb = sVe
62a0: 72 62 2e 73 6c 69 63 65 28 32 29 3b 0a 20 20 20  rb.slice(2);.   
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
62c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
62d0: 66 20 28 73 56 65 72 62 2e 65 6e 64 73 57 69 74  f (sVerb.endsWit
62e0: 68 28 22 3f 22 29 29 20 7b 0a 20 20 20 20 20 20  h("?")) {.      
62f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
6300: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
6310: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
6320: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 69 6e 74  alecte_conj_oint
6330: 27 29 2e 63 68 65 63 6b 65 64 20 3d 20 74 72 75  ').checked = tru
6340: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e;.             
6350: 20 20 20 20 20 20 20 73 56 65 72 62 20 3d 20 73         sVerb = s
6360: 56 65 72 62 2e 73 6c 69 63 65 28 30 2c 2d 31 29  Verb.slice(0,-1)
6370: 2e 74 72 69 6d 28 29 3b 0a 20 20 20 20 20 20 20  .trim();.       
6380: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
6390: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
63a0: 56 65 72 62 29 20 7b 0a 20 20 20 20 20 20 20 20  Verb) {.        
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
63c0: 2e 73 56 65 72 62 20 3d 20 73 56 65 72 62 3b 0a  .sVerb = sVerb;.
63d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63e0: 20 20 20 20 74 68 69 73 2e 75 70 64 61 74 65 43      this.updateC
63f0: 6f 6e 6a 28 74 72 75 65 29 3b 0a 20 20 20 20 20  onj(true);.     
6400: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
6410: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
6420: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
6430: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
6440: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
6450: 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 76 61 6c  _conj_verb').val
6460: 75 65 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20  ue = "";.       
6470: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
6480: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
6490: 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68   }.        catch
64a0: 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20   (e) {.         
64b0: 20 20 20 63 6f 6e 73 6f 6c 65 2e 65 72 72 6f 72     console.error
64c0: 28 65 2e 66 69 6c 65 4e 61 6d 65 20 2b 20 22 5c  (e.fileName + "\
64d0: 6e 22 20 2b 20 65 2e 6e 61 6d 65 20 2b 20 22 5c  n" + e.name + "\
64e0: 6e 6c 69 6e 65 3a 20 22 20 2b 20 65 2e 6c 69 6e  nline: " + e.lin
64f0: 65 4e 75 6d 62 65 72 20 2b 20 22 5c 6e 22 20 2b  eNumber + "\n" +
6500: 20 65 2e 6d 65 73 73 61 67 65 29 3b 0a 20 20 20   e.message);.   
6510: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
6520: 20 20 75 70 64 61 74 65 43 6f 6e 6a 20 28 62 53    updateConj (bS
6530: 74 61 72 74 3d 66 61 6c 73 65 29 20 7b 0a 20 20  tart=false) {.  
6540: 20 20 20 20 20 20 6c 65 74 20 62 50 72 6f 20 3d        let bPro =
6550: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
6560: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
6570: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f  ammalecte_conj_o
6580: 70 72 6f 27 29 2e 63 68 65 63 6b 65 64 3b 0a 20  pro').checked;. 
6590: 20 20 20 20 20 20 20 6c 65 74 20 62 4e 65 67 20         let bNeg 
65a0: 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67  = this.xParent.g
65b0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
65c0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
65d0: 6f 6e 65 67 27 29 2e 63 68 65 63 6b 65 64 3b 0a  oneg').checked;.
65e0: 20 20 20 20 20 20 20 20 6c 65 74 20 62 54 70 73          let bTps
65f0: 43 6f 20 3d 20 74 68 69 73 2e 78 50 61 72 65 6e  Co = this.xParen
6600: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
6610: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
6620: 6e 6a 5f 6f 74 63 6f 27 29 2e 63 68 65 63 6b 65  nj_otco').checke
6630: 64 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 62  d;.        let b
6640: 49 6e 74 20 3d 20 74 68 69 73 2e 78 50 61 72 65  Int = this.xPare
6650: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
6660: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
6670: 6f 6e 6a 5f 6f 69 6e 74 27 29 2e 63 68 65 63 6b  onj_oint').check
6680: 65 64 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  ed;.        let 
6690: 62 46 65 6d 20 3d 20 74 68 69 73 2e 78 50 61 72  bFem = 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 6f 66 65 6d 27 29 2e 63 68 65 63  conj_ofem').chec
66d0: 6b 65 64 3b 0a 20 20 20 20 20 20 20 20 69 66 20  ked;.        if 
66e0: 28 74 68 69 73 2e 73 56 65 72 62 29 20 7b 0a 20  (this.sVerb) {. 
66f0: 20 20 20 20 20 20 20 20 20 20 20 78 47 72 61 6d             xGram
6700: 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70 6f 73 74  malectePort.post
6710: 4d 65 73 73 61 67 65 28 7b 0a 20 20 20 20 20 20  Message({.      
6720: 20 20 20 20 20 20 20 20 20 20 73 43 6f 6d 6d 61            sComma
6730: 6e 64 3a 20 22 67 65 74 56 65 72 62 22 2c 0a 20  nd: "getVerb",. 
6740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
6750: 50 61 72 61 6d 3a 20 7b 73 56 65 72 62 3a 20 74  Param: {sVerb: t
6760: 68 69 73 2e 73 56 65 72 62 2c 20 62 50 72 6f 3a  his.sVerb, bPro:
6770: 20 62 50 72 6f 2c 20 62 4e 65 67 3a 20 62 4e 65   bPro, bNeg: bNe
6780: 67 2c 20 62 54 70 73 43 6f 3a 20 62 54 70 73 43  g, bTpsCo: bTpsC
6790: 6f 2c 20 62 49 6e 74 3a 20 62 49 6e 74 2c 20 62  o, bInt: bInt, b
67a0: 46 65 6d 3a 20 62 46 65 6d 7d 2c 0a 20 20 20 20  Fem: bFem},.    
67b0: 20 20 20 20 20 20 20 20 20 20 20 20 64 49 6e 66              dInf
67c0: 6f 3a 20 7b 62 53 74 61 72 74 3a 20 62 53 74 61  o: {bStart: bSta
67d0: 72 74 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rt}.            
67e0: 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  });.        }.  
67f0: 20 20 7d 0a 0a 20 20 20 20 63 6f 6e 6a 75 67 61    }..    conjuga
6800: 74 65 57 69 74 68 20 28 6f 56 65 72 62 2c 20 6f  teWith (oVerb, o
6810: 43 6f 6e 6a 54 61 62 6c 65 29 20 7b 0a 20 20 20  ConjTable) {.   
6820: 20 20 20 20 20 2f 2f 20 66 75 6e 63 74 69 6f 6e       // function
6830: 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 72 65 73   called when res
6840: 75 6c 74 73 20 63 6f 6d 65 20 66 72 6f 6d 20 74  ults come from t
6850: 68 65 20 57 6f 72 6b 65 72 0a 20 20 20 20 20 20  he Worker.      
6860: 20 20 69 66 20 28 6f 56 65 72 62 29 20 7b 0a 20    if (oVerb) {. 
6870: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
6880: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
6890: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
68a0: 63 74 65 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e  cte_conj_verb').
68b0: 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22 23  style.color = "#
68c0: 39 39 39 39 39 39 22 3b 0a 20 20 20 20 20 20 20  999999";.       
68d0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
68e0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
68f0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
6900: 6e 6a 5f 76 65 72 62 27 29 2e 76 61 6c 75 65 20  nj_verb').value 
6910: 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20 20 20  = "";.          
6920: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
6930: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
6940: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
6950: 76 65 72 62 5f 74 69 74 6c 65 27 29 2e 74 65 78  verb_title').tex
6960: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 56 65 72 62  tContent = oVerb
6970: 2e 73 56 65 72 62 3b 0a 20 20 20 20 20 20 20 20  .sVerb;.        
6980: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
6990: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
69a0: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
69b0: 6a 5f 76 65 72 62 5f 69 6e 66 6f 27 29 2e 74 65  j_verb_info').te
69c0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 56 65 72  xtContent = oVer
69d0: 62 2e 73 49 6e 66 6f 3b 0a 20 20 20 20 20 20 20  b.sInfo;.       
69e0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
69f0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
6a00: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
6a10: 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27 29 2e 74 65  nj_opro_lbl').te
6a20: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 56 65 72  xtContent = oVer
6a30: 62 2e 73 50 72 6f 4c 61 62 65 6c 3b 0a 20 20 20  b.sProLabel;.   
6a40: 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 56 65           if (oVe
6a50: 72 62 2e 62 55 6e 63 6f 6d 70 6c 65 74 65 29 20  rb.bUncomplete) 
6a60: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
6a70: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
6a80: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
6a90: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
6aa0: 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d  opro').checked =
6ab0: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20   false;.        
6ac0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
6ad0: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
6ae0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
6af0: 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e 64 69 73  _conj_opro').dis
6b00: 61 62 6c 65 64 20 3d 20 74 72 75 65 3b 0a 20 20  abled = true;.  
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
6b20: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
6b30: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
6b40: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f  alecte_conj_opro
6b50: 5f 6c 62 6c 27 29 2e 73 74 79 6c 65 2e 63 6f 6c  _lbl').style.col
6b60: 6f 72 20 3d 20 22 23 43 43 43 22 3b 0a 20 20 20  or = "#CCC";.   
6b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
6b80: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
6b90: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
6ba0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27  lecte_conj_otco'
6bb0: 29 2e 63 68 65 63 6b 65 64 20 3d 20 66 61 6c 73  ).checked = fals
6bc0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e;.             
6bd0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
6be0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
6bf0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
6c00: 5f 6f 74 63 6f 27 29 2e 64 69 73 61 62 6c 65 64  _otco').disabled
6c10: 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20   = true;.       
6c20: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
6c30: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
6c40: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
6c50: 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 5f 6c 62 6c 27  e_conj_otco_lbl'
6c60: 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20  ).style.color = 
6c70: 22 23 43 43 43 22 3b 0a 20 20 20 20 20 20 20 20  "#CCC";.        
6c80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
6c90: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
6ca0: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
6cb0: 5f 63 6f 6e 6a 5f 6e 6f 74 65 27 29 2e 74 65 78  _conj_note').tex
6cc0: 74 43 6f 6e 74 65 6e 74 20 3d 20 22 43 65 20 76  tContent = "Ce v
6cd0: 65 72 62 65 20 6e e2 80 99 61 20 70 61 73 20 65  erbe n...a pas e
6ce0: 6e 63 6f 72 65 20 c3 a9 74 c3 a9 20 76 c3 a9 72  ncore ..t.. v..r
6cf0: 69 66 69 c3 a9 2e 20 43 e2 80 99 65 73 74 20 70  ifi... C...est p
6d00: 6f 75 72 71 75 6f 69 20 6c 65 73 20 6f 70 74 69  ourquoi les opti
6d10: 6f 6e 73 20 e2 80 9c 70 72 6f 6e 6f 6d 69 6e 61  ons ...pronomina
6d20: 6c e2 80 9d 20 65 74 20 e2 80 9c 74 65 6d 70 73  l... et ...temps
6d30: 20 63 6f 6d 70 6f 73 c3 a9 73 e2 80 9d 20 73 6f   compos..s... so
6d40: 6e 74 20 64 c3 a9 73 61 63 74 69 76 c3 a9 65 73  nt d..sactiv..es
6d50: 2e 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
6d60: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20  } else {.       
6d70: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
6d80: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
6d90: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
6da0: 65 5f 63 6f 6e 6a 5f 6f 74 63 6f 27 29 2e 64 69  e_conj_otco').di
6db0: 73 61 62 6c 65 64 20 3d 20 66 61 6c 73 65 3b 0a  sabled = false;.
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6dd0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
6de0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
6df0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 74  mmalecte_conj_ot
6e00: 63 6f 5f 6c 62 6c 27 29 2e 73 74 79 6c 65 2e 63  co_lbl').style.c
6e10: 6f 6c 6f 72 20 3d 20 22 23 30 30 30 22 3b 0a 20  olor = "#000";. 
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6e30: 66 20 28 6f 56 65 72 62 2e 6e 50 72 6f 6e 6f 6d  f (oVerb.nPronom
6e40: 69 6e 61 62 6c 65 20 3d 3d 20 30 29 20 7b 0a 20  inable == 0) {. 
6e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e60: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
6e70: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
6e80: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
6e90: 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65 64 20  _opro').checked 
6ea0: 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20  = false;.       
6eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
6ec0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
6ed0: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
6ee0: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27  lecte_conj_opro'
6ef0: 29 2e 64 69 73 61 62 6c 65 64 20 3d 20 66 61 6c  ).disabled = fal
6f00: 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  se;.            
6f10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
6f20: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
6f30: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
6f40: 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27 29  _conj_opro_lbl')
6f50: 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22  .style.color = "
6f60: 23 30 30 30 22 3b 0a 20 20 20 20 20 20 20 20 20  #000";.         
6f70: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
6f80: 20 28 6f 56 65 72 62 2e 6e 50 72 6f 6e 6f 6d 69   (oVerb.nPronomi
6f90: 6e 61 62 6c 65 20 3d 3d 20 31 29 20 7b 0a 20 20  nable == 1) {.  
6fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fb0: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
6fc0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
6fd0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
6fe0: 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65 64 20 3d  opro').checked =
6ff0: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20   true;.         
7000: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
7010: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
7020: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
7030: 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 27 29 2e  cte_conj_opro').
7040: 64 69 73 61 62 6c 65 64 20 3d 20 74 72 75 65 3b  disabled = true;
7050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7060: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7070: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7080: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7090: 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27 29 2e 73 74  nj_opro_lbl').st
70a0: 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22 23 43 43  yle.color = "#CC
70b0: 43 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  C";.            
70c0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 2f 2f 20      } else { // 
70d0: 2d 31 20 6f 72 20 31 20 6f 72 20 65 72 72 6f 72  -1 or 1 or error
70e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
70f0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7100: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7110: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7120: 6e 6a 5f 6f 70 72 6f 27 29 2e 63 68 65 63 6b 65  nj_opro').checke
7130: 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20  d = false;.     
7140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
7150: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
7160: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
7170: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 6f 70 72  malecte_conj_opr
7180: 6f 27 29 2e 64 69 73 61 62 6c 65 64 20 3d 20 74  o').disabled = t
7190: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20  rue;.           
71a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
71b0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
71c0: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
71d0: 65 5f 63 6f 6e 6a 5f 6f 70 72 6f 5f 6c 62 6c 27  e_conj_opro_lbl'
71e0: 29 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20  ).style.color = 
71f0: 22 23 43 43 43 22 3b 0a 20 20 20 20 20 20 20 20  "#CCC";.        
7200: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
7210: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
7220: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
7230: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
7240: 74 65 5f 63 6f 6e 6a 5f 6e 6f 74 65 27 29 2e 74  te_conj_note').t
7250: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 e2 9d  extContent = "..
7260: a6 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
7270: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  }.            th
7280: 69 73 2e 64 69 73 70 6c 61 79 43 6f 6e 6a 28 6f  is.displayConj(o
7290: 43 6f 6e 6a 54 61 62 6c 65 29 3b 0a 20 20 20 20  ConjTable);.    
72a0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
72b0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
72c0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
72d0: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
72e0: 65 5f 63 6f 6e 6a 5f 76 65 72 62 27 29 2e 73 74  e_conj_verb').st
72f0: 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22 23 42 42  yle.color = "#BB
7300: 34 34 31 31 22 3b 0a 20 20 20 20 20 20 20 20 7d  4411";.        }
7310: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64 69 73 70  .    }..    disp
7320: 6c 61 79 43 6f 6e 6a 20 28 6f 43 6f 6e 6a 54 61  layConj (oConjTa
7330: 62 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 2f  ble) {.        /
7340: 2f 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65  / function calle
7350: 64 20 77 68 65 6e 20 72 65 73 75 6c 74 73 20 63  d when results c
7360: 6f 6d 65 20 66 72 6f 6d 20 74 68 65 20 57 6f 72  ome from the Wor
7370: 6b 65 72 0a 20 20 20 20 20 20 20 20 69 66 20 28  ker.        if (
7380: 6f 43 6f 6e 6a 54 61 62 6c 65 20 3d 3d 3d 20 6e  oConjTable === n
7390: 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ull) {.         
73a0: 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20     return;.     
73b0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 72 79     }.        try
73c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   {.            t
73d0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
73e0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
73f0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 76 65 72  malecte_conj_ver
7400: 62 27 29 2e 54 65 78 74 20 3d 20 22 22 3b 0a 20  b').Text = "";. 
7410: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e             // in
7420: 66 69 6e 69 74 69 66 0a 20 20 20 20 20 20 20 20  finitif.        
7430: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
7440: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
7450: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
7460: 6a 5f 69 6e 66 69 27 29 2e 74 65 78 74 43 6f 6e  j_infi').textCon
7470: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
7480: 65 5b 22 69 6e 66 69 22 5d 20 7c 7c 20 22 c2 a0  e["infi"] || "..
7490: 22 3b 20 2f 2f 20 73 6f 6d 65 74 68 69 6e 67 20  "; // something 
74a0: 6f 72 20 6e 62 73 70 0a 20 20 20 20 20 20 20 20  or nbsp.        
74b0: 20 20 20 20 2f 2f 20 70 61 72 74 69 63 69 70 65      // participe
74c0: 20 70 72 c3 a9 73 65 6e 74 0a 20 20 20 20 20 20   pr..sent.      
74d0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
74e0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
74f0: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
7500: 6f 6e 6a 5f 70 70 72 65 27 29 2e 74 65 78 74 43  onj_ppre').textC
7510: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
7520: 62 6c 65 5b 22 70 70 72 65 22 5d 20 7c 7c 20 22  ble["ppre"] || "
7530: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
7540: 20 2f 2f 20 70 61 72 74 69 63 69 70 65 73 20 70   // participes p
7550: 61 73 73 c3 a9 73 0a 20 20 20 20 20 20 20 20 20  ass..s.         
7560: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
7570: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
7580: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
7590: 5f 70 70 61 73 31 27 29 2e 74 65 78 74 43 6f 6e  _ppas1').textCon
75a0: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
75b0: 65 5b 22 70 70 61 73 31 22 5d 20 7c 7c 20 22 c2  e["ppas1"] || ".
75c0: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
75d0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
75e0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
75f0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 70  mmalecte_conj_pp
7600: 61 73 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  as2').textConten
7610: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
7620: 70 70 61 73 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b  ppas2"] || "..";
7630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
7640: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
7650: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
7660: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 70 70 61 73 33  lecte_conj_ppas3
7670: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
7680: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 70 70 61   oConjTable["ppa
7690: 73 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  s3"] || "..";.  
76a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
76b0: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
76c0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
76d0: 74 65 5f 63 6f 6e 6a 5f 70 70 61 73 34 27 29 2e  te_conj_ppas4').
76e0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
76f0: 6f 6e 6a 54 61 62 6c 65 5b 22 70 70 61 73 34 22  onjTable["ppas4"
7700: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
7710: 20 20 20 20 20 20 20 2f 2f 20 69 6d 70 c3 a9 72         // imp..r
7720: 61 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20  atif.           
7730: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
7740: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
7750: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74  ammalecte_conj_t
7760: 5f 69 6d 70 65 27 29 2e 74 65 78 74 43 6f 6e 74  _impe').textCont
7770: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
7780: 5b 22 74 5f 69 6d 70 65 22 5d 20 7c 7c 20 22 c2  ["t_impe"] || ".
7790: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
77a0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
77b0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
77c0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 6d  mmalecte_conj_im
77d0: 70 65 31 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  pe1').textConten
77e0: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
77f0: 69 6d 70 65 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b  impe1"] || "..";
7800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
7810: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
7820: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
7830: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 6d 70 65 32  lecte_conj_impe2
7840: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
7850: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 6d 70   oConjTable["imp
7860: 65 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  e2"] || "..";.  
7870: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
7880: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
7890: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
78a0: 74 65 5f 63 6f 6e 6a 5f 69 6d 70 65 33 27 29 2e  te_conj_impe3').
78b0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
78c0: 6f 6e 6a 54 61 62 6c 65 5b 22 69 6d 70 65 33 22  onjTable["impe3"
78d0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
78e0: 20 20 20 20 20 20 20 2f 2f 20 70 72 c3 a9 73 65         // pr..se
78f0: 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  nt.            t
7900: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
7910: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
7920: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 69  malecte_conj_t_i
7930: 70 72 65 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  pre').textConten
7940: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
7950: 74 5f 69 70 72 65 22 5d 20 7c 7c 20 22 c2 a0 22  t_ipre"] || ".."
7960: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
7970: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
7980: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
7990: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 72 65  alecte_conj_ipre
79a0: 31 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  1').textContent 
79b0: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70  = oConjTable["ip
79c0: 72 65 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  re1"] || "..";. 
79d0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
79e0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
79f0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
7a00: 63 74 65 5f 63 6f 6e 6a 5f 69 70 72 65 32 27 29  cte_conj_ipre2')
7a10: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
7a20: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70 72 65 32  ConjTable["ipre2
7a30: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
7a40: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
7a50: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7a60: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7a70: 5f 63 6f 6e 6a 5f 69 70 72 65 33 27 29 2e 74 65  _conj_ipre3').te
7a80: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
7a90: 6a 54 61 62 6c 65 5b 22 69 70 72 65 33 22 5d 20  jTable["ipre3"] 
7aa0: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
7ab0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7ac0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7ad0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7ae0: 6e 6a 5f 69 70 72 65 34 27 29 2e 74 65 78 74 43  nj_ipre4').textC
7af0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
7b00: 62 6c 65 5b 22 69 70 72 65 34 22 5d 20 7c 7c 20  ble["ipre4"] || 
7b10: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
7b20: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
7b30: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
7b40: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
7b50: 69 70 72 65 35 27 29 2e 74 65 78 74 43 6f 6e 74  ipre5').textCont
7b60: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
7b70: 5b 22 69 70 72 65 35 22 5d 20 7c 7c 20 22 c2 a0  ["ipre5"] || "..
7b80: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
7b90: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
7ba0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
7bb0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 72  malecte_conj_ipr
7bc0: 65 36 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  e6').textContent
7bd0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69   = oConjTable["i
7be0: 70 72 65 36 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  pre6"] || "..";.
7bf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69              // i
7c00: 6d 70 61 72 66 61 69 74 0a 20 20 20 20 20 20 20  mparfait.       
7c10: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7c20: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7c30: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7c40: 6e 6a 5f 74 5f 69 69 6d 70 27 29 2e 74 65 78 74  nj_t_iimp').text
7c50: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
7c60: 61 62 6c 65 5b 22 74 5f 69 69 6d 70 22 5d 20 7c  able["t_iimp"] |
7c70: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
7c80: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
7c90: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
7ca0: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
7cb0: 6a 5f 69 69 6d 70 31 27 29 2e 74 65 78 74 43 6f  j_iimp1').textCo
7cc0: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
7cd0: 6c 65 5b 22 69 69 6d 70 31 22 5d 20 7c 7c 20 22  le["iimp1"] || "
7ce0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
7cf0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
7d00: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
7d10: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69  ammalecte_conj_i
7d20: 69 6d 70 32 27 29 2e 74 65 78 74 43 6f 6e 74 65  imp2').textConte
7d30: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
7d40: 22 69 69 6d 70 32 22 5d 20 7c 7c 20 22 c2 a0 22  "iimp2"] || ".."
7d50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
7d60: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
7d70: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
7d80: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d 70  alecte_conj_iimp
7d90: 33 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  3').textContent 
7da0: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 69  = oConjTable["ii
7db0: 6d 70 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  mp3"] || "..";. 
7dc0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
7dd0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
7de0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
7df0: 63 74 65 5f 63 6f 6e 6a 5f 69 69 6d 70 34 27 29  cte_conj_iimp4')
7e00: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
7e10: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 69 6d 70 34  ConjTable["iimp4
7e20: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
7e30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
7e40: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
7e50: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
7e60: 5f 63 6f 6e 6a 5f 69 69 6d 70 35 27 29 2e 74 65  _conj_iimp5').te
7e70: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
7e80: 6a 54 61 62 6c 65 5b 22 69 69 6d 70 35 22 5d 20  jTable["iimp5"] 
7e90: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
7ea0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
7eb0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7ec0: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
7ed0: 6e 6a 5f 69 69 6d 70 36 27 29 2e 74 65 78 74 43  nj_iimp6').textC
7ee0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
7ef0: 62 6c 65 5b 22 69 69 6d 70 36 22 5d 20 7c 7c 20  ble["iimp6"] || 
7f00: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
7f10: 20 20 2f 2f 20 70 61 73 73 c3 a9 20 73 69 6d 70    // pass.. simp
7f20: 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  le.            t
7f30: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
7f40: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
7f50: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74 5f 69  malecte_conj_t_i
7f60: 70 73 69 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  psi').textConten
7f70: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
7f80: 74 5f 69 70 73 69 22 5d 20 7c 7c 20 22 c2 a0 22  t_ipsi"] || ".."
7f90: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
7fa0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
7fb0: 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d  ementById('gramm
7fc0: 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 73 69  alecte_conj_ipsi
7fd0: 31 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  1').textContent 
7fe0: 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70  = oConjTable["ip
7ff0: 73 69 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  si1"] || "..";. 
8000: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
8010: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
8020: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
8030: 63 74 65 5f 63 6f 6e 6a 5f 69 70 73 69 32 27 29  cte_conj_ipsi2')
8040: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
8050: 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 70 73 69 32  ConjTable["ipsi2
8060: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
8070: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8080: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8090: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
80a0: 5f 63 6f 6e 6a 5f 69 70 73 69 33 27 29 2e 74 65  _conj_ipsi3').te
80b0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
80c0: 6a 54 61 62 6c 65 5b 22 69 70 73 69 33 22 5d 20  jTable["ipsi3"] 
80d0: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
80e0: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
80f0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8100: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8110: 6e 6a 5f 69 70 73 69 34 27 29 2e 74 65 78 74 43  nj_ipsi4').textC
8120: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8130: 62 6c 65 5b 22 69 70 73 69 34 22 5d 20 7c 7c 20  ble["ipsi4"] || 
8140: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8150: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8160: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8170: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8180: 69 70 73 69 35 27 29 2e 74 65 78 74 43 6f 6e 74  ipsi5').textCont
8190: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
81a0: 5b 22 69 70 73 69 35 22 5d 20 7c 7c 20 22 c2 a0  ["ipsi5"] || "..
81b0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
81c0: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
81d0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
81e0: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 70 73  malecte_conj_ips
81f0: 69 36 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  i6').textContent
8200: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69   = oConjTable["i
8210: 70 73 69 36 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  psi6"] || "..";.
8220: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 66              // f
8230: 75 74 75 72 0a 20 20 20 20 20 20 20 20 20 20 20  utur.           
8240: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
8250: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
8260: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 74  ammalecte_conj_t
8270: 5f 69 66 75 74 27 29 2e 74 65 78 74 43 6f 6e 74  _ifut').textCont
8280: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8290: 5b 22 74 5f 69 66 75 74 22 5d 20 7c 7c 20 22 c2  ["t_ifut"] || ".
82a0: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
82b0: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
82c0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
82d0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 66  mmalecte_conj_if
82e0: 75 74 31 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  ut1').textConten
82f0: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
8300: 69 66 75 74 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b  ifut1"] || "..";
8310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
8320: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
8330: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
8340: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69 66 75 74 32  lecte_conj_ifut2
8350: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
8360: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 69 66 75   oConjTable["ifu
8370: 74 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  t2"] || "..";.  
8380: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8390: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
83a0: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
83b0: 74 65 5f 63 6f 6e 6a 5f 69 66 75 74 33 27 29 2e  te_conj_ifut3').
83c0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
83d0: 6f 6e 6a 54 61 62 6c 65 5b 22 69 66 75 74 33 22  onjTable["ifut3"
83e0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
83f0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
8400: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
8410: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
8420: 63 6f 6e 6a 5f 69 66 75 74 34 27 29 2e 74 65 78  conj_ifut4').tex
8430: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
8440: 54 61 62 6c 65 5b 22 69 66 75 74 34 22 5d 20 7c  Table["ifut4"] |
8450: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
8460: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8470: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8480: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8490: 6a 5f 69 66 75 74 35 27 29 2e 74 65 78 74 43 6f  j_ifut5').textCo
84a0: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
84b0: 6c 65 5b 22 69 66 75 74 35 22 5d 20 7c 7c 20 22  le["ifut5"] || "
84c0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
84d0: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
84e0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
84f0: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 69  ammalecte_conj_i
8500: 66 75 74 36 27 29 2e 74 65 78 74 43 6f 6e 74 65  fut6').textConte
8510: 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b  nt = oConjTable[
8520: 22 69 66 75 74 36 22 5d 20 7c 7c 20 22 c2 a0 22  "ifut6"] || ".."
8530: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ;.            //
8540: 20 43 6f 6e 64 69 74 69 6f 6e 6e 65 6c 0a 20 20   Conditionnel.  
8550: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8560: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
8570: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
8580: 74 65 5f 63 6f 6e 6a 5f 74 5f 63 6f 6e 64 61 27  te_conj_t_conda'
8590: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
85a0: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 74 5f 63 6f  oConjTable["t_co
85b0: 6e 64 61 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20  nda"] || "..";. 
85c0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
85d0: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
85e0: 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65  ntById('grammale
85f0: 63 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 31 27  cte_conj_conda1'
8600: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
8610: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64  oConjTable["cond
8620: 61 31 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  a1"] || "..";.  
8630: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
8640: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
8650: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
8660: 74 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 32 27 29  te_conj_conda2')
8670: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f  .textContent = o
8680: 43 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 61  ConjTable["conda
8690: 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  2"] || "..";.   
86a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
86b0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
86c0: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
86d0: 65 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 33 27 29 2e  e_conj_conda3').
86e0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
86f0: 6f 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 61 33  onjTable["conda3
8700: 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20  "] || "..";.    
8710: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
8720: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
8730: 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65  yId('grammalecte
8740: 5f 63 6f 6e 6a 5f 63 6f 6e 64 61 34 27 29 2e 74  _conj_conda4').t
8750: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
8760: 6e 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 61 34 22  njTable["conda4"
8770: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
8780: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
8790: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
87a0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
87b0: 63 6f 6e 6a 5f 63 6f 6e 64 61 35 27 29 2e 74 65  conj_conda5').te
87c0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
87d0: 6a 54 61 62 6c 65 5b 22 63 6f 6e 64 61 35 22 5d  jTable["conda5"]
87e0: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
87f0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
8800: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
8810: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
8820: 6f 6e 6a 5f 63 6f 6e 64 61 36 27 29 2e 74 65 78  onj_conda6').tex
8830: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
8840: 54 61 62 6c 65 5b 22 63 6f 6e 64 61 36 22 5d 20  Table["conda6"] 
8850: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8860: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
8870: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8880: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8890: 6e 6a 5f 74 5f 63 6f 6e 64 62 27 29 2e 74 65 78  nj_t_condb').tex
88a0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
88b0: 54 61 62 6c 65 5b 22 74 5f 63 6f 6e 64 62 22 5d  Table["t_condb"]
88c0: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
88d0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
88e0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
88f0: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
8900: 6f 6e 6a 5f 63 6f 6e 64 62 31 27 29 2e 74 65 78  onj_condb1').tex
8910: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
8920: 54 61 62 6c 65 5b 22 63 6f 6e 64 62 31 22 5d 20  Table["condb1"] 
8930: 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20  || "..";.       
8940: 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e       this.xParen
8950: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8960: 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f  ('grammalecte_co
8970: 6e 6a 5f 63 6f 6e 64 62 32 27 29 2e 74 65 78 74  nj_condb2').text
8980: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
8990: 61 62 6c 65 5b 22 63 6f 6e 64 62 32 22 5d 20 7c  able["condb2"] |
89a0: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
89b0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
89c0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
89d0: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
89e0: 6a 5f 63 6f 6e 64 62 33 27 29 2e 74 65 78 74 43  j_condb3').textC
89f0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8a00: 62 6c 65 5b 22 63 6f 6e 64 62 33 22 5d 20 7c 7c  ble["condb3"] ||
8a10: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
8a20: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
8a30: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
8a40: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
8a50: 5f 63 6f 6e 64 62 34 27 29 2e 74 65 78 74 43 6f  _condb4').textCo
8a60: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
8a70: 6c 65 5b 22 63 6f 6e 64 62 34 22 5d 20 7c 7c 20  le["condb4"] || 
8a80: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8a90: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8aa0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8ab0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8ac0: 63 6f 6e 64 62 35 27 29 2e 74 65 78 74 43 6f 6e  condb5').textCon
8ad0: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8ae0: 65 5b 22 63 6f 6e 64 62 35 22 5d 20 7c 7c 20 22  e["condb5"] || "
8af0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ..";.           
8b00: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
8b10: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72  tElementById('gr
8b20: 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 63  ammalecte_conj_c
8b30: 6f 6e 64 62 36 27 29 2e 74 65 78 74 43 6f 6e 74  ondb6').textCont
8b40: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8b50: 5b 22 63 6f 6e 64 62 36 22 5d 20 7c 7c 20 22 c2  ["condb6"] || ".
8b60: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
8b70: 2f 2f 20 73 75 62 6a 6f 6e 63 74 69 66 20 70 72  // subjonctif pr
8b80: c3 a9 73 65 6e 74 0a 20 20 20 20 20 20 20 20 20  ..sent.         
8b90: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
8ba0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
8bb0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
8bc0: 5f 74 5f 73 70 72 65 27 29 2e 74 65 78 74 43 6f  _t_spre').textCo
8bd0: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
8be0: 6c 65 5b 22 74 5f 73 70 72 65 22 5d 20 7c 7c 20  le["t_spre"] || 
8bf0: 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20  "..";.          
8c00: 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67    this.xParent.g
8c10: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67  etElementById('g
8c20: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f  rammalecte_conj_
8c30: 73 70 72 65 31 27 29 2e 74 65 78 74 43 6f 6e 74  spre1').textCont
8c40: 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65  ent = oConjTable
8c50: 5b 22 73 70 72 65 31 22 5d 20 7c 7c 20 22 c2 a0  ["spre1"] || "..
8c60: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
8c70: 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45  his.xParent.getE
8c80: 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d  lementById('gram
8c90: 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 70 72  malecte_conj_spr
8ca0: 65 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  e2').textContent
8cb0: 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73   = oConjTable["s
8cc0: 70 72 65 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a  pre2"] || "..";.
8cd0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
8ce0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
8cf0: 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c  entById('grammal
8d00: 65 63 74 65 5f 63 6f 6e 6a 5f 73 70 72 65 33 27  ecte_conj_spre3'
8d10: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
8d20: 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 70 72 65  oConjTable["spre
8d30: 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20  3"] || "..";.   
8d40: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
8d50: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
8d60: 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74  ById('grammalect
8d70: 65 5f 63 6f 6e 6a 5f 73 70 72 65 34 27 29 2e 74  e_conj_spre4').t
8d80: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f  extContent = oCo
8d90: 6e 6a 54 61 62 6c 65 5b 22 73 70 72 65 34 22 5d  njTable["spre4"]
8da0: 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20   || "..";.      
8db0: 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72 65        this.xPare
8dc0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
8dd0: 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63  d('grammalecte_c
8de0: 6f 6e 6a 5f 73 70 72 65 35 27 29 2e 74 65 78 74  onj_spre5').text
8df0: 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54  Content = oConjT
8e00: 61 62 6c 65 5b 22 73 70 72 65 35 22 5d 20 7c 7c  able["spre5"] ||
8e10: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
8e20: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
8e30: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
8e40: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
8e50: 5f 73 70 72 65 36 27 29 2e 74 65 78 74 43 6f 6e  _spre6').textCon
8e60: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8e70: 65 5b 22 73 70 72 65 36 22 5d 20 7c 7c 20 22 c2  e["spre6"] || ".
8e80: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
8e90: 2f 2f 20 73 75 62 6a 6f 6e 63 74 69 66 20 69 6d  // subjonctif im
8ea0: 70 61 72 66 61 69 74 0a 20 20 20 20 20 20 20 20  parfait.        
8eb0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
8ec0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
8ed0: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
8ee0: 6a 5f 74 5f 73 69 6d 70 27 29 2e 74 65 78 74 43  j_t_simp').textC
8ef0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61  ontent = oConjTa
8f00: 62 6c 65 5b 22 74 5f 73 69 6d 70 22 5d 20 7c 7c  ble["t_simp"] ||
8f10: 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 20   "..";.         
8f20: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
8f30: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
8f40: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a  grammalecte_conj
8f50: 5f 73 69 6d 70 31 27 29 2e 74 65 78 74 43 6f 6e  _simp1').textCon
8f60: 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c  tent = oConjTabl
8f70: 65 5b 22 73 69 6d 70 31 22 5d 20 7c 7c 20 22 c2  e["simp1"] || ".
8f80: a0 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  .";.            
8f90: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
8fa0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 67 72 61  ElementById('gra
8fb0: 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 69  mmalecte_conj_si
8fc0: 6d 70 32 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e  mp2').textConten
8fd0: 74 20 3d 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22  t = oConjTable["
8fe0: 73 69 6d 70 32 22 5d 20 7c 7c 20 22 c2 a0 22 3b  simp2"] || "..";
8ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
9000: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
9010: 6d 65 6e 74 42 79 49 64 28 27 67 72 61 6d 6d 61  mentById('gramma
9020: 6c 65 63 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70 33  lecte_conj_simp3
9030: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
9040: 20 6f 43 6f 6e 6a 54 61 62 6c 65 5b 22 73 69 6d   oConjTable["sim
9050: 70 33 22 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20  p3"] || "..";.  
9060: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
9070: 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  Parent.getElemen
9080: 74 42 79 49 64 28 27 67 72 61 6d 6d 61 6c 65 63  tById('grammalec
9090: 74 65 5f 63 6f 6e 6a 5f 73 69 6d 70 34 27 29 2e  te_conj_simp4').
90a0: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43  textContent = oC
90b0: 6f 6e 6a 54 61 62 6c 65 5b 22 73 69 6d 70 34 22  onjTable["simp4"
90c0: 5d 20 7c 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20  ] || "..";.     
90d0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61 72         this.xPar
90e0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
90f0: 49 64 28 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f  Id('grammalecte_
9100: 63 6f 6e 6a 5f 73 69 6d 70 35 27 29 2e 74 65 78  conj_simp5').tex
9110: 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a  tContent = oConj
9120: 54 61 62 6c 65 5b 22 73 69 6d 70 35 22 5d 20 7c  Table["simp5"] |
9130: 7c 20 22 c2 a0 22 3b 0a 20 20 20 20 20 20 20 20  | "..";.        
9140: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
9150: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9160: 27 67 72 61 6d 6d 61 6c 65 63 74 65 5f 63 6f 6e  'grammalecte_con
9170: 6a 5f 73 69 6d 70 36 27 29 2e 74 65 78 74 43 6f  j_simp6').textCo
9180: 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 6a 54 61 62  ntent = oConjTab
9190: 6c 65 5b 22 73 69 6d 70 36 22 5d 20 7c 7c 20 22  le["simp6"] || "
91a0: c2 a0 22 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  ..";.        }. 
91b0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65 29         catch (e)
91c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63   {.            c
91d0: 6f 6e 73 6f 6c 65 2e 65 72 72 6f 72 28 65 2e 66  onsole.error(e.f
91e0: 69 6c 65 4e 61 6d 65 20 2b 20 22 5c 6e 22 20 2b  ileName + "\n" +
91f0: 20 65 2e 6e 61 6d 65 20 2b 20 22 5c 6e 6c 69 6e   e.name + "\nlin
9200: 65 3a 20 22 20 2b 20 65 2e 6c 69 6e 65 4e 75 6d  e: " + e.lineNum
9210: 62 65 72 20 2b 20 22 5c 6e 22 20 2b 20 65 2e 6d  ber + "\n" + e.m
9220: 65 73 73 61 67 65 29 3b 0a 20 20 20 20 20 20 20  essage);.       
9230: 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6c 61   }.    }.}...cla
9240: 73 73 20 47 72 61 6d 6d 61 6c 65 63 74 65 54 6f  ss GrammalecteTo
9250: 6f 6c 74 69 70 20 7b 0a 0a 20 20 20 20 63 6f 6e  oltip {..    con
9260: 73 74 72 75 63 74 6f 72 20 28 78 50 61 72 65 6e  structor (xParen
9270: 74 2c 20 78 47 43 50 61 6e 65 6c 43 6f 6e 74 65  t, xGCPanelConte
9280: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68  nt) {.        th
9290: 69 73 2e 78 50 61 72 65 6e 74 20 3d 20 78 50 61  is.xParent = xPa
92a0: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 74 68  rent;.        th
92b0: 69 73 2e 73 45 72 72 6f 72 49 64 20 3d 20 6e 75  is.sErrorId = nu
92c0: 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ll;.        this
92d0: 2e 62 44 65 62 75 67 20 3d 20 66 61 6c 73 65 3b  .bDebug = false;
92e0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54  .        this.xT
92f0: 6f 6f 6c 74 69 70 20 3d 20 6f 47 72 61 6d 6d 61  ooltip = oGramma
9300: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
9310: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
9320: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
9330: 70 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 74 68  p"});.        th
9340: 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72 72 6f 77  is.xTooltipArrow
9350: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
9360: 63 72 65 61 74 65 4e 6f 64 65 28 22 69 6d 67 22  createNode("img"
9370: 2c 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  , {.            
9380: 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65  id: "grammalecte
9390: 5f 74 6f 6f 6c 74 69 70 5f 61 72 72 6f 77 22 2c  _tooltip_arrow",
93a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 72 63  .            src
93b0: 3a 20 22 64 61 74 61 3a 69 6d 61 67 65 2f 70 6e  : "data:image/pn
93c0: 67 3b 62 61 73 65 36 34 2c 69 56 42 4f 52 77 30  g;base64,iVBORw0
93d0: 4b 47 67 6f 41 41 41 41 4e 53 55 68 45 55 67 41  KGgoAAAANSUhEUgA
93e0: 41 41 41 67 41 41 41 41 49 43 41 59 41 41 41 44  AAAgAAAAICAYAAAD
93f0: 45 44 37 36 4c 41 41 41 41 42 47 64 42 54 55 45  ED76LAAAABGdBTUE
9400: 41 41 4c 47 50 43 2f 78 68 42 51 41 41 41 41 6c  AALGPC/xhBQAAAAl
9410: 77 53 46 6c 7a 41 41 41 4f 77 41 41 41 44 73 41  wSFlzAAAOwAAADsA
9420: 42 61 74 61 4a 43 51 41 41 41 42 6c 30 52 56 68  BataJCQAAABl0RVh
9430: 30 55 32 39 6d 64 48 64 68 63 6d 55 41 63 47 46  0U29mdHdhcmUAcGF
9440: 70 62 6e 51 75 62 6d 56 30 49 44 51 75 4d 43 34  pbnQubmV0IDQuMC4
9450: 78 4e 7a 4e 75 6e 32 4d 41 41 41 41 6e 53 55 52  xNzNun2MAAAAnSUR
9460: 42 56 43 68 54 59 2f 6a 2f 2f 7a 38 63 71 2f 6b  BVChTY/j//z8cq/k
9470: 57 2f 77 64 68 5a 44 45 4d 53 58 52 46 57 43 56  W/wdhZDEMSXRFWCV
9480: 68 47 4b 77 41 6d 77 51 79 48 6e 67 46 78 66 38  hGKwAmwQyHngFxf8
9490: 42 35 66 4f 47 59 66 65 46 70 59 6f 41 41 41 41  B5fOGYfeFpYoAAAA
94a0: 41 53 55 56 4f 52 4b 35 43 59 49 49 3d 22 2c 0a  ASUVORK5CYII=",.
94b0: 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 74 3a              alt:
94c0: 20 22 5e 22 2c 0a 20 20 20 20 20 20 20 20 7d 29   "^",.        })
94d0: 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 6d 65 73  ;.        // mes
94e0: 73 61 67 65 0a 20 20 20 20 20 20 20 20 6c 65 74  sage.        let
94f0: 20 78 4d 65 73 73 61 67 65 42 6c 6f 63 6b 20 3d   xMessageBlock =
9500: 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72   oGrammalecte.cr
9510: 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20  eateNode("div", 
9520: 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  {id: "grammalect
9530: 65 5f 74 6f 6f 6c 74 69 70 5f 6d 65 73 73 61 67  e_tooltip_messag
9540: 65 5f 62 6c 6f 63 6b 22 7d 29 3b 0a 20 20 20 20  e_block"});.    
9550: 20 20 20 20 78 4d 65 73 73 61 67 65 42 6c 6f 63      xMessageBloc
9560: 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47  k.appendChild(oG
9570: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
9580: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64  eNode("div", {id
9590: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74  : "grammalecte_t
95a0: 6f 6f 6c 74 69 70 5f 72 75 6c 65 5f 69 64 22 7d  ooltip_rule_id"}
95b0: 29 29 3b 0a 20 20 20 20 20 20 20 20 78 4d 65 73  ));.        xMes
95c0: 73 61 67 65 42 6c 6f 63 6b 2e 61 70 70 65 6e 64  sageBlock.append
95d0: 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63  Child(oGrammalec
95e0: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
95f0: 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d  iv", {id: "gramm
9600: 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6d  alecte_tooltip_m
9610: 65 73 73 61 67 65 22 2c 20 74 65 78 74 43 6f 6e  essage", textCon
9620: 74 65 6e 74 3a 20 22 45 72 72 65 75 72 2e 22 7d  tent: "Erreur."}
9630: 29 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ));.        this
9640: 2e 78 54 6f 6f 6c 74 69 70 2e 61 70 70 65 6e 64  .xTooltip.append
9650: 43 68 69 6c 64 28 78 4d 65 73 73 61 67 65 42 6c  Child(xMessageBl
9660: 6f 63 6b 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f  ock);.        //
9670: 20 73 75 67 67 65 73 74 69 6f 6e 73 0a 20 20 20   suggestions.   
9680: 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74       this.xToolt
9690: 69 70 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f  ip.appendChild(o
96a0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
96b0: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 69  teNode("div", {i
96c0: 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f  d: "grammalecte_
96d0: 74 6f 6f 6c 74 69 70 5f 73 75 67 67 5f 74 69 74  tooltip_sugg_tit
96e0: 6c 65 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74  le", textContent
96f0: 3a 20 22 53 55 47 47 45 53 54 49 4f 4e 53 e2 80  : "SUGGESTIONS..
9700: af 3a 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20  .:"}));.        
9710: 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67  this.xTooltipSug
9720: 67 42 6c 6f 63 6b 20 3d 20 6f 47 72 61 6d 6d 61  gBlock = oGramma
9730: 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65  lecte.createNode
9740: 28 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72  ("div", {id: "gr
9750: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
9760: 70 5f 73 75 67 67 5f 62 6c 6f 63 6b 22 7d 29 3b  p_sugg_block"});
9770: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54  .        this.xT
9780: 6f 6f 6c 74 69 70 2e 61 70 70 65 6e 64 43 68 69  ooltip.appendChi
9790: 6c 64 28 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70  ld(this.xTooltip
97a0: 53 75 67 67 42 6c 6f 63 6b 29 3b 0a 20 20 20 20  SuggBlock);.    
97b0: 20 20 20 20 2f 2f 20 61 63 74 69 6f 6e 73 0a 20      // actions. 
97c0: 20 20 20 20 20 20 20 6c 65 74 20 78 41 63 74 69         let xActi
97d0: 6f 6e 73 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  ons = oGrammalec
97e0: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
97f0: 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d 6d  iv", {id: "gramm
9800: 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 61  alecte_tooltip_a
9810: 63 74 69 6f 6e 73 22 7d 29 3b 0a 20 20 20 20 20  ctions"});.     
9820: 20 20 20 78 41 63 74 69 6f 6e 73 2e 61 70 70 65     xActions.appe
9830: 6e 64 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c  ndChild(oGrammal
9840: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
9850: 22 64 69 76 22 2c 20 7b 69 64 3a 20 22 67 72 61  "div", {id: "gra
9860: 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70  mmalecte_tooltip
9870: 5f 69 67 6e 6f 72 65 22 2c 20 74 65 78 74 43 6f  _ignore", textCo
9880: 6e 74 65 6e 74 3a 20 22 49 67 6e 6f 72 65 72 22  ntent: "Ignorer"
9890: 7d 29 29 3b 0a 20 20 20 20 20 20 20 20 78 41 63  }));.        xAc
98a0: 74 69 6f 6e 73 2e 61 70 70 65 6e 64 43 68 69 6c  tions.appendChil
98b0: 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  d(oGrammalecte.c
98c0: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
98d0: 20 7b 69 64 3a 20 22 67 72 61 6d 6d 61 6c 65 63   {id: "grammalec
98e0: 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c 22 2c  te_tooltip_url",
98f0: 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 56   textContent: "V
9900: 6f 75 6c 65 7a 2d 76 6f 75 73 20 65 6e 20 73 61  oulez-vous en sa
9910: 76 6f 69 72 20 70 6c 75 73 e2 80 af 3f e2 80 a6  voir plus...?...
9920: 22 7d 2c 20 7b 75 72 6c 3a 20 22 22 7d 29 29 3b  "}, {url: ""}));
9930: 0a 20 20 20 20 20 20 20 20 78 41 63 74 69 6f 6e  .        xAction
9940: 73 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47  s.appendChild(oG
9950: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
9960: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64  eNode("div", {id
9970: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74  : "grammalecte_t
9980: 6f 6f 6c 74 69 70 5f 64 62 5f 73 65 61 72 63 68  ooltip_db_search
9990: 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20  ", textContent: 
99a0: 22 20 e2 80 ba e2 80 ba e2 80 ba 20 62 61 73 65  " ......... base
99b0: 20 64 65 20 64 6f 6e 6e c3 a9 65 73 22 7d 2c 20   de donn..es"}, 
99c0: 7b 75 72 6c 3a 20 22 22 7d 29 29 3b 0a 20 20 20  {url: ""}));.   
99d0: 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74       this.xToolt
99e0: 69 70 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  ip.appendChild(x
99f0: 41 63 74 69 6f 6e 73 29 3b 0a 20 20 20 20 20 20  Actions);.      
9a00: 20 20 2f 2f 20 61 64 64 20 74 6f 6f 6c 74 69 70    // add tooltip
9a10: 20 74 6f 20 74 68 65 20 70 61 67 65 0a 20 20 20   to the page.   
9a20: 20 20 20 20 20 78 47 43 50 61 6e 65 6c 43 6f 6e       xGCPanelCon
9a30: 74 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  tent.appendChild
9a40: 28 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 29 3b  (this.xTooltip);
9a50: 0a 20 20 20 20 20 20 20 20 78 47 43 50 61 6e 65  .        xGCPane
9a60: 6c 43 6f 6e 74 65 6e 74 2e 61 70 70 65 6e 64 43  lContent.appendC
9a70: 68 69 6c 64 28 74 68 69 73 2e 78 54 6f 6f 6c 74  hild(this.xToolt
9a80: 69 70 41 72 72 6f 77 29 3b 0a 20 20 20 20 7d 0a  ipArrow);.    }.
9a90: 0a 20 20 20 20 73 68 6f 77 20 28 73 4e 6f 64 65  .    show (sNode
9aa0: 45 72 72 6f 72 49 64 29 20 7b 20 20 2f 2f 20 65  ErrorId) {  // e
9ab0: 72 72 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b  rr.        try {
9ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
9ad0: 20 78 4e 6f 64 65 45 72 72 20 3d 20 74 68 69 73   xNodeErr = this
9ae0: 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d  .xParent.getElem
9af0: 65 6e 74 42 79 49 64 28 73 4e 6f 64 65 45 72 72  entById(sNodeErr
9b00: 6f 72 49 64 29 3b 0a 20 20 20 20 20 20 20 20 20  orId);.         
9b10: 20 20 20 74 68 69 73 2e 73 45 72 72 6f 72 49 64     this.sErrorId
9b20: 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61   = xNodeErr.data
9b30: 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b 20 2f 2f  set.error_id; //
9b40: 20 77 65 20 73 74 6f 72 65 20 65 72 72 6f 72 5f   we store error_
9b50: 69 64 20 68 65 72 65 20 74 6f 20 6b 6e 6f 77 20  id here to know 
9b60: 69 66 20 73 70 65 6c 6c 5f 73 75 67 67 65 73 74  if spell_suggest
9b70: 69 6f 6e 73 20 61 72 65 20 67 69 76 65 6e 20 74  ions are given t
9b80: 6f 20 74 68 65 20 72 69 67 68 74 20 77 6f 72 64  o the right word
9b90: 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ..            le
9ba0: 74 20 6e 54 6f 6f 6c 74 69 70 4c 65 66 74 4c 69  t nTooltipLeftLi
9bb0: 6d 69 74 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63  mit = oGrammalec
9bc0: 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 67 65 74 57  te.oGCPanel.getW
9bd0: 69 64 74 68 28 29 20 2d 20 33 33 30 3b 20 2f 2f  idth() - 330; //
9be0: 20 70 61 72 61 67 72 61 70 68 20 77 69 64 74 68   paragraph width
9bf0: 20 2d 20 74 6f 6f 6c 74 69 70 20 77 69 64 74 68   - tooltip width
9c00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
9c10: 20 6e 41 72 72 6f 77 4c 69 6d 69 74 20 3d 20 6f   nArrowLimit = o
9c20: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50  Grammalecte.oGCP
9c30: 61 6e 65 6c 2e 67 65 74 57 69 64 74 68 28 29 20  anel.getWidth() 
9c40: 2d 20 32 30 3b 0a 20 20 20 20 20 20 20 20 20 20  - 20;.          
9c50: 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 41    this.xTooltipA
9c60: 72 72 6f 77 2e 73 74 79 6c 65 2e 74 6f 70 20 3d  rrow.style.top =
9c70: 20 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65   (xNodeErr.offse
9c80: 74 54 6f 70 20 2b 20 31 36 29 20 2b 20 22 70 78  tTop + 16) + "px
9c90: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  ";.            l
9ca0: 65 74 20 6e 55 73 65 66 75 6c 45 72 72 6f 72 57  et nUsefulErrorW
9cb0: 69 64 74 68 20 3d 20 28 28 78 4e 6f 64 65 45 72  idth = ((xNodeEr
9cc0: 72 2e 6f 66 66 73 65 74 4c 65 66 74 20 2b 20 78  r.offsetLeft + x
9cd0: 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74 57 69  NodeErr.offsetWi
9ce0: 64 74 68 29 20 3e 20 6e 41 72 72 6f 77 4c 69 6d  dth) > nArrowLim
9cf0: 69 74 29 20 3f 20 28 6e 41 72 72 6f 77 4c 69 6d  it) ? (nArrowLim
9d00: 69 74 20 2d 20 78 4e 6f 64 65 45 72 72 2e 6f 66  it - xNodeErr.of
9d10: 66 73 65 74 4c 65 66 74 29 20 3a 20 78 4e 6f 64  fsetLeft) : xNod
9d20: 65 45 72 72 2e 6f 66 66 73 65 74 57 69 64 74 68  eErr.offsetWidth
9d30: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
9d40: 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72 72 6f 77  is.xTooltipArrow
9d50: 2e 73 74 79 6c 65 2e 6c 65 66 74 20 3d 20 28 78  .style.left = (x
9d60: 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74 4c 65  NodeErr.offsetLe
9d70: 66 74 20 2b 20 4d 61 74 68 2e 66 6c 6f 6f 72 28  ft + Math.floor(
9d80: 28 6e 55 73 65 66 75 6c 45 72 72 6f 72 57 69 64  (nUsefulErrorWid
9d90: 74 68 20 2f 20 32 29 29 20 2d 20 34 29 20 2b 20  th / 2)) - 4) + 
9da0: 22 70 78 22 3b 20 2f 2f 20 34 20 69 73 20 68 61  "px"; // 4 is ha
9db0: 6c 66 20 74 68 65 20 77 69 64 74 68 20 6f 66 20  lf the width of 
9dc0: 74 68 65 20 61 72 72 6f 77 2e 0a 20 20 20 20 20  the arrow..     
9dd0: 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f         this.xToo
9de0: 6c 74 69 70 2e 73 74 79 6c 65 2e 74 6f 70 20 3d  ltip.style.top =
9df0: 20 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65   (xNodeErr.offse
9e00: 74 54 6f 70 20 2b 20 32 30 29 20 2b 20 22 70 78  tTop + 20) + "px
9e10: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ";.            t
9e20: 68 69 73 2e 78 54 6f 6f 6c 74 69 70 2e 73 74 79  his.xTooltip.sty
9e30: 6c 65 2e 6c 65 66 74 20 3d 20 28 78 4e 6f 64 65  le.left = (xNode
9e40: 45 72 72 2e 6f 66 66 73 65 74 4c 65 66 74 20 3e  Err.offsetLeft >
9e50: 20 6e 54 6f 6f 6c 74 69 70 4c 65 66 74 4c 69 6d   nTooltipLeftLim
9e60: 69 74 29 20 3f 20 6e 54 6f 6f 6c 74 69 70 4c 65  it) ? nTooltipLe
9e70: 66 74 4c 69 6d 69 74 20 2b 20 22 70 78 22 20 3a  ftLimit + "px" :
9e80: 20 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74   xNodeErr.offset
9e90: 4c 65 66 74 20 2b 20 22 70 78 22 3b 0a 20 20 20  Left + "px";.   
9ea0: 20 20 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f           if (xNo
9eb0: 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72  deErr.dataset.er
9ec0: 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22 67 72  ror_type === "gr
9ed0: 61 6d 6d 61 72 22 29 20 7b 0a 20 20 20 20 20 20  ammar") {.      
9ee0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 67 72 61            // gra
9ef0: 6d 6d 61 72 20 65 72 72 6f 72 0a 20 20 20 20 20  mmar error.     
9f00: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
9f10: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
9f20: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
9f30: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 64 62 5f 73  cte_tooltip_db_s
9f40: 65 61 72 63 68 22 29 2e 73 74 79 6c 65 2e 64 69  earch").style.di
9f50: 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a  splay = "none";.
9f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f70: 69 66 20 28 78 4e 6f 64 65 45 72 72 2e 64 61 74  if (xNodeErr.dat
9f80: 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65 2e  aset.gc_message.
9f90: 69 6e 63 6c 75 64 65 73 28 22 20 23 23 22 29 29  includes(" ##"))
9fa0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
9fb0: 20 20 20 20 20 20 20 74 68 69 73 2e 62 44 65 62         this.bDeb
9fc0: 75 67 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20  ug = true;.     
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9fe0: 2f 20 64 69 73 70 6c 61 79 20 72 75 6c 65 20 69  / display rule i
9ff0: 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d.              
a000: 20 20 20 20 20 20 6c 65 74 20 6e 20 3d 20 78 4e        let n = xN
a010: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67  odeErr.dataset.g
a020: 63 5f 6d 65 73 73 61 67 65 2e 69 6e 64 65 78 4f  c_message.indexO
a030: 66 28 22 20 23 23 22 29 3b 0a 20 20 20 20 20 20  f(" ##");.      
a040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
a050: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
a060: 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d  ementById("gramm
a070: 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6d  alecte_tooltip_m
a080: 65 73 73 61 67 65 22 29 2e 74 65 78 74 43 6f 6e  essage").textCon
a090: 74 65 6e 74 20 3d 20 78 4e 6f 64 65 45 72 72 2e  tent = xNodeErr.
a0a0: 64 61 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61  dataset.gc_messa
a0b0: 67 65 2e 73 6c 69 63 65 28 30 2c 20 6e 29 3b 0a  ge.slice(0, n);.
a0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0d0: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
a0e0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
a0f0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f  "grammalecte_too
a100: 6c 74 69 70 5f 72 75 6c 65 5f 69 64 22 29 2e 74  ltip_rule_id").t
a110: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 52 c3  extContent = "R.
a120: a8 67 6c 65 e2 80 af 3a 20 22 20 2b 20 78 4e 6f  .gle...: " + xNo
a130: 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63  deErr.dataset.gc
a140: 5f 6d 65 73 73 61 67 65 2e 73 6c 69 63 65 28 6e  _message.slice(n
a150: 2b 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  +2);.           
a160: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
a170: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
a180: 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74  ById("grammalect
a190: 65 5f 74 6f 6f 6c 74 69 70 5f 72 75 6c 65 5f 69  e_tooltip_rule_i
a1a0: 64 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  d").style.displa
a1b0: 79 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20 20 20  y = "block";.   
a1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
a1d0: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
a1e0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 62            this.b
a1f0: 44 65 62 75 67 20 3d 20 66 61 6c 73 65 3b 0a 20  Debug = false;. 
a200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a210: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
a220: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
a230: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
a240: 74 69 70 5f 6d 65 73 73 61 67 65 22 29 2e 74 65  tip_message").te
a250: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 78 4e 6f 64  xtContent = xNod
a260: 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63 5f  eErr.dataset.gc_
a270: 6d 65 73 73 61 67 65 3b 0a 20 20 20 20 20 20 20  message;.       
a280: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
a290: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
a2a0: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
a2b0: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 72 75  lecte_tooltip_ru
a2c0: 6c 65 5f 69 64 22 29 2e 73 74 79 6c 65 2e 64 69  le_id").style.di
a2d0: 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a  splay = "none";.
a2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2f0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
a300: 20 20 69 66 20 28 78 4e 6f 64 65 45 72 72 2e 64    if (xNodeErr.d
a310: 61 74 61 73 65 74 2e 67 63 5f 75 72 6c 20 21 3d  ataset.gc_url !=
a320: 20 22 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20   "") {.         
a330: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a340: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
a350: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
a360: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c 22  cte_tooltip_url"
a370: 29 2e 64 61 74 61 73 65 74 2e 75 72 6c 20 3d 20  ).dataset.url = 
a380: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
a390: 2e 67 63 5f 75 72 6c 3b 0a 20 20 20 20 20 20 20  .gc_url;.       
a3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
a3b0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
a3c0: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
a3d0: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72  lecte_tooltip_ur
a3e0: 6c 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  l").style.displa
a3f0: 79 20 3d 20 22 69 6e 6c 69 6e 65 22 3b 0a 20 20  y = "inline";.  
a400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
a410: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
a420: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a430: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
a440: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
a450: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c 22  cte_tooltip_url"
a460: 29 2e 64 61 74 61 73 65 74 2e 75 72 6c 20 3d 20  ).dataset.url = 
a470: 22 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  "";.            
a480: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50 61          this.xPa
a490: 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  rent.getElementB
a4a0: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
a4b0: 5f 74 6f 6f 6c 74 69 70 5f 75 72 6c 22 29 2e 73  _tooltip_url").s
a4c0: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22  tyle.display = "
a4d0: 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 20  none";.         
a4e0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
a4f0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
a500: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
a510: 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74  ById("grammalect
a520: 65 5f 74 6f 6f 6c 74 69 70 5f 69 67 6e 6f 72 65  e_tooltip_ignore
a530: 22 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72  ").dataset.error
a540: 5f 69 64 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64  _id = xNodeErr.d
a550: 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b  ataset.error_id;
a560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a570: 20 6c 65 74 20 69 53 75 67 67 20 3d 20 30 3b 0a   let iSugg = 0;.
a580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a590: 74 68 69 73 2e 63 6c 65 61 72 53 75 67 67 65 73  this.clearSugges
a5a0: 74 69 6f 6e 42 6c 6f 63 6b 28 29 3b 0a 20 20 20  tionBlock();.   
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
a5c0: 28 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65  (xNodeErr.datase
a5d0: 74 2e 73 75 67 67 65 73 74 69 6f 6e 73 2e 6c 65  t.suggestions.le
a5e0: 6e 67 74 68 20 3e 20 30 29 20 7b 0a 20 20 20 20  ngth > 0) {.    
a5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a600: 66 6f 72 20 28 6c 65 74 20 73 53 75 67 67 20 6f  for (let sSugg o
a610: 66 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73  f xNodeErr.datas
a620: 65 74 2e 73 75 67 67 65 73 74 69 6f 6e 73 2e 73  et.suggestions.s
a630: 70 6c 69 74 28 22 7c 22 29 29 20 7b 0a 20 20 20  plit("|")) {.   
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a650: 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74       this.xToolt
a660: 69 70 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65  ipSuggBlock.appe
a670: 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 5f 63 72  ndChild(this._cr
a680: 65 61 74 65 53 75 67 67 65 73 74 69 6f 6e 28 78  eateSuggestion(x
a690: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
a6a0: 65 72 72 6f 72 5f 69 64 2c 20 30 2c 20 69 53 75  error_id, 0, iSu
a6b0: 67 67 2c 20 73 53 75 67 67 29 29 3b 0a 20 20 20  gg, sSugg));.   
a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6d0: 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74       this.xToolt
a6e0: 69 70 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65  ipSuggBlock.appe
a6f0: 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74  ndChild(document
a700: 2e 63 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28  .createTextNode(
a710: 22 20 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20  " "));.         
a720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a730: 53 75 67 67 20 2b 3d 20 31 3b 0a 20 20 20 20 20  Sugg += 1;.     
a740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
a750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a760: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
a770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
a780: 69 73 2e 78 54 6f 6f 6c 74 69 70 53 75 67 67 42  is.xTooltipSuggB
a790: 6c 6f 63 6b 2e 74 65 78 74 43 6f 6e 74 65 6e 74  lock.textContent
a7a0: 20 3d 20 22 41 75 63 75 6e 65 2e 22 3b 0a 20 20   = "Aucune.";.  
a7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
a7c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
a7d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 78 4e            if (xN
a7e0: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65  odeErr.dataset.e
a7f0: 72 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22 73  rror_type === "s
a800: 70 65 6c 6c 69 6e 67 22 29 20 7b 0a 20 20 20 20  pelling") {.    
a810: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73              // s
a820: 70 65 6c 6c 69 6e 67 20 6d 69 73 74 61 6b 65 0a  pelling mistake.
a830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a840: 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74  this.xParent.get
a850: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61  ElementById("gra
a860: 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70  mmalecte_tooltip
a870: 5f 6d 65 73 73 61 67 65 22 29 2e 74 65 78 74 43  _message").textC
a880: 6f 6e 74 65 6e 74 20 3d 20 22 4d 6f 74 20 69 6e  ontent = "Mot in
a890: 63 6f 6e 6e 75 20 64 75 20 64 69 63 74 69 6f 6e  connu du diction
a8a0: 6e 61 69 72 65 2e 22 3b 0a 20 20 20 20 20 20 20  naire.";.       
a8b0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 50           this.xP
a8c0: 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  arent.getElement
a8d0: 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74  ById("grammalect
a8e0: 65 5f 74 6f 6f 6c 74 69 70 5f 69 67 6e 6f 72 65  e_tooltip_ignore
a8f0: 22 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72  ").dataset.error
a900: 5f 69 64 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64  _id = xNodeErr.d
a910: 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 3b  ataset.error_id;
a920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a930: 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67 65   this.xParent.ge
a940: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 72  tElementById("gr
a950: 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69  ammalecte_toolti
a960: 70 5f 72 75 6c 65 5f 69 64 22 29 2e 73 74 79 6c  p_rule_id").styl
a970: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e  e.display = "non
a980: 65 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e";.            
a990: 20 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74      this.xParent
a9a0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
a9b0: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f  "grammalecte_too
a9c0: 6c 74 69 70 5f 75 72 6c 22 29 2e 64 61 74 61 73  ltip_url").datas
a9d0: 65 74 2e 75 72 6c 20 3d 20 22 22 3b 0a 20 20 20  et.url = "";.   
a9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
a9f0: 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65  s.xParent.getEle
aa00: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
aa10: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 75 72  lecte_tooltip_ur
aa20: 6c 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  l").style.displa
aa30: 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20  y = "none";.    
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
aa50: 74 68 69 73 2e 62 44 65 62 75 67 29 20 7b 0a 20  this.bDebug) {. 
aa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa70: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
aa80: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
aa90: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
aaa0: 74 69 70 5f 64 62 5f 73 65 61 72 63 68 22 29 2e  tip_db_search").
aab0: 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20  style.display = 
aac0: 22 69 6e 6c 69 6e 65 22 3b 0a 20 20 20 20 20 20  "inline";.      
aad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
aae0: 69 73 2e 78 50 61 72 65 6e 74 2e 67 65 74 45 6c  is.xParent.getEl
aaf0: 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d  ementById("gramm
ab00: 61 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 64  alecte_tooltip_d
ab10: 62 5f 73 65 61 72 63 68 22 29 2e 64 61 74 61 73  b_search").datas
ab20: 65 74 2e 75 72 6c 20 3d 20 22 68 74 74 70 73 3a  et.url = "https:
ab30: 2f 2f 67 72 61 6d 6d 61 6c 65 63 74 65 2e 6e 65  //grammalecte.ne
ab40: 74 2f 64 69 63 74 69 6f 6e 61 72 79 2e 70 68 70  t/dictionary.php
ab50: 3f 70 72 6a 3d 66 72 26 6c 65 6d 6d 61 3d 22 2b  ?prj=fr&lemma="+
ab60: 78 4e 6f 64 65 45 72 72 2e 74 65 78 74 43 6f 6e  xNodeErr.textCon
ab70: 74 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20  tent;.          
ab80: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aba0: 20 20 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e     this.xParent.
abb0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
abc0: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c  grammalecte_tool
abd0: 74 69 70 5f 64 62 5f 73 65 61 72 63 68 22 29 2e  tip_db_search").
abe0: 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20  style.display = 
abf0: 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20  "none";.        
ac00: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
ac10: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
ac20: 6c 65 61 72 53 75 67 67 65 73 74 69 6f 6e 42 6c  learSuggestionBl
ac30: 6f 63 6b 28 29 3b 0a 20 20 20 20 20 20 20 20 20  ock();.         
ac40: 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f         this.xToo
ac50: 6c 74 69 70 53 75 67 67 42 6c 6f 63 6b 2e 74 65  ltipSuggBlock.te
ac60: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 52 65 63  xtContent = "Rec
ac70: 68 65 72 63 68 65 20 64 65 20 67 72 61 70 68 69  herche de graphi
ac80: 65 73 20 70 6f 73 73 69 62 6c 65 73 e2 80 a6 22  es possibles..."
ac90: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
aca0: 20 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f    xGrammalectePo
acb0: 72 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b  rt.postMessage({
acc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
acd0: 20 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22       sCommand: "
ace0: 67 65 74 53 70 65 6c 6c 53 75 67 67 65 73 74 69  getSpellSuggesti
acf0: 6f 6e 73 22 2c 0a 20 20 20 20 20 20 20 20 20 20  ons",.          
ad00: 20 20 20 20 20 20 20 20 20 20 64 50 61 72 61 6d            dParam
ad10: 3a 20 7b 73 57 6f 72 64 3a 20 78 4e 6f 64 65 45  : {sWord: xNodeE
ad20: 72 72 2e 74 65 78 74 43 6f 6e 74 65 6e 74 7d 2c  rr.textContent},
ad30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad40: 20 20 20 20 20 64 49 6e 66 6f 3a 20 7b 73 45 72       dInfo: {sEr
ad50: 72 6f 72 49 64 3a 20 78 4e 6f 64 65 45 72 72 2e  rorId: xNodeErr.
ad60: 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64  dataset.error_id
ad70: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
ad80: 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
ad90: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
ada0: 74 68 69 73 2e 78 54 6f 6f 6c 74 69 70 41 72 72  this.xTooltipArr
adb0: 6f 77 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79  ow.style.display
adc0: 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20 20 20 20   = "block";.    
add0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f          this.xTo
ade0: 6f 6c 74 69 70 2e 73 74 79 6c 65 2e 64 69 73 70  oltip.style.disp
adf0: 6c 61 79 20 3d 20 22 62 6c 6f 63 6b 22 3b 0a 20  lay = "block";. 
ae00: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
ae10: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
ae20: 20 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72           showErr
ae30: 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20 7d  or(e);.        }
ae40: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6c 65 61  .    }..    clea
ae50: 72 53 75 67 67 65 73 74 69 6f 6e 42 6c 6f 63 6b  rSuggestionBlock
ae60: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68   () {.        wh
ae70: 69 6c 65 20 28 74 68 69 73 2e 78 54 6f 6f 6c 74  ile (this.xToolt
ae80: 69 70 53 75 67 67 42 6c 6f 63 6b 2e 66 69 72 73  ipSuggBlock.firs
ae90: 74 43 68 69 6c 64 29 20 7b 0a 20 20 20 20 20 20  tChild) {.      
aea0: 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c        this.xTool
aeb0: 74 69 70 53 75 67 67 42 6c 6f 63 6b 2e 72 65 6d  tipSuggBlock.rem
aec0: 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 78 54  oveChild(this.xT
aed0: 6f 6f 6c 74 69 70 53 75 67 67 42 6c 6f 63 6b 2e  ooltipSuggBlock.
aee0: 66 69 72 73 74 43 68 69 6c 64 29 3b 0a 20 20 20  firstChild);.   
aef0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
af00: 20 20 73 65 74 54 6f 6f 6c 74 69 70 43 6f 6c 6f    setTooltipColo
af10: 72 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 2f  r () {.        /
af20: 2f 20 74 6f 64 6f 0a 20 20 20 20 7d 0a 0a 20 20  / todo.    }..  
af30: 20 20 68 69 64 65 20 28 29 20 7b 0a 20 20 20 20    hide () {.    
af40: 20 20 20 20 74 68 69 73 2e 78 54 6f 6f 6c 74 69      this.xToolti
af50: 70 41 72 72 6f 77 2e 73 74 79 6c 65 2e 64 69 73  pArrow.style.dis
af60: 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20  play = "none";. 
af70: 20 20 20 20 20 20 20 74 68 69 73 2e 78 54 6f 6f         this.xToo
af80: 6c 74 69 70 2e 73 74 79 6c 65 2e 64 69 73 70 6c  ltip.style.displ
af90: 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20  ay = "none";.   
afa0: 20 7d 0a 0a 20 20 20 20 5f 63 72 65 61 74 65 53   }..    _createS
afb0: 75 67 67 65 73 74 69 6f 6e 20 28 73 45 72 72 6f  uggestion (sErro
afc0: 72 49 64 2c 20 69 53 75 67 67 42 6c 6f 63 6b 2c  rId, iSuggBlock,
afd0: 20 69 53 75 67 67 2c 20 73 53 75 67 67 29 20 7b   iSugg, sSugg) {
afe0: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f  .        let xNo
aff0: 64 65 53 75 67 67 20 3d 20 64 6f 63 75 6d 65 6e  deSugg = documen
b000: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  t.createElement(
b010: 22 64 69 76 22 29 3b 0a 20 20 20 20 20 20 20 20  "div");.        
b020: 78 4e 6f 64 65 53 75 67 67 2e 69 64 20 3d 20 22  xNodeSugg.id = "
b030: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 73 75 67 67  grammalecte_sugg
b040: 22 20 2b 20 73 45 72 72 6f 72 49 64 20 2b 20 22  " + sErrorId + "
b050: 2d 22 20 2b 20 69 53 75 67 67 42 6c 6f 63 6b 2e  -" + iSuggBlock.
b060: 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 2d 22  toString() + "-"
b070: 20 2b 20 69 53 75 67 67 2e 74 6f 53 74 72 69 6e   + iSugg.toStrin
b080: 67 28 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f  g();.        xNo
b090: 64 65 53 75 67 67 2e 63 6c 61 73 73 4e 61 6d 65  deSugg.className
b0a0: 20 3d 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f   = "grammalecte_
b0b0: 74 6f 6f 6c 74 69 70 5f 73 75 67 67 22 3b 0a 20  tooltip_sugg";. 
b0c0: 20 20 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67         xNodeSugg
b0d0: 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69  .dataset.error_i
b0e0: 64 20 3d 20 73 45 72 72 6f 72 49 64 3b 0a 20 20  d = sErrorId;.  
b0f0: 20 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e        xNodeSugg.
b100: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 73 53  textContent = sS
b110: 75 67 67 3b 0a 20 20 20 20 20 20 20 20 72 65 74  ugg;.        ret
b120: 75 72 6e 20 78 4e 6f 64 65 53 75 67 67 3b 0a 20  urn xNodeSugg;. 
b130: 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 53 70 65     }..    setSpe
b140: 6c 6c 53 75 67 67 65 73 74 69 6f 6e 73 46 6f 72  llSuggestionsFor
b150: 20 28 73 57 6f 72 64 2c 20 61 53 75 67 67 2c 20   (sWord, aSugg, 
b160: 69 53 75 67 67 42 6c 6f 63 6b 2c 20 73 45 72 72  iSuggBlock, sErr
b170: 6f 72 49 64 29 20 7b 0a 20 20 20 20 20 20 20 20  orId) {.        
b180: 2f 2f 20 73 70 65 6c 6c 20 63 68 65 63 6b 69 6e  // spell checkin
b190: 67 20 73 75 67 67 65 73 74 69 6f 6e 73 0a 20 20  g suggestions.  
b1a0: 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20        try {.    
b1b0: 20 20 20 20 20 20 20 20 69 66 20 28 73 45 72 72          if (sErr
b1c0: 6f 72 49 64 20 3d 3d 3d 20 74 68 69 73 2e 73 45  orId === this.sE
b1d0: 72 72 6f 72 49 64 29 20 7b 0a 20 20 20 20 20 20  rrorId) {.      
b1e0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 53            let xS
b1f0: 75 67 67 42 6c 6f 63 6b 20 3d 20 74 68 69 73 2e  uggBlock = this.
b200: 78 50 61 72 65 6e 74 2e 67 65 74 45 6c 65 6d 65  xParent.getEleme
b210: 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c 65  ntById("grammale
b220: 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 73 75 67 67  cte_tooltip_sugg
b230: 5f 62 6c 6f 63 6b 22 29 3b 0a 20 20 20 20 20 20  _block");.      
b240: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 53            if (iS
b250: 75 67 67 42 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b  uggBlock == 0) {
b260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b270: 20 20 20 20 20 78 53 75 67 67 42 6c 6f 63 6b 2e       xSuggBlock.
b280: 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22  textContent = ""
b290: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
b2a0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
b2b0: 20 20 20 20 69 66 20 28 21 61 53 75 67 67 20 7c      if (!aSugg |
b2c0: 7c 20 61 53 75 67 67 2e 6c 65 6e 67 74 68 20 3d  | aSugg.length =
b2d0: 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20  = 0) {.         
b2e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
b2f0: 53 75 67 67 42 6c 6f 63 6b 20 3d 3d 20 30 29 20  SuggBlock == 0) 
b300: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
b310: 20 20 20 20 20 20 20 20 20 20 78 53 75 67 67 42            xSuggB
b320: 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64  lock.appendChild
b330: 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65  (document.create
b340: 54 65 78 74 4e 6f 64 65 28 22 41 75 63 75 6e 65  TextNode("Aucune
b350: 2e 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ."));.          
b360: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
b370: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
b380: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
b390: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 53 75           if (iSu
b3a0: 67 67 42 6c 6f 63 6b 20 3e 20 30 29 20 7b 0a 20  ggBlock > 0) {. 
b3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3c0: 20 20 20 20 20 20 20 78 53 75 67 67 42 6c 6f 63         xSuggBloc
b3d0: 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6f 47  k.appendChild(oG
b3e0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
b3f0: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63 6c  eNode("div", {cl
b400: 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d 61  assName: "gramma
b410: 6c 65 63 74 65 5f 74 6f 6f 6c 74 69 70 5f 6f 74  lecte_tooltip_ot
b420: 68 65 72 5f 73 75 67 67 5f 74 69 74 6c 65 22 2c  her_sugg_title",
b430: 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 41   textContent: "A
b440: 55 54 52 45 53 20 53 55 47 47 45 53 54 49 4f 4e  UTRES SUGGESTION
b450: 53 e2 80 af 3a 22 7d 29 29 3b 0a 20 20 20 20 20  S...:"}));.     
b460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
b470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b480: 20 20 20 20 20 6c 65 74 20 69 53 75 67 67 20 3d       let iSugg =
b490: 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   0;.            
b4a0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74          for (let
b4b0: 20 73 53 75 67 67 20 6f 66 20 61 53 75 67 67 29   sSugg of aSugg)
b4c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
b4d0: 20 20 20 20 20 20 20 20 20 20 20 78 53 75 67 67             xSugg
b4e0: 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c  Block.appendChil
b4f0: 64 28 74 68 69 73 2e 5f 63 72 65 61 74 65 53 75  d(this._createSu
b500: 67 67 65 73 74 69 6f 6e 28 73 45 72 72 6f 72 49  ggestion(sErrorI
b510: 64 2c 20 69 53 75 67 67 42 6c 6f 63 6b 2c 20 69  d, iSuggBlock, i
b520: 53 75 67 67 2c 20 73 53 75 67 67 29 29 3b 0a 20  Sugg, sSugg));. 
b530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b540: 20 20 20 20 20 20 20 78 53 75 67 67 42 6c 6f 63         xSuggBloc
b550: 6b 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 64 6f  k.appendChild(do
b560: 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54 65 78  cument.createTex
b570: 74 4e 6f 64 65 28 22 20 22 29 29 3b 0a 20 20 20  tNode(" "));.   
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b590: 20 20 20 20 20 69 53 75 67 67 20 2b 3d 20 31 3b       iSugg += 1;
b5a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b5b0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
b5c0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
b5d0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d       }.        }
b5e0: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
b5f0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
b600: 20 6c 65 74 20 78 53 75 67 67 42 6c 6f 63 6b 20   let xSuggBlock 
b610: 3d 20 74 68 69 73 2e 78 50 61 72 65 6e 74 2e 67  = this.xParent.g
b620: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67  etElementById("g
b630: 72 61 6d 6d 61 6c 65 63 74 65 5f 74 6f 6f 6c 74  rammalecte_toolt
b640: 69 70 5f 73 75 67 67 5f 62 6c 6f 63 6b 22 29 3b  ip_sugg_block");
b650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 53 75  .            xSu
b660: 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68  ggBlock.appendCh
b670: 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65  ild(document.cre
b680: 61 74 65 54 65 78 74 4e 6f 64 65 28 22 23 20 4f  ateTextNode("# O
b690: 75 70 73 2e 20 4c 65 20 6d c3 a9 63 61 6e 69 73  ups. Le m..canis
b6a0: 6d 65 20 64 65 20 73 75 67 67 65 73 74 69 6f 6e  me de suggestion
b6b0: 20 6f 72 74 68 6f 67 72 61 70 68 69 71 75 65 20   orthographique 
b6c0: 61 20 72 65 6e 63 6f 6e 74 72 c3 a9 20 75 6e 20  a rencontr.. un 
b6d0: 62 75 67 e2 80 a6 20 28 43 65 20 6d 6f 64 75 6c  bug... (Ce modul
b6e0: 65 20 65 73 74 20 65 6e 63 6f 72 65 20 65 6e 20  e est encore en 
b6f0: 70 68 61 73 65 20 ce b2 2e 29 22 29 29 3b 0a 20  phase ...)"));. 
b700: 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 45             showE
b710: 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20  rror(e);.       
b720: 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 63 6c 61   }.    }.}...cla
b730: 73 73 20 47 72 61 6d 6d 61 6c 65 63 74 65 54 65  ss GrammalecteTe
b740: 78 74 43 6f 6e 74 72 6f 6c 20 7b 0a 0a 20 20 20  xtControl {..   
b750: 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 28 29 20   constructor () 
b760: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  {.        this.x
b770: 4e 6f 64 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20  Node = null;.   
b780: 20 20 20 20 20 74 68 69 73 2e 64 50 61 72 61 67       this.dParag
b790: 72 61 70 68 20 3d 20 6e 65 77 20 4d 61 70 28 29  raph = new Map()
b7a0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 62  ;.        this.b
b7b0: 54 65 78 74 41 72 65 61 20 3d 20 6e 75 6c 6c 3b  TextArea = null;
b7c0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 4e  .    }..    setN
b7d0: 6f 64 65 20 28 78 4e 6f 64 65 29 20 7b 0a 20 20  ode (xNode) {.  
b7e0: 20 20 20 20 20 20 74 68 69 73 2e 63 6c 65 61 72        this.clear
b7f0: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
b800: 2e 78 4e 6f 64 65 20 3d 20 78 4e 6f 64 65 3b 0a  .xNode = xNode;.
b810: 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 54 65          this.bTe
b820: 78 74 41 72 65 61 20 3d 20 28 78 4e 6f 64 65 2e  xtArea = (xNode.
b830: 74 61 67 4e 61 6d 65 20 3d 3d 20 22 54 45 58 54  tagName == "TEXT
b840: 41 52 45 41 22 20 7c 7c 20 78 4e 6f 64 65 2e 74  AREA" || xNode.t
b850: 61 67 4e 61 6d 65 20 3d 3d 20 22 49 4e 50 55 54  agName == "INPUT
b860: 22 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ");.        if (
b870: 21 74 68 69 73 2e 62 54 65 78 74 41 72 65 61 29  !this.bTextArea)
b880: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f   {.            o
b890: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50  Grammalecte.oGCP
b8a0: 61 6e 65 6c 2e 73 68 6f 77 4d 65 73 73 61 67 65  anel.showMessage
b8b0: 28 22 4c 61 20 7a 6f 6e 65 20 64 65 20 74 65 78  ("La zone de tex
b8c0: 74 65 20 61 6e 61 6c 79 73 c3 a9 65 20 65 73 74  te analys..e est
b8d0: 20 75 6e 20 63 68 61 6d 70 20 74 65 78 74 75 65   un champ textue
b8e0: 6c 20 65 6e 72 69 63 68 69 20 73 75 73 63 65 70  l enrichi suscep
b8f0: 74 69 62 6c 65 20 64 65 20 63 6f 6e 74 65 6e 69  tible de conteni
b900: 72 20 64 65 73 20 c3 a9 6c c3 a9 6d 65 6e 74 73  r des ..l..ments
b910: 20 6e 6f 6e 20 74 65 78 74 75 65 6c 73 20 71 75   non textuels qu
b920: 69 20 73 65 72 6f 6e 74 20 65 66 66 61 63 c3 a9  i seront effac..
b930: 73 20 6c 6f 72 73 20 64 65 20 6c 61 20 63 6f 72  s lors de la cor
b940: 72 65 63 74 69 6f 6e 2e 22 29 3b 0a 20 20 20 20  rection.");.    
b950: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68      }.        th
b960: 69 73 2e 78 4e 6f 64 65 2e 64 69 73 61 62 6c 65  is.xNode.disable
b970: 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20  d = true;.      
b980: 20 20 74 68 69 73 2e 6c 6f 61 64 54 65 78 74 28    this.loadText(
b990: 28 74 68 69 73 2e 62 54 65 78 74 41 72 65 61 29  (this.bTextArea)
b9a0: 20 3f 20 74 68 69 73 2e 78 4e 6f 64 65 2e 76 61   ? this.xNode.va
b9b0: 6c 75 65 20 3a 20 74 68 69 73 2e 78 4e 6f 64 65  lue : this.xNode
b9c0: 2e 69 6e 6e 65 72 54 65 78 74 29 3b 0a 20 20 20  .innerText);.   
b9d0: 20 7d 0a 0a 20 20 20 20 73 65 74 54 65 78 74 20   }..    setText 
b9e0: 28 73 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20  (sText) {.      
b9f0: 20 20 74 68 69 73 2e 63 6c 65 61 72 28 29 3b 0a    this.clear();.
ba00: 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c          oGrammal
ba10: 65 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 73 68  ecte.oGCPanel.sh
ba20: 6f 77 4d 65 73 73 61 67 65 28 22 4c 65 20 74 65  owMessage("Le te
ba30: 78 74 65 20 61 6e 61 6c 79 73 c3 a9 20 6e e2 80  xte analys.. n..
ba40: 99 61 70 70 61 72 74 69 65 6e 74 20 70 61 73 20  .appartient pas 
ba50: c3 a0 20 75 6e 20 63 68 61 6d 70 20 74 65 78 74  .. un champ text
ba60: 75 65 6c 20 64 c3 a9 66 69 6e 69 2e 20 4c 65 73  uel d..fini. Les
ba70: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 6e   modifications n
ba80: 65 20 73 65 72 6f 6e 74 20 70 61 73 20 72 c3 a9  e seront pas r..
ba90: 70 65 72 63 75 74 c3 a9 65 73 20 73 75 72 20 6c  percut..es sur l
baa0: 61 20 7a 6f 6e 65 20 64 e2 80 99 6f c3 b9 20 6c  a zone d...o.. l
bab0: 65 20 74 65 78 74 65 20 61 20 c3 a9 74 c3 a9 20  e texte a ..t.. 
bac0: 65 78 74 72 61 69 74 2e 20 4c e2 80 99 65 6e 73  extrait. L...ens
bad0: 65 6d 62 6c 65 20 64 75 20 74 65 78 74 65 20 63  emble du texte c
bae0: 6f 72 72 69 67 c3 a9 20 65 73 74 20 72 c3 a9 63  orrig.. est r..c
baf0: 75 70 c3 a9 72 61 62 6c 65 20 61 76 65 63 20 6c  up..rable avec l
bb00: 65 20 62 6f 75 74 6f 6e 20 f0 9f 93 8b 2e 22 29  e bouton .....")
bb10: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c  ;.        this.l
bb20: 6f 61 64 54 65 78 74 28 73 54 65 78 74 29 3b 0a  oadText(sText);.
bb30: 20 20 20 20 7d 0a 0a 20 20 20 20 63 6c 65 61 72      }..    clear
bb40: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66   () {.        if
bb50: 20 28 74 68 69 73 2e 78 4e 6f 64 65 20 21 3d 3d   (this.xNode !==
bb60: 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20   null) {.       
bb70: 20 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e       this.xNode.
bb80: 64 69 73 61 62 6c 65 64 20 3d 20 66 61 6c 73 65  disabled = false
bb90: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
bba0: 69 73 2e 62 54 65 78 74 41 72 65 61 20 3d 20 66  is.bTextArea = f
bbb0: 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20  alse;.          
bbc0: 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d 20 6e    this.xNode = n
bbd0: 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  ull;.        }. 
bbe0: 20 20 20 20 20 20 20 74 68 69 73 2e 64 50 61 72         this.dPar
bbf0: 61 67 72 61 70 68 2e 63 6c 65 61 72 28 29 3b 0a  agraph.clear();.
bc00: 20 20 20 20 7d 0a 0a 20 20 20 20 67 65 74 54 65      }..    getTe
bc10: 78 74 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  xt () {.        
bc20: 6c 65 74 20 73 54 65 78 74 20 3d 20 22 22 3b 0a  let sText = "";.
bc30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 50 61          this.dPa
bc40: 72 61 67 72 61 70 68 2e 66 6f 72 45 61 63 68 28  ragraph.forEach(
bc50: 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 2c 20 6b  function (val, k
bc60: 65 79 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ey) {.          
bc70: 20 20 73 54 65 78 74 20 2b 3d 20 76 61 6c 20 2b    sText += val +
bc80: 20 22 5c 6e 22 3b 0a 20 20 20 20 20 20 20 20 7d   "\n";.        }
bc90: 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  );.        retur
bca0: 6e 20 73 54 65 78 74 2e 73 6c 69 63 65 28 30 2c  n sText.slice(0,
bcb0: 2d 31 29 2e 6e 6f 72 6d 61 6c 69 7a 65 28 22 4e  -1).normalize("N
bcc0: 46 43 22 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  FC");.    }..   
bcd0: 20 73 65 74 50 61 72 61 67 72 61 70 68 20 28 69   setParagraph (i
bce0: 50 61 72 61 67 72 61 70 68 2c 20 73 54 65 78 74  Paragraph, sText
bcf0: 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ) {.        this
bd00: 2e 64 50 61 72 61 67 72 61 70 68 2e 73 65 74 28  .dParagraph.set(
bd10: 69 50 61 72 61 67 72 61 70 68 2c 20 73 54 65 78  iParagraph, sTex
bd20: 74 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6c  t);.    }..    l
bd30: 6f 61 64 54 65 78 74 20 28 73 54 65 78 74 29 20  oadText (sText) 
bd40: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79  {.        if (ty
bd50: 70 65 6f 66 28 73 54 65 78 74 29 20 3d 3d 3d 20  peof(sText) === 
bd60: 22 73 74 72 69 6e 67 22 29 20 7b 0a 20 20 20 20  "string") {.    
bd70: 20 20 20 20 20 20 20 20 6c 65 74 20 69 20 3d 20          let i = 
bd80: 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  0;.            l
bd90: 65 74 20 69 53 74 61 72 74 20 3d 20 30 3b 0a 20  et iStart = 0;. 
bda0: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 69             let i
bdb0: 45 6e 64 20 3d 20 30 3b 0a 20 20 20 20 20 20 20  End = 0;.       
bdc0: 20 20 20 20 20 73 54 65 78 74 20 3d 20 73 54 65       sText = sTe
bdd0: 78 74 2e 72 65 70 6c 61 63 65 28 2f 5c 72 5c 6e  xt.replace(/\r\n
bde0: 2f 67 2c 20 22 5c 6e 22 29 2e 72 65 70 6c 61 63  /g, "\n").replac
bdf0: 65 28 2f 5c 72 2f 67 2c 20 22 5c 6e 22 29 2e 6e  e(/\r/g, "\n").n
be00: 6f 72 6d 61 6c 69 7a 65 28 22 4e 46 43 22 29 3b  ormalize("NFC");
be10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69  .            whi
be20: 6c 65 20 28 28 69 45 6e 64 20 3d 20 73 54 65 78  le ((iEnd = sTex
be30: 74 2e 69 6e 64 65 78 4f 66 28 22 5c 6e 22 2c 20  t.indexOf("\n", 
be40: 69 53 74 61 72 74 29 29 20 21 3d 3d 20 2d 31 29  iStart)) !== -1)
be50: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
be60: 20 20 20 74 68 69 73 2e 64 50 61 72 61 67 72 61     this.dParagra
be70: 70 68 2e 73 65 74 28 69 2c 20 73 54 65 78 74 2e  ph.set(i, sText.
be80: 73 6c 69 63 65 28 69 53 74 61 72 74 2c 20 69 45  slice(iStart, iE
be90: 6e 64 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  nd));.          
bea0: 20 20 20 20 20 20 69 2b 2b 3b 0a 20 20 20 20 20        i++;.     
beb0: 20 20 20 20 20 20 20 20 20 20 20 69 53 74 61 72             iStar
bec0: 74 20 3d 20 69 45 6e 64 2b 31 3b 0a 20 20 20 20  t = iEnd+1;.    
bed0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
bee0: 20 20 20 20 20 20 74 68 69 73 2e 64 50 61 72 61        this.dPara
bef0: 67 72 61 70 68 2e 73 65 74 28 69 2c 20 73 54 65  graph.set(i, sTe
bf00: 78 74 2e 73 6c 69 63 65 28 69 53 74 61 72 74 29  xt.slice(iStart)
bf10: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  );.            /
bf20: 2f 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 22 50 61  /console.log("Pa
bf30: 72 61 67 72 61 70 68 73 20 6e 75 6d 62 65 72 3a  ragraphs number:
bf40: 20 22 20 2b 20 28 69 2b 31 29 29 3b 0a 20 20 20   " + (i+1));.   
bf50: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
bf60: 20 20 65 72 61 73 65 4e 6f 64 65 43 6f 6e 74 65    eraseNodeConte
bf70: 6e 74 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  nt () {.        
bf80: 77 68 69 6c 65 20 28 74 68 69 73 2e 78 4e 6f 64  while (this.xNod
bf90: 65 2e 66 69 72 73 74 43 68 69 6c 64 29 20 7b 0a  e.firstChild) {.
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
bfb0: 2e 78 4e 6f 64 65 2e 72 65 6d 6f 76 65 43 68 69  .xNode.removeChi
bfc0: 6c 64 28 74 68 69 73 2e 78 4e 6f 64 65 2e 66 69  ld(this.xNode.fi
bfd0: 72 73 74 43 68 69 6c 64 29 3b 0a 20 20 20 20 20  rstChild);.     
bfe0: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
bff0: 77 72 69 74 65 20 28 29 20 7b 0a 20 20 20 20 20  write () {.     
c000: 20 20 20 69 66 20 28 74 68 69 73 2e 78 4e 6f 64     if (this.xNod
c010: 65 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20  e !== null) {.  
c020: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 73 54            let sT
c030: 65 78 74 20 3d 20 22 22 3b 0a 20 20 20 20 20 20  ext = "";.      
c040: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 62        if (this.b
c050: 54 65 78 74 41 72 65 61 29 20 7b 0a 20 20 20 20  TextArea) {.    
c060: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
c070: 2e 78 4e 6f 64 65 2e 76 61 6c 75 65 20 3d 20 74  .xNode.value = t
c080: 68 69 73 2e 67 65 74 54 65 78 74 28 29 3b 0a 20  his.getText();. 
c090: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
c0a0: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
c0b0: 20 20 20 20 74 68 69 73 2e 65 72 61 73 65 4e 6f      this.eraseNo
c0c0: 64 65 43 6f 6e 74 65 6e 74 28 29 3b 0a 20 20 20  deContent();.   
c0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
c0e0: 73 2e 64 50 61 72 61 67 72 61 70 68 2e 66 6f 72  s.dParagraph.for
c0f0: 45 61 63 68 28 28 76 61 6c 2c 20 6b 65 79 29 20  Each((val, key) 
c100: 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  => {.           
c110: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4e           this.xN
c120: 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ode.appendChild(
c130: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54  document.createT
c140: 65 78 74 4e 6f 64 65 28 76 61 6c 2e 6e 6f 72 6d  extNode(val.norm
c150: 61 6c 69 7a 65 28 22 4e 46 43 22 29 29 29 3b 0a  alize("NFC")));.
c160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c170: 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 2e 61      this.xNode.a
c180: 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d  ppendChild(docum
c190: 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e  ent.createElemen
c1a0: 74 28 22 62 72 22 29 29 3b 0a 20 20 20 20 20 20  t("br"));.      
c1b0: 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20            });.  
c1c0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
c1d0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a            }.    }.}.