Grammalecte  Hex Artifact Content

Artifact c804b43d480fa35ee6651f60c9cc3d323fa8951ba0e173151b5fa1c44cb023ab:


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 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2c 20  l oGrammalecte, 
0060: 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74  xGrammalectePort
0070: 2c 20 73 68 6f 77 45 72 72 6f 72 2c 20 77 69 6e  , showError, win
0080: 64 6f 77 2c 20 64 6f 63 75 6d 65 6e 74 20 2a 2f  dow, document */
0090: 0a 0a 22 75 73 65 20 73 74 72 69 63 74 22 3b 0a  .."use strict";.
00a0: 0a 0a 63 6c 61 73 73 20 47 72 61 6d 6d 61 6c 65  ..class Grammale
00b0: 63 74 65 4d 65 6e 75 20 7b 0a 0a 20 20 20 20 63  cteMenu {..    c
00c0: 6f 6e 73 74 72 75 63 74 6f 72 20 28 6e 4d 65 6e  onstructor (nMen
00d0: 75 2c 20 78 4e 6f 64 65 29 20 7b 0a 20 20 20 20  u, xNode) {.    
00e0: 20 20 20 20 74 68 69 73 2e 78 4e 6f 64 65 20 3d      this.xNode =
00f0: 20 78 4e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20   xNode;.        
0100: 74 68 69 73 2e 73 4d 65 6e 75 49 64 20 3d 20 22  this.sMenuId = "
0110: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75  grammalecte_menu
0120: 22 20 2b 20 6e 4d 65 6e 75 3b 0a 20 20 20 20 20  " + nMenu;.     
0130: 20 20 20 74 68 69 73 2e 78 42 75 74 74 6f 6e 20     this.xButton 
0140: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
0150: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
0160: 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72   {className: "gr
0170: 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 6d  ammalecte_menu_m
0180: 61 69 6e 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78  ain_button", tex
0190: 74 43 6f 6e 74 65 6e 74 3a 20 22 e2 80 af 22 7d  tContent: "..."}
01a0: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
01b0: 78 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20  xButton.onclick 
01c0: 3d 20 28 29 20 3d 3e 20 7b 20 74 68 69 73 2e 73  = () => { this.s
01d0: 77 69 74 63 68 4d 65 6e 75 28 29 3b 20 7d 3b 0a  witchMenu(); };.
01e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 42 75          this.xBu
01f0: 74 74 6f 6e 2e 73 74 79 6c 65 2e 7a 49 6e 64 65  tton.style.zInde
0200: 78 20 3d 20 28 78 4e 6f 64 65 2e 73 74 79 6c 65  x = (xNode.style
0210: 2e 7a 49 6e 64 65 78 2e 73 65 61 72 63 68 28 2f  .zIndex.search(/
0220: 5e 5b 30 2d 39 5d 2b 24 2f 29 20 21 3d 3d 20 2d  ^[0-9]+$/) !== -
0230: 31 29 20 3f 20 28 70 61 72 73 65 49 6e 74 28 78  1) ? (parseInt(x
0240: 4e 6f 64 65 2e 73 74 79 6c 65 2e 7a 49 6e 64 65  Node.style.zInde
0250: 78 29 20 2b 20 31 29 2e 74 6f 53 74 72 69 6e 67  x) + 1).toString
0260: 28 29 20 3a 20 78 4e 6f 64 65 2e 73 74 79 6c 65  () : xNode.style
0270: 2e 7a 49 6e 64 65 78 3b 0a 20 20 20 20 20 20 20  .zIndex;.       
0280: 20 74 68 69 73 2e 78 4d 65 6e 75 20 3d 20 74 68   this.xMenu = th
0290: 69 73 2e 5f 63 72 65 61 74 65 4d 65 6e 75 28 29  is._createMenu()
02a0: 3b 0a 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78  ;..        let x
02b0: 53 74 79 6c 65 20 3d 20 77 69 6e 64 6f 77 2e 67  Style = window.g
02c0: 65 74 43 6f 6d 70 75 74 65 64 53 74 79 6c 65 28  etComputedStyle(
02d0: 74 68 69 73 2e 78 4e 6f 64 65 29 3b 0a 0a 20 20  this.xNode);..  
02e0: 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 49        let xNodeI
02f0: 6e 73 65 72 74 41 66 74 65 72 20 3d 20 74 68 69  nsertAfter = thi
0300: 73 2e 78 4e 6f 64 65 3b 0a 20 20 20 20 20 20 20  s.xNode;.       
0310: 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 6c 6f   if (document.lo
0320: 63 61 74 69 6f 6e 2e 68 6f 73 74 20 3d 3d 20 22  cation.host == "
0330: 74 77 69 74 74 65 72 2e 63 6f 6d 22 20 26 26 20  twitter.com" && 
0340: 74 68 69 73 2e 78 4e 6f 64 65 2e 63 6c 61 73 73  this.xNode.class
0350: 4c 69 73 74 2e 63 6f 6e 74 61 69 6e 73 28 27 72  List.contains('r
0360: 69 63 68 2d 65 64 69 74 6f 72 27 29 29 20 7b 0a  ich-editor')) {.
0370: 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64              xNod
0380: 65 49 6e 73 65 72 74 41 66 74 65 72 20 3d 20 74  eInsertAfter = t
0390: 68 69 73 2e 78 4e 6f 64 65 2e 70 61 72 65 6e 74  his.xNode.parent
03a0: 4e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a  Node;.        }.
03b0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 53  .        this.bS
03c0: 68 61 64 6f 77 20 3d 20 64 6f 63 75 6d 65 6e 74  hadow = document
03d0: 2e 62 6f 64 79 2e 63 72 65 61 74 65 53 68 61 64  .body.createShad
03e0: 6f 77 52 6f 6f 74 20 7c 7c 20 64 6f 63 75 6d 65  owRoot || docume
03f0: 6e 74 2e 62 6f 64 79 2e 61 74 74 61 63 68 53 68  nt.body.attachSh
0400: 61 64 6f 77 3b 0a 20 20 20 20 20 20 20 20 69 66  adow;.        if
0410: 20 28 74 68 69 73 2e 62 53 68 61 64 6f 77 29 7b   (this.bShadow){
0420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
0430: 20 6e 4d 61 72 67 69 6e 54 6f 70 20 3d 20 2d 31   nMarginTop = -1
0440: 20 2a 20 28 70 61 72 73 65 49 6e 74 28 78 53 74   * (parseInt(xSt
0450: 79 6c 65 2e 6d 61 72 67 69 6e 42 6f 74 74 6f 6d  yle.marginBottom
0460: 2e 72 65 70 6c 61 63 65 28 27 70 78 27 2c 20 27  .replace('px', '
0470: 27 29 2c 20 31 30 29 29 3b 0a 20 20 20 20 20 20  '), 10));.      
0480: 20 20 20 20 20 20 74 68 69 73 2e 6f 53 68 61 64        this.oShad
0490: 6f 77 42 74 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c  owBtn = oGrammal
04a0: 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28  ecte.createNode(
04b0: 22 64 69 76 22 2c 20 7b 73 74 79 6c 65 3a 20 22  "div", {style: "
04c0: 64 69 73 70 6c 61 79 3a 6e 6f 6e 65 3b 70 6f 73  display:none;pos
04d0: 69 74 69 6f 6e 3a 61 62 73 6f 6c 75 74 65 3b 77  ition:absolute;w
04e0: 69 64 74 68 3a 30 3b 68 65 69 67 68 74 3a 30 3b  idth:0;height:0;
04f0: 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "});.           
0500: 20 74 68 69 73 2e 6f 53 68 61 64 6f 77 42 74 6e   this.oShadowBtn
0510: 4e 6f 64 65 20 3d 20 74 68 69 73 2e 6f 53 68 61  Node = this.oSha
0520: 64 6f 77 42 74 6e 2e 61 74 74 61 63 68 53 68 61  dowBtn.attachSha
0530: 64 6f 77 28 7b 6d 6f 64 65 3a 20 22 6f 70 65 6e  dow({mode: "open
0540: 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "});.           
0550: 20 74 68 69 73 2e 6f 53 68 61 64 6f 77 42 74 6e   this.oShadowBtn
0560: 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64  Node.appendChild
0570: 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  (.              
0580: 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63    oGrammalecte.c
0590: 72 65 61 74 65 4e 6f 64 65 28 22 6c 69 6e 6b 22  reateNode("link"
05a0: 2c 20 7b 72 65 6c 3a 20 22 73 74 79 6c 65 73 68  , {rel: "stylesh
05b0: 65 65 74 22 2c 20 74 79 70 65 3a 20 22 74 65 78  eet", type: "tex
05c0: 74 2f 63 73 73 22 2c 20 6d 65 64 69 61 3a 20 22  t/css", media: "
05d0: 61 6c 6c 22 2c 20 68 72 65 66 3a 20 6f 47 72 61  all", href: oGra
05e0: 6d 6d 61 6c 65 63 74 65 2e 73 45 78 74 65 6e 73  mmalecte.sExtens
05f0: 69 6f 6e 55 72 6c 20 2b 20 22 63 6f 6e 74 65 6e  ionUrl + "conten
0600: 74 5f 73 63 72 69 70 74 73 2f 6d 65 6e 75 2e 63  t_scripts/menu.c
0610: 73 73 22 7d 29 0a 20 20 20 20 20 20 20 20 20 20  ss"}).          
0620: 20 20 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20    );.           
0630: 20 74 68 69 73 2e 6f 53 68 61 64 6f 77 42 74 6e   this.oShadowBtn
0640: 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64  Node.appendChild
0650: 28 74 68 69 73 2e 78 42 75 74 74 6f 6e 29 3b 0a  (this.xButton);.
0660: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
0670: 2e 5f 69 6e 73 65 72 74 41 66 74 65 72 28 74 68  ._insertAfter(th
0680: 69 73 2e 6f 53 68 61 64 6f 77 42 74 6e 2c 20 78  is.oShadowBtn, x
0690: 4e 6f 64 65 49 6e 73 65 72 74 41 66 74 65 72 2c  NodeInsertAfter,
06a0: 20 6e 4d 61 72 67 69 6e 54 6f 70 29 3b 0a 0a 20   nMarginTop);.. 
06b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
06c0: 6f 53 68 61 64 6f 77 4d 65 6e 75 20 3d 20 6f 47  oShadowMenu = oG
06d0: 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61 74  rammalecte.creat
06e0: 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 69 64  eNode("div", {id
06f0: 3a 20 74 68 69 73 2e 73 4d 65 6e 75 49 64 2b 22  : this.sMenuId+"
0700: 5f 73 68 61 64 6f 77 22 2c 20 73 74 79 6c 65 3a  _shadow", style:
0710: 20 22 64 69 73 70 6c 61 79 3a 6e 6f 6e 65 3b 70   "display:none;p
0720: 6f 73 69 74 69 6f 6e 3a 61 62 73 6f 6c 75 74 65  osition:absolute
0730: 3b 77 69 64 74 68 3a 30 3b 68 65 69 67 68 74 3a  ;width:0;height:
0740: 30 3b 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20  0;"});.         
0750: 20 20 20 74 68 69 73 2e 6f 53 68 61 64 6f 77 4d     this.oShadowM
0760: 65 6e 75 4e 6f 64 65 20 3d 20 74 68 69 73 2e 6f  enuNode = this.o
0770: 53 68 61 64 6f 77 4d 65 6e 75 2e 61 74 74 61 63  ShadowMenu.attac
0780: 68 53 68 61 64 6f 77 28 7b 6d 6f 64 65 3a 20 22  hShadow({mode: "
0790: 6f 70 65 6e 22 7d 29 3b 0a 20 20 20 20 20 20 20  open"});.       
07a0: 20 20 20 20 20 74 68 69 73 2e 6f 53 68 61 64 6f       this.oShado
07b0: 77 4d 65 6e 75 4e 6f 64 65 2e 61 70 70 65 6e 64  wMenuNode.append
07c0: 43 68 69 6c 64 28 0a 20 20 20 20 20 20 20 20 20  Child(.         
07d0: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
07e0: 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22  cte.createNode("
07f0: 6c 69 6e 6b 22 2c 20 7b 72 65 6c 3a 20 22 73 74  link", {rel: "st
0800: 79 6c 65 73 68 65 65 74 22 2c 20 74 79 70 65 3a  ylesheet", type:
0810: 20 22 74 65 78 74 2f 63 73 73 22 2c 20 6d 65 64   "text/css", med
0820: 69 61 3a 20 22 61 6c 6c 22 2c 20 68 72 65 66 3a  ia: "all", href:
0830: 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 73 45   oGrammalecte.sE
0840: 78 74 65 6e 73 69 6f 6e 55 72 6c 20 2b 20 22 63  xtensionUrl + "c
0850: 6f 6e 74 65 6e 74 5f 73 63 72 69 70 74 73 2f 6d  ontent_scripts/m
0860: 65 6e 75 2e 63 73 73 22 7d 29 0a 20 20 20 20 20  enu.css"}).     
0870: 20 20 20 20 20 20 20 29 3b 0a 20 20 20 20 20 20         );.      
0880: 20 20 20 20 20 20 74 68 69 73 2e 6f 53 68 61 64        this.oShad
0890: 6f 77 4d 65 6e 75 4e 6f 64 65 2e 61 70 70 65 6e  owMenuNode.appen
08a0: 64 43 68 69 6c 64 28 74 68 69 73 2e 78 4d 65 6e  dChild(this.xMen
08b0: 75 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  u);.            
08c0: 74 68 69 73 2e 5f 69 6e 73 65 72 74 41 66 74 65  this._insertAfte
08d0: 72 28 74 68 69 73 2e 6f 53 68 61 64 6f 77 4d 65  r(this.oShadowMe
08e0: 6e 75 2c 20 78 4e 6f 64 65 49 6e 73 65 72 74 41  nu, xNodeInsertA
08f0: 66 74 65 72 2c 20 6e 4d 61 72 67 69 6e 54 6f 70  fter, nMarginTop
0900: 20 2b 20 38 29 3b 0a 20 20 20 20 20 20 20 20 7d   + 8);.        }
0910: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20   else {.        
0920: 20 20 20 20 6c 65 74 20 6e 4d 61 72 67 69 6e 54      let nMarginT
0930: 6f 70 20 3d 20 2d 31 20 2a 20 28 38 20 2b 20 70  op = -1 * (8 + p
0940: 61 72 73 65 49 6e 74 28 78 53 74 79 6c 65 2e 6d  arseInt(xStyle.m
0950: 61 72 67 69 6e 42 6f 74 74 6f 6d 2e 72 65 70 6c  arginBottom.repl
0960: 61 63 65 28 27 70 78 27 2c 20 27 27 29 2c 20 31  ace('px', ''), 1
0970: 30 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  0));.           
0980: 20 69 66 20 28 21 64 6f 63 75 6d 65 6e 74 2e 67   if (!document.g
0990: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67  etElementById("g
09a0: 72 61 6d 6d 61 6c 65 63 74 65 5f 63 73 73 6d 65  rammalecte_cssme
09b0: 6e 75 22 29 29 7b 0a 20 20 20 20 20 20 20 20 20  nu")){.         
09c0: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
09d0: 68 65 61 64 2e 61 70 70 65 6e 64 43 68 69 6c 64  head.appendChild
09e0: 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  (.              
09f0: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
0a00: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 6c  te.createNode("l
0a10: 69 6e 6b 22 2c 20 7b 69 64 3a 20 22 67 72 61 6d  ink", {id: "gram
0a20: 6d 61 6c 65 63 74 65 5f 63 73 73 6d 65 6e 75 22  malecte_cssmenu"
0a30: 2c 20 72 65 6c 3a 20 22 73 74 79 6c 65 73 68 65  , rel: "styleshe
0a40: 65 74 22 2c 20 74 79 70 65 3a 20 22 74 65 78 74  et", type: "text
0a50: 2f 63 73 73 22 2c 20 6d 65 64 69 61 3a 20 22 61  /css", media: "a
0a60: 6c 6c 22 2c 20 68 72 65 66 3a 20 6f 47 72 61 6d  ll", href: oGram
0a70: 6d 61 6c 65 63 74 65 2e 73 45 78 74 65 6e 73 69  malecte.sExtensi
0a80: 6f 6e 55 72 6c 20 2b 20 22 63 6f 6e 74 65 6e 74  onUrl + "content
0a90: 5f 73 63 72 69 70 74 73 2f 6d 65 6e 75 2e 63 73  _scripts/menu.cs
0aa0: 73 22 7d 29 0a 20 20 20 20 20 20 20 20 20 20 20  s"}).           
0ab0: 20 20 20 20 20 29 3b 0a 20 20 20 20 20 20 20 20       );.        
0ac0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
0ad0: 20 20 74 68 69 73 2e 5f 69 6e 73 65 72 74 41 66    this._insertAf
0ae0: 74 65 72 28 74 68 69 73 2e 78 42 75 74 74 6f 6e  ter(this.xButton
0af0: 2c 20 78 4e 6f 64 65 49 6e 73 65 72 74 41 66 74  , xNodeInsertAft
0b00: 65 72 2c 20 6e 4d 61 72 67 69 6e 54 6f 70 29 3b  er, nMarginTop);
0b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
0b20: 73 2e 5f 69 6e 73 65 72 74 41 66 74 65 72 28 74  s._insertAfter(t
0b30: 68 69 73 2e 78 4d 65 6e 75 2c 20 78 4e 6f 64 65  his.xMenu, xNode
0b40: 49 6e 73 65 72 74 41 66 74 65 72 2c 20 6e 4d 61  InsertAfter, nMa
0b50: 72 67 69 6e 54 6f 70 20 2b 20 38 29 3b 0a 20 20  rginTop + 8);.  
0b60: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
0b70: 74 68 69 73 2e 5f 63 72 65 61 74 65 4c 69 73 74  this._createList
0b80: 65 6e 65 72 73 28 29 3b 0a 20 20 20 20 7d 0a 0a  eners();.    }..
0b90: 20 20 20 20 5f 69 6e 73 65 72 74 41 66 74 65 72      _insertAfter
0ba0: 20 28 78 4e 65 77 4e 6f 64 65 2c 20 78 52 65 66   (xNewNode, xRef
0bb0: 65 72 65 6e 63 65 4e 6f 64 65 2c 20 6e 4d 61 72  erenceNode, nMar
0bc0: 67 69 6e 54 6f 70 29 20 7b 0a 20 20 20 20 20 20  ginTop) {.      
0bd0: 20 20 78 52 65 66 65 72 65 6e 63 65 4e 6f 64 65    xReferenceNode
0be0: 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 69 6e 73 65  .parentNode.inse
0bf0: 72 74 42 65 66 6f 72 65 28 78 4e 65 77 4e 6f 64  rtBefore(xNewNod
0c00: 65 2c 20 78 52 65 66 65 72 65 6e 63 65 4e 6f 64  e, xReferenceNod
0c10: 65 2e 6e 65 78 74 53 69 62 6c 69 6e 67 29 3b 0a  e.nextSibling);.
0c20: 20 20 20 20 20 20 20 20 78 4e 65 77 4e 6f 64 65          xNewNode
0c30: 2e 73 74 79 6c 65 2e 6d 61 72 67 69 6e 54 6f 70  .style.marginTop
0c40: 20 3d 20 6e 4d 61 72 67 69 6e 54 6f 70 20 2b 20   = nMarginTop + 
0c50: 22 70 78 22 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  "px";.    }..   
0c60: 20 5f 63 72 65 61 74 65 4c 69 73 74 65 6e 65 72   _createListener
0c70: 73 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74  s () {.        t
0c80: 68 69 73 2e 78 4e 6f 64 65 2e 61 64 64 45 76 65  his.xNode.addEve
0c90: 6e 74 4c 69 73 74 65 6e 65 72 28 27 66 6f 63 75  ntListener('focu
0ca0: 73 27 2c 20 28 65 29 20 3d 3e 20 7b 0a 20 20 20  s', (e) => {.   
0cb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69           if (thi
0cc0: 73 2e 62 53 68 61 64 6f 77 29 7b 0a 20 20 20 20  s.bShadow){.    
0cd0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
0ce0: 2e 6f 53 68 61 64 6f 77 42 74 6e 2e 73 74 79 6c  .oShadowBtn.styl
0cf0: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f  e.display = "blo
0d00: 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ck";.           
0d10: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   }.            t
0d20: 68 69 73 2e 78 42 75 74 74 6f 6e 2e 73 74 79 6c  his.xButton.styl
0d30: 65 2e 64 69 73 70 6c 61 79 20 3d 20 22 62 6c 6f  e.display = "blo
0d40: 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b  ck";.        });
0d50: 0a 20 20 20 20 20 20 20 20 2f 2a 74 68 69 73 2e  .        /*this.
0d60: 78 4e 6f 64 65 2e 61 64 64 45 76 65 6e 74 4c 69  xNode.addEventLi
0d70: 73 74 65 6e 65 72 28 27 62 6c 75 72 27 2c 20 28  stener('blur', (
0d80: 65 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20  e) => {.        
0d90: 20 20 20 20 77 69 6e 64 6f 77 2e 73 65 74 54 69      window.setTi
0da0: 6d 65 6f 75 74 28 28 29 20 3d 3e 20 7b 74 68 69  meout(() => {thi
0db0: 73 2e 78 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e  s.xButton.style.
0dc0: 64 69 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22  display = "none"
0dd0: 3b 7d 2c 20 33 30 30 29 3b 0a 20 20 20 20 20 20  ;}, 300);.      
0de0: 20 20 7d 29 3b 2a 2f 0a 20 20 20 20 7d 0a 0a 20    });*/.    }.. 
0df0: 20 20 20 5f 67 65 74 54 65 78 74 20 28 29 20 7b     _getText () {
0e00: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
0e10: 28 74 68 69 73 2e 78 4e 6f 64 65 2e 74 61 67 4e  (this.xNode.tagN
0e20: 61 6d 65 20 3d 3d 20 22 54 45 58 54 41 52 45 41  ame == "TEXTAREA
0e30: 22 29 20 3f 20 74 68 69 73 2e 78 4e 6f 64 65 2e  ") ? this.xNode.
0e40: 76 61 6c 75 65 2e 6e 6f 72 6d 61 6c 69 7a 65 28  value.normalize(
0e50: 22 4e 46 43 22 29 20 3a 20 74 68 69 73 2e 78 4e  "NFC") : this.xN
0e60: 6f 64 65 2e 69 6e 6e 65 72 54 65 78 74 2e 6e 6f  ode.innerText.no
0e70: 72 6d 61 6c 69 7a 65 28 22 4e 46 43 22 29 3b 0a  rmalize("NFC");.
0e80: 20 20 20 20 7d 0a 0a 20 20 20 20 5f 63 72 65 61      }..    _crea
0e90: 74 65 4d 65 6e 75 20 28 29 20 7b 0a 20 20 20 20  teMenu () {.    
0ea0: 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20      try {.      
0eb0: 20 20 20 20 20 20 6c 65 74 20 78 4d 65 6e 75 20        let xMenu 
0ec0: 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63  = oGrammalecte.c
0ed0: 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c  reateNode("div",
0ee0: 20 7b 69 64 3a 20 74 68 69 73 2e 73 4d 65 6e 75   {id: this.sMenu
0ef0: 49 64 2c 20 63 6c 61 73 73 4e 61 6d 65 3a 20 22  Id, className: "
0f00: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75  grammalecte_menu
0f10: 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  "});.           
0f20: 20 6c 65 74 20 78 43 6c 6f 73 65 42 75 74 74 6f   let xCloseButto
0f30: 6e 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65  n = oGrammalecte
0f40: 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76  .createNode("div
0f50: 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22  ", {className: "
0f60: 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75  grammalecte_menu
0f70: 5f 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 22 2c 20  _close_button", 
0f80: 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20 22 c3 97  textContent: "..
0f90: 22 7d 20 29 3b 0a 20 20 20 20 20 20 20 20 20 20  "} );.          
0fa0: 20 20 78 43 6c 6f 73 65 42 75 74 74 6f 6e 2e 6f    xCloseButton.o
0fb0: 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d 3e 20 7b  nclick = () => {
0fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0fd0: 20 69 66 20 28 74 68 69 73 2e 62 53 68 61 64 6f   if (this.bShado
0fe0: 77 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  w){.            
0ff0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 53 68          this.oSh
1000: 61 64 6f 77 42 74 6e 2e 73 74 79 6c 65 2e 64 69  adowBtn.style.di
1010: 73 70 6c 61 79 20 3d 20 22 6e 6f 6e 65 22 3b 0a  splay = "none";.
1020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1030: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
1040: 20 20 74 68 69 73 2e 78 42 75 74 74 6f 6e 2e 73    this.xButton.s
1050: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 22  tyle.display = "
1060: 6e 6f 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 20  none";.         
1070: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
1080: 63 68 4d 65 6e 75 28 29 3b 0a 20 20 20 20 20 20  chMenu();.      
1090: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
10a0: 20 20 20 20 78 4d 65 6e 75 2e 61 70 70 65 6e 64      xMenu.append
10b0: 43 68 69 6c 64 28 78 43 6c 6f 73 65 42 75 74 74  Child(xCloseButt
10c0: 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  on);.           
10d0: 20 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43 68 69   xMenu.appendChi
10e0: 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e  ld(oGrammalecte.
10f0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
1100: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
1110: 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f  rammalecte_menu_
1120: 68 65 61 64 65 72 22 2c 20 74 65 78 74 43 6f 6e  header", textCon
1130: 74 65 6e 74 3a 20 22 47 52 41 4d 4d 41 4c 45 43  tent: "GRAMMALEC
1140: 54 45 22 7d 29 29 3b 0a 20 20 20 20 20 20 20 20  TE"}));.        
1150: 20 20 20 20 2f 2f 20 54 65 78 74 20 66 6f 72 6d      // Text form
1160: 61 74 74 65 72 0a 20 20 20 20 20 20 20 20 20 20  atter.          
1170: 20 20 69 66 20 28 74 68 69 73 2e 78 4e 6f 64 65    if (this.xNode
1180: 2e 74 61 67 4e 61 6d 65 20 3d 3d 20 22 54 45 58  .tagName == "TEX
1190: 54 41 52 45 41 22 29 20 7b 0a 20 20 20 20 20 20  TAREA") {.      
11a0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 54            let xT
11b0: 46 42 75 74 74 6f 6e 20 3d 20 6f 47 72 61 6d 6d  FButton = oGramm
11c0: 61 6c 65 63 74 65 2e 63 72 65 61 74 65 4e 6f 64  alecte.createNod
11d0: 65 28 22 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e  e("div", {classN
11e0: 61 6d 65 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74  ame: "grammalect
11f0: 65 5f 6d 65 6e 75 5f 69 74 65 6d 22 2c 20 74 65  e_menu_item", te
1200: 78 74 43 6f 6e 74 65 6e 74 3a 20 22 46 6f 72 6d  xtContent: "Form
1210: 61 74 65 75 72 20 64 65 20 74 65 78 74 65 22 7d  ateur de texte"}
1220: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
1230: 20 20 20 78 54 46 42 75 74 74 6f 6e 2e 6f 6e 63     xTFButton.onc
1240: 6c 69 63 6b 20 3d 20 28 29 20 3d 3e 20 7b 0a 20  lick = () => {. 
1250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1260: 20 20 20 74 68 69 73 2e 73 77 69 74 63 68 4d 65     this.switchMe
1270: 6e 75 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  nu();.          
1280: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
1290: 61 6c 65 63 74 65 2e 63 72 65 61 74 65 54 46 50  alecte.createTFP
12a0: 61 6e 65 6c 28 29 3b 0a 20 20 20 20 20 20 20 20  anel();.        
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 47 72 61              oGra
12c0: 6d 6d 61 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65  mmalecte.oTFPane
12d0: 6c 2e 73 74 61 72 74 28 74 68 69 73 2e 78 4e 6f  l.start(this.xNo
12e0: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  de);.           
12f0: 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61           oGramma
1300: 6c 65 63 74 65 2e 6f 54 46 50 61 6e 65 6c 2e 73  lecte.oTFPanel.s
1310: 68 6f 77 28 29 3b 0a 20 20 20 20 20 20 20 20 20  how();.         
1320: 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20         };.      
1330: 20 20 20 20 20 20 20 20 20 20 78 4d 65 6e 75 2e            xMenu.
1340: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 54 46 42  appendChild(xTFB
1350: 75 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20  utton);.        
1360: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
1370: 20 20 2f 2f 20 6c 65 78 69 63 6f 67 72 61 70 68    // lexicograph
1380: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  e.            le
1390: 74 20 78 4c 78 67 42 75 74 74 6f 6e 20 3d 20 6f  t xLxgButton = o
13a0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
13b0: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
13c0: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
13d0: 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 69 74 65 6d  alecte_menu_item
13e0: 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e 74 3a 20  ", textContent: 
13f0: 22 4c 65 78 69 63 6f 67 72 61 70 68 65 22 7d 29  "Lexicographe"})
1400: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4c  ;.            xL
1410: 78 67 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b  xgButton.onclick
1420: 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20 20   = () => {.     
1430: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1440: 73 77 69 74 63 68 4d 65 6e 75 28 29 3b 0a 20 20  switchMenu();.  
1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 47                oG
1460: 72 61 6d 6d 61 6c 65 63 74 65 2e 73 74 61 72 74  rammalecte.start
1470: 4c 78 67 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20  LxgPanel();.    
1480: 20 20 20 20 20 20 20 20 20 20 20 20 78 47 72 61              xGra
1490: 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70 6f 73  mmalectePort.pos
14a0: 74 4d 65 73 73 61 67 65 28 7b 0a 20 20 20 20 20  tMessage({.     
14b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
14c0: 43 6f 6d 6d 61 6e 64 3a 20 22 67 65 74 4c 69 73  Command: "getLis
14d0: 74 4f 66 54 6f 6b 65 6e 73 22 2c 0a 20 20 20 20  tOfTokens",.    
14e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f0: 64 50 61 72 61 6d 3a 20 7b 73 54 65 78 74 3a 20  dParam: {sText: 
1500: 74 68 69 73 2e 5f 67 65 74 54 65 78 74 28 29 7d  this._getText()}
1510: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
1520: 20 20 20 20 20 20 64 49 6e 66 6f 3a 20 7b 73 54        dInfo: {sT
1530: 65 78 74 41 72 65 61 49 64 3a 20 74 68 69 73 2e  extAreaId: this.
1540: 78 4e 6f 64 65 2e 69 64 7d 0a 20 20 20 20 20 20  xNode.id}.      
1550: 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20            });.  
1560: 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20            };.   
1570: 20 20 20 20 20 20 20 20 20 78 4d 65 6e 75 2e 61           xMenu.a
1580: 70 70 65 6e 64 43 68 69 6c 64 28 78 4c 78 67 42  ppendChild(xLxgB
1590: 75 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20  utton);.        
15a0: 20 20 20 20 2f 2f 20 47 72 61 6d 6d 61 72 20 63      // Grammar c
15b0: 68 65 63 6b 65 72 0a 20 20 20 20 20 20 20 20 20  hecker.         
15c0: 20 20 20 6c 65 74 20 78 47 43 42 75 74 74 6f 6e     let xGCButton
15d0: 20 3d 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e   = oGrammalecte.
15e0: 63 72 65 61 74 65 4e 6f 64 65 28 22 64 69 76 22  createNode("div"
15f0: 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67  , {className: "g
1600: 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f  rammalecte_menu_
1610: 69 74 65 6d 22 2c 20 74 65 78 74 43 6f 6e 74 65  item", textConte
1620: 6e 74 3a 20 22 43 6f 72 72 65 63 74 69 6f 6e 20  nt: "Correction 
1630: 67 72 61 6d 6d 61 74 69 63 61 6c 65 22 7d 29 3b  grammaticale"});
1640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 47 43  .            xGC
1650: 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d  Button.onclick =
1660: 20 28 29 20 3d 3e 20 7b 0a 20 20 20 20 20 20 20   () => {.       
1670: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 77           this.sw
1680: 69 74 63 68 4d 65 6e 75 28 29 3b 0a 20 20 20 20  itchMenu();.    
1690: 20 20 20 20 20 20 20 20 20 20 20 20 6f 47 72 61              oGra
16a0: 6d 6d 61 6c 65 63 74 65 2e 73 74 61 72 74 47 43  mmalecte.startGC
16b0: 50 61 6e 65 6c 28 74 68 69 73 2e 78 4e 6f 64 65  Panel(this.xNode
16c0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
16d0: 20 20 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50     xGrammalecteP
16e0: 6f 72 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28  ort.postMessage(
16f0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
1700: 20 20 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20        sCommand: 
1710: 22 70 61 72 73 65 41 6e 64 53 70 65 6c 6c 63 68  "parseAndSpellch
1720: 65 63 6b 22 2c 0a 20 20 20 20 20 20 20 20 20 20  eck",.          
1730: 20 20 20 20 20 20 20 20 20 20 64 50 61 72 61 6d            dParam
1740: 3a 20 7b 73 54 65 78 74 3a 20 74 68 69 73 2e 5f  : {sText: this._
1750: 67 65 74 54 65 78 74 28 29 2c 20 73 43 6f 75 6e  getText(), sCoun
1760: 74 72 79 3a 20 22 46 52 22 2c 20 62 44 65 62 75  try: "FR", bDebu
1770: 67 3a 20 66 61 6c 73 65 2c 20 62 43 6f 6e 74 65  g: false, bConte
1780: 78 74 3a 20 66 61 6c 73 65 7d 2c 0a 20 20 20 20  xt: false},.    
1790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17a0: 64 49 6e 66 6f 3a 20 7b 73 54 65 78 74 41 72 65  dInfo: {sTextAre
17b0: 61 49 64 3a 20 74 68 69 73 2e 78 4e 6f 64 65 2e  aId: this.xNode.
17c0: 69 64 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20  id}.            
17d0: 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20      });.        
17e0: 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 20      };.         
17f0: 20 20 20 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43     xMenu.appendC
1800: 68 69 6c 64 28 78 47 43 42 75 74 74 6f 6e 29 3b  hild(xGCButton);
1810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
1820: 43 6f 6e 6a 75 67 61 74 69 6f 6e 20 74 6f 6f 6c  Conjugation tool
1830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
1840: 20 78 43 6f 6e 6a 42 75 74 74 6f 6e 20 3d 20 6f   xConjButton = o
1850: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65 61  Grammalecte.crea
1860: 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b 63  teNode("div", {c
1870: 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d 6d  lassName: "gramm
1880: 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 69 74 65 6d  alecte_menu_item
1890: 5f 62 6c 6f 63 6b 22 2c 20 74 65 78 74 43 6f 6e  _block", textCon
18a0: 74 65 6e 74 3a 20 22 43 6f 6e 6a 75 67 75 65 75  tent: "Conjugueu
18b0: 72 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  r"});.          
18c0: 20 20 6c 65 74 20 78 43 6f 6e 6a 42 75 74 74 6f    let xConjButto
18d0: 6e 54 61 62 20 3d 20 6f 47 72 61 6d 6d 61 6c 65  nTab = oGrammale
18e0: 63 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22  cte.createNode("
18f0: 64 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65  div", {className
1900: 3a 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d  : "grammalecte_m
1910: 65 6e 75 5f 62 75 74 74 6f 6e 22 2c 20 74 65 78  enu_button", tex
1920: 74 43 6f 6e 74 65 6e 74 3a 20 22 4f 6e 67 6c 65  tContent: "Ongle
1930: 74 22 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  t"});.          
1940: 20 20 78 43 6f 6e 6a 42 75 74 74 6f 6e 54 61 62    xConjButtonTab
1950: 2e 6f 6e 63 6c 69 63 6b 20 3d 20 28 29 20 3d 3e  .onclick = () =>
1960: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
1970: 20 20 20 74 68 69 73 2e 73 77 69 74 63 68 4d 65     this.switchMe
1980: 6e 75 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  nu();.          
1990: 20 20 20 20 20 20 78 47 72 61 6d 6d 61 6c 65 63        xGrammalec
19a0: 74 65 50 6f 72 74 2e 70 6f 73 74 4d 65 73 73 61  tePort.postMessa
19b0: 67 65 28 7b 73 43 6f 6d 6d 61 6e 64 3a 20 22 6f  ge({sCommand: "o
19c0: 70 65 6e 43 6f 6e 6a 75 67 75 65 75 72 54 61 62  penConjugueurTab
19d0: 22 2c 20 64 50 61 72 61 6d 3a 20 6e 75 6c 6c 2c  ", dParam: null,
19e0: 20 64 49 6e 66 6f 3a 20 6e 75 6c 6c 7d 29 3b 0a   dInfo: null});.
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20              };. 
1a00: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78             let x
1a10: 43 6f 6e 6a 42 75 74 74 6f 6e 57 69 6e 20 3d 20  ConjButtonWin = 
1a20: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 63 72 65  oGrammalecte.cre
1a30: 61 74 65 4e 6f 64 65 28 22 64 69 76 22 2c 20 7b  ateNode("div", {
1a40: 63 6c 61 73 73 4e 61 6d 65 3a 20 22 67 72 61 6d  className: "gram
1a50: 6d 61 6c 65 63 74 65 5f 6d 65 6e 75 5f 62 75 74  malecte_menu_but
1a60: 74 6f 6e 22 2c 20 74 65 78 74 43 6f 6e 74 65 6e  ton", textConten
1a70: 74 3a 20 22 46 65 6e c3 aa 74 72 65 22 7d 29 3b  t: "Fen..tre"});
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f  .            xCo
1a90: 6e 6a 42 75 74 74 6f 6e 57 69 6e 2e 6f 6e 63 6c  njButtonWin.oncl
1aa0: 69 63 6b 20 3d 20 28 29 20 3d 3e 20 7b 0a 20 20  ick = () => {.  
1ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1ac0: 69 73 2e 73 77 69 74 63 68 4d 65 6e 75 28 29 3b  is.switchMenu();
1ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ae0: 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72   xGrammalectePor
1af0: 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 73  t.postMessage({s
1b00: 43 6f 6d 6d 61 6e 64 3a 20 22 6f 70 65 6e 43 6f  Command: "openCo
1b10: 6e 6a 75 67 75 65 75 72 57 69 6e 64 6f 77 22 2c  njugueurWindow",
1b20: 20 64 50 61 72 61 6d 3a 20 6e 75 6c 6c 2c 20 64   dParam: null, d
1b30: 49 6e 66 6f 3a 20 6e 75 6c 6c 7d 29 3b 0a 20 20  Info: null});.  
1b40: 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20            };.   
1b50: 20 20 20 20 20 20 20 20 20 78 43 6f 6e 6a 42 75           xConjBu
1b60: 74 74 6f 6e 2e 61 70 70 65 6e 64 43 68 69 6c 64  tton.appendChild
1b70: 28 78 43 6f 6e 6a 42 75 74 74 6f 6e 54 61 62 29  (xConjButtonTab)
1b80: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 43  ;.            xC
1b90: 6f 6e 6a 42 75 74 74 6f 6e 2e 61 70 70 65 6e 64  onjButton.append
1ba0: 43 68 69 6c 64 28 78 43 6f 6e 6a 42 75 74 74 6f  Child(xConjButto
1bb0: 6e 57 69 6e 29 3b 0a 20 20 20 20 20 20 20 20 20  nWin);.         
1bc0: 20 20 20 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43     xMenu.appendC
1bd0: 68 69 6c 64 28 78 43 6f 6e 6a 42 75 74 74 6f 6e  hild(xConjButton
1be0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  );.            /
1bf0: 2f 78 4d 65 6e 75 2e 61 70 70 65 6e 64 43 68 69  /xMenu.appendChi
1c00: 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e  ld(oGrammalecte.
1c10: 63 72 65 61 74 65 4e 6f 64 65 28 22 69 6d 67 22  createNode("img"
1c20: 2c 20 7b 73 63 72 3a 20 62 72 6f 77 73 65 72 2e  , {scr: browser.
1c30: 65 78 74 65 6e 73 69 6f 6e 2e 67 65 74 55 52 4c  extension.getURL
1c40: 28 22 69 6d 67 2f 6c 6f 67 6f 2d 31 36 2e 70 6e  ("img/logo-16.pn
1c50: 67 22 29 7d 29 29 3b 0a 20 20 20 20 20 20 20 20  g")}));.        
1c60: 20 20 20 20 2f 2f 20 63 61 6e e2 80 99 74 20 77      // can...t w
1c70: 6f 72 6b 2c 20 64 75 65 20 74 6f 20 63 6f 6e 74  ork, due to cont
1c80: 65 6e 74 2d 73 63 72 69 70 74 20 70 6f 6c 69 63  ent-script polic
1c90: 79 3a 20 68 74 74 70 73 3a 2f 2f 62 75 67 7a 69  y: https://bugzi
1ca0: 6c 6c 61 2e 6d 6f 7a 69 6c 6c 61 2e 6f 72 67 2f  lla.mozilla.org/
1cb0: 73 68 6f 77 5f 62 75 67 2e 63 67 69 3f 69 64 3d  show_bug.cgi?id=
1cc0: 31 32 36 37 30 32 37 0a 20 20 20 20 20 20 20 20  1267027.        
1cd0: 20 20 20 20 78 4d 65 6e 75 2e 61 70 70 65 6e 64      xMenu.append
1ce0: 43 68 69 6c 64 28 6f 47 72 61 6d 6d 61 6c 65 63  Child(oGrammalec
1cf0: 74 65 2e 63 72 65 61 74 65 4e 6f 64 65 28 22 64  te.createNode("d
1d00: 69 76 22 2c 20 7b 63 6c 61 73 73 4e 61 6d 65 3a  iv", {className:
1d10: 20 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 6d 65   "grammalecte_me
1d20: 6e 75 5f 66 6f 6f 74 65 72 22 7d 29 29 3b 0a 20  nu_footer"}));. 
1d30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1d40: 6e 20 78 4d 65 6e 75 3b 0a 20 20 20 20 20 20 20  n xMenu;.       
1d50: 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68   }.        catch
1d60: 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20   (e) {.         
1d70: 20 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b     showError(e);
1d80: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
1d90: 0a 0a 20 20 20 20 64 65 6c 65 74 65 4e 6f 64 65  ..    deleteNode
1da0: 73 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69  s () {.        i
1db0: 66 20 28 74 68 69 73 2e 62 53 68 61 64 6f 77 29  f (this.bShadow)
1dc0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
1dd0: 69 73 2e 6f 53 68 61 64 6f 77 4d 65 6e 75 2e 70  is.oShadowMenu.p
1de0: 61 72 65 6e 74 4e 6f 64 65 2e 72 65 6d 6f 76 65  arentNode.remove
1df0: 43 68 69 6c 64 28 74 68 69 73 2e 6f 53 68 61 64  Child(this.oShad
1e00: 6f 77 4d 65 6e 75 29 3b 0a 20 20 20 20 20 20 20  owMenu);.       
1e10: 20 20 20 20 20 74 68 69 73 2e 6f 53 68 61 64 6f       this.oShado
1e20: 77 42 74 6e 2e 70 61 72 65 6e 74 4e 6f 64 65 2e  wBtn.parentNode.
1e30: 72 65 6d 6f 76 65 43 68 69 6c 64 28 74 68 69 73  removeChild(this
1e40: 2e 6f 53 68 61 64 6f 77 42 74 6e 29 3b 0a 20 20  .oShadowBtn);.  
1e50: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
1e60: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1e70: 78 4d 65 6e 75 2e 70 61 72 65 6e 74 4e 6f 64 65  xMenu.parentNode
1e80: 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 74 68 69  .removeChild(thi
1e90: 73 2e 78 4d 65 6e 75 29 3b 0a 20 20 20 20 20 20  s.xMenu);.      
1ea0: 20 20 20 20 20 20 74 68 69 73 2e 78 42 75 74 74        this.xButt
1eb0: 6f 6e 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65  on.parentNode.re
1ec0: 6d 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 78  moveChild(this.x
1ed0: 42 75 74 74 6f 6e 29 3b 0a 20 20 20 20 20 20 20  Button);.       
1ee0: 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 77   }.    }..    sw
1ef0: 69 74 63 68 4d 65 6e 75 20 28 29 20 7b 0a 20 20  itchMenu () {.  
1f00: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 62        if (this.b
1f10: 53 68 61 64 6f 77 29 7b 0a 20 20 20 20 20 20 20  Shadow){.       
1f20: 20 20 20 20 20 74 68 69 73 2e 6f 53 68 61 64 6f       this.oShado
1f30: 77 4d 65 6e 75 2e 73 74 79 6c 65 2e 64 69 73 70  wMenu.style.disp
1f40: 6c 61 79 20 3d 20 28 74 68 69 73 2e 6f 53 68 61  lay = (this.oSha
1f50: 64 6f 77 4d 65 6e 75 2e 73 74 79 6c 65 2e 64 69  dowMenu.style.di
1f60: 73 70 6c 61 79 20 3d 3d 20 22 62 6c 6f 63 6b 22  splay == "block"
1f70: 29 20 3f 20 22 6e 6f 6e 65 22 20 3a 20 22 62 6c  ) ? "none" : "bl
1f80: 6f 63 6b 22 3b 0a 20 20 20 20 20 20 20 20 7d 0a  ock";.        }.
1f90: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 4d 65          this.xMe
1fa0: 6e 75 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79  nu.style.display
1fb0: 20 3d 20 28 74 68 69 73 2e 78 4d 65 6e 75 2e 73   = (this.xMenu.s
1fc0: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 3d 20  tyle.display == 
1fd0: 22 62 6c 6f 63 6b 22 29 20 3f 20 22 6e 6f 6e 65  "block") ? "none
1fe0: 22 20 3a 20 22 62 6c 6f 63 6b 22 3b 0a 20 20 20  " : "block";.   
1ff0: 20 7d 0a 7d 0a                                    }.}.