A_vs_an

Validate use of English articles "a" and "an".

HTML

<label for="input-text">Enter text</label>
<textarea id="input-text" cols="50" rows="5">An wise man once said:
"A apple an day keeps the doctor away."
Give me an break.
I would like a apple. 
My daughter wants an hippopotamus for Christmas.
It was a honest error.
Did an user click the button?
A MSDS (material safety data sheet) was used to record the data.
I want a "apple".
He gave me an (big) apple.
</textarea>
<input type="button" value="Fix a/an" onclick="fixArticles(document.getElementById('input-text').value)">
<hr>
<div id="output-text" />

CSS

input,
label {
  display: block;
}

.changed {
  font-weight: bold;
}

JavaScript

function fixArticles(txt) {
  var valTxt = txt.replace(/\b(a|an) ([\s\(\"'“‘-]?\w*)\b/gim, function(match, article, following) {
    var input = following.replace(/^[\s\(\"'“‘-]+|\s+$/g, ""); //strip initial punctuation symbols
    var res = AvsAnSimple.query(input);
    var newArticle = res.replace(/^a/i, article.charAt(0));
    if (newArticle !== article) {
      newArticle = "<span class='changed'>" + newArticle + "</span>";
    }
    return newArticle + ' ' + following;
  });

  document.getElementById('output-text').innerHTML = valTxt.replace(/\n/gm, '<br/>');
}

// From https://github.com/EamonNerbonne/a-vs-an
var AvsAnSimple = function(n) {
  function i(n) {
    var r = parseInt(t, 36) || 0,
      f = r && r.toString(36).length,
      u, e;
    for (n.article = t[f] == "." ? "a" : "an", t = t.substr(1 + f), u = 0; u < r; u++) e = n[t[0]] = {}, t = t.substr(1), i(e)
  }
  var t = "2h.#2.a;i;&1.N;*4.a;e;i;o;/9.a;e;h1.o.i;l1./;n1.o.o;r1.e.s1./;01.8;12.1a;01.0;12.8;9;2.31.7;4.5.6.7.8.9.8a;0a.0;1;2;3;4;5;6;7;8;9;11; .22; .–.31; .42; .–.55; .,.h.k.m.62; .k.72; .–.82; .,.92; .–.8;<2.m1.d;o;=1.=1.E;@;A6;A1;A1.S;i1;r1;o.m1;a1;r1; .n1;d1;a1;l1;u1;c1.i1.a1.n;s1;t1;u1;r1;i1;a1;s.t1;h1;l1;e1;t1;e1.s;B2.h2.a1.i1;r1;a.á;o1.r1.d1. ;C3.a1.i1.s1.s.h4.a2.i1.s1;e.o1.i;l1.á;r1.o1.í;u2.i;r1.r1.a;o1.n1.g1.j;D7.a1.o1.q;i2.n1.a1.s;o1.t;u1.a1.l1.c;á1. ;ò;ù;ư;E7;U1;R.b1;o1;l1;i.m1;p1;e1;z.n1;a1;m.s1;p5.a1.c;e;h;o;r;u1.l1;o.w1;i.F11. ;,;.;/;0;1;2;3;4;5;6;71.0.8;9;Ae;B.C.D.F.I2.L.R.K.L.M.N.P.Q.R.S.T.B;C1;M.D;E2.C;I;F1;r.H;I3.A1;T.R1. ;U;J;L3.C;N;P;M;O1. ;P1;..R2.A1. ;S;S;T1;S.U2.,;.;X;Y1;V.c;f1.o.h;σ;G7.e1.r1.n1.e;h1.a3.e;i;o;i1.a1.n1.g;o2.f1. ;t1.t1. ;r1.i1.a;w1.a1.r1.r;ú;Hs. ;&;,;.2;A.I.1;2;3;5;7;B1;P.C;D;F;G;H1;I.I6;C.G.N.P.S1.D;T.K1.9;L;M1;..N;O2. ;V;P;R1;T.S1.F.T;V;e2.i1.r;r1.r1.n;o2.n6;d.e1.s;g.k.o2;l.r1;i1.f;v.u1.r;I3;I2;*.I.n1;d1;e1;p1;e1;n1;d2;e1;n1;c1;i.ê.s1;l1;a1;n1;d1;s.J1.i1.a1.o;Ly. ;,;.;1;2;3;4;8;A3. ;P;X;B;C;D;E2. ;D;F1;T.G;H1.D.I1.R;L;M;N;P;R;S1;m.T;U1....