Grammalecte  Hex Artifact Content

Artifact 7ec8fbbdd9d66f1e2417e591f9ea67a2dbded73090acc8d9870e57de25e8294d:


0000: 2f 2f 20 4a 61 76 61 53 63 72 69 70 74 0a 0a 6c  // JavaScript..l
0010: 65 74 20 6e 50 61 6e 65 6c 57 69 64 74 68 20 3d  et nPanelWidth =
0020: 20 30 3b 20 20 2f 2f 20 6d 75 73 74 20 62 65 20   0;  // must be 
0030: 73 65 74 20 61 74 20 6c 61 75 6e 63 68 0a 6c 65  set at launch.le
0040: 74 20 62 45 78 70 61 6e 64 65 64 20 3d 20 74 72  t bExpanded = tr
0050: 75 65 3b 0a 0a 2f 2a 0a 20 20 20 20 49 67 6e 6f  ue;../*.    Igno
0060: 72 65 64 20 65 72 72 6f 72 73 0a 20 20 20 20 69  red errors.    i
0070: 64 65 6e 64 69 66 69 65 64 20 62 79 20 3c 73 49  dendified by <sI
0080: 67 6e 6f 72 65 64 4b 65 79 3e 0a 20 20 20 20 73  gnoredKey>.    s
0090: 49 67 6e 6f 72 65 64 4b 65 79 3a 20 3c 69 50 61  IgnoredKey: <iPa
00a0: 72 61 67 72 61 70 68 3a 6e 53 74 61 72 74 3a 6e  ragraph:nStart:n
00b0: 45 6e 64 3a 73 55 6e 64 65 72 6c 69 6e 65 64 3e  End:sUnderlined>
00c0: 20 0a 2a 2f 0a 6c 65 74 20 61 49 67 6e 6f 72 65   .*/.let aIgnore
00d0: 64 45 72 72 6f 72 73 20 3d 20 6e 65 77 20 53 65  dErrors = new Se
00e0: 74 28 29 3b 0a 0a 0a 2f 2a 0a 20 20 20 20 45 76  t();.../*.    Ev
00f0: 65 6e 74 73 0a 2a 2f 0a 0a 73 68 6f 77 53 70 65  ents.*/..showSpe
0100: 63 69 61 6c 4d 65 73 73 61 67 65 28 29 3b 0a 0a  cialMessage();..
0110: 0a 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65  .document.getEle
0120: 6d 65 6e 74 42 79 49 64 28 27 63 6c 6f 73 65 27  mentById('close'
0130: 29 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e  ).addEventListen
0140: 65 72 28 22 63 6c 69 63 6b 22 2c 20 66 75 6e 63  er("click", func
0150: 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a 20  tion (event) {. 
0160: 20 20 20 62 45 78 70 61 6e 64 65 64 20 3d 20 74     bExpanded = t
0170: 72 75 65 3b 20 2f 2f 20 73 69 7a 65 20 69 73 20  rue; // size is 
0180: 72 65 73 65 74 20 69 6e 20 75 69 2e 6a 73 0a 20  reset in ui.js. 
0190: 20 20 20 73 65 6c 66 2e 70 6f 72 74 2e 65 6d 69     self.port.emi
01a0: 74 28 27 63 6c 6f 73 65 50 61 6e 65 6c 27 29 3b  t('closePanel');
01b0: 0a 7d 29 3b 0a 0a 64 6f 63 75 6d 65 6e 74 2e 67  .});..document.g
01c0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 65  etElementById('e
01d0: 78 70 61 6e 64 5f 72 65 64 75 63 65 27 29 2e 61  xpand_reduce').a
01e0: 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28  ddEventListener(
01f0: 22 63 6c 69 63 6b 22 2c 20 66 75 6e 63 74 69 6f  "click", functio
0200: 6e 20 28 65 76 65 6e 74 29 20 7b 0a 20 20 20 20  n (event) {.    
0210: 69 66 20 28 62 45 78 70 61 6e 64 65 64 29 20 7b  if (bExpanded) {
0220: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f  .        self.po
0230: 72 74 2e 65 6d 69 74 28 22 72 65 73 69 7a 65 22  rt.emit("resize"
0240: 2c 20 22 72 65 64 75 63 65 22 2c 20 31 30 29 3b  , "reduce", 10);
0250: 20 2f 2f 20 74 68 65 20 6e 75 6d 62 65 72 20 68   // the number h
0260: 61 73 20 6e 6f 20 6d 65 61 6e 69 6e 67 20 68 65  as no meaning he
0270: 72 65 0a 20 20 20 20 20 20 20 20 62 45 78 70 61  re.        bExpa
0280: 6e 64 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20  nded = false;.  
0290: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
02a0: 20 20 20 73 65 6c 66 2e 70 6f 72 74 2e 65 6d 69     self.port.emi
02b0: 74 28 22 72 65 73 69 7a 65 22 2c 20 22 65 78 70  t("resize", "exp
02c0: 61 6e 64 22 2c 20 31 30 29 3b 20 2f 2f 20 74 68  and", 10); // th
02d0: 65 20 6e 75 6d 62 65 72 20 68 61 73 20 6e 6f 20  e number has no 
02e0: 6d 65 61 6e 69 6e 67 20 68 65 72 65 0a 20 20 20  meaning here.   
02f0: 20 20 20 20 20 62 45 78 70 61 6e 64 65 64 20 3d       bExpanded =
0300: 20 74 72 75 65 3b 0a 20 20 20 20 7d 0a 7d 29 3b   true;.    }.});
0310: 0a 0a 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c  ..document.getEl
0320: 65 6d 65 6e 74 42 79 49 64 28 27 63 6f 70 79 5f  ementById('copy_
0330: 74 6f 5f 63 6c 69 70 62 6f 61 72 64 27 29 2e 61  to_clipboard').a
0340: 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28  ddEventListener(
0350: 22 63 6c 69 63 6b 22 2c 20 66 75 6e 63 74 69 6f  "click", functio
0360: 6e 20 28 65 76 65 6e 74 29 20 7b 0a 20 20 20 20  n (event) {.    
0370: 63 6f 70 79 54 6f 43 6c 69 70 62 6f 61 72 64 28  copyToClipboard(
0380: 29 3b 0a 7d 29 3b 0a 0a 64 6f 63 75 6d 65 6e 74  );.});..document
0390: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
03a0: 27 63 6c 6f 73 65 6d 73 67 27 29 2e 61 64 64 45  'closemsg').addE
03b0: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6c  ventListener("cl
03c0: 69 63 6b 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28  ick", function (
03d0: 65 76 65 6e 74 29 20 7b 0a 20 20 20 20 63 6c 6f  event) {.    clo
03e0: 73 65 4d 65 73 73 61 67 65 42 6f 78 28 29 3b 0a  seMessageBox();.
03f0: 7d 29 3b 0a 0a 73 65 6c 66 2e 70 6f 72 74 2e 6f  });..self.port.o
0400: 6e 28 22 73 65 74 50 61 6e 65 6c 57 69 64 74 68  n("setPanelWidth
0410: 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6e 29 20  ", function (n) 
0420: 7b 0a 20 20 20 20 6e 50 61 6e 65 6c 57 69 64 74  {.    nPanelWidt
0430: 68 20 3d 20 6e 3b 0a 7d 29 3b 0a 0a 73 65 6c 66  h = n;.});..self
0440: 2e 70 6f 72 74 2e 6f 6e 28 22 61 64 64 4d 65 73  .port.on("addMes
0450: 73 61 67 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20  sage", function 
0460: 28 73 43 6c 61 73 73 2c 20 73 54 65 78 74 29 20  (sClass, sText) 
0470: 7b 0a 20 20 20 20 61 64 64 4d 65 73 73 61 67 65  {.    addMessage
0480: 28 73 43 6c 61 73 73 2c 20 73 54 65 78 74 29 3b  (sClass, sText);
0490: 0a 7d 29 3b 0a 0a 73 65 6c 66 2e 70 6f 72 74 2e  .});..self.port.
04a0: 6f 6e 28 22 61 64 64 50 61 72 61 67 72 61 70 68  on("addParagraph
04b0: 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 73 54 65  ", function (sTe
04c0: 78 74 2c 20 69 50 61 72 61 67 72 61 70 68 2c 20  xt, iParagraph, 
04d0: 73 4a 53 4f 4e 29 20 7b 0a 20 20 20 20 61 64 64  sJSON) {.    add
04e0: 50 61 72 61 67 72 61 70 68 28 73 54 65 78 74 2c  Paragraph(sText,
04f0: 20 69 50 61 72 61 67 72 61 70 68 2c 20 73 4a 53   iParagraph, sJS
0500: 4f 4e 29 3b 0a 7d 29 3b 0a 0a 73 65 6c 66 2e 70  ON);.});..self.p
0510: 6f 72 74 2e 6f 6e 28 22 72 65 66 72 65 73 68 50  ort.on("refreshP
0520: 61 72 61 67 72 61 70 68 22 2c 20 66 75 6e 63 74  aragraph", funct
0530: 69 6f 6e 20 28 73 54 65 78 74 2c 20 73 49 64 50  ion (sText, sIdP
0540: 61 72 61 67 72 2c 20 73 4a 53 4f 4e 29 20 7b 0a  aragr, sJSON) {.
0550: 20 20 20 20 72 65 66 72 65 73 68 50 61 72 61 67      refreshParag
0560: 72 61 70 68 28 73 54 65 78 74 2c 20 73 49 64 50  raph(sText, sIdP
0570: 61 72 61 67 72 2c 20 73 4a 53 4f 4e 29 3b 0a 7d  aragr, sJSON);.}
0580: 29 3b 0a 0a 73 65 6c 66 2e 70 6f 72 74 2e 6f 6e  );..self.port.on
0590: 28 22 73 68 6f 77 4d 65 73 73 61 67 65 22 2c 20  ("showMessage", 
05a0: 66 75 6e 63 74 69 6f 6e 20 28 73 54 65 78 74 29  function (sText)
05b0: 20 7b 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e   {.    document.
05c0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
05d0: 6d 65 73 73 61 67 65 22 29 2e 74 65 78 74 43 6f  message").textCo
05e0: 6e 74 65 6e 74 20 3d 20 73 54 65 78 74 3b 0a 20  ntent = sText;. 
05f0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
0600: 6c 65 6d 65 6e 74 42 79 49 64 28 22 6d 65 73 73  lementById("mess
0610: 61 67 65 62 6f 78 22 29 2e 73 74 79 6c 65 2e 64  agebox").style.d
0620: 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f 63 6b 22  isplay = "block"
0630: 3b 0a 20 20 20 20 77 69 6e 64 6f 77 2e 73 65 74  ;.    window.set
0640: 54 69 6d 65 6f 75 74 28 63 6c 6f 73 65 4d 65 73  Timeout(closeMes
0650: 73 61 67 65 42 6f 78 2c 20 32 30 30 30 30 29 3b  sageBox, 20000);
0660: 0a 7d 29 3b 0a 0a 73 65 6c 66 2e 70 6f 72 74 2e  .});..self.port.
0670: 6f 6e 28 22 63 6c 65 61 72 45 72 72 6f 72 73 22  on("clearErrors"
0680: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 73 48 74 6d  , function (sHtm
0690: 6c 29 20 7b 0a 20 20 20 20 64 6f 63 75 6d 65 6e  l) {.    documen
06a0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
06b0: 28 22 65 72 72 6f 72 6c 69 73 74 22 29 2e 74 65  ("errorlist").te
06c0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b 0a  xtContent = "";.
06d0: 20 20 20 20 61 49 67 6e 6f 72 65 64 45 72 72 6f      aIgnoredErro
06e0: 72 73 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20  rs.clear();.    
06f0: 68 69 64 65 41 6c 6c 54 6f 6f 6c 74 69 70 73 28  hideAllTooltips(
0700: 29 3b 0a 7d 29 3b 0a 0a 73 65 6c 66 2e 70 6f 72  );.});..self.por
0710: 74 2e 6f 6e 28 22 73 74 61 72 74 22 2c 20 66 75  t.on("start", fu
0720: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 73  nction() {.    s
0730: 74 61 72 74 57 61 69 74 49 63 6f 6e 28 29 3b 0a  tartWaitIcon();.
0740: 7d 29 3b 0a 0a 73 65 6c 66 2e 70 6f 72 74 2e 6f  });..self.port.o
0750: 6e 28 22 65 6e 64 22 2c 20 66 75 6e 63 74 69 6f  n("end", functio
0760: 6e 28 29 20 7b 0a 20 20 20 20 73 74 6f 70 57 61  n() {.    stopWa
0770: 69 74 49 63 6f 6e 28 29 3b 0a 20 20 20 20 64 6f  itIcon();.    do
0780: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
0790: 74 42 79 49 64 28 22 63 6f 70 79 5f 74 6f 5f 63  tById("copy_to_c
07a0: 6c 69 70 62 6f 61 72 64 22 29 2e 73 74 79 6c 65  lipboard").style
07b0: 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f 63  .display = "bloc
07c0: 6b 22 3b 0a 7d 29 3b 0a 0a 73 65 6c 66 2e 70 6f  k";.});..self.po
07d0: 72 74 2e 6f 6e 28 22 73 75 67 67 65 73 74 69 6f  rt.on("suggestio
07e0: 6e 73 46 6f 72 22 2c 20 66 75 6e 63 74 69 6f 6e  nsFor", function
07f0: 20 28 73 57 6f 72 64 2c 20 73 53 75 67 67 65 73   (sWord, sSugges
0800: 74 69 6f 6e 73 2c 20 73 45 72 72 49 64 29 20 7b  tions, sErrId) {
0810: 0a 20 20 20 20 73 65 74 53 70 65 6c 6c 53 75 67  .    setSpellSug
0820: 67 65 73 74 69 6f 6e 73 46 6f 72 28 73 57 6f 72  gestionsFor(sWor
0830: 64 2c 20 73 53 75 67 67 65 73 74 69 6f 6e 73 2c  d, sSuggestions,
0840: 20 73 45 72 72 49 64 29 3b 0a 7d 29 3b 0a 0a 0a   sErrId);.});...
0850: 77 69 6e 64 6f 77 2e 61 64 64 45 76 65 6e 74 4c  window.addEventL
0860: 69 73 74 65 6e 65 72 28 0a 20 20 20 20 22 63 6c  istener(.    "cl
0870: 69 63 6b 22 2c 0a 20 20 20 20 66 75 6e 63 74 69  ick",.    functi
0880: 6f 6e 20 28 78 45 76 65 6e 74 29 20 7b 0a 20 20  on (xEvent) {.  
0890: 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20        try {.    
08a0: 20 20 20 20 20 20 20 20 6c 65 74 20 78 45 6c 65          let xEle
08b0: 6d 20 3d 20 78 45 76 65 6e 74 2e 74 61 72 67 65  m = xEvent.targe
08c0: 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  t;.            i
08d0: 66 20 28 78 45 6c 65 6d 2e 69 64 29 20 7b 0a 20  f (xElem.id) {. 
08e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
08f0: 66 20 28 78 45 6c 65 6d 2e 69 64 2e 73 74 61 72  f (xElem.id.star
0900: 74 73 57 69 74 68 28 22 73 75 67 67 22 29 29 20  tsWith("sugg")) 
0910: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
0920: 20 20 20 20 20 20 61 70 70 6c 79 53 75 67 67 65        applySugge
0930: 73 74 69 6f 6e 28 78 45 6c 65 6d 2e 69 64 29 3b  stion(xElem.id);
0940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0950: 20 7d 20 65 6c 73 65 20 69 66 20 28 78 45 6c 65   } else if (xEle
0960: 6d 2e 69 64 2e 65 6e 64 73 57 69 74 68 28 22 5f  m.id.endsWith("_
0970: 69 67 6e 6f 72 65 22 29 29 20 7b 0a 20 20 20 20  ignore")) {.    
0980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0990: 69 67 6e 6f 72 65 45 72 72 6f 72 28 78 45 6c 65  ignoreError(xEle
09a0: 6d 2e 69 64 29 3b 0a 20 20 20 20 20 20 20 20 20  m.id);.         
09b0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
09c0: 20 28 78 45 6c 65 6d 2e 69 64 2e 73 74 61 72 74   (xElem.id.start
09d0: 73 57 69 74 68 28 22 63 68 65 63 6b 22 29 29 20  sWith("check")) 
09e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
09f0: 20 20 20 20 20 20 73 65 6e 64 42 61 63 6b 41 6e        sendBackAn
0a00: 64 43 68 65 63 6b 28 78 45 6c 65 6d 2e 69 64 29  dCheck(xElem.id)
0a10: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
0a20: 20 20 2f 2a 7d 20 65 6c 73 65 20 69 66 20 28 78    /*} else if (x
0a30: 45 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73 57 69  Elem.id.startsWi
0a40: 74 68 28 22 65 64 69 74 22 29 29 20 7b 0a 20 20  th("edit")) {.  
0a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a60: 20 20 73 77 69 74 63 68 45 64 69 74 69 6f 6e 28    switchEdition(
0a70: 78 45 6c 65 6d 2e 69 64 29 3b 2a 2f 0a 20 20 20  xElem.id);*/.   
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
0a90: 6c 73 65 20 69 66 20 28 78 45 6c 65 6d 2e 69 64  lse if (xElem.id
0aa0: 2e 73 74 61 72 74 73 57 69 74 68 28 22 65 6e 64  .startsWith("end
0ab0: 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ")) {.          
0ac0: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
0ad0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
0ae0: 64 28 78 45 6c 65 6d 2e 69 64 29 2e 70 61 72 65  d(xElem.id).pare
0af0: 6e 74 4e 6f 64 65 2e 70 61 72 65 6e 74 4e 6f 64  ntNode.parentNod
0b00: 65 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  e.style.display 
0b10: 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20  = "none";.      
0b20: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
0b30: 20 69 66 20 28 78 45 6c 65 6d 2e 74 61 67 4e 61   if (xElem.tagNa
0b40: 6d 65 20 3d 3d 3d 20 22 55 22 20 26 26 20 78 45  me === "U" && xE
0b50: 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73 57 69 74  lem.id.startsWit
0b60: 68 28 22 65 72 72 22 29 0a 20 20 20 20 20 20 20  h("err").       
0b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b80: 20 20 20 20 26 26 20 78 45 6c 65 6d 2e 63 6c 61      && xElem.cla
0b90: 73 73 4e 61 6d 65 20 21 3d 3d 20 22 63 6f 72 72  ssName !== "corr
0ba0: 65 63 74 65 64 22 20 26 26 20 78 45 6c 65 6d 2e  ected" && xElem.
0bb0: 63 6c 61 73 73 4e 61 6d 65 20 21 3d 3d 20 22 69  className !== "i
0bc0: 67 6e 6f 72 65 64 22 29 20 7b 0a 20 20 20 20 20  gnored") {.     
0bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
0be0: 68 6f 77 54 6f 6f 6c 74 69 70 28 78 45 6c 65 6d  howTooltip(xElem
0bf0: 2e 69 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20  .id);.          
0c00: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
0c10: 28 78 45 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73  (xElem.id.starts
0c20: 57 69 74 68 28 22 72 65 73 69 7a 65 22 29 29 20  With("resize")) 
0c30: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
0c40: 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 72 74 2e        self.port.
0c50: 65 6d 69 74 28 22 72 65 73 69 7a 65 22 2c 20 78  emit("resize", x
0c60: 45 6c 65 6d 2e 69 64 2c 20 31 30 29 3b 0a 20 20  Elem.id, 10);.  
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
0c80: 65 6c 73 65 20 69 66 20 28 78 45 6c 65 6d 2e 69  else if (xElem.i
0c90: 64 20 3d 3d 3d 20 22 67 63 5f 75 72 6c 22 29 20  d === "gc_url") 
0ca0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
0cb0: 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 72 74 2e        self.port.
0cc0: 65 6d 69 74 28 22 6f 70 65 6e 55 52 4c 22 2c 20  emit("openURL", 
0cd0: 78 45 6c 65 6d 2e 67 65 74 41 74 74 72 69 62 75  xElem.getAttribu
0ce0: 74 65 28 22 68 72 65 66 22 29 29 3b 0a 20 20 20  te("href"));.   
0cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
0d00: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
0d10: 20 20 20 20 20 20 20 20 20 20 68 69 64 65 41 6c            hideAl
0d20: 6c 54 6f 6f 6c 74 69 70 73 28 29 3b 0a 20 20 20  lTooltips();.   
0d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
0d40: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
0d50: 65 20 69 66 20 28 78 45 6c 65 6d 2e 74 61 67 4e  e if (xElem.tagN
0d60: 61 6d 65 20 3d 3d 3d 20 22 41 22 29 20 7b 0a 20  ame === "A") {. 
0d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
0d80: 65 6c 66 2e 70 6f 72 74 2e 65 6d 69 74 28 22 6f  elf.port.emit("o
0d90: 70 65 6e 55 52 4c 22 2c 20 78 45 6c 65 6d 2e 67  penURL", xElem.g
0da0: 65 74 41 74 74 72 69 62 75 74 65 28 22 68 72 65  etAttribute("hre
0db0: 66 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  f"));.          
0dc0: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
0dd0: 20 20 20 20 20 20 20 20 20 20 20 68 69 64 65 41             hideA
0de0: 6c 6c 54 6f 6f 6c 74 69 70 73 28 29 3b 0a 20 20  llTooltips();.  
0df0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
0e00: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61      }.        ca
0e10: 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20  tch (e) {.      
0e20: 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28        showError(
0e30: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
0e40: 20 20 7d 2c 0a 20 20 20 20 66 61 6c 73 65 0a 29    },.    false.)
0e50: 3b 0a 0a 0a 2f 2a 0a 20 20 20 20 41 63 74 69 6f  ;.../*.    Actio
0e60: 6e 73 0a 2a 2f 0a 0a 66 75 6e 63 74 69 6f 6e 20  ns.*/..function 
0e70: 73 68 6f 77 45 72 72 6f 72 20 28 65 29 20 7b 0a  showError (e) {.
0e80: 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 65 72 72 6f      console.erro
0e90: 72 28 22 5c 6e 22 20 2b 20 65 2e 66 69 6c 65 4e  r("\n" + e.fileN
0ea0: 61 6d 65 20 2b 20 22 5c 6e 22 20 2b 20 65 2e 6e  ame + "\n" + e.n
0eb0: 61 6d 65 20 2b 20 22 5c 6e 6c 69 6e 65 3a 20 22  ame + "\nline: "
0ec0: 20 2b 20 65 2e 6c 69 6e 65 4e 75 6d 62 65 72 20   + e.lineNumber 
0ed0: 2b 20 22 5c 6e 22 20 2b 20 65 2e 6d 65 73 73 61  + "\n" + e.messa
0ee0: 67 65 29 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e  ge);.}..function
0ef0: 20 63 6c 6f 73 65 4d 65 73 73 61 67 65 42 6f 78   closeMessageBox
0f00: 20 28 29 20 7b 0a 20 20 20 20 64 6f 63 75 6d 65   () {.    docume
0f10: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
0f20: 64 28 22 6d 65 73 73 61 67 65 62 6f 78 22 29 2e  d("messagebox").
0f30: 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20  style.display = 
0f40: 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 64 6f 63 75  "none";.    docu
0f50: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
0f60: 79 49 64 28 22 6d 65 73 73 61 67 65 22 29 2e 74  yId("message").t
0f70: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b  extContent = "";
0f80: 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 64 64  .}..function add
0f90: 4d 65 73 73 61 67 65 20 28 73 43 6c 61 73 73 2c  Message (sClass,
0fa0: 20 73 54 65 78 74 29 20 7b 0a 20 20 20 20 6c 65   sText) {.    le
0fb0: 74 20 78 4e 6f 64 65 20 3d 20 64 6f 63 75 6d 65  t xNode = docume
0fc0: 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74  nt.createElement
0fd0: 28 22 70 22 29 3b 0a 20 20 20 20 78 4e 6f 64 65  ("p");.    xNode
0fe0: 2e 63 6c 61 73 73 4e 61 6d 65 20 3d 20 73 43 6c  .className = sCl
0ff0: 61 73 73 3b 0a 20 20 20 20 78 4e 6f 64 65 2e 74  ass;.    xNode.t
1000: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 73 54 65  extContent = sTe
1010: 78 74 3b 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74  xt;.    document
1020: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
1030: 22 65 72 72 6f 72 6c 69 73 74 22 29 2e 61 70 70  "errorlist").app
1040: 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64 65 29 3b  endChild(xNode);
1050: 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 64 64  .}..function add
1060: 50 61 72 61 67 72 61 70 68 20 28 73 54 65 78 74  Paragraph (sText
1070: 2c 20 69 50 61 72 61 67 72 61 70 68 2c 20 73 4a  , iParagraph, sJ
1080: 53 4f 4e 29 20 7b 0a 20 20 20 20 74 72 79 20 7b  SON) {.    try {
1090: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f  .        let xNo
10a0: 64 65 44 69 76 20 3d 20 64 6f 63 75 6d 65 6e 74  deDiv = document
10b0: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22  .createElement("
10c0: 64 69 76 22 29 3b 0a 20 20 20 20 20 20 20 20 78  div");.        x
10d0: 4e 6f 64 65 44 69 76 2e 63 6c 61 73 73 4e 61 6d  NodeDiv.classNam
10e0: 65 20 3d 20 22 70 61 72 61 67 72 61 70 68 5f 62  e = "paragraph_b
10f0: 6c 6f 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 2f  lock";.        /
1100: 2f 20 61 63 74 69 6f 6e 73 0a 20 20 20 20 20 20  / actions.      
1110: 20 20 6c 65 74 20 78 44 69 76 41 63 74 69 6f 6e    let xDivAction
1120: 73 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65  s = document.cre
1130: 61 74 65 45 6c 65 6d 65 6e 74 28 22 64 69 76 22  ateElement("div"
1140: 29 3b 0a 20 20 20 20 20 20 20 20 78 44 69 76 41  );.        xDivA
1150: 63 74 69 6f 6e 73 2e 63 6c 61 73 73 4e 61 6d 65  ctions.className
1160: 20 3d 20 22 61 63 74 69 6f 6e 73 22 3b 0a 20 20   = "actions";.  
1170: 20 20 20 20 20 20 6c 65 74 20 78 44 69 76 43 6c        let xDivCl
1180: 6f 73 65 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63  ose = document.c
1190: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 64 69  reateElement("di
11a0: 76 22 29 3b 0a 20 20 20 20 20 20 20 20 78 44 69  v");.        xDi
11b0: 76 43 6c 6f 73 65 2e 69 64 20 3d 20 22 65 6e 64  vClose.id = "end
11c0: 22 20 2b 20 69 50 61 72 61 67 72 61 70 68 2e 74  " + iParagraph.t
11d0: 6f 53 74 72 69 6e 67 28 29 3b 0a 20 20 20 20 20  oString();.     
11e0: 20 20 20 78 44 69 76 43 6c 6f 73 65 2e 63 6c 61     xDivClose.cla
11f0: 73 73 4e 61 6d 65 20 3d 20 22 62 75 74 74 6f 6e  ssName = "button
1200: 20 72 65 64 20 62 6f 6c 64 22 3b 0a 20 20 20 20   red bold";.    
1210: 20 20 20 20 78 44 69 76 43 6c 6f 73 65 2e 74 65      xDivClose.te
1220: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 c3 97 22  xtContent = ".."
1230: 3b 0a 20 20 20 20 20 20 20 20 78 44 69 76 41 63  ;.        xDivAc
1240: 74 69 6f 6e 73 2e 61 70 70 65 6e 64 43 68 69 6c  tions.appendChil
1250: 64 28 78 44 69 76 43 6c 6f 73 65 29 3b 0a 20 20  d(xDivClose);.  
1260: 20 20 20 20 20 20 2f 2a 6c 65 74 20 78 44 69 76        /*let xDiv
1270: 45 64 69 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  Edit = document.
1280: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 64  createElement("d
1290: 69 76 22 29 3b 0a 20 20 20 20 20 20 20 20 78 44  iv");.        xD
12a0: 69 76 45 64 69 74 2e 69 64 20 3d 20 22 65 64 69  ivEdit.id = "edi
12b0: 74 22 20 2b 20 69 50 61 72 61 67 72 61 70 68 2e  t" + iParagraph.
12c0: 74 6f 53 74 72 69 6e 67 28 29 3b 0a 20 20 20 20  toString();.    
12d0: 20 20 20 20 78 44 69 76 45 64 69 74 2e 63 6c 61      xDivEdit.cla
12e0: 73 73 4e 61 6d 65 20 3d 20 22 62 75 74 74 6f 6e  ssName = "button
12f0: 22 3b 0a 20 20 20 20 20 20 20 20 78 44 69 76 45  ";.        xDivE
1300: 64 69 74 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  dit.textContent 
1310: 3d 20 22 c3 89 64 69 74 65 72 22 3b 0a 20 20 20  = "..diter";.   
1320: 20 20 20 20 20 78 44 69 76 41 63 74 69 6f 6e 73       xDivActions
1330: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 44 69  .appendChild(xDi
1340: 76 45 64 69 74 29 3b 2a 2f 0a 20 20 20 20 20 20  vEdit);*/.      
1350: 20 20 6c 65 74 20 78 44 69 76 43 68 65 63 6b 20    let xDivCheck 
1360: 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74  = document.creat
1370: 65 45 6c 65 6d 65 6e 74 28 22 64 69 76 22 29 3b  eElement("div");
1380: 0a 20 20 20 20 20 20 20 20 78 44 69 76 43 68 65  .        xDivChe
1390: 63 6b 2e 69 64 20 3d 20 22 63 68 65 63 6b 22 20  ck.id = "check" 
13a0: 2b 20 69 50 61 72 61 67 72 61 70 68 2e 74 6f 53  + iParagraph.toS
13b0: 74 72 69 6e 67 28 29 3b 0a 20 20 20 20 20 20 20  tring();.       
13c0: 20 78 44 69 76 43 68 65 63 6b 2e 63 6c 61 73 73   xDivCheck.class
13d0: 4e 61 6d 65 20 3d 20 22 62 75 74 74 6f 6e 20 67  Name = "button g
13e0: 72 65 65 6e 22 3b 0a 20 20 20 20 20 20 20 20 78  reen";.        x
13f0: 44 69 76 43 68 65 63 6b 2e 74 65 78 74 43 6f 6e  DivCheck.textCon
1400: 74 65 6e 74 20 3d 20 22 52 c3 a9 61 6e 61 6c 79  tent = "R..analy
1410: 73 65 72 22 3b 0a 20 20 20 20 20 20 20 20 78 44  ser";.        xD
1420: 69 76 43 68 65 63 6b 2e 73 65 74 41 74 74 72 69  ivCheck.setAttri
1430: 62 75 74 65 28 22 74 69 74 6c 65 22 2c 20 22 52  bute("title", "R
1440: c3 a9 61 6e 61 6c 79 73 65 72 20 6c 65 20 74 65  ..analyser le te
1450: 78 74 65 22 29 3b 0a 20 20 20 20 20 20 20 20 78  xte");.        x
1460: 44 69 76 41 63 74 69 6f 6e 73 2e 61 70 70 65 6e  DivActions.appen
1470: 64 43 68 69 6c 64 28 78 44 69 76 43 68 65 63 6b  dChild(xDivCheck
1480: 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  );.        xNode
1490: 44 69 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  Div.appendChild(
14a0: 78 44 69 76 41 63 74 69 6f 6e 73 29 3b 0a 20 20  xDivActions);.  
14b0: 20 20 20 20 20 20 2f 2f 20 70 61 72 61 67 72 61        // paragra
14c0: 70 68 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78  ph.        let x
14d0: 50 61 72 61 67 72 61 70 68 20 3d 20 64 6f 63 75  Paragraph = docu
14e0: 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65  ment.createEleme
14f0: 6e 74 28 22 70 22 29 3b 0a 20 20 20 20 20 20 20  nt("p");.       
1500: 20 78 50 61 72 61 67 72 61 70 68 2e 69 64 20 3d   xParagraph.id =
1510: 20 22 70 61 72 61 67 72 22 20 2b 20 69 50 61 72   "paragr" + iPar
1520: 61 67 72 61 70 68 2e 74 6f 53 74 72 69 6e 67 28  agraph.toString(
1530: 29 3b 0a 20 20 20 20 20 20 20 20 78 50 61 72 61  );.        xPara
1540: 67 72 61 70 68 2e 6c 61 6e 67 20 3d 20 22 66 72  graph.lang = "fr
1550: 22 3b 0a 20 20 20 20 20 20 20 20 78 50 61 72 61  ";.        xPara
1560: 67 72 61 70 68 2e 73 65 74 41 74 74 72 69 62 75  graph.setAttribu
1570: 74 65 28 22 73 70 65 6c 6c 63 68 65 63 6b 22 2c  te("spellcheck",
1580: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20   false);.       
1590: 20 78 50 61 72 61 67 72 61 70 68 2e 73 65 74 41   xParagraph.setA
15a0: 74 74 72 69 62 75 74 65 28 22 63 6f 6e 74 65 6e  ttribute("conten
15b0: 74 65 64 69 74 61 62 6c 65 22 2c 20 74 72 75 65  teditable", true
15c0: 29 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 6f  );.        let o
15d0: 45 72 72 6f 72 73 20 3d 20 4a 53 4f 4e 2e 70 61  Errors = JSON.pa
15e0: 72 73 65 28 73 4a 53 4f 4e 29 3b 0a 20 20 20 20  rse(sJSON);.    
15f0: 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 63      xParagraph.c
1600: 6c 61 73 73 4e 61 6d 65 20 3d 20 28 6f 45 72 72  lassName = (oErr
1610: 6f 72 73 2e 61 47 72 61 6d 6d 45 72 72 2e 6c 65  ors.aGrammErr.le
1620: 6e 67 74 68 20 7c 7c 20 6f 45 72 72 6f 72 73 2e  ngth || oErrors.
1630: 61 53 70 65 6c 6c 45 72 72 2e 6c 65 6e 67 74 68  aSpellErr.length
1640: 29 20 3f 20 22 70 61 72 61 67 72 61 70 68 20 73  ) ? "paragraph s
1650: 6f 66 74 72 65 64 22 20 3a 20 22 70 61 72 61 67  oftred" : "parag
1660: 72 61 70 68 22 3b 0a 20 20 20 20 20 20 20 20 5f  raph";.        _
1670: 74 61 67 50 61 72 61 67 72 61 70 68 28 73 54 65  tagParagraph(sTe
1680: 78 74 2c 20 78 50 61 72 61 67 72 61 70 68 2c 20  xt, xParagraph, 
1690: 69 50 61 72 61 67 72 61 70 68 2c 20 6f 45 72 72  iParagraph, oErr
16a0: 6f 72 73 2e 61 47 72 61 6d 6d 45 72 72 2c 20 6f  ors.aGrammErr, o
16b0: 45 72 72 6f 72 73 2e 61 53 70 65 6c 6c 45 72 72  Errors.aSpellErr
16c0: 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  );.        xNode
16d0: 44 69 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  Div.appendChild(
16e0: 78 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20 20  xParagraph);.   
16f0: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
1700: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 65 72  tElementById("er
1710: 72 6f 72 6c 69 73 74 22 29 2e 61 70 70 65 6e 64  rorlist").append
1720: 43 68 69 6c 64 28 78 4e 6f 64 65 44 69 76 29 3b  Child(xNodeDiv);
1730: 0a 20 20 20 20 7d 0a 20 20 20 20 63 61 74 63 68  .    }.    catch
1740: 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73   (e) {.        s
1750: 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20  howError(e);.   
1760: 20 7d 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 72   }.}..function r
1770: 65 66 72 65 73 68 50 61 72 61 67 72 61 70 68 20  efreshParagraph 
1780: 28 73 54 65 78 74 2c 20 73 49 64 50 61 72 61 67  (sText, sIdParag
1790: 72 2c 20 73 4a 53 4f 4e 29 20 7b 0a 20 20 20 20  r, sJSON) {.    
17a0: 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 6c 65  try {.        le
17b0: 74 20 78 50 61 72 61 67 72 61 70 68 20 3d 20 64  t xParagraph = d
17c0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
17d0: 6e 74 42 79 49 64 28 22 70 61 72 61 67 72 22 2b  ntById("paragr"+
17e0: 73 49 64 50 61 72 61 67 72 29 3b 0a 20 20 20 20  sIdParagr);.    
17f0: 20 20 20 20 6c 65 74 20 6f 45 72 72 6f 72 73 20      let oErrors 
1800: 3d 20 4a 53 4f 4e 2e 70 61 72 73 65 28 73 4a 53  = JSON.parse(sJS
1810: 4f 4e 29 3b 0a 20 20 20 20 20 20 20 20 78 50 61  ON);.        xPa
1820: 72 61 67 72 61 70 68 2e 63 6c 61 73 73 4e 61 6d  ragraph.classNam
1830: 65 20 3d 20 28 6f 45 72 72 6f 72 73 2e 61 47 72  e = (oErrors.aGr
1840: 61 6d 6d 45 72 72 2e 6c 65 6e 67 74 68 20 7c 7c  ammErr.length ||
1850: 20 6f 45 72 72 6f 72 73 2e 61 53 70 65 6c 6c 45   oErrors.aSpellE
1860: 72 72 2e 6c 65 6e 67 74 68 29 20 3f 20 22 70 61  rr.length) ? "pa
1870: 72 61 67 72 61 70 68 20 73 6f 66 74 72 65 64 22  ragraph softred"
1880: 20 3a 20 22 70 61 72 61 67 72 61 70 68 20 73 6f   : "paragraph so
1890: 66 74 67 72 65 65 6e 22 3b 0a 20 20 20 20 20 20  ftgreen";.      
18a0: 20 20 78 50 61 72 61 67 72 61 70 68 2e 74 65 78    xParagraph.tex
18b0: 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b 0a 20  tContent = "";. 
18c0: 20 20 20 20 20 20 20 5f 74 61 67 50 61 72 61 67         _tagParag
18d0: 72 61 70 68 28 73 54 65 78 74 2c 20 78 50 61 72  raph(sText, xPar
18e0: 61 67 72 61 70 68 2c 20 73 49 64 50 61 72 61 67  agraph, sIdParag
18f0: 72 2c 20 6f 45 72 72 6f 72 73 2e 61 47 72 61 6d  r, oErrors.aGram
1900: 6d 45 72 72 2c 20 6f 45 72 72 6f 72 73 2e 61 53  mErr, oErrors.aS
1910: 70 65 6c 6c 45 72 72 29 3b 0a 20 20 20 20 7d 0a  pellErr);.    }.
1920: 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a      catch (e) {.
1930: 20 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f          showErro
1940: 72 28 65 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 66  r(e);.    }.}..f
1950: 75 6e 63 74 69 6f 6e 20 5f 74 61 67 50 61 72 61  unction _tagPara
1960: 67 72 61 70 68 20 28 73 50 61 72 61 67 72 61 70  graph (sParagrap
1970: 68 2c 20 78 50 61 72 61 67 72 61 70 68 2c 20 69  h, xParagraph, i
1980: 50 61 72 61 67 72 61 70 68 2c 20 61 53 70 65 6c  Paragraph, aSpel
1990: 6c 45 72 72 2c 20 61 47 72 61 6d 6d 45 72 72 29  lErr, aGrammErr)
19a0: 20 7b 0a 20 20 20 20 74 72 79 20 7b 0a 20 20 20   {.    try {.   
19b0: 20 20 20 20 20 69 66 20 28 61 47 72 61 6d 6d 45       if (aGrammE
19c0: 72 72 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 20  rr.length === 0 
19d0: 20 26 26 20 20 61 53 70 65 6c 6c 45 72 72 2e 6c   &&  aSpellErr.l
19e0: 65 6e 67 74 68 20 3d 3d 3d 20 30 29 20 7b 0a 20  ength === 0) {. 
19f0: 20 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61             xPara
1a00: 67 72 61 70 68 2e 74 65 78 74 43 6f 6e 74 65 6e  graph.textConten
1a10: 74 20 3d 20 73 50 61 72 61 67 72 61 70 68 3b 0a  t = sParagraph;.
1a20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a30: 72 6e 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  rn.        }.   
1a40: 20 20 20 20 20 61 47 72 61 6d 6d 45 72 72 2e 70       aGrammErr.p
1a50: 75 73 68 28 2e 2e 2e 61 53 70 65 6c 6c 45 72 72  ush(...aSpellErr
1a60: 29 3b 0a 20 20 20 20 20 20 20 20 61 47 72 61 6d  );.        aGram
1a70: 6d 45 72 72 2e 73 6f 72 74 28 66 75 6e 63 74 69  mErr.sort(functi
1a80: 6f 6e 20 28 61 2c 20 62 29 20 7b 0a 20 20 20 20  on (a, b) {.    
1a90: 20 20 20 20 20 20 20 20 69 66 20 28 61 5b 22 6e          if (a["n
1aa0: 53 74 61 72 74 22 5d 20 3c 20 62 5b 22 6e 53 74  Start"] < b["nSt
1ab0: 61 72 74 22 5d 29 0a 20 20 20 20 20 20 20 20 20  art"]).         
1ac0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31         return -1
1ad0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ;.            if
1ae0: 20 28 61 5b 22 6e 53 74 61 72 74 22 5d 20 3e 20   (a["nStart"] > 
1af0: 62 5b 22 6e 53 74 61 72 74 22 5d 29 0a 20 20 20  b["nStart"]).   
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1b10: 75 72 6e 20 31 3b 0a 20 20 20 20 20 20 20 20 20  urn 1;.         
1b20: 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20     return 0;.   
1b30: 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 20       });..      
1b40: 20 20 6c 65 74 20 6e 45 72 72 20 3d 20 30 3b 20    let nErr = 0; 
1b50: 2f 2f 20 77 65 20 63 6f 75 6e 74 20 65 72 72 6f  // we count erro
1b60: 72 73 20 74 6f 20 67 69 76 65 20 74 68 65 6d 20  rs to give them 
1b70: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a 20 20  an identifier.  
1b80: 20 20 20 20 20 20 6c 65 74 20 6e 45 6e 64 4c 61        let nEndLa
1b90: 73 74 45 72 72 20 3d 20 30 3b 0a 20 20 20 20 20  stErr = 0;.     
1ba0: 20 20 20 66 6f 72 20 28 6c 65 74 20 6f 45 72 72     for (let oErr
1bb0: 20 6f 66 20 61 47 72 61 6d 6d 45 72 72 29 20 7b   of aGrammErr) {
1bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
1bd0: 20 6e 53 74 61 72 74 20 3d 20 6f 45 72 72 5b 22   nStart = oErr["
1be0: 6e 53 74 61 72 74 22 5d 3b 0a 20 20 20 20 20 20  nStart"];.      
1bf0: 20 20 20 20 20 20 6c 65 74 20 6e 45 6e 64 20 3d        let nEnd =
1c00: 20 6f 45 72 72 5b 22 6e 45 6e 64 22 5d 3b 0a 20   oErr["nEnd"];. 
1c10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
1c20: 53 74 61 72 74 20 3e 3d 20 6e 45 6e 64 4c 61 73  Start >= nEndLas
1c30: 74 45 72 72 29 20 7b 0a 20 20 20 20 20 20 20 20  tErr) {.        
1c40: 20 20 20 20 20 20 20 20 6f 45 72 72 5b 27 73 45          oErr['sE
1c50: 72 72 6f 72 49 64 27 5d 20 3d 20 69 50 61 72 61  rrorId'] = iPara
1c60: 67 72 61 70 68 2e 74 6f 53 74 72 69 6e 67 28 29  graph.toString()
1c70: 20 2b 20 22 5f 22 20 2b 20 6e 45 72 72 2e 74 6f   + "_" + nErr.to
1c80: 53 74 72 69 6e 67 28 29 3b 20 2f 2f 20 65 72 72  String(); // err
1c90: 6f 72 20 69 64 65 6e 74 69 66 69 65 72 0a 20 20  or identifier.  
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 45                oE
1cb0: 72 72 5b 27 73 49 67 6e 6f 72 65 64 4b 65 79 27  rr['sIgnoredKey'
1cc0: 5d 20 3d 20 69 50 61 72 61 67 72 61 70 68 2e 74  ] = iParagraph.t
1cd0: 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 3a 22 20  oString() + ":" 
1ce0: 2b 20 6e 53 74 61 72 74 2e 74 6f 53 74 72 69 6e  + nStart.toStrin
1cf0: 67 28 29 20 2b 20 22 3a 22 20 2b 20 6e 45 6e 64  g() + ":" + nEnd
1d00: 2e 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 3a  .toString() + ":
1d10: 22 20 2b 20 73 50 61 72 61 67 72 61 70 68 2e 73  " + sParagraph.s
1d20: 6c 69 63 65 28 6e 53 74 61 72 74 2c 20 6e 45 6e  lice(nStart, nEn
1d30: 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  d);.            
1d40: 20 20 20 20 69 66 20 28 6e 45 6e 64 4c 61 73 74      if (nEndLast
1d50: 45 72 72 20 3c 20 6e 53 74 61 72 74 29 20 7b 0a  Err < nStart) {.
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d70: 20 20 20 20 78 50 61 72 61 67 72 61 70 68 2e 61      xParagraph.a
1d80: 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d  ppendChild(docum
1d90: 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74 4e 6f  ent.createTextNo
1da0: 64 65 28 73 50 61 72 61 67 72 61 70 68 2e 73 6c  de(sParagraph.sl
1db0: 69 63 65 28 6e 45 6e 64 4c 61 73 74 45 72 72 2c  ice(nEndLastErr,
1dc0: 20 6e 53 74 61 72 74 29 29 29 3b 0a 20 20 20 20   nStart)));.    
1dd0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
1de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 50                xP
1df0: 61 72 61 67 72 61 70 68 2e 61 70 70 65 6e 64 43  aragraph.appendC
1e00: 68 69 6c 64 28 5f 63 72 65 61 74 65 45 72 72 6f  hild(_createErro
1e10: 72 28 73 50 61 72 61 67 72 61 70 68 2e 73 6c 69  r(sParagraph.sli
1e20: 63 65 28 6e 53 74 61 72 74 2c 20 6e 45 6e 64 29  ce(nStart, nEnd)
1e30: 2c 20 6f 45 72 72 29 29 3b 0a 20 20 20 20 20 20  , oErr));.      
1e40: 20 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67            xParag
1e50: 72 61 70 68 2e 69 6e 73 65 72 74 41 64 6a 61 63  raph.insertAdjac
1e60: 65 6e 74 48 54 4d 4c 28 22 62 65 66 6f 72 65 65  entHTML("beforee
1e70: 6e 64 22 2c 20 22 3c 21 2d 2d 20 65 72 72 5f 65  nd", "<!-- err_e
1e80: 6e 64 20 2d 2d 3e 22 29 3b 0a 20 20 20 20 20 20  nd -->");.      
1e90: 20 20 20 20 20 20 20 20 20 20 6e 45 6e 64 4c 61            nEndLa
1ea0: 73 74 45 72 72 20 3d 20 6e 45 6e 64 3b 0a 20 20  stErr = nEnd;.  
1eb0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
1ec0: 20 20 20 20 20 20 20 20 6e 45 72 72 20 2b 3d 20          nErr += 
1ed0: 31 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  1;.        }.   
1ee0: 20 20 20 20 20 69 66 20 28 6e 45 6e 64 4c 61 73       if (nEndLas
1ef0: 74 45 72 72 20 3c 3d 20 73 50 61 72 61 67 72 61  tErr <= sParagra
1f00: 70 68 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20  ph.length) {.   
1f10: 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72           xParagr
1f20: 61 70 68 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  aph.appendChild(
1f30: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54  document.createT
1f40: 65 78 74 4e 6f 64 65 28 73 50 61 72 61 67 72 61  extNode(sParagra
1f50: 70 68 2e 73 6c 69 63 65 28 6e 45 6e 64 4c 61 73  ph.slice(nEndLas
1f60: 74 45 72 72 29 29 29 3b 0a 20 20 20 20 20 20 20  tErr)));.       
1f70: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 63 61 74   }.    }.    cat
1f80: 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20  ch (e) {.       
1f90: 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20   showError(e);. 
1fa0: 20 20 20 7d 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e     }.}..function
1fb0: 20 5f 63 72 65 61 74 65 45 72 72 6f 72 20 28 73   _createError (s
1fc0: 55 6e 64 65 72 6c 69 6e 65 64 2c 20 6f 45 72 72  Underlined, oErr
1fd0: 29 20 7b 0a 20 20 20 20 6c 65 74 20 78 4e 6f 64  ) {.    let xNod
1fe0: 65 45 72 72 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  eErr = document.
1ff0: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 75  createElement("u
2000: 22 29 3b 0a 20 20 20 20 78 4e 6f 64 65 45 72 72  ");.    xNodeErr
2010: 2e 69 64 20 3d 20 22 65 72 72 22 20 2b 20 6f 45  .id = "err" + oE
2020: 72 72 5b 27 73 45 72 72 6f 72 49 64 27 5d 3b 0a  rr['sErrorId'];.
2030: 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 74 65 78      xNodeErr.tex
2040: 74 43 6f 6e 74 65 6e 74 20 3d 20 73 55 6e 64 65  tContent = sUnde
2050: 72 6c 69 6e 65 64 3b 0a 20 20 20 20 78 4e 6f 64  rlined;.    xNod
2060: 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72  eErr.dataset.err
2070: 6f 72 5f 69 64 20 3d 20 6f 45 72 72 5b 27 73 45  or_id = oErr['sE
2080: 72 72 6f 72 49 64 27 5d 3b 0a 20 20 20 20 78 4e  rrorId'];.    xN
2090: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 69  odeErr.dataset.i
20a0: 67 6e 6f 72 65 64 5f 6b 65 79 20 3d 20 6f 45 72  gnored_key = oEr
20b0: 72 5b 27 73 49 67 6e 6f 72 65 64 4b 65 79 27 5d  r['sIgnoredKey']
20c0: 3b 0a 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64  ;.    xNodeErr.d
20d0: 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 74 79 70  ataset.error_typ
20e0: 65 20 3d 20 28 6f 45 72 72 5b 27 73 54 79 70 65  e = (oErr['sType
20f0: 27 5d 20 3d 3d 3d 20 22 57 4f 52 44 22 29 20 3f  '] === "WORD") ?
2100: 20 22 73 70 65 6c 6c 69 6e 67 22 20 3a 20 22 67   "spelling" : "g
2110: 72 61 6d 6d 61 72 22 3b 0a 20 20 20 20 78 4e 6f  rammar";.    xNo
2120: 64 65 45 72 72 2e 73 65 74 41 74 74 72 69 62 75  deErr.setAttribu
2130: 74 65 28 22 68 72 65 66 22 2c 20 22 23 22 29 3b  te("href", "#");
2140: 0a 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 73 65  .    xNodeErr.se
2150: 74 41 74 74 72 69 62 75 74 65 28 22 6f 6e 63 6c  tAttribute("oncl
2160: 69 63 6b 22 2c 20 22 72 65 74 75 72 6e 20 66 61  ick", "return fa
2170: 6c 73 65 3b 22 29 3b 0a 20 20 20 20 69 66 20 28  lse;");.    if (
2180: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
2190: 2e 65 72 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20  .error_type === 
21a0: 22 67 72 61 6d 6d 61 72 22 29 20 7b 0a 20 20 20  "grammar") {.   
21b0: 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 64 61       xNodeErr.da
21c0: 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65  taset.gc_message
21d0: 20 3d 20 6f 45 72 72 5b 27 73 4d 65 73 73 61 67   = oErr['sMessag
21e0: 65 27 5d 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f  e'];.        xNo
21f0: 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 67 63  deErr.dataset.gc
2200: 5f 75 72 6c 20 3d 20 6f 45 72 72 5b 27 55 52 4c  _url = oErr['URL
2210: 27 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  '];.        if (
2220: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
2230: 2e 67 63 5f 6d 65 73 73 61 67 65 2e 69 6e 63 6c  .gc_message.incl
2240: 75 64 65 73 28 22 20 23 22 29 29 20 7b 0a 20 20  udes(" #")) {.  
2250: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45            xNodeE
2260: 72 72 2e 64 61 74 61 73 65 74 2e 6c 69 6e 65 5f  rr.dataset.line_
2270: 69 64 20 3d 20 6f 45 72 72 5b 27 73 4c 69 6e 65  id = oErr['sLine
2280: 49 64 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20  Id'];.          
2290: 20 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73    xNodeErr.datas
22a0: 65 74 2e 72 75 6c 65 5f 69 64 20 3d 20 6f 45 72  et.rule_id = oEr
22b0: 72 5b 27 73 52 75 6c 65 49 64 27 5d 3b 0a 20 20  r['sRuleId'];.  
22c0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
22d0: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
22e0: 2e 73 75 67 67 65 73 74 69 6f 6e 73 20 3d 20 6f  .suggestions = o
22f0: 45 72 72 5b 22 61 53 75 67 67 65 73 74 69 6f 6e  Err["aSuggestion
2300: 73 22 5d 2e 6a 6f 69 6e 28 22 7c 22 29 3b 0a 20  s"].join("|");. 
2310: 20 20 20 7d 0a 20 20 20 20 78 4e 6f 64 65 45 72     }.    xNodeEr
2320: 72 2e 63 6c 61 73 73 4e 61 6d 65 20 3d 20 28 61  r.className = (a
2330: 49 67 6e 6f 72 65 64 45 72 72 6f 72 73 2e 68 61  IgnoredErrors.ha
2340: 73 28 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73  s(xNodeErr.datas
2350: 65 74 2e 69 67 6e 6f 72 65 64 5f 6b 65 79 29 29  et.ignored_key))
2360: 20 3f 20 22 69 67 6e 6f 72 65 64 22 20 3a 20 22   ? "ignored" : "
2370: 65 72 72 6f 72 20 22 20 2b 20 6f 45 72 72 5b 27  error " + oErr['
2380: 73 54 79 70 65 27 5d 3b 0a 20 20 20 20 72 65 74  sType'];.    ret
2390: 75 72 6e 20 78 4e 6f 64 65 45 72 72 3b 0a 7d 0a  urn xNodeErr;.}.
23a0: 0a 66 75 6e 63 74 69 6f 6e 20 61 70 70 6c 79 53  .function applyS
23b0: 75 67 67 65 73 74 69 6f 6e 20 28 73 53 75 67 67  uggestion (sSugg
23c0: 49 64 29 20 7b 20 2f 2f 20 73 75 67 67 0a 20 20  Id) { // sugg.  
23d0: 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20    try {.        
23e0: 6c 65 74 20 73 45 72 72 6f 72 49 64 20 3d 20 64  let sErrorId = d
23f0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
2400: 6e 74 42 79 49 64 28 73 53 75 67 67 49 64 29 2e  ntById(sSuggId).
2410: 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64  dataset.error_id
2420: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 73 49  ;.        let sI
2430: 64 50 61 72 61 67 72 20 3d 20 73 45 72 72 6f 72  dParagr = sError
2440: 49 64 2e 73 6c 69 63 65 28 30 2c 20 73 45 72 72  Id.slice(0, sErr
2450: 6f 72 49 64 2e 69 6e 64 65 78 4f 66 28 22 5f 22  orId.indexOf("_"
2460: 29 29 3b 0a 20 20 20 20 20 20 20 20 73 74 61 72  ));.        star
2470: 74 57 61 69 74 49 63 6f 6e 28 22 70 61 72 61 67  tWaitIcon("parag
2480: 72 22 2b 73 49 64 50 61 72 61 67 72 29 3b 0a 20  r"+sIdParagr);. 
2490: 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65         let xNode
24a0: 45 72 72 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67  Err = document.g
24b0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 65  etElementById("e
24c0: 72 72 22 20 2b 20 73 45 72 72 6f 72 49 64 29 3b  rr" + sErrorId);
24d0: 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72  .        xNodeEr
24e0: 72 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  r.textContent = 
24f0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
2500: 65 6e 74 42 79 49 64 28 73 53 75 67 67 49 64 29  entById(sSuggId)
2510: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 3b 0a 20 20  .textContent;.  
2520: 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 2e 63        xNodeErr.c
2530: 6c 61 73 73 4e 61 6d 65 20 3d 20 22 63 6f 72 72  lassName = "corr
2540: 65 63 74 65 64 22 3b 0a 20 20 20 20 20 20 20 20  ected";.        
2550: 78 4e 6f 64 65 45 72 72 2e 72 65 6d 6f 76 65 41  xNodeErr.removeA
2560: 74 74 72 69 62 75 74 65 28 22 73 74 79 6c 65 22  ttribute("style"
2570: 29 3b 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  );.        self.
2580: 70 6f 72 74 2e 65 6d 69 74 28 22 63 6f 72 72 65  port.emit("corre
2590: 63 74 69 6f 6e 22 2c 20 73 49 64 50 61 72 61 67  ction", sIdParag
25a0: 72 2c 20 67 65 74 50 75 72 67 65 64 54 65 78 74  r, getPurgedText
25b0: 4f 66 50 61 72 61 67 72 61 70 68 28 22 70 61 72  OfParagraph("par
25c0: 61 67 72 22 2b 73 49 64 50 61 72 61 67 72 29 29  agr"+sIdParagr))
25d0: 3b 0a 20 20 20 20 20 20 20 20 68 69 64 65 41 6c  ;.        hideAl
25e0: 6c 54 6f 6f 6c 74 69 70 73 28 29 3b 0a 20 20 20  lTooltips();.   
25f0: 20 20 20 20 20 73 74 6f 70 57 61 69 74 49 63 6f       stopWaitIco
2600: 6e 28 22 70 61 72 61 67 72 22 2b 73 49 64 50 61  n("paragr"+sIdPa
2610: 72 61 67 72 29 3b 0a 20 20 20 20 7d 0a 20 20 20  ragr);.    }.   
2620: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
2630: 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65       showError(e
2640: 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 66 75 6e 63  );.    }.}..func
2650: 74 69 6f 6e 20 69 67 6e 6f 72 65 45 72 72 6f 72  tion ignoreError
2660: 20 28 73 49 67 6e 6f 72 65 42 75 74 74 6f 6e 49   (sIgnoreButtonI
2670: 64 29 20 7b 20 20 2f 2f 20 69 67 6e 6f 72 65 0a  d) {  // ignore.
2680: 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20      try {.      
2690: 20 20 2f 2f 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28    //console.log(
26a0: 22 69 67 6e 6f 72 65 20 62 75 74 74 6f 6e 3a 20  "ignore button: 
26b0: 22 20 2b 20 73 49 67 6e 6f 72 65 42 75 74 74 6f  " + sIgnoreButto
26c0: 6e 49 64 20 2b 20 22 20 2f 2f 20 65 72 72 6f 72  nId + " // error
26d0: 20 69 64 3a 20 22 20 2b 20 64 6f 63 75 6d 65 6e   id: " + documen
26e0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
26f0: 28 73 49 67 6e 6f 72 65 42 75 74 74 6f 6e 49 64  (sIgnoreButtonId
2700: 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f  ).dataset.error_
2710: 69 64 29 3b 0a 20 20 20 20 20 20 20 20 6c 65 74  id);.        let
2720: 20 78 4e 6f 64 65 45 72 72 20 3d 20 64 6f 63 75   xNodeErr = docu
2730: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
2740: 79 49 64 28 22 65 72 72 22 2b 64 6f 63 75 6d 65  yId("err"+docume
2750: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
2760: 64 28 73 49 67 6e 6f 72 65 42 75 74 74 6f 6e 49  d(sIgnoreButtonI
2770: 64 29 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72  d).dataset.error
2780: 5f 69 64 29 3b 0a 20 20 20 20 20 20 20 20 61 49  _id);.        aI
2790: 67 6e 6f 72 65 64 45 72 72 6f 72 73 2e 61 64 64  gnoredErrors.add
27a0: 28 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65  (xNodeErr.datase
27b0: 74 2e 69 67 6e 6f 72 65 64 5f 6b 65 79 29 3b 0a  t.ignored_key);.
27c0: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72          xNodeErr
27d0: 2e 63 6c 61 73 73 4e 61 6d 65 20 3d 20 22 69 67  .className = "ig
27e0: 6e 6f 72 65 64 22 3b 0a 20 20 20 20 20 20 20 20  nored";.        
27f0: 78 4e 6f 64 65 45 72 72 2e 72 65 6d 6f 76 65 41  xNodeErr.removeA
2800: 74 74 72 69 62 75 74 65 28 22 73 74 79 6c 65 22  ttribute("style"
2810: 29 3b 0a 20 20 20 20 20 20 20 20 68 69 64 65 41  );.        hideA
2820: 6c 6c 54 6f 6f 6c 74 69 70 73 28 29 3b 0a 20 20  llTooltips();.  
2830: 20 20 7d 0a 20 20 20 20 63 61 74 63 68 20 28 65    }.    catch (e
2840: 29 20 7b 0a 20 20 20 20 20 20 20 20 73 68 6f 77  ) {.        show
2850: 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 7d 0a  Error(e);.    }.
2860: 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f 77  }..function show
2870: 54 6f 6f 6c 74 69 70 20 28 73 4e 6f 64 65 45 72  Tooltip (sNodeEr
2880: 72 6f 72 49 64 29 20 7b 20 20 2f 2f 20 65 72 72  rorId) {  // err
2890: 0a 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20  .    try {.     
28a0: 20 20 20 68 69 64 65 41 6c 6c 54 6f 6f 6c 74 69     hideAllToolti
28b0: 70 73 28 29 3b 0a 20 20 20 20 20 20 20 20 6c 65  ps();.        le
28c0: 74 20 78 4e 6f 64 65 45 72 72 20 3d 20 64 6f 63  t xNodeErr = doc
28d0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
28e0: 42 79 49 64 28 73 4e 6f 64 65 45 72 72 6f 72 49  ById(sNodeErrorI
28f0: 64 29 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  d);.        let 
2900: 73 54 6f 6f 6c 74 69 70 49 64 20 3d 20 28 78 4e  sTooltipId = (xN
2910: 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e 65  odeErr.dataset.e
2920: 72 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22 67  rror_type === "g
2930: 72 61 6d 6d 61 72 22 29 20 3f 20 22 67 63 5f 74  rammar") ? "gc_t
2940: 6f 6f 6c 74 69 70 22 20 3a 20 22 73 63 5f 74 6f  ooltip" : "sc_to
2950: 6f 6c 74 69 70 22 3b 0a 20 20 20 20 20 20 20 20  oltip";.        
2960: 6c 65 74 20 78 4e 6f 64 65 54 6f 6f 6c 74 69 70  let xNodeTooltip
2970: 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45   = document.getE
2980: 6c 65 6d 65 6e 74 42 79 49 64 28 73 54 6f 6f 6c  lementById(sTool
2990: 74 69 70 49 64 29 3b 0a 20 20 20 20 20 20 20 20  tipId);.        
29a0: 6c 65 74 20 78 4e 6f 64 65 54 6f 6f 6c 74 69 70  let xNodeTooltip
29b0: 41 72 72 6f 77 20 3d 20 64 6f 63 75 6d 65 6e 74  Arrow = document
29c0: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
29d0: 73 54 6f 6f 6c 74 69 70 49 64 2b 22 5f 61 72 72  sTooltipId+"_arr
29e0: 6f 77 22 29 3b 20 0a 20 20 20 20 20 20 20 20 6c  ow"); .        l
29f0: 65 74 20 6e 4c 69 6d 69 74 20 3d 20 6e 50 61 6e  et nLimit = nPan
2a00: 65 6c 57 69 64 74 68 20 2d 20 33 33 30 3b 20 2f  elWidth - 330; /
2a10: 2f 20 70 61 72 61 67 72 61 70 68 20 77 69 64 74  / paragraph widt
2a20: 68 20 2d 20 74 6f 6f 6c 74 69 70 20 77 69 64 74  h - tooltip widt
2a30: 68 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 54  h.        xNodeT
2a40: 6f 6f 6c 74 69 70 41 72 72 6f 77 2e 73 74 79 6c  ooltipArrow.styl
2a50: 65 2e 74 6f 70 20 3d 20 28 78 4e 6f 64 65 45 72  e.top = (xNodeEr
2a60: 72 2e 6f 66 66 73 65 74 54 6f 70 20 2b 20 31 36  r.offsetTop + 16
2a70: 29 20 2b 20 22 70 78 22 0a 20 20 20 20 20 20 20  ) + "px".       
2a80: 20 78 4e 6f 64 65 54 6f 6f 6c 74 69 70 41 72 72   xNodeTooltipArr
2a90: 6f 77 2e 73 74 79 6c 65 2e 6c 65 66 74 20 3d 20  ow.style.left = 
2aa0: 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74  (xNodeErr.offset
2ab0: 4c 65 66 74 20 2b 20 4d 61 74 68 2e 66 6c 6f 6f  Left + Math.floo
2ac0: 72 28 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73  r((xNodeErr.offs
2ad0: 65 74 57 69 64 74 68 20 2f 20 32 29 29 2d 34 29  etWidth / 2))-4)
2ae0: 20 2b 20 22 70 78 22 20 2f 2f 20 34 20 69 73 20   + "px" // 4 is 
2af0: 68 61 6c 66 20 74 68 65 20 77 69 64 74 68 20 6f  half the width o
2b00: 66 20 74 68 65 20 61 72 72 6f 77 2e 0a 20 20 20  f the arrow..   
2b10: 20 20 20 20 20 78 4e 6f 64 65 54 6f 6f 6c 74 69       xNodeToolti
2b20: 70 2e 73 74 79 6c 65 2e 74 6f 70 20 3d 20 28 78  p.style.top = (x
2b30: 4e 6f 64 65 45 72 72 2e 6f 66 66 73 65 74 54 6f  NodeErr.offsetTo
2b40: 70 20 2b 20 32 30 29 20 2b 20 22 70 78 22 3b 0a  p + 20) + "px";.
2b50: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 54 6f 6f          xNodeToo
2b60: 6c 74 69 70 2e 73 74 79 6c 65 2e 6c 65 66 74 20  ltip.style.left 
2b70: 3d 20 28 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73  = (xNodeErr.offs
2b80: 65 74 4c 65 66 74 20 3e 20 6e 4c 69 6d 69 74 29  etLeft > nLimit)
2b90: 20 3f 20 6e 4c 69 6d 69 74 20 2b 20 22 70 78 22   ? nLimit + "px"
2ba0: 20 3a 20 78 4e 6f 64 65 45 72 72 2e 6f 66 66 73   : xNodeErr.offs
2bb0: 65 74 4c 65 66 74 20 2b 20 22 70 78 22 3b 0a 20  etLeft + "px";. 
2bc0: 20 20 20 20 20 20 20 69 66 20 28 78 4e 6f 64 65         if (xNode
2bd0: 45 72 72 2e 64 61 74 61 73 65 74 2e 65 72 72 6f  Err.dataset.erro
2be0: 72 5f 74 79 70 65 20 3d 3d 3d 20 22 67 72 61 6d  r_type === "gram
2bf0: 6d 61 72 22 29 20 7b 0a 20 20 20 20 20 20 20 20  mar") {.        
2c00: 20 20 20 20 2f 2f 20 67 72 61 6d 6d 61 72 20 65      // grammar e
2c10: 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20  rror.           
2c20: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
2c30: 6d 65 6e 74 42 79 49 64 28 22 67 63 5f 6d 65 73  mentById("gc_mes
2c40: 73 61 67 65 22 29 2e 74 65 78 74 43 6f 6e 74 65  sage").textConte
2c50: 6e 74 20 3d 20 78 4e 6f 64 65 45 72 72 2e 64 61  nt = xNodeErr.da
2c60: 74 61 73 65 74 2e 67 63 5f 6d 65 73 73 61 67 65  taset.gc_message
2c70: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ;.            if
2c80: 20 28 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73   (xNodeErr.datas
2c90: 65 74 2e 67 63 5f 75 72 6c 20 21 3d 20 22 22 29  et.gc_url != "")
2ca0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
2cb0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
2cc0: 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 63 5f 75  lementById("gc_u
2cd0: 72 6c 22 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c  rl").style.displ
2ce0: 61 79 20 3d 20 22 69 6e 6c 69 6e 65 22 3b 0a 20  ay = "inline";. 
2cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
2d00: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
2d10: 6e 74 42 79 49 64 28 22 67 63 5f 75 72 6c 22 29  ntById("gc_url")
2d20: 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22 68  .setAttribute("h
2d30: 72 65 66 22 2c 20 78 4e 6f 64 65 45 72 72 2e 64  ref", xNodeErr.d
2d40: 61 74 61 73 65 74 2e 67 63 5f 75 72 6c 29 3b 0a  ataset.gc_url);.
2d50: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
2d60: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
2d70: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
2d80: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67 63  tElementById("gc
2d90: 5f 75 72 6c 22 29 2e 73 74 79 6c 65 2e 64 69 73  _url").style.dis
2da0: 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a 20  play = "none";. 
2db0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
2dc0: 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e           documen
2dd0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
2de0: 28 22 67 63 5f 69 67 6e 6f 72 65 22 29 2e 64 61  ("gc_ignore").da
2df0: 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 20 3d  taset.error_id =
2e00: 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65   xNodeErr.datase
2e10: 74 2e 65 72 72 6f 72 5f 69 64 3b 0a 20 20 20 20  t.error_id;.    
2e20: 20 20 20 20 20 20 20 20 6c 65 74 20 69 53 75 67          let iSug
2e30: 67 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20  g = 0;.         
2e40: 20 20 20 6c 65 74 20 78 47 43 53 75 67 67 20 3d     let xGCSugg =
2e50: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
2e60: 6d 65 6e 74 42 79 49 64 28 22 67 63 5f 73 75 67  mentById("gc_sug
2e70: 67 5f 62 6c 6f 63 6b 22 29 3b 0a 20 20 20 20 20  g_block");.     
2e80: 20 20 20 20 20 20 20 78 47 43 53 75 67 67 2e 74         xGCSugg.t
2e90: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b  extContent = "";
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
2eb0: 20 28 6c 65 74 20 73 53 75 67 67 20 6f 66 20 78   (let sSugg of x
2ec0: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
2ed0: 73 75 67 67 65 73 74 69 6f 6e 73 2e 73 70 6c 69  suggestions.spli
2ee0: 74 28 22 7c 22 29 29 20 7b 0a 20 20 20 20 20 20  t("|")) {.      
2ef0: 20 20 20 20 20 20 20 20 20 20 78 47 43 53 75 67            xGCSug
2f00: 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 5f 63  g.appendChild(_c
2f10: 72 65 61 74 65 53 75 67 67 65 73 74 69 6f 6e 28  reateSuggestion(
2f20: 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74  xNodeErr.dataset
2f30: 2e 65 72 72 6f 72 5f 69 64 2c 20 69 53 75 67 67  .error_id, iSugg
2f40: 2c 20 73 53 75 67 67 29 29 3b 0a 20 20 20 20 20  , sSugg));.     
2f50: 20 20 20 20 20 20 20 20 20 20 20 78 47 43 53 75             xGCSu
2f60: 67 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 64  gg.appendChild(d
2f70: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54 65  ocument.createTe
2f80: 78 74 4e 6f 64 65 28 22 20 22 29 29 3b 0a 20 20  xtNode(" "));.  
2f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 53                iS
2fa0: 75 67 67 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20  ugg += 1;.      
2fb0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
2fc0: 7d 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 54  }.        xNodeT
2fd0: 6f 6f 6c 74 69 70 41 72 72 6f 77 2e 73 74 79 6c  ooltipArrow.styl
2fe0: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f  e.display = "blo
2ff0: 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f  ck";.        xNo
3000: 64 65 54 6f 6f 6c 74 69 70 2e 73 74 79 6c 65 2e  deTooltip.style.
3010: 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f 63 6b  display = "block
3020: 22 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 78  ";.        if (x
3030: 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65 74 2e  NodeErr.dataset.
3040: 65 72 72 6f 72 5f 74 79 70 65 20 3d 3d 3d 20 22  error_type === "
3050: 73 70 65 6c 6c 69 6e 67 22 29 20 7b 0a 20 20 20  spelling") {.   
3060: 20 20 20 20 20 20 20 20 20 2f 2f 20 73 70 65 6c           // spel
3070: 6c 69 6e 67 20 6d 69 73 74 61 6b 65 0a 20 20 20  ling mistake.   
3080: 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e           documen
3090: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
30a0: 28 22 73 63 5f 69 67 6e 6f 72 65 22 29 2e 64 61  ("sc_ignore").da
30b0: 74 61 73 65 74 2e 65 72 72 6f 72 5f 69 64 20 3d  taset.error_id =
30c0: 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61 73 65   xNodeErr.datase
30d0: 74 2e 65 72 72 6f 72 5f 69 64 3b 0a 20 20 20 20  t.error_id;.    
30e0: 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 73 6f 6c          //consol
30f0: 65 2e 6c 6f 67 28 22 67 65 74 53 75 67 67 46 6f  e.log("getSuggFo
3100: 72 3a 20 22 20 2b 20 78 4e 6f 64 65 45 72 72 2e  r: " + xNodeErr.
3110: 74 65 78 74 43 6f 6e 74 65 6e 74 2e 74 72 69 6d  textContent.trim
3120: 28 29 20 2b 20 22 20 2f 2f 20 65 72 72 6f 72 5f  () + " // error_
3130: 69 64 3a 20 22 20 2b 20 78 4e 6f 64 65 45 72 72  id: " + xNodeErr
3140: 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69  .dataset.error_i
3150: 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  d);.            
3160: 73 65 6c 66 2e 70 6f 72 74 2e 65 6d 69 74 28 22  self.port.emit("
3170: 67 65 74 53 75 67 67 65 73 74 69 6f 6e 73 46 6f  getSuggestionsFo
3180: 72 54 6f 22 2c 20 78 4e 6f 64 65 45 72 72 2e 74  rTo", xNodeErr.t
3190: 65 78 74 43 6f 6e 74 65 6e 74 2e 74 72 69 6d 28  extContent.trim(
31a0: 29 2c 20 78 4e 6f 64 65 45 72 72 2e 64 61 74 61  ), xNodeErr.data
31b0: 73 65 74 2e 65 72 72 6f 72 5f 69 64 29 3b 0a 20  set.error_id);. 
31c0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20         }.    }. 
31d0: 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20     catch (e) {. 
31e0: 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72         showError
31f0: 28 65 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 66 75  (e);.    }.}..fu
3200: 6e 63 74 69 6f 6e 20 5f 63 72 65 61 74 65 53 75  nction _createSu
3210: 67 67 65 73 74 69 6f 6e 20 28 73 45 72 72 49 64  ggestion (sErrId
3220: 2c 20 69 53 75 67 67 2c 20 73 53 75 67 67 29 20  , iSugg, sSugg) 
3230: 7b 0a 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 53  {.    let xNodeS
3240: 75 67 67 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63  ugg = document.c
3250: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 61 22  reateElement("a"
3260: 29 3b 0a 20 20 20 20 78 4e 6f 64 65 53 75 67 67  );.    xNodeSugg
3270: 2e 69 64 20 3d 20 22 73 75 67 67 22 20 2b 20 73  .id = "sugg" + s
3280: 45 72 72 49 64 20 2b 20 22 2d 22 20 2b 20 69 53  ErrId + "-" + iS
3290: 75 67 67 2e 74 6f 53 74 72 69 6e 67 28 29 3b 0a  ugg.toString();.
32a0: 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e 63 6c      xNodeSugg.cl
32b0: 61 73 73 4e 61 6d 65 20 3d 20 22 73 75 67 67 22  assName = "sugg"
32c0: 3b 0a 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e  ;.    xNodeSugg.
32d0: 73 65 74 41 74 74 72 69 62 75 74 65 28 22 68 72  setAttribute("hr
32e0: 65 66 22 2c 20 22 23 22 29 3b 0a 20 20 20 20 78  ef", "#");.    x
32f0: 4e 6f 64 65 53 75 67 67 2e 73 65 74 41 74 74 72  NodeSugg.setAttr
3300: 69 62 75 74 65 28 22 6f 6e 63 6c 69 63 6b 22 2c  ibute("onclick",
3310: 20 22 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 22   "return false;"
3320: 29 3b 0a 20 20 20 20 78 4e 6f 64 65 53 75 67 67  );.    xNodeSugg
3330: 2e 64 61 74 61 73 65 74 2e 65 72 72 6f 72 5f 69  .dataset.error_i
3340: 64 20 3d 20 73 45 72 72 49 64 3b 0a 20 20 20 20  d = sErrId;.    
3350: 78 4e 6f 64 65 53 75 67 67 2e 74 65 78 74 43 6f  xNodeSugg.textCo
3360: 6e 74 65 6e 74 20 3d 20 73 53 75 67 67 3b 0a 20  ntent = sSugg;. 
3370: 20 20 20 72 65 74 75 72 6e 20 78 4e 6f 64 65 53     return xNodeS
3380: 75 67 67 3b 0a 7d 0a 0a 2f 2a 66 75 6e 63 74 69  ugg;.}../*functi
3390: 6f 6e 20 73 77 69 74 63 68 45 64 69 74 69 6f 6e  on switchEdition
33a0: 20 28 73 45 64 69 74 42 75 74 74 6f 6e 49 64 29   (sEditButtonId)
33b0: 20 7b 20 20 2f 2f 20 65 64 69 74 0a 20 20 20 20   {  // edit.    
33c0: 6c 65 74 20 78 50 61 72 61 67 72 61 70 68 20 3d  let xParagraph =
33d0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
33e0: 6d 65 6e 74 42 79 49 64 28 22 70 61 72 61 67 72  mentById("paragr
33f0: 22 20 2b 20 73 45 64 69 74 42 75 74 74 6f 6e 49  " + sEditButtonI
3400: 64 2e 73 6c 69 63 65 28 34 29 29 3b 0a 20 20 20  d.slice(4));.   
3410: 20 69 66 20 28 78 50 61 72 61 67 72 61 70 68 2e   if (xParagraph.
3420: 68 61 73 41 74 74 72 69 62 75 74 65 28 22 63 6f  hasAttribute("co
3430: 6e 74 65 6e 74 65 64 69 74 61 62 6c 65 22 29 20  ntenteditable") 
3440: 3d 3d 3d 20 66 61 6c 73 65 0a 20 20 20 20 20 20  === false.      
3450: 20 20 7c 7c 20 78 50 61 72 61 67 72 61 70 68 2e    || xParagraph.
3460: 67 65 74 41 74 74 72 69 62 75 74 65 28 22 63 6f  getAttribute("co
3470: 6e 74 65 6e 74 65 64 69 74 61 62 6c 65 22 29 20  ntenteditable") 
3480: 3d 3d 3d 20 22 66 61 6c 73 65 22 29 20 7b 0a 20  === "false") {. 
3490: 20 20 20 20 20 20 20 78 50 61 72 61 67 72 61 70         xParagrap
34a0: 68 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22  h.setAttribute("
34b0: 63 6f 6e 74 65 6e 74 65 64 69 74 61 62 6c 65 22  contenteditable"
34c0: 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20  , true);.       
34d0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
34e0: 6d 65 6e 74 42 79 49 64 28 73 45 64 69 74 42 75  mentById(sEditBu
34f0: 74 74 6f 6e 49 64 29 2e 63 6c 61 73 73 4e 61 6d  ttonId).classNam
3500: 65 20 3d 20 22 62 75 74 74 6f 6e 20 6f 72 61 6e  e = "button oran
3510: 67 65 22 3b 0a 20 20 20 20 20 20 20 20 78 50 61  ge";.        xPa
3520: 72 61 67 72 61 70 68 2e 66 6f 63 75 73 28 29 3b  ragraph.focus();
3530: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20  .    } else {.  
3540: 20 20 20 20 20 20 78 50 61 72 61 67 72 61 70 68        xParagraph
3550: 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22 63  .setAttribute("c
3560: 6f 6e 74 65 6e 74 65 64 69 74 61 62 6c 65 22 2c  ontenteditable",
3570: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20   false);.       
3580: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
3590: 6d 65 6e 74 42 79 49 64 28 73 45 64 69 74 42 75  mentById(sEditBu
35a0: 74 74 6f 6e 49 64 29 2e 63 6c 61 73 73 4e 61 6d  ttonId).classNam
35b0: 65 20 3d 20 22 62 75 74 74 6f 6e 22 3b 0a 20 20  e = "button";.  
35c0: 20 20 7d 0a 7d 2a 2f 0a 0a 66 75 6e 63 74 69 6f    }.}*/..functio
35d0: 6e 20 73 65 6e 64 42 61 63 6b 41 6e 64 43 68 65  n sendBackAndChe
35e0: 63 6b 20 28 73 43 68 65 63 6b 42 75 74 74 6f 6e  ck (sCheckButton
35f0: 49 64 29 20 7b 20 20 2f 2f 20 63 68 65 63 6b 0a  Id) {  // check.
3600: 20 20 20 20 73 74 61 72 74 57 61 69 74 49 63 6f      startWaitIco
3610: 6e 28 29 3b 0a 20 20 20 20 6c 65 74 20 73 49 64  n();.    let sId
3620: 50 61 72 61 67 72 20 3d 20 73 43 68 65 63 6b 42  Paragr = sCheckB
3630: 75 74 74 6f 6e 49 64 2e 73 6c 69 63 65 28 35 29  uttonId.slice(5)
3640: 3b 0a 20 20 20 20 73 65 6c 66 2e 70 6f 72 74 2e  ;.    self.port.
3650: 65 6d 69 74 28 22 6d 6f 64 69 66 79 41 6e 64 43  emit("modifyAndC
3660: 68 65 63 6b 22 2c 20 73 49 64 50 61 72 61 67 72  heck", sIdParagr
3670: 2c 20 67 65 74 50 75 72 67 65 64 54 65 78 74 4f  , getPurgedTextO
3680: 66 50 61 72 61 67 72 61 70 68 28 22 70 61 72 61  fParagraph("para
3690: 67 72 22 2b 73 49 64 50 61 72 61 67 72 29 29 3b  gr"+sIdParagr));
36a0: 0a 20 20 20 20 73 74 6f 70 57 61 69 74 49 63 6f  .    stopWaitIco
36b0: 6e 28 29 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e  n();.}..function
36c0: 20 68 69 64 65 41 6c 6c 54 6f 6f 6c 74 69 70 73   hideAllTooltips
36d0: 20 28 29 20 7b 0a 20 20 20 20 64 6f 63 75 6d 65   () {.    docume
36e0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
36f0: 64 28 22 67 63 5f 74 6f 6f 6c 74 69 70 22 29 2e  d("gc_tooltip").
3700: 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20  style.display = 
3710: 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 64 6f 63 75  "none";.    docu
3720: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
3730: 79 49 64 28 22 73 63 5f 74 6f 6f 6c 74 69 70 22  yId("sc_tooltip"
3740: 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  ).style.display 
3750: 3d 20 22 6e 6f 6e 65 22 3b 0a 20 20 20 20 64 6f  = "none";.    do
3760: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
3770: 74 42 79 49 64 28 22 67 63 5f 74 6f 6f 6c 74 69  tById("gc_toolti
3780: 70 5f 61 72 72 6f 77 22 29 2e 73 74 79 6c 65 2e  p_arrow").style.
3790: 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22  display = "none"
37a0: 3b 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67  ;.    document.g
37b0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 73  etElementById("s
37c0: 63 5f 74 6f 6f 6c 74 69 70 5f 61 72 72 6f 77 22  c_tooltip_arrow"
37d0: 29 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  ).style.display 
37e0: 3d 20 22 6e 6f 6e 65 22 3b 0a 7d 0a 0a 66 75 6e  = "none";.}..fun
37f0: 63 74 69 6f 6e 20 73 65 74 53 70 65 6c 6c 53 75  ction setSpellSu
3800: 67 67 65 73 74 69 6f 6e 73 46 6f 72 20 28 73 57  ggestionsFor (sW
3810: 6f 72 64 2c 20 73 53 75 67 67 65 73 74 69 6f 6e  ord, sSuggestion
3820: 73 2c 20 73 45 72 72 49 64 29 20 7b 0a 20 20 20  s, sErrId) {.   
3830: 20 2f 2f 20 73 70 65 6c 6c 20 63 68 65 63 6b 69   // spell checki
3840: 6e 67 20 73 75 67 67 65 73 74 69 6f 6e 73 0a 20  ng suggestions. 
3850: 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20     try {.       
3860: 20 2f 2f 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28   // console.log(
3870: 22 73 65 74 53 75 67 67 65 73 74 69 6f 6e 73 46  "setSuggestionsF
3880: 6f 72 3a 20 22 20 2b 20 73 57 6f 72 64 20 2b 20  or: " + sWord + 
3890: 22 20 3e 20 22 20 2b 20 73 53 75 67 67 65 73 74  " > " + sSuggest
38a0: 69 6f 6e 73 20 2b 20 22 20 2f 2f 20 22 20 2b 20  ions + " // " + 
38b0: 73 45 72 72 49 64 29 3b 0a 20 20 20 20 20 20 20  sErrId);.       
38c0: 20 6c 65 74 20 78 53 75 67 67 42 6c 6f 63 6b 20   let xSuggBlock 
38d0: 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c  = document.getEl
38e0: 65 6d 65 6e 74 42 79 49 64 28 22 73 63 5f 73 75  ementById("sc_su
38f0: 67 67 5f 62 6c 6f 63 6b 22 29 3b 0a 20 20 20 20  gg_block");.    
3900: 20 20 20 20 78 53 75 67 67 42 6c 6f 63 6b 2e 74      xSuggBlock.t
3910: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b  extContent = "";
3920: 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 53 75  .        if (sSu
3930: 67 67 65 73 74 69 6f 6e 73 20 3d 3d 3d 20 22 22  ggestions === ""
3940: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
3950: 78 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e  xSuggBlock.appen
3960: 64 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e  dChild(document.
3970: 63 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22  createTextNode("
3980: 41 75 63 75 6e 65 2e 22 29 29 3b 0a 20 20 20 20  Aucune."));.    
3990: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73      } else if (s
39a0: 53 75 67 67 65 73 74 69 6f 6e 73 2e 73 74 61 72  Suggestions.star
39b0: 74 73 57 69 74 68 28 22 23 22 29 29 20 7b 0a 20  tsWith("#")) {. 
39c0: 20 20 20 20 20 20 20 20 20 20 20 78 53 75 67 67             xSugg
39d0: 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43 68 69 6c  Block.appendChil
39e0: 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74  d(document.creat
39f0: 65 54 65 78 74 4e 6f 64 65 28 73 53 75 67 67 65  eTextNode(sSugge
3a00: 73 74 69 6f 6e 73 29 29 3b 0a 20 20 20 20 20 20  stions));.      
3a10: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
3a20: 20 20 20 20 20 20 20 6c 65 74 20 6c 53 75 67 67         let lSugg
3a30: 20 3d 20 73 53 75 67 67 65 73 74 69 6f 6e 73 2e   = sSuggestions.
3a40: 73 70 6c 69 74 28 22 7c 22 29 3b 0a 20 20 20 20  split("|");.    
3a50: 20 20 20 20 20 20 20 20 6c 65 74 20 69 53 75 67          let iSug
3a60: 67 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20  g = 0;.         
3a70: 20 20 20 66 6f 72 20 28 6c 65 74 20 73 53 75 67     for (let sSug
3a80: 67 20 6f 66 20 6c 53 75 67 67 29 20 7b 0a 20 20  g of lSugg) {.  
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53                xS
3aa0: 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e 64 43  uggBlock.appendC
3ab0: 68 69 6c 64 28 5f 63 72 65 61 74 65 53 75 67 67  hild(_createSugg
3ac0: 65 73 74 69 6f 6e 28 73 45 72 72 49 64 2c 20 69  estion(sErrId, i
3ad0: 53 75 67 67 2c 20 73 53 75 67 67 29 29 3b 0a 20  Sugg, sSugg));. 
3ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
3af0: 53 75 67 67 42 6c 6f 63 6b 2e 61 70 70 65 6e 64  SuggBlock.append
3b00: 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63  Child(document.c
3b10: 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22 20  reateTextNode(" 
3b20: 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "));.           
3b30: 20 20 20 20 20 69 53 75 67 67 20 2b 3d 20 31 3b       iSugg += 1;
3b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
3b50: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20         }.    }. 
3b60: 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20     catch (e) {. 
3b70: 20 20 20 20 20 20 20 73 68 6f 77 45 72 72 6f 72         showError
3b80: 28 65 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 66 75  (e);.    }.}..fu
3b90: 6e 63 74 69 6f 6e 20 67 65 74 50 75 72 67 65 64  nction getPurged
3ba0: 54 65 78 74 4f 66 50 61 72 61 67 72 61 70 68 20  TextOfParagraph 
3bb0: 28 73 4e 6f 64 65 50 61 72 61 67 72 49 64 29 20  (sNodeParagrId) 
3bc0: 7b 0a 20 20 20 20 6c 65 74 20 73 54 65 78 74 20  {.    let sText 
3bd0: 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c  = document.getEl
3be0: 65 6d 65 6e 74 42 79 49 64 28 73 4e 6f 64 65 50  ementById(sNodeP
3bf0: 61 72 61 67 72 49 64 29 2e 74 65 78 74 43 6f 6e  aragrId).textCon
3c00: 74 65 6e 74 3b 0a 20 20 20 20 73 54 65 78 74 20  tent;.    sText 
3c10: 3d 20 73 54 65 78 74 2e 72 65 70 6c 61 63 65 28  = sText.replace(
3c20: 2f 26 6e 62 73 70 3b 2f 67 2c 20 22 20 22 29 2e  /&nbsp;/g, " ").
3c30: 72 65 70 6c 61 63 65 28 2f 26 6c 74 3b 2f 67 2c  replace(/&lt;/g,
3c40: 20 22 3c 22 29 2e 72 65 70 6c 61 63 65 28 2f 26   "<").replace(/&
3c50: 67 74 3b 2f 67 2c 20 22 3e 22 29 2e 72 65 70 6c  gt;/g, ">").repl
3c60: 61 63 65 28 2f 26 61 6d 70 3b 2f 67 2c 20 22 26  ace(/&amp;/g, "&
3c70: 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 73  ");.    return s
3c80: 54 65 78 74 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f  Text;.}..functio
3c90: 6e 20 63 6f 70 79 54 6f 43 6c 69 70 62 6f 61 72  n copyToClipboar
3ca0: 64 20 28 29 20 7b 0a 20 20 20 20 73 74 61 72 74  d () {.    start
3cb0: 57 61 69 74 49 63 6f 6e 28 29 3b 0a 20 20 20 20  WaitIcon();.    
3cc0: 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 6c 65  try {.        le
3cd0: 74 20 78 43 6c 69 70 62 6f 61 72 64 42 75 74 74  t xClipboardButt
3ce0: 6f 6e 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65  on = document.ge
3cf0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 63 6c  tElementById("cl
3d00: 69 70 62 6f 61 72 64 5f 6d 73 67 22 29 3b 0a 20  ipboard_msg");. 
3d10: 20 20 20 20 20 20 20 78 43 6c 69 70 62 6f 61 72         xClipboar
3d20: 64 42 75 74 74 6f 6e 2e 74 65 78 74 43 6f 6e 74  dButton.textCont
3d30: 65 6e 74 20 3d 20 22 63 6f 70 69 65 20 65 6e 20  ent = "copie en 
3d40: 63 6f 75 72 73 e2 80 a6 22 3b 0a 20 20 20 20 20  cours...";.     
3d50: 20 20 20 6c 65 74 20 73 54 65 78 74 20 3d 20 22     let sText = "
3d60: 22 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28  ";.        for (
3d70: 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20 64 6f 63  let xNode of doc
3d80: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
3d90: 42 79 49 64 28 22 65 72 72 6f 72 6c 69 73 74 22  ById("errorlist"
3da0: 29 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 43  ).getElementsByC
3db0: 6c 61 73 73 4e 61 6d 65 28 22 70 61 72 61 67 72  lassName("paragr
3dc0: 61 70 68 22 29 29 20 7b 0a 20 20 20 20 20 20 20  aph")) {.       
3dd0: 20 20 20 20 20 73 54 65 78 74 20 2b 3d 20 78 4e       sText += xN
3de0: 6f 64 65 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  ode.textContent 
3df0: 2b 20 22 5c 6e 22 3b 0a 20 20 20 20 20 20 20 20  + "\n";.        
3e00: 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70  }.        self.p
3e10: 6f 72 74 2e 65 6d 69 74 28 27 63 6f 70 79 54 6f  ort.emit('copyTo
3e20: 43 6c 69 70 62 6f 61 72 64 27 2c 20 73 54 65 78  Clipboard', sTex
3e30: 74 29 3b 0a 20 20 20 20 20 20 20 20 78 43 6c 69  t);.        xCli
3e40: 70 62 6f 61 72 64 42 75 74 74 6f 6e 2e 74 65 78  pboardButton.tex
3e50: 74 43 6f 6e 74 65 6e 74 20 3d 20 22 2d 3e 20 70  tContent = "-> p
3e60: 72 65 73 73 65 2d 70 61 70 69 65 72 73 22 3b 0a  resse-papiers";.
3e70: 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 73          window.s
3e80: 65 74 54 69 6d 65 6f 75 74 28 66 75 6e 63 74 69  etTimeout(functi
3e90: 6f 6e 28 29 20 7b 20 78 43 6c 69 70 62 6f 61 72  on() { xClipboar
3ea0: 64 42 75 74 74 6f 6e 2e 74 65 78 74 43 6f 6e 74  dButton.textCont
3eb0: 65 6e 74 20 3d 20 22 e2 88 91 22 3b 20 7d 20 2c  ent = "..."; } ,
3ec0: 20 33 30 30 30 29 3b 0a 20 20 20 20 7d 0a 20 20   3000);.    }.  
3ed0: 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20    catch (e) {.  
3ee0: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f        console.lo
3ef0: 67 28 65 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 2b  g(e.lineNumber +
3f00: 20 22 3a 20 22 20 2b 65 2e 6d 65 73 73 61 67 65   ": " +e.message
3f10: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 73 74 6f  );.    }.    sto
3f20: 70 57 61 69 74 49 63 6f 6e 28 29 3b 0a 7d 0a 0a  pWaitIcon();.}..
3f30: 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 57 61  function startWa
3f40: 69 74 49 63 6f 6e 20 28 73 49 64 50 61 72 61 67  itIcon (sIdParag
3f50: 72 3d 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 69 66  r=null) {.    if
3f60: 20 28 73 49 64 50 61 72 61 67 72 29 20 7b 0a 20   (sIdParagr) {. 
3f70: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
3f80: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 73  getElementById(s
3f90: 49 64 50 61 72 61 67 72 29 2e 64 69 73 61 62 6c  IdParagr).disabl
3fa0: 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20  ed = true;.     
3fb0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
3fc0: 6c 65 6d 65 6e 74 42 79 49 64 28 73 49 64 50 61  lementById(sIdPa
3fd0: 72 61 67 72 29 2e 73 74 79 6c 65 2e 6f 70 61 63  ragr).style.opac
3fe0: 69 74 79 20 3d 20 2e 33 3b 0a 20 20 20 20 7d 0a  ity = .3;.    }.
3ff0: 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74      document.get
4000: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 77 61 69  ElementById("wai
4010: 74 69 63 6f 6e 22 29 2e 68 69 64 64 65 6e 20 3d  ticon").hidden =
4020: 20 66 61 6c 73 65 3b 0a 7d 0a 0a 66 75 6e 63 74   false;.}..funct
4030: 69 6f 6e 20 73 74 6f 70 57 61 69 74 49 63 6f 6e  ion stopWaitIcon
4040: 20 28 73 49 64 50 61 72 61 67 72 3d 6e 75 6c 6c   (sIdParagr=null
4050: 29 20 7b 0a 20 20 20 20 69 66 20 28 73 49 64 50  ) {.    if (sIdP
4060: 61 72 61 67 72 29 20 7b 0a 20 20 20 20 20 20 20  aragr) {.       
4070: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
4080: 6d 65 6e 74 42 79 49 64 28 73 49 64 50 61 72 61  mentById(sIdPara
4090: 67 72 29 2e 64 69 73 61 62 6c 65 64 20 3d 20 66  gr).disabled = f
40a0: 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 64 6f  alse;.        do
40b0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
40c0: 74 42 79 49 64 28 73 49 64 50 61 72 61 67 72 29  tById(sIdParagr)
40d0: 2e 73 74 79 6c 65 2e 6f 70 61 63 69 74 79 20 3d  .style.opacity =
40e0: 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 64 6f   1;.    }.    do
40f0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
4100: 74 42 79 49 64 28 22 77 61 69 74 69 63 6f 6e 22  tById("waiticon"
4110: 29 2e 68 69 64 64 65 6e 20 3d 20 74 72 75 65 3b  ).hidden = true;
4120: 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f  .}..function sho
4130: 77 53 70 65 63 69 61 6c 4d 65 73 73 61 67 65 20  wSpecialMessage 
4140: 28 29 20 7b 0a 20 20 20 20 69 66 20 28 44 61 74  () {.    if (Dat
4150: 65 2e 6e 6f 77 28 29 20 3c 20 44 61 74 65 2e 55  e.now() < Date.U
4160: 54 43 28 32 30 31 37 2c 20 36 2c 20 31 32 29 29  TC(2017, 6, 12))
4170: 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b   {.        try {
4180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63  .            doc
4190: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
41a0: 42 79 49 64 28 27 73 70 65 63 69 61 6c 5f 6d 65  ById('special_me
41b0: 73 73 61 67 65 27 29 2e 73 74 79 6c 65 2e 64 69  ssage').style.di
41c0: 73 70 6c 61 79 20 3d 20 22 62 6c 6f 63 6b 22 3b  splay = "block";
41d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63  .            doc
41e0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
41f0: 42 79 49 64 28 27 65 72 72 6f 72 6c 69 73 74 27  ById('errorlist'
4200: 29 2e 73 74 79 6c 65 2e 70 61 64 64 69 6e 67 20  ).style.padding 
4210: 3d 20 22 32 30 70 78 20 32 30 70 78 20 33 30 70  = "20px 20px 30p
4220: 78 20 32 30 70 78 22 3b 0a 20 20 20 20 20 20 20  x 20px";.       
4230: 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20   } catch (e) {. 
4240: 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 45             showE
4250: 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20  rror(e);.       
4260: 20 7d 0a 20 20 20 20 7d 0a 7d 0a                  }.    }.}.