1 entityList = new Array ();
2 charList = new Array ();
4 /* Really important entities */
5 entityList.push ("amp"); charList.push ("&"); /* This MUST be the first entity! */
6 entityList.push ("gt"); charList.push (">");
7 entityList.push ("lt"); charList.push ("<");
8 entityList.push ("quot"); charList.push ('"');
9 entityList.push ("apos"); charList.push ("'");
11 /* RFC 1866, section 14 */
12 entityList.push ("nbsp"); charList.push (unescape ("%a0"));
13 entityList.push ("iexcl"); charList.push (unescape ("%a1"));
14 entityList.push ("cent"); charList.push (unescape ("%a2"));
15 entityList.push ("pound"); charList.push (unescape ("%a3"));
16 entityList.push ("curren"); charList.push (unescape ("%a4"));
17 entityList.push ("yen"); charList.push (unescape ("%a5"));
18 entityList.push ("brvbar"); charList.push (unescape ("%a6"));
19 entityList.push ("sect"); charList.push (unescape ("%a7"));
20 entityList.push ("uml"); charList.push (unescape ("%a8"));
21 entityList.push ("copy"); charList.push (unescape ("%a9"));
22 entityList.push ("ordf"); charList.push (unescape ("%aa"));
23 entityList.push ("laquo"); charList.push (unescape ("%ab"));
24 entityList.push ("not"); charList.push (unescape ("%ac"));
25 entityList.push ("shy"); charList.push (unescape ("%ad"));
26 entityList.push ("reg"); charList.push (unescape ("%ae"));
27 entityList.push ("macr"); charList.push (unescape ("%af"));
28 entityList.push ("deg"); charList.push (unescape ("%b0"));
29 entityList.push ("plusmn"); charList.push (unescape ("%b1"));
30 entityList.push ("sup2"); charList.push (unescape ("%b2"));
31 entityList.push ("sup3"); charList.push (unescape ("%b3"));
32 entityList.push ("acute"); charList.push (unescape ("%b4"));
33 entityList.push ("micro"); charList.push (unescape ("%b5"));
34 entityList.push ("para"); charList.push (unescape ("%b6"));
35 entityList.push ("middot"); charList.push (unescape ("%b7"));
36 entityList.push ("cedil"); charList.push (unescape ("%b8"));
37 entityList.push ("sup1"); charList.push (unescape ("%b9"));
38 entityList.push ("ordm"); charList.push (unescape ("%ba"));
39 entityList.push ("raquo"); charList.push (unescape ("%bb"));
40 entityList.push ("frac14"); charList.push (unescape ("%bc"));
41 entityList.push ("frac12"); charList.push (unescape ("%bd"));
42 entityList.push ("frac34"); charList.push (unescape ("%be"));
43 entityList.push ("iquest"); charList.push (unescape ("%bf"));
44 entityList.push ("Agrave"); charList.push (unescape ("%c0"));
45 entityList.push ("Aacute"); charList.push (unescape ("%c1"));
46 entityList.push ("Acirc"); charList.push (unescape ("%c2"));
47 entityList.push ("Atilde"); charList.push (unescape ("%c3"));
48 entityList.push ("Auml"); charList.push (unescape ("%c4"));
49 entityList.push ("Aring"); charList.push (unescape ("%c5"));
50 entityList.push ("AElig"); charList.push (unescape ("%c6"));
51 entityList.push ("Ccedil"); charList.push (unescape ("%c7"));
52 entityList.push ("Egrave"); charList.push (unescape ("%c8"));
53 entityList.push ("Eacute"); charList.push (unescape ("%c9"));
54 entityList.push ("Ecirc"); charList.push (unescape ("%ca"));
55 entityList.push ("Euml"); charList.push (unescape ("%cb"));
56 entityList.push ("Igrave"); charList.push (unescape ("%cc"));
57 entityList.push ("Iacute"); charList.push (unescape ("%cd"));
58 entityList.push ("Icirc"); charList.push (unescape ("%ce"));
59 entityList.push ("Iuml"); charList.push (unescape ("%cf"));
60 entityList.push ("ETH"); charList.push (unescape ("%d0"));
61 entityList.push ("Ntilde"); charList.push (unescape ("%d1"));
62 entityList.push ("Ograve"); charList.push (unescape ("%d2"));
63 entityList.push ("Oacute"); charList.push (unescape ("%d3"));
64 entityList.push ("Ocirc"); charList.push (unescape ("%d4"));
65 entityList.push ("Otilde"); charList.push (unescape ("%d5"));
66 entityList.push ("Ouml"); charList.push (unescape ("%d6"));
67 entityList.push ("times"); charList.push (unescape ("%d7"));
68 entityList.push ("Oslash"); charList.push (unescape ("%d8"));
69 entityList.push ("Ugrave"); charList.push (unescape ("%d9"));
70 entityList.push ("Uacute"); charList.push (unescape ("%da"));
71 entityList.push ("Ucirc"); charList.push (unescape ("%db"));
72 entityList.push ("Uuml"); charList.push (unescape ("%dc"));
73 entityList.push ("Yacute"); charList.push (unescape ("%dd"));
74 entityList.push ("THORN"); charList.push (unescape ("%de"));
75 entityList.push ("szlig"); charList.push (unescape ("%df"));
76 entityList.push ("agrave"); charList.push (unescape ("%e0"));
77 entityList.push ("aacute"); charList.push (unescape ("%e1"));
78 entityList.push ("acirc"); charList.push (unescape ("%e2"));
79 entityList.push ("atilde"); charList.push (unescape ("%e3"));
80 entityList.push ("auml"); charList.push (unescape ("%e4"));
81 entityList.push ("aring"); charList.push (unescape ("%e5"));
82 entityList.push ("aelig"); charList.push (unescape ("%e6"));
83 entityList.push ("ccedil"); charList.push (unescape ("%e7"));
84 entityList.push ("egrave"); charList.push (unescape ("%e8"));
85 entityList.push ("eacute"); charList.push (unescape ("%e9"));
86 entityList.push ("ecirc"); charList.push (unescape ("%ea"));
87 entityList.push ("euml"); charList.push (unescape ("%eb"));
88 entityList.push ("igrave"); charList.push (unescape ("%ec"));
89 entityList.push ("iacute"); charList.push (unescape ("%ed"));
90 entityList.push ("icirc"); charList.push (unescape ("%ee"));
91 entityList.push ("iuml"); charList.push (unescape ("%ef"));
92 entityList.push ("eth"); charList.push (unescape ("%f0"));
93 entityList.push ("ntilde"); charList.push (unescape ("%f1"));
94 entityList.push ("ograve"); charList.push (unescape ("%f2"));
95 entityList.push ("oacute"); charList.push (unescape ("%f3"));
96 entityList.push ("ocirc"); charList.push (unescape ("%f4"));
97 entityList.push ("otilde"); charList.push (unescape ("%f5"));
98 entityList.push ("ouml"); charList.push (unescape ("%f6"));
99 entityList.push ("divide"); charList.push (unescape ("%f7"));
100 entityList.push ("oslash"); charList.push (unescape ("%f8"));
101 entityList.push ("ugrave"); charList.push (unescape ("%f9"));
102 entityList.push ("uacute"); charList.push (unescape ("%fa"));
103 entityList.push ("ucirc"); charList.push (unescape ("%fb"));
104 entityList.push ("uuml"); charList.push (unescape ("%fc"));
105 entityList.push ("yacute"); charList.push (unescape ("%fd"));
106 entityList.push ("thorn"); charList.push (unescape ("%fe"));
107 entityList.push ("yuml"); charList.push (unescape ("%ff"));
109 /* UTF-8 characters */
110 entityList.push ("OElig"); charList.push (unescape ("%u0152"));
111 entityList.push ("oelig"); charList.push (unescape ("%u0153"));
112 entityList.push ("Scaron"); charList.push (unescape ("%u0160"));
113 entityList.push ("scaron"); charList.push (unescape ("%u0161"));
114 entityList.push ("Yuml"); charList.push (unescape ("%u0178"));
115 entityList.push ("fnof"); charList.push (unescape ("%u0192"));
116 entityList.push ("circ"); charList.push (unescape ("%u02c6"));
117 entityList.push ("tilde"); charList.push (unescape ("%u02dc"));
118 entityList.push ("Alpha"); charList.push (unescape ("%u0391"));
119 entityList.push ("Beta"); charList.push (unescape ("%u0392"));
120 entityList.push ("Gamma"); charList.push (unescape ("%u0393"));
121 entityList.push ("Delta"); charList.push (unescape ("%u0394"));
122 entityList.push ("Epsilon"); charList.push (unescape ("%u0395"));
123 entityList.push ("Zeta"); charList.push (unescape ("%u0396"));
124 entityList.push ("Eta"); charList.push (unescape ("%u0397"));
125 entityList.push ("Theta"); charList.push (unescape ("%u0398"));
126 entityList.push ("Iota"); charList.push (unescape ("%u0399"));
127 entityList.push ("Kappa"); charList.push (unescape ("%u039a"));
128 entityList.push ("Lambda"); charList.push (unescape ("%u039b"));
129 entityList.push ("Mu"); charList.push (unescape ("%u039c"));
130 entityList.push ("Nu"); charList.push (unescape ("%u039d"));
131 entityList.push ("Xi"); charList.push (unescape ("%u039e"));
132 entityList.push ("Omicron"); charList.push (unescape ("%u039f"));
133 entityList.push ("Pi"); charList.push (unescape ("%u03a0"));
134 entityList.push ("Rho"); charList.push (unescape ("%u03a1"));
135 entityList.push ("Sigma"); charList.push (unescape ("%u03a3"));
136 entityList.push ("Tau"); charList.push (unescape ("%u03a4"));
137 entityList.push ("Upsilon"); charList.push (unescape ("%u03a5"));
138 entityList.push ("Phi"); charList.push (unescape ("%u03a6"));
139 entityList.push ("Chi"); charList.push (unescape ("%u03a7"));
140 entityList.push ("Psi"); charList.push (unescape ("%u03a8"));
141 entityList.push ("Omega"); charList.push (unescape ("%u03a9"));
142 entityList.push ("alpha"); charList.push (unescape ("%u03b1"));
143 entityList.push ("beta"); charList.push (unescape ("%u03b2"));
144 entityList.push ("gamma"); charList.push (unescape ("%u03b3"));
145 entityList.push ("delta"); charList.push (unescape ("%u03b4"));
146 entityList.push ("epsilon"); charList.push (unescape ("%u03b5"));
147 entityList.push ("zeta"); charList.push (unescape ("%u03b6"));
148 entityList.push ("eta"); charList.push (unescape ("%u03b7"));
149 entityList.push ("theta"); charList.push (unescape ("%u03b8"));
150 entityList.push ("iota"); charList.push (unescape ("%u03b9"));
151 entityList.push ("kappa"); charList.push (unescape ("%u03ba"));
152 entityList.push ("lambda"); charList.push (unescape ("%u03bb"));
153 entityList.push ("mu"); charList.push (unescape ("%u03bc"));
154 entityList.push ("nu"); charList.push (unescape ("%u03bd"));
155 entityList.push ("xi"); charList.push (unescape ("%u03be"));
156 entityList.push ("omicron"); charList.push (unescape ("%u03bf"));
157 entityList.push ("pi"); charList.push (unescape ("%u03c0"));
158 entityList.push ("rho"); charList.push (unescape ("%u03c1"));
159 entityList.push ("sigmaf"); charList.push (unescape ("%u03c2"));
160 entityList.push ("sigma"); charList.push (unescape ("%u03c3"));
161 entityList.push ("tau"); charList.push (unescape ("%u03c4"));
162 entityList.push ("upsilon"); charList.push (unescape ("%u03c5"));
163 entityList.push ("phi"); charList.push (unescape ("%u03c6"));
164 entityList.push ("chi"); charList.push (unescape ("%u03c7"));
165 entityList.push ("psi"); charList.push (unescape ("%u03c8"));
166 entityList.push ("omega"); charList.push (unescape ("%u03c9"));
167 entityList.push ("thetasym"); charList.push (unescape ("%u03d1"));
168 entityList.push ("upsih"); charList.push (unescape ("%u03d2"));
169 entityList.push ("piv"); charList.push (unescape ("%u03d6"));
170 entityList.push ("ensp"); charList.push (unescape ("%u2002"));
171 entityList.push ("emsp"); charList.push (unescape ("%u2003"));
172 entityList.push ("thinsp"); charList.push (unescape ("%u2009"));
173 entityList.push ("zwnj"); charList.push (unescape ("%u200c"));
174 entityList.push ("zwj"); charList.push (unescape ("%u200d"));
175 entityList.push ("lrm"); charList.push (unescape ("%u200e"));
176 entityList.push ("rlm"); charList.push (unescape ("%u200f"));
177 entityList.push ("ndash"); charList.push (unescape ("%u2013"));
178 entityList.push ("mdash"); charList.push (unescape ("%u2014"));
179 entityList.push ("lsquo"); charList.push (unescape ("%u2018"));
180 entityList.push ("rsquo"); charList.push (unescape ("%u2019"));
181 entityList.push ("sbquo"); charList.push (unescape ("%u201a"));
182 entityList.push ("ldquo"); charList.push (unescape ("%u201c"));
183 entityList.push ("rdquo"); charList.push (unescape ("%u201d"));
184 entityList.push ("bdquo"); charList.push (unescape ("%u201e"));
185 entityList.push ("dagger"); charList.push (unescape ("%u2020"));
186 entityList.push ("Dagger"); charList.push (unescape ("%u2021"));
187 entityList.push ("bull"); charList.push (unescape ("%u2022"));
188 entityList.push ("hellip"); charList.push (unescape ("%u2026"));
189 entityList.push ("permil"); charList.push (unescape ("%u2030"));
190 entityList.push ("prime"); charList.push (unescape ("%u2032"));
191 entityList.push ("Prime"); charList.push (unescape ("%u2033"));
192 entityList.push ("lsaquo"); charList.push (unescape ("%u2039"));
193 entityList.push ("rsaquo"); charList.push (unescape ("%u203a"));
194 entityList.push ("oline"); charList.push (unescape ("%u203e"));
195 entityList.push ("frasl"); charList.push (unescape ("%u2044"));
196 entityList.push ("euro"); charList.push (unescape ("%u20ac"));
197 entityList.push ("image"); charList.push (unescape ("%u2111"));
198 entityList.push ("weierp"); charList.push (unescape ("%u2118"));
199 entityList.push ("real"); charList.push (unescape ("%u211c"));
200 entityList.push ("trade"); charList.push (unescape ("%u2122"));
201 entityList.push ("alefsym"); charList.push (unescape ("%u2135"));
202 entityList.push ("larr"); charList.push (unescape ("%u2190"));
203 entityList.push ("uarr"); charList.push (unescape ("%u2191"));
204 entityList.push ("rarr"); charList.push (unescape ("%u2192"));
205 entityList.push ("darr"); charList.push (unescape ("%u2193"));
206 entityList.push ("harr"); charList.push (unescape ("%u2194"));
207 entityList.push ("crarr"); charList.push (unescape ("%u21b5"));
208 entityList.push ("lArr"); charList.push (unescape ("%u21d0"));
209 entityList.push ("uArr"); charList.push (unescape ("%u21d1"));
210 entityList.push ("rArr"); charList.push (unescape ("%u21d2"));
211 entityList.push ("dArr"); charList.push (unescape ("%u21d3"));
212 entityList.push ("hArr"); charList.push (unescape ("%u21d4"));
213 entityList.push ("forall"); charList.push (unescape ("%u2200"));
214 entityList.push ("part"); charList.push (unescape ("%u2202"));
215 entityList.push ("exist"); charList.push (unescape ("%u2203"));
216 entityList.push ("empty"); charList.push (unescape ("%u2205"));
217 entityList.push ("nabla"); charList.push (unescape ("%u2207"));
218 entityList.push ("isin"); charList.push (unescape ("%u2208"));
219 entityList.push ("notin"); charList.push (unescape ("%u2209"));
220 entityList.push ("ni"); charList.push (unescape ("%u220b"));
221 entityList.push ("prod"); charList.push (unescape ("%u220f"));
222 entityList.push ("sum"); charList.push (unescape ("%u2211"));
223 entityList.push ("minus"); charList.push (unescape ("%u2212"));
224 entityList.push ("lowast"); charList.push (unescape ("%u2217"));
225 entityList.push ("radic"); charList.push (unescape ("%u221a"));
226 entityList.push ("prop"); charList.push (unescape ("%u221d"));
227 entityList.push ("infin"); charList.push (unescape ("%u221e"));
228 entityList.push ("ang"); charList.push (unescape ("%u2220"));
229 entityList.push ("and"); charList.push (unescape ("%u2227"));
230 entityList.push ("or"); charList.push (unescape ("%u2228"));
231 entityList.push ("cap"); charList.push (unescape ("%u2229"));
232 entityList.push ("cup"); charList.push (unescape ("%u222a"));
233 entityList.push ("int"); charList.push (unescape ("%u222b"));
234 entityList.push ("there4"); charList.push (unescape ("%u2234"));
235 entityList.push ("sim"); charList.push (unescape ("%u223c"));
236 entityList.push ("cong"); charList.push (unescape ("%u2245"));
237 entityList.push ("asymp"); charList.push (unescape ("%u2248"));
238 entityList.push ("ne"); charList.push (unescape ("%u2260"));
239 entityList.push ("equiv"); charList.push (unescape ("%u2261"));
240 entityList.push ("le"); charList.push (unescape ("%u2264"));
241 entityList.push ("ge"); charList.push (unescape ("%u2265"));
242 entityList.push ("sub"); charList.push (unescape ("%u2282"));
243 entityList.push ("sup"); charList.push (unescape ("%u2283"));
244 entityList.push ("nsub"); charList.push (unescape ("%u2284"));
245 entityList.push ("sube"); charList.push (unescape ("%u2286"));
246 entityList.push ("supe"); charList.push (unescape ("%u2287"));
247 entityList.push ("oplus"); charList.push (unescape ("%u2295"));
248 entityList.push ("otimes"); charList.push (unescape ("%u2297"));
249 entityList.push ("perp"); charList.push (unescape ("%u22a5"));
250 entityList.push ("sdot"); charList.push (unescape ("%u22c5"));
251 entityList.push ("lceil"); charList.push (unescape ("%u2308"));
252 entityList.push ("rceil"); charList.push (unescape ("%u2309"));
253 entityList.push ("lfloor"); charList.push (unescape ("%u230a"));
254 entityList.push ("rfloor"); charList.push (unescape ("%u230b"));
255 entityList.push ("lang"); charList.push (unescape ("%u2329"));
256 entityList.push ("rang"); charList.push (unescape ("%u232a"));
257 entityList.push ("loz"); charList.push (unescape ("%u25ca"));
258 entityList.push ("spades"); charList.push (unescape ("%u2660"));
259 entityList.push ("clubs"); charList.push (unescape ("%u2663"));
260 entityList.push ("hearts"); charList.push (unescape ("%u2665"));
261 entityList.push ("diams"); charList.push (unescape ("%u2666"));
263 function encode_entities (str)
265 for (var i = 0; (i < entityList.length) && (i < charList.length); i++)
267 var entity = entityList[i];
268 var mchar = charList[i];
270 var re = new RegExp (mchar);
271 while (str.match (re))
273 str = str.replace (re, "&" + entity + ";");
280 function decode_entities (str)
282 if (!str.match (/&[A-Za-z0-9]+;/))
285 for (var i = 0; (i < entityList.length) && (i < charList.length); i++)
287 var entity = entityList[i];
288 var mchar = charList[i];
290 var re = new RegExp ("&" + entity + ";");
291 while (str.match (re))
293 str = str.replace (re, mchar);
296 if (!str.match (/&[A-Za-z0-9]+;/))