import rt 3.8.7
[freeside.git] / rt / share / html / NoAuth / RichText / FCKeditor / editor / _source / internals / fckxhtmlentities.js
1 /*\r
2  * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
3  * Copyright (C) 2003-2009 Frederico Caldeira Knabben\r
4  *\r
5  * == BEGIN LICENSE ==\r
6  *\r
7  * Licensed under the terms of any of the following licenses at your\r
8  * choice:\r
9  *\r
10  *  - GNU General Public License Version 2 or later (the "GPL")\r
11  *    http://www.gnu.org/licenses/gpl.html\r
12  *\r
13  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
14  *    http://www.gnu.org/licenses/lgpl.html\r
15  *\r
16  *  - Mozilla Public License Version 1.1 or later (the "MPL")\r
17  *    http://www.mozilla.org/MPL/MPL-1.1.html\r
18  *\r
19  * == END LICENSE ==\r
20  *\r
21  * This file define the HTML entities handled by the editor.\r
22  */\r
23 \r
24 var FCKXHtmlEntities = new Object() ;\r
25 \r
26 FCKXHtmlEntities.Initialize = function()\r
27 {\r
28         if ( FCKXHtmlEntities.Entities )\r
29                 return ;\r
30 \r
31         var sChars = '' ;\r
32         var oEntities, e ;\r
33 \r
34         if ( FCKConfig.ProcessHTMLEntities )\r
35         {\r
36                 FCKXHtmlEntities.Entities = {\r
37                         // Latin-1 Entities\r
38                         ' ':'nbsp',\r
39                         '¡':'iexcl',\r
40                         '¢':'cent',\r
41                         '£':'pound',\r
42                         '¤':'curren',\r
43                         '¥':'yen',\r
44                         '¦':'brvbar',\r
45                         '§':'sect',\r
46                         '¨':'uml',\r
47                         '©':'copy',\r
48                         'ª':'ordf',\r
49                         '«':'laquo',\r
50                         '¬':'not',\r
51                         '­':'shy',\r
52                         '®':'reg',\r
53                         '¯':'macr',\r
54                         '°':'deg',\r
55                         '±':'plusmn',\r
56                         '²':'sup2',\r
57                         '³':'sup3',\r
58                         '´':'acute',\r
59                         'µ':'micro',\r
60                         '¶':'para',\r
61                         '·':'middot',\r
62                         '¸':'cedil',\r
63                         '¹':'sup1',\r
64                         'º':'ordm',\r
65                         '»':'raquo',\r
66                         '¼':'frac14',\r
67                         '½':'frac12',\r
68                         '¾':'frac34',\r
69                         '¿':'iquest',\r
70                         '×':'times',\r
71                         '÷':'divide',\r
72 \r
73                         // Symbols\r
74 \r
75                         'ƒ':'fnof',\r
76                         '•':'bull',\r
77                         '…':'hellip',\r
78                         '′':'prime',\r
79                         '″':'Prime',\r
80                         '‾':'oline',\r
81                         '⁄':'frasl',\r
82                         '℘':'weierp',\r
83                         'ℑ':'image',\r
84                         'ℜ':'real',\r
85                         '™':'trade',\r
86                         'ℵ':'alefsym',\r
87                         '←':'larr',\r
88                         '↑':'uarr',\r
89                         '→':'rarr',\r
90                         '↓':'darr',\r
91                         '↔':'harr',\r
92                         '↵':'crarr',\r
93                         '⇐':'lArr',\r
94                         '⇑':'uArr',\r
95                         '⇒':'rArr',\r
96                         '⇓':'dArr',\r
97                         '⇔':'hArr',\r
98                         '∀':'forall',\r
99                         '∂':'part',\r
100                         '∃':'exist',\r
101                         '∅':'empty',\r
102                         '∇':'nabla',\r
103                         '∈':'isin',\r
104                         '∉':'notin',\r
105                         '∋':'ni',\r
106                         '∏':'prod',\r
107                         '∑':'sum',\r
108                         '−':'minus',\r
109                         '∗':'lowast',\r
110                         '√':'radic',\r
111                         '∝':'prop',\r
112                         '∞':'infin',\r
113                         '∠':'ang',\r
114                         '∧':'and',\r
115                         '∨':'or',\r
116                         '∩':'cap',\r
117                         '∪':'cup',\r
118                         '∫':'int',\r
119                         '∴':'there4',\r
120                         '∼':'sim',\r
121                         '≅':'cong',\r
122                         '≈':'asymp',\r
123                         '≠':'ne',\r
124                         '≡':'equiv',\r
125                         '≤':'le',\r
126                         '≥':'ge',\r
127                         '⊂':'sub',\r
128                         '⊃':'sup',\r
129                         '⊄':'nsub',\r
130                         '⊆':'sube',\r
131                         '⊇':'supe',\r
132                         '⊕':'oplus',\r
133                         '⊗':'otimes',\r
134                         '⊥':'perp',\r
135                         '⋅':'sdot',\r
136                         '\u2308':'lceil',\r
137                         '\u2309':'rceil',\r
138                         '\u230a':'lfloor',\r
139                         '\u230b':'rfloor',\r
140                         '\u2329':'lang',\r
141                         '\u232a':'rang',\r
142                         '◊':'loz',\r
143                         '♠':'spades',\r
144                         '♣':'clubs',\r
145                         '♥':'hearts',\r
146                         '♦':'diams',\r
147 \r
148                         // Other Special Characters\r
149 \r
150                         '"':'quot',\r
151                 //      '&':'amp',              // This entity is automatically handled by the XHTML parser.\r
152                 //      '<':'lt',               // This entity is automatically handled by the XHTML parser.\r
153                         '>':'gt',                       // Opera and Safari don't encode it in their implementation\r
154                         'ˆ':'circ',\r
155                         '˜':'tilde',\r
156                         ' ':'ensp',\r
157                         ' ':'emsp',\r
158                         ' ':'thinsp',\r
159                         '‌':'zwnj',\r
160                         '‍':'zwj',\r
161                         '‎':'lrm',\r
162                         '‏':'rlm',\r
163                         '–':'ndash',\r
164                         '—':'mdash',\r
165                         '‘':'lsquo',\r
166                         '’':'rsquo',\r
167                         '‚':'sbquo',\r
168                         '“':'ldquo',\r
169                         '”':'rdquo',\r
170                         '„':'bdquo',\r
171                         '†':'dagger',\r
172                         '‡':'Dagger',\r
173                         '‰':'permil',\r
174                         '‹':'lsaquo',\r
175                         '›':'rsaquo',\r
176                         '€':'euro'\r
177                 } ;\r
178 \r
179                 // Process Base Entities.\r
180                 for ( e in FCKXHtmlEntities.Entities )\r
181                         sChars += e ;\r
182 \r
183                 // Include Latin Letters Entities.\r
184                 if ( FCKConfig.IncludeLatinEntities )\r
185                 {\r
186                         oEntities = {\r
187                                 'À':'Agrave',\r
188                                 'Á':'Aacute',\r
189                                 'Â':'Acirc',\r
190                                 'Ã':'Atilde',\r
191                                 'Ä':'Auml',\r
192                                 'Å':'Aring',\r
193                                 'Æ':'AElig',\r
194                                 'Ç':'Ccedil',\r
195                                 'È':'Egrave',\r
196                                 'É':'Eacute',\r
197                                 'Ê':'Ecirc',\r
198                                 'Ë':'Euml',\r
199                                 'Ì':'Igrave',\r
200                                 'Í':'Iacute',\r
201                                 'Î':'Icirc',\r
202                                 'Ï':'Iuml',\r
203                                 'Ð':'ETH',\r
204                                 'Ñ':'Ntilde',\r
205                                 'Ò':'Ograve',\r
206                                 'Ó':'Oacute',\r
207                                 'Ô':'Ocirc',\r
208                                 'Õ':'Otilde',\r
209                                 'Ö':'Ouml',\r
210                                 'Ø':'Oslash',\r
211                                 'Ù':'Ugrave',\r
212                                 'Ú':'Uacute',\r
213                                 'Û':'Ucirc',\r
214                                 'Ü':'Uuml',\r
215                                 'Ý':'Yacute',\r
216                                 'Þ':'THORN',\r
217                                 'ß':'szlig',\r
218                                 'à':'agrave',\r
219                                 'á':'aacute',\r
220                                 'â':'acirc',\r
221                                 'ã':'atilde',\r
222                                 'ä':'auml',\r
223                                 'å':'aring',\r
224                                 'æ':'aelig',\r
225                                 'ç':'ccedil',\r
226                                 'è':'egrave',\r
227                                 'é':'eacute',\r
228                                 'ê':'ecirc',\r
229                                 'ë':'euml',\r
230                                 'ì':'igrave',\r
231                                 'í':'iacute',\r
232                                 'î':'icirc',\r
233                                 'ï':'iuml',\r
234                                 'ð':'eth',\r
235                                 'ñ':'ntilde',\r
236                                 'ò':'ograve',\r
237                                 'ó':'oacute',\r
238                                 'ô':'ocirc',\r
239                                 'õ':'otilde',\r
240                                 'ö':'ouml',\r
241                                 'ø':'oslash',\r
242                                 'ù':'ugrave',\r
243                                 'ú':'uacute',\r
244                                 'û':'ucirc',\r
245                                 'ü':'uuml',\r
246                                 'ý':'yacute',\r
247                                 'þ':'thorn',\r
248                                 'ÿ':'yuml',\r
249                                 'Œ':'OElig',\r
250                                 'œ':'oelig',\r
251                                 'Š':'Scaron',\r
252                                 'š':'scaron',\r
253                                 'Ÿ':'Yuml'\r
254                         } ;\r
255 \r
256                         for ( e in oEntities )\r
257                         {\r
258                                 FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;\r
259                                 sChars += e ;\r
260                         }\r
261 \r
262                         oEntities = null ;\r
263                 }\r
264 \r
265                 // Include Greek Letters Entities.\r
266                 if ( FCKConfig.IncludeGreekEntities )\r
267                 {\r
268                         oEntities = {\r
269                                 'Α':'Alpha',\r
270                                 'Β':'Beta',\r
271                                 'Γ':'Gamma',\r
272                                 'Δ':'Delta',\r
273                                 'Ε':'Epsilon',\r
274                                 'Ζ':'Zeta',\r
275                                 'Η':'Eta',\r
276                                 'Θ':'Theta',\r
277                                 'Ι':'Iota',\r
278                                 'Κ':'Kappa',\r
279                                 'Λ':'Lambda',\r
280                                 'Μ':'Mu',\r
281                                 'Ν':'Nu',\r
282                                 'Ξ':'Xi',\r
283                                 'Ο':'Omicron',\r
284                                 'Π':'Pi',\r
285                                 'Ρ':'Rho',\r
286                                 'Σ':'Sigma',\r
287                                 'Τ':'Tau',\r
288                                 'Υ':'Upsilon',\r
289                                 'Φ':'Phi',\r
290                                 'Χ':'Chi',\r
291                                 'Ψ':'Psi',\r
292                                 'Ω':'Omega',\r
293                                 'α':'alpha',\r
294                                 'β':'beta',\r
295                                 'γ':'gamma',\r
296                                 'δ':'delta',\r
297                                 'ε':'epsilon',\r
298                                 'ζ':'zeta',\r
299                                 'η':'eta',\r
300                                 'θ':'theta',\r
301                                 'ι':'iota',\r
302                                 'κ':'kappa',\r
303                                 'λ':'lambda',\r
304                                 'μ':'mu',\r
305                                 'ν':'nu',\r
306                                 'ξ':'xi',\r
307                                 'ο':'omicron',\r
308                                 'π':'pi',\r
309                                 'ρ':'rho',\r
310                                 'ς':'sigmaf',\r
311                                 'σ':'sigma',\r
312                                 'τ':'tau',\r
313                                 'υ':'upsilon',\r
314                                 'φ':'phi',\r
315                                 'χ':'chi',\r
316                                 'ψ':'psi',\r
317                                 'ω':'omega',\r
318                                 '\u03d1':'thetasym',\r
319                                 '\u03d2':'upsih',\r
320                                 '\u03d6':'piv'\r
321                         } ;\r
322 \r
323                         for ( e in oEntities )\r
324                         {\r
325                                 FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;\r
326                                 sChars += e ;\r
327                         }\r
328 \r
329                         oEntities = null ;\r
330                 }\r
331         }\r
332         else\r
333         {\r
334                 FCKXHtmlEntities.Entities = {\r
335                         '>':'gt' // Opera and Safari don't encode it in their implementation\r
336                 } ;\r
337                 sChars = '>';\r
338 \r
339                 // Even if we are not processing the entities, we must render the &nbsp;\r
340                 // correctly. As we don't want HTML entities, let's use its numeric\r
341                 // representation (&#160).\r
342                 sChars += ' ' ;\r
343         }\r
344 \r
345         // Create the Regex used to find entities in the text.\r
346         var sRegexPattern = '[' + sChars + ']' ;\r
347 \r
348         if ( FCKConfig.ProcessNumericEntities )\r
349                 sRegexPattern = '[^ -~]|' + sRegexPattern ;\r
350 \r
351         var sAdditional = FCKConfig.AdditionalNumericEntities ;\r
352 \r
353         if ( sAdditional && sAdditional.length > 0 )\r
354                 sRegexPattern += '|' + FCKConfig.AdditionalNumericEntities ;\r
355 \r
356         FCKXHtmlEntities.EntitiesRegex = new RegExp( sRegexPattern, 'g' ) ;\r
357 }\r