Browse code

TinyMCE version directories relocated to /tinymce/ directory, each with its own version numbers: 2, 3, 4 - Slight naming tweak to TinyMCE dropdown in site settings

Clarissa Walker authored on 2026/07/27 13:46:03
Showing 1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,325 +0,0 @@
1
-tinyMCEPopup.requireLangPack();
2
-
3
-var charmap = [
4
-	[' ',    ' ',  true, 'no-break space'],
5
-	['&',     '&',   true, 'ampersand'],
6
-	['"',    '"',   true, 'quotation mark'],
7
-// finance
8
-	['¢',    '¢',  true, 'cent sign'],
9
-	['€',    '€', true, 'euro sign'],
10
-	['£',   '£',  true, 'pound sign'],
11
-	['¥',     '¥',  true, 'yen sign'],
12
-// signs
13
-	['©',    '©',  true, 'copyright sign'],
14
-	['®',     '®',  true, 'registered sign'],
15
-	['™',   '™', true, 'trade mark sign'],
16
-	['‰',  '‰', true, 'per mille sign'],
17
-	['µ',   'µ',  true, 'micro sign'],
18
-	['·',  '·',  true, 'middle dot'],
19
-	['•',    '•', true, 'bullet'],
20
-	['…',  '…', true, 'three dot leader'],
21
-	['′',   '′', true, 'minutes / feet'],
22
-	['″',   '″', true, 'seconds / inches'],
23
-	['§',    '§',  true, 'section sign'],
24
-	['¶',    '¶',  true, 'paragraph sign'],
25
-	['ß',   'ß',  true, 'sharp s / ess-zed'],
26
-// quotations
27
-	['‹',  '‹', true, 'single left-pointing angle quotation mark'],
28
-	['›',  '›', true, 'single right-pointing angle quotation mark'],
29
-	['«',   '«',  true, 'left pointing guillemet'],
30
-	['»',   '»',  true, 'right pointing guillemet'],
31
-	['‘',   '‘', true, 'left single quotation mark'],
32
-	['’',   '’', true, 'right single quotation mark'],
33
-	['“',   '“', true, 'left double quotation mark'],
34
-	['”',   '”', true, 'right double quotation mark'],
35
-	['‚',   '‚', true, 'single low-9 quotation mark'],
36
-	['„',   '„', true, 'double low-9 quotation mark'],
37
-	['<',      '<',   true, 'less-than sign'],
38
-	['>',      '>',   true, 'greater-than sign'],
39
-	['≤',      '≤', true, 'less-than or equal to'],
40
-	['≥',      '≥', true, 'greater-than or equal to'],
41
-	['–',   '–', true, 'en dash'],
42
-	['—',   '—', true, 'em dash'],
43
-	['¯',    '¯',  true, 'macron'],
44
-	['‾',   '‾', true, 'overline'],
45
-	['¤',  '¤',  true, 'currency sign'],
46
-	['¦',  '¦',  true, 'broken bar'],
47
-	['¨',     '¨',  true, 'diaeresis'],
48
-	['¡',   '¡',  true, 'inverted exclamation mark'],
49
-	['¿',  '¿',  true, 'turned question mark'],
50
-	['ˆ',    'ˆ',  true, 'circumflex accent'],
51
-	['˜',   '˜',  true, 'small tilde'],
52
-	['°',     '°',  true, 'degree sign'],
53
-	['−',   '−', true, 'minus sign'],
54
-	['±',  '±',  true, 'plus-minus sign'],
55
-	['÷',  '÷',  true, 'division sign'],
56
-	['⁄',   '⁄', true, 'fraction slash'],
57
-	['×',   '×',  true, 'multiplication sign'],
58
-	['¹',    '¹',  true, 'superscript one'],
59
-	['²',    '²',  true, 'superscript two'],
60
-	['³',    '³',  true, 'superscript three'],
61
-	['¼',  '¼',  true, 'fraction one quarter'],
62
-	['½',  '½',  true, 'fraction one half'],
63
-	['¾',  '¾',  true, 'fraction three quarters'],
64
-// math / logical
65
-	['ƒ',    'ƒ',  true, 'function / florin'],
66
-	['∫',     '∫', true, 'integral'],
67
-	['∑',     '∑', true, 'n-ary sumation'],
68
-	['∞',   '∞', true, 'infinity'],
69
-	['√',   '√', true, 'square root'],
70
-	['∼',     '∼', false,'similar to'],
71
-	['≅',    '≅', false,'approximately equal to'],
72
-	['≈',   '≈', true, 'almost equal to'],
73
-	['≠',      '≠', true, 'not equal to'],
74
-	['≡',   '≡', true, 'identical to'],
75
-	['∈',    '∈', false,'element of'],
76
-	['∉',   '∉', false,'not an element of'],
77
-	['∋',      '∋', false,'contains as member'],
78
-	['∏',    '∏', true, 'n-ary product'],
79
-	['∧',     '∧', false,'logical and'],
80
-	['∨',      '∨', false,'logical or'],
81
-	['¬',     '¬',  true, 'not sign'],
82
-	['∩',     '∩', true, 'intersection'],
83
-	['∪',     '∪', false,'union'],
84
-	['∂',    '∂', true, 'partial differential'],
85
-	['∀',  '∀', false,'for all'],
86
-	['∃',   '∃', false,'there exists'],
87
-	['∅',   '∅', false,'diameter'],
88
-	['∇',   '∇', false,'backward difference'],
89
-	['∗',  '∗', false,'asterisk operator'],
90
-	['∝',    '∝', false,'proportional to'],
91
-	['∠',     '∠', false,'angle'],
92
-// undefined
93
-	['´',   '´',  true, 'acute accent'],
94
-	['¸',   '¸',  true, 'cedilla'],
95
-	['ª',    'ª',  true, 'feminine ordinal indicator'],
96
-	['º',    'º',  true, 'masculine ordinal indicator'],
97
-	['†',  '†', true, 'dagger'],
98
-	['‡',  '‡', true, 'double dagger'],
99
-// alphabetical special chars
100
-	['À',  'À',  true, 'A - grave'],
101
-	['Á',  'Á',  true, 'A - acute'],
102
-	['Â',   'Â',  true, 'A - circumflex'],
103
-	['Ã',  'Ã',  true, 'A - tilde'],
104
-	['Ä',    'Ä',  true, 'A - diaeresis'],
105
-	['Å',   'Å',  true, 'A - ring above'],
106
-	['Æ',   'Æ',  true, 'ligature AE'],
107
-	['Ç',  'Ç',  true, 'C - cedilla'],
108
-	['È',  'È',  true, 'E - grave'],
109
-	['É',  'É',  true, 'E - acute'],
110
-	['Ê',   'Ê',  true, 'E - circumflex'],
111
-	['Ë',    'Ë',  true, 'E - diaeresis'],
112
-	['Ì',  'Ì',  true, 'I - grave'],
113
-	['Í',  'Í',  true, 'I - acute'],
114
-	['Î',   'Î',  true, 'I - circumflex'],
115
-	['Ï',    'Ï',  true, 'I - diaeresis'],
116
-	['Ð',     'Ð',  true, 'ETH'],
117
-	['Ñ',  'Ñ',  true, 'N - tilde'],
118
-	['Ò',  'Ò',  true, 'O - grave'],
119
-	['Ó',  'Ó',  true, 'O - acute'],
120
-	['Ô',   'Ô',  true, 'O - circumflex'],
121
-	['Õ',  'Õ',  true, 'O - tilde'],
122
-	['Ö',    'Ö',  true, 'O - diaeresis'],
123
-	['Ø',  'Ø',  true, 'O - slash'],
124
-	['Œ',   'Œ',  true, 'ligature OE'],
125
-	['Š',  'Š',  true, 'S - caron'],
126
-	['Ù',  'Ù',  true, 'U - grave'],
127
-	['Ú',  'Ú',  true, 'U - acute'],
128
-	['Û',   'Û',  true, 'U - circumflex'],
129
-	['Ü',    'Ü',  true, 'U - diaeresis'],
130
-	['Ý',  'Ý',  true, 'Y - acute'],
131
-	['Ÿ',    'Ÿ',  true, 'Y - diaeresis'],
132
-	['Þ',   'Þ',  true, 'THORN'],
133
-	['à',  'à',  true, 'a - grave'],
134
-	['á',  'á',  true, 'a - acute'],
135
-	['â',   'â',  true, 'a - circumflex'],
136
-	['ã',  'ã',  true, 'a - tilde'],
137
-	['ä',    'ä',  true, 'a - diaeresis'],
138
-	['å',   'å',  true, 'a - ring above'],
139
-	['æ',   'æ',  true, 'ligature ae'],
140
-	['ç',  'ç',  true, 'c - cedilla'],
141
-	['è',  'è',  true, 'e - grave'],
142
-	['é',  'é',  true, 'e - acute'],
143
-	['ê',   'ê',  true, 'e - circumflex'],
144
-	['ë',    'ë',  true, 'e - diaeresis'],
145
-	['ì',  'ì',  true, 'i - grave'],
146
-	['í',  'í',  true, 'i - acute'],
147
-	['î',   'î',  true, 'i - circumflex'],
148
-	['ï',    'ï',  true, 'i - diaeresis'],
149
-	['ð',     'ð',  true, 'eth'],
150
-	['ñ',  'ñ',  true, 'n - tilde'],
151
-	['ò',  'ò',  true, 'o - grave'],
152
-	['ó',  'ó',  true, 'o - acute'],
153
-	['ô',   'ô',  true, 'o - circumflex'],
154
-	['õ',  'õ',  true, 'o - tilde'],
155
-	['ö',    'ö',  true, 'o - diaeresis'],
156
-	['ø',  'ø',  true, 'o slash'],
157
-	['œ',   'œ',  true, 'ligature oe'],
158
-	['š',  'š',  true, 's - caron'],
159
-	['ù',  'ù',  true, 'u - grave'],
160
-	['ú',  'ú',  true, 'u - acute'],
161
-	['û',   'û',  true, 'u - circumflex'],
162
-	['ü',    'ü',  true, 'u - diaeresis'],
163
-	['ý',  'ý',  true, 'y - acute'],
164
-	['þ',   'þ',  true, 'thorn'],
165
-	['ÿ',    'ÿ',  true, 'y - diaeresis'],
166
-    ['Α',   'Α',  true, 'Alpha'],
167
-	['Β',    'Β',  true, 'Beta'],
168
-	['Γ',   'Γ',  true, 'Gamma'],
169
-	['Δ',   'Δ',  true, 'Delta'],
170
-	['Ε', 'Ε',  true, 'Epsilon'],
171
-	['Ζ',    'Ζ',  true, 'Zeta'],
172
-	['Η',     'Η',  true, 'Eta'],
173
-	['Θ',   'Θ',  true, 'Theta'],
174
-	['Ι',    'Ι',  true, 'Iota'],
175
-	['Κ',   'Κ',  true, 'Kappa'],
176
-	['Λ',  'Λ',  true, 'Lambda'],
177
-	['Μ',      'Μ',  true, 'Mu'],
178
-	['Ν',      'Ν',  true, 'Nu'],
179
-	['Ξ',      'Ξ',  true, 'Xi'],
180
-	['Ο', 'Ο',  true, 'Omicron'],
181
-	['Π',      'Π',  true, 'Pi'],
182
-	['Ρ',     'Ρ',  true, 'Rho'],
183
-	['Σ',   'Σ',  true, 'Sigma'],
184
-	['Τ',     'Τ',  true, 'Tau'],
185
-	['Υ', 'Υ',  true, 'Upsilon'],
186
-	['Φ',     'Φ',  true, 'Phi'],
187
-	['Χ',     'Χ',  true, 'Chi'],
188
-	['Ψ',     'Ψ',  true, 'Psi'],
189
-	['Ω',   'Ω',  true, 'Omega'],
190
-	['α',   'α',  true, 'alpha'],
191
-	['β',    'β',  true, 'beta'],
192
-	['γ',   'γ',  true, 'gamma'],
193
-	['δ',   'δ',  true, 'delta'],
194
-	['ε', 'ε',  true, 'epsilon'],
195
-	['ζ',    'ζ',  true, 'zeta'],
196
-	['η',     'η',  true, 'eta'],
197
-	['θ',   'θ',  true, 'theta'],
198
-	['ι',    'ι',  true, 'iota'],
199
-	['κ',   'κ',  true, 'kappa'],
200
-	['λ',  'λ',  true, 'lambda'],
201
-	['μ',      'μ',  true, 'mu'],
202
-	['ν',      'ν',  true, 'nu'],
203
-	['ξ',      'ξ',  true, 'xi'],
204
-	['ο', 'ο',  true, 'omicron'],
205
-	['π',      'π',  true, 'pi'],
206
-	['ρ',     'ρ',  true, 'rho'],
207
-	['ς',  'ς',  true, 'final sigma'],
208
-	['σ',   'σ',  true, 'sigma'],
209
-	['τ',     'τ',  true, 'tau'],
210
-	['υ', 'υ',  true, 'upsilon'],
211
-	['φ',     'φ',  true, 'phi'],
212
-	['χ',     'χ',  true, 'chi'],
213
-	['ψ',     'ψ',  true, 'psi'],
214
-	['ω',   'ω',  true, 'omega'],
215
-// symbols
216
-	['ℵ', 'ℵ', false,'alef symbol'],
217
-	['ϖ',     'ϖ',  false,'pi symbol'],
218
-	['ℜ',    'ℜ', false,'real part symbol'],
219
-	['ϑ','ϑ',  false,'theta symbol'],
220
-	['ϒ',   'ϒ',  false,'upsilon - hook symbol'],
221
-	['℘',  '℘', false,'Weierstrass p'],
222
-	['ℑ',   'ℑ', false,'imaginary part'],
223
-// arrows
224
-	['←',    '←', true, 'leftwards arrow'],
225
-	['↑',    '↑', true, 'upwards arrow'],
226
-	['→',    '→', true, 'rightwards arrow'],
227
-	['↓',    '↓', true, 'downwards arrow'],
228
-	['↔',    '↔', true, 'left right arrow'],
229
-	['↵',   '↵', false,'carriage return'],
230
-	['⇐',    '⇐', false,'leftwards double arrow'],
231
-	['⇑',    '⇑', false,'upwards double arrow'],
232
-	['⇒',    '⇒', false,'rightwards double arrow'],
233
-	['⇓',    '⇓', false,'downwards double arrow'],
234
-	['⇔',    '⇔', false,'left right double arrow'],
235
-	['∴',  '∴', false,'therefore'],
236
-	['⊂',     '⊂', false,'subset of'],
237
-	['⊃',     '⊃', false,'superset of'],
238
-	['⊄',    '⊄', false,'not a subset of'],
239
-	['⊆',    '⊆', false,'subset of or equal to'],
240
-	['⊇',    '⊇', false,'superset of or equal to'],
241
-	['⊕',   '⊕', false,'circled plus'],
242
-	['⊗',  '⊗', false,'circled times'],
243
-	['⊥',    '⊥', false,'perpendicular'],
244
-	['⋅',    '⋅', false,'dot operator'],
245
-	['⌈',   '⌈', false,'left ceiling'],
246
-	['⌉',   '⌉', false,'right ceiling'],
247
-	['⌊',  '⌊', false,'left floor'],
248
-	['⌋',  '⌋', false,'right floor'],
249
-	['⟨',    '〈', false,'left-pointing angle bracket'],
250
-	['⟩',    '〉', false,'right-pointing angle bracket'],
251
-	['◊',     '◊', true,'lozenge'],
252
-	['♠',  '♠', false,'black spade suit'],
253
-	['♣',   '♣', true, 'black club suit'],
254
-	['♥',  '♥', true, 'black heart suit'],
255
-	['♦',   '♦', true, 'black diamond suit'],
256
-	[' ',    ' ', false,'en space'],
257
-	[' ',    ' ', false,'em space'],
258
-	[' ',  ' ', false,'thin space'],
259
-	['‌',    '‌', false,'zero width non-joiner'],
260
-	['‍',     '‍', false,'zero width joiner'],
261
-	['‎',     '‎', false,'left-to-right mark'],
262
-	['‏',     '‏', false,'right-to-left mark'],
263
-	['­',     '­',  false,'soft hyphen']
264
-];
265
-
266
-tinyMCEPopup.onInit.add(function() {
267
-	tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
268
-});
269
-
270
-function renderCharMapHTML() {
271
-	var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
272
-	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
273
-	var cols=-1;
274
-
275
-	for (i=0; i<charmap.length; i++) {
276
-		if (charmap[i][2]==true) {
277
-			cols++;
278
-			html += ''
279
-				+ '<td class="charmap">'
280
-				+ '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
281
-				+ charmap[i][1]
282
-				+ '</a></td>';
283
-			if ((cols+1) % charsPerRow == 0)
284
-				html += '</tr><tr height="' + tdHeight + '">';
285
-		}
286
-	 }
287
-
288
-	if (cols % charsPerRow > 0) {
289
-		var padd = charsPerRow - (cols % charsPerRow);
290
-		for (var i=0; i<padd-1; i++)
291
-			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
292
-	}
293
-
294
-	html += '</tr></table>';
295
-
296
-	return html;
297
-}
298
-
299
-function insertChar(chr) {
300
-	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
301
-
302
-	// Refocus in window
303
-	if (tinyMCEPopup.isWindow)
304
-		window.focus();
305
-
306
-	tinyMCEPopup.editor.focus();
307
-	tinyMCEPopup.close();
308
-}
309
-
310
-function previewChar(codeA, codeB, codeN) {
311
-	var elmA = document.getElementById('codeA');
312
-	var elmB = document.getElementById('codeB');
313
-	var elmV = document.getElementById('codeV');
314
-	var elmN = document.getElementById('codeN');
315
-
316
-	if (codeA=='#160;') {
317
-		elmV.innerHTML = '__';
318
-	} else {
319
-		elmV.innerHTML = '&' + codeA;
320
-	}
321
-
322
-	elmB.innerHTML = '&amp;' + codeA;
323
-	elmA.innerHTML = '&amp;' + codeB;
324
-	elmN.innerHTML = codeN;
325
-}
Browse code

Actually use TinyMCE 3.4.8 for TinyMCE3 option instead of original 2.0.1; that version is moved to 'tinymce2' directory

Clarissa Walker authored on 2026/07/27 09:02:31
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,325 @@
1
+tinyMCEPopup.requireLangPack();
2
+
3
+var charmap = [
4
+	['&nbsp;',    '&#160;',  true, 'no-break space'],
5
+	['&amp;',     '&#38;',   true, 'ampersand'],
6
+	['&quot;',    '&#34;',   true, 'quotation mark'],
7
+// finance
8
+	['&cent;',    '&#162;',  true, 'cent sign'],
9
+	['&euro;',    '&#8364;', true, 'euro sign'],
10
+	['&pound;',   '&#163;',  true, 'pound sign'],
11
+	['&yen;',     '&#165;',  true, 'yen sign'],
12
+// signs
13
+	['&copy;',    '&#169;',  true, 'copyright sign'],
14
+	['&reg;',     '&#174;',  true, 'registered sign'],
15
+	['&trade;',   '&#8482;', true, 'trade mark sign'],
16
+	['&permil;',  '&#8240;', true, 'per mille sign'],
17
+	['&micro;',   '&#181;',  true, 'micro sign'],
18
+	['&middot;',  '&#183;',  true, 'middle dot'],
19
+	['&bull;',    '&#8226;', true, 'bullet'],
20
+	['&hellip;',  '&#8230;', true, 'three dot leader'],
21
+	['&prime;',   '&#8242;', true, 'minutes / feet'],
22
+	['&Prime;',   '&#8243;', true, 'seconds / inches'],
23
+	['&sect;',    '&#167;',  true, 'section sign'],
24
+	['&para;',    '&#182;',  true, 'paragraph sign'],
25
+	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
26
+// quotations
27
+	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
28
+	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
29
+	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
30
+	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
31
+	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
32
+	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
33
+	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
34
+	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
35
+	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
36
+	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
37
+	['&lt;',      '&#60;',   true, 'less-than sign'],
38
+	['&gt;',      '&#62;',   true, 'greater-than sign'],
39
+	['&le;',      '&#8804;', true, 'less-than or equal to'],
40
+	['&ge;',      '&#8805;', true, 'greater-than or equal to'],
41
+	['&ndash;',   '&#8211;', true, 'en dash'],
42
+	['&mdash;',   '&#8212;', true, 'em dash'],
43
+	['&macr;',    '&#175;',  true, 'macron'],
44
+	['&oline;',   '&#8254;', true, 'overline'],
45
+	['&curren;',  '&#164;',  true, 'currency sign'],
46
+	['&brvbar;',  '&#166;',  true, 'broken bar'],
47
+	['&uml;',     '&#168;',  true, 'diaeresis'],
48
+	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
49
+	['&iquest;',  '&#191;',  true, 'turned question mark'],
50
+	['&circ;',    '&#710;',  true, 'circumflex accent'],
51
+	['&tilde;',   '&#732;',  true, 'small tilde'],
52
+	['&deg;',     '&#176;',  true, 'degree sign'],
53
+	['&minus;',   '&#8722;', true, 'minus sign'],
54
+	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
55
+	['&divide;',  '&#247;',  true, 'division sign'],
56
+	['&frasl;',   '&#8260;', true, 'fraction slash'],
57
+	['&times;',   '&#215;',  true, 'multiplication sign'],
58
+	['&sup1;',    '&#185;',  true, 'superscript one'],
59
+	['&sup2;',    '&#178;',  true, 'superscript two'],
60
+	['&sup3;',    '&#179;',  true, 'superscript three'],
61
+	['&frac14;',  '&#188;',  true, 'fraction one quarter'],
62
+	['&frac12;',  '&#189;',  true, 'fraction one half'],
63
+	['&frac34;',  '&#190;',  true, 'fraction three quarters'],
64
+// math / logical
65
+	['&fnof;',    '&#402;',  true, 'function / florin'],
66
+	['&int;',     '&#8747;', true, 'integral'],
67
+	['&sum;',     '&#8721;', true, 'n-ary sumation'],
68
+	['&infin;',   '&#8734;', true, 'infinity'],
69
+	['&radic;',   '&#8730;', true, 'square root'],
70
+	['&sim;',     '&#8764;', false,'similar to'],
71
+	['&cong;',    '&#8773;', false,'approximately equal to'],
72
+	['&asymp;',   '&#8776;', true, 'almost equal to'],
73
+	['&ne;',      '&#8800;', true, 'not equal to'],
74
+	['&equiv;',   '&#8801;', true, 'identical to'],
75
+	['&isin;',    '&#8712;', false,'element of'],
76
+	['&notin;',   '&#8713;', false,'not an element of'],
77
+	['&ni;',      '&#8715;', false,'contains as member'],
78
+	['&prod;',    '&#8719;', true, 'n-ary product'],
79
+	['&and;',     '&#8743;', false,'logical and'],
80
+	['&or;',      '&#8744;', false,'logical or'],
81
+	['&not;',     '&#172;',  true, 'not sign'],
82
+	['&cap;',     '&#8745;', true, 'intersection'],
83
+	['&cup;',     '&#8746;', false,'union'],
84
+	['&part;',    '&#8706;', true, 'partial differential'],
85
+	['&forall;',  '&#8704;', false,'for all'],
86
+	['&exist;',   '&#8707;', false,'there exists'],
87
+	['&empty;',   '&#8709;', false,'diameter'],
88
+	['&nabla;',   '&#8711;', false,'backward difference'],
89
+	['&lowast;',  '&#8727;', false,'asterisk operator'],
90
+	['&prop;',    '&#8733;', false,'proportional to'],
91
+	['&ang;',     '&#8736;', false,'angle'],
92
+// undefined
93
+	['&acute;',   '&#180;',  true, 'acute accent'],
94
+	['&cedil;',   '&#184;',  true, 'cedilla'],
95
+	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
96
+	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
97
+	['&dagger;',  '&#8224;', true, 'dagger'],
98
+	['&Dagger;',  '&#8225;', true, 'double dagger'],
99
+// alphabetical special chars
100
+	['&Agrave;',  '&#192;',  true, 'A - grave'],
101
+	['&Aacute;',  '&#193;',  true, 'A - acute'],
102
+	['&Acirc;',   '&#194;',  true, 'A - circumflex'],
103
+	['&Atilde;',  '&#195;',  true, 'A - tilde'],
104
+	['&Auml;',    '&#196;',  true, 'A - diaeresis'],
105
+	['&Aring;',   '&#197;',  true, 'A - ring above'],
106
+	['&AElig;',   '&#198;',  true, 'ligature AE'],
107
+	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
108
+	['&Egrave;',  '&#200;',  true, 'E - grave'],
109
+	['&Eacute;',  '&#201;',  true, 'E - acute'],
110
+	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
111
+	['&Euml;',    '&#203;',  true, 'E - diaeresis'],
112
+	['&Igrave;',  '&#204;',  true, 'I - grave'],
113
+	['&Iacute;',  '&#205;',  true, 'I - acute'],
114
+	['&Icirc;',   '&#206;',  true, 'I - circumflex'],
115
+	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
116
+	['&ETH;',     '&#208;',  true, 'ETH'],
117
+	['&Ntilde;',  '&#209;',  true, 'N - tilde'],
118
+	['&Ograve;',  '&#210;',  true, 'O - grave'],
119
+	['&Oacute;',  '&#211;',  true, 'O - acute'],
120
+	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
121
+	['&Otilde;',  '&#213;',  true, 'O - tilde'],
122
+	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
123
+	['&Oslash;',  '&#216;',  true, 'O - slash'],
124
+	['&OElig;',   '&#338;',  true, 'ligature OE'],
125
+	['&Scaron;',  '&#352;',  true, 'S - caron'],
126
+	['&Ugrave;',  '&#217;',  true, 'U - grave'],
127
+	['&Uacute;',  '&#218;',  true, 'U - acute'],
128
+	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
129
+	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
130
+	['&Yacute;',  '&#221;',  true, 'Y - acute'],
131
+	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
132
+	['&THORN;',   '&#222;',  true, 'THORN'],
133
+	['&agrave;',  '&#224;',  true, 'a - grave'],
134
+	['&aacute;',  '&#225;',  true, 'a - acute'],
135
+	['&acirc;',   '&#226;',  true, 'a - circumflex'],
136
+	['&atilde;',  '&#227;',  true, 'a - tilde'],
137
+	['&auml;',    '&#228;',  true, 'a - diaeresis'],
138
+	['&aring;',   '&#229;',  true, 'a - ring above'],
139
+	['&aelig;',   '&#230;',  true, 'ligature ae'],
140
+	['&ccedil;',  '&#231;',  true, 'c - cedilla'],
141
+	['&egrave;',  '&#232;',  true, 'e - grave'],
142
+	['&eacute;',  '&#233;',  true, 'e - acute'],
143
+	['&ecirc;',   '&#234;',  true, 'e - circumflex'],
144
+	['&euml;',    '&#235;',  true, 'e - diaeresis'],
145
+	['&igrave;',  '&#236;',  true, 'i - grave'],
146
+	['&iacute;',  '&#237;',  true, 'i - acute'],
147
+	['&icirc;',   '&#238;',  true, 'i - circumflex'],
148
+	['&iuml;',    '&#239;',  true, 'i - diaeresis'],
149
+	['&eth;',     '&#240;',  true, 'eth'],
150
+	['&ntilde;',  '&#241;',  true, 'n - tilde'],
151
+	['&ograve;',  '&#242;',  true, 'o - grave'],
152
+	['&oacute;',  '&#243;',  true, 'o - acute'],
153
+	['&ocirc;',   '&#244;',  true, 'o - circumflex'],
154
+	['&otilde;',  '&#245;',  true, 'o - tilde'],
155
+	['&ouml;',    '&#246;',  true, 'o - diaeresis'],
156
+	['&oslash;',  '&#248;',  true, 'o slash'],
157
+	['&oelig;',   '&#339;',  true, 'ligature oe'],
158
+	['&scaron;',  '&#353;',  true, 's - caron'],
159
+	['&ugrave;',  '&#249;',  true, 'u - grave'],
160
+	['&uacute;',  '&#250;',  true, 'u - acute'],
161
+	['&ucirc;',   '&#251;',  true, 'u - circumflex'],
162
+	['&uuml;',    '&#252;',  true, 'u - diaeresis'],
163
+	['&yacute;',  '&#253;',  true, 'y - acute'],
164
+	['&thorn;',   '&#254;',  true, 'thorn'],
165
+	['&yuml;',    '&#255;',  true, 'y - diaeresis'],
166
+    ['&Alpha;',   '&#913;',  true, 'Alpha'],
167
+	['&Beta;',    '&#914;',  true, 'Beta'],
168
+	['&Gamma;',   '&#915;',  true, 'Gamma'],
169
+	['&Delta;',   '&#916;',  true, 'Delta'],
170
+	['&Epsilon;', '&#917;',  true, 'Epsilon'],
171
+	['&Zeta;',    '&#918;',  true, 'Zeta'],
172
+	['&Eta;',     '&#919;',  true, 'Eta'],
173
+	['&Theta;',   '&#920;',  true, 'Theta'],
174
+	['&Iota;',    '&#921;',  true, 'Iota'],
175
+	['&Kappa;',   '&#922;',  true, 'Kappa'],
176
+	['&Lambda;',  '&#923;',  true, 'Lambda'],
177
+	['&Mu;',      '&#924;',  true, 'Mu'],
178
+	['&Nu;',      '&#925;',  true, 'Nu'],
179
+	['&Xi;',      '&#926;',  true, 'Xi'],
180
+	['&Omicron;', '&#927;',  true, 'Omicron'],
181
+	['&Pi;',      '&#928;',  true, 'Pi'],
182
+	['&Rho;',     '&#929;',  true, 'Rho'],
183
+	['&Sigma;',   '&#931;',  true, 'Sigma'],
184
+	['&Tau;',     '&#932;',  true, 'Tau'],
185
+	['&Upsilon;', '&#933;',  true, 'Upsilon'],
186
+	['&Phi;',     '&#934;',  true, 'Phi'],
187
+	['&Chi;',     '&#935;',  true, 'Chi'],
188
+	['&Psi;',     '&#936;',  true, 'Psi'],
189
+	['&Omega;',   '&#937;',  true, 'Omega'],
190
+	['&alpha;',   '&#945;',  true, 'alpha'],
191
+	['&beta;',    '&#946;',  true, 'beta'],
192
+	['&gamma;',   '&#947;',  true, 'gamma'],
193
+	['&delta;',   '&#948;',  true, 'delta'],
194
+	['&epsilon;', '&#949;',  true, 'epsilon'],
195
+	['&zeta;',    '&#950;',  true, 'zeta'],
196
+	['&eta;',     '&#951;',  true, 'eta'],
197
+	['&theta;',   '&#952;',  true, 'theta'],
198
+	['&iota;',    '&#953;',  true, 'iota'],
199
+	['&kappa;',   '&#954;',  true, 'kappa'],
200
+	['&lambda;',  '&#955;',  true, 'lambda'],
201
+	['&mu;',      '&#956;',  true, 'mu'],
202
+	['&nu;',      '&#957;',  true, 'nu'],
203
+	['&xi;',      '&#958;',  true, 'xi'],
204
+	['&omicron;', '&#959;',  true, 'omicron'],
205
+	['&pi;',      '&#960;',  true, 'pi'],
206
+	['&rho;',     '&#961;',  true, 'rho'],
207
+	['&sigmaf;',  '&#962;',  true, 'final sigma'],
208
+	['&sigma;',   '&#963;',  true, 'sigma'],
209
+	['&tau;',     '&#964;',  true, 'tau'],
210
+	['&upsilon;', '&#965;',  true, 'upsilon'],
211
+	['&phi;',     '&#966;',  true, 'phi'],
212
+	['&chi;',     '&#967;',  true, 'chi'],
213
+	['&psi;',     '&#968;',  true, 'psi'],
214
+	['&omega;',   '&#969;',  true, 'omega'],
215
+// symbols
216
+	['&alefsym;', '&#8501;', false,'alef symbol'],
217
+	['&piv;',     '&#982;',  false,'pi symbol'],
218
+	['&real;',    '&#8476;', false,'real part symbol'],
219
+	['&thetasym;','&#977;',  false,'theta symbol'],
220
+	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
221
+	['&weierp;',  '&#8472;', false,'Weierstrass p'],
222
+	['&image;',   '&#8465;', false,'imaginary part'],
223
+// arrows
224
+	['&larr;',    '&#8592;', true, 'leftwards arrow'],
225
+	['&uarr;',    '&#8593;', true, 'upwards arrow'],
226
+	['&rarr;',    '&#8594;', true, 'rightwards arrow'],
227
+	['&darr;',    '&#8595;', true, 'downwards arrow'],
228
+	['&harr;',    '&#8596;', true, 'left right arrow'],
229
+	['&crarr;',   '&#8629;', false,'carriage return'],
230
+	['&lArr;',    '&#8656;', false,'leftwards double arrow'],
231
+	['&uArr;',    '&#8657;', false,'upwards double arrow'],
232
+	['&rArr;',    '&#8658;', false,'rightwards double arrow'],
233
+	['&dArr;',    '&#8659;', false,'downwards double arrow'],
234
+	['&hArr;',    '&#8660;', false,'left right double arrow'],
235
+	['&there4;',  '&#8756;', false,'therefore'],
236
+	['&sub;',     '&#8834;', false,'subset of'],
237
+	['&sup;',     '&#8835;', false,'superset of'],
238
+	['&nsub;',    '&#8836;', false,'not a subset of'],
239
+	['&sube;',    '&#8838;', false,'subset of or equal to'],
240
+	['&supe;',    '&#8839;', false,'superset of or equal to'],
241
+	['&oplus;',   '&#8853;', false,'circled plus'],
242
+	['&otimes;',  '&#8855;', false,'circled times'],
243
+	['&perp;',    '&#8869;', false,'perpendicular'],
244
+	['&sdot;',    '&#8901;', false,'dot operator'],
245
+	['&lceil;',   '&#8968;', false,'left ceiling'],
246
+	['&rceil;',   '&#8969;', false,'right ceiling'],
247
+	['&lfloor;',  '&#8970;', false,'left floor'],
248
+	['&rfloor;',  '&#8971;', false,'right floor'],
249
+	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
250
+	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
251
+	['&loz;',     '&#9674;', true,'lozenge'],
252
+	['&spades;',  '&#9824;', false,'black spade suit'],
253
+	['&clubs;',   '&#9827;', true, 'black club suit'],
254
+	['&hearts;',  '&#9829;', true, 'black heart suit'],
255
+	['&diams;',   '&#9830;', true, 'black diamond suit'],
256
+	['&ensp;',    '&#8194;', false,'en space'],
257
+	['&emsp;',    '&#8195;', false,'em space'],
258
+	['&thinsp;',  '&#8201;', false,'thin space'],
259
+	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
260
+	['&zwj;',     '&#8205;', false,'zero width joiner'],
261
+	['&lrm;',     '&#8206;', false,'left-to-right mark'],
262
+	['&rlm;',     '&#8207;', false,'right-to-left mark'],
263
+	['&shy;',     '&#173;',  false,'soft hyphen']
264
+];
265
+
266
+tinyMCEPopup.onInit.add(function() {
267
+	tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
268
+});
269
+
270
+function renderCharMapHTML() {
271
+	var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
272
+	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
273
+	var cols=-1;
274
+
275
+	for (i=0; i<charmap.length; i++) {
276
+		if (charmap[i][2]==true) {
277
+			cols++;
278
+			html += ''
279
+				+ '<td class="charmap">'
280
+				+ '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
281
+				+ charmap[i][1]
282
+				+ '</a></td>';
283
+			if ((cols+1) % charsPerRow == 0)
284
+				html += '</tr><tr height="' + tdHeight + '">';
285
+		}
286
+	 }
287
+
288
+	if (cols % charsPerRow > 0) {
289
+		var padd = charsPerRow - (cols % charsPerRow);
290
+		for (var i=0; i<padd-1; i++)
291
+			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
292
+	}
293
+
294
+	html += '</tr></table>';
295
+
296
+	return html;
297
+}
298
+
299
+function insertChar(chr) {
300
+	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
301
+
302
+	// Refocus in window
303
+	if (tinyMCEPopup.isWindow)
304
+		window.focus();
305
+
306
+	tinyMCEPopup.editor.focus();
307
+	tinyMCEPopup.close();
308
+}
309
+
310
+function previewChar(codeA, codeB, codeN) {
311
+	var elmA = document.getElementById('codeA');
312
+	var elmB = document.getElementById('codeB');
313
+	var elmV = document.getElementById('codeV');
314
+	var elmN = document.getElementById('codeN');
315
+
316
+	if (codeA=='#160;') {
317
+		elmV.innerHTML = '__';
318
+	} else {
319
+		elmV.innerHTML = '&' + codeA;
320
+	}
321
+
322
+	elmB.innerHTML = '&amp;' + codeA;
323
+	elmA.innerHTML = '&amp;' + codeB;
324
+	elmN.innerHTML = codeN;
325
+}