AJAX core library: possible breaking change, readystatechange functions are now called with the XHR instance as the first parameter, to allow requests to run in parallel. This means much better stability but may break some applets (compatibility hack is included)
tinyMCEPopup.requireLangPack();
var charmap = [
[' ', ' ', true, 'no-break space'],
['&', '&', true, 'ampersand'],
['"', '"', true, 'quotation mark'],
// finance
['¢', '¢', true, 'cent sign'],
['€', '€', true, 'euro sign'],
['£', '£', true, 'pound sign'],
['¥', '¥', true, 'yen sign'],
// signs
['©', '©', true, 'copyright sign'],
['®', '®', true, 'registered sign'],
['™', '™', true, 'trade mark sign'],
['‰', '‰', true, 'per mille sign'],
['µ', 'µ', true, 'micro sign'],
['·', '·', true, 'middle dot'],
['•', '•', true, 'bullet'],
['…', '…', true, 'three dot leader'],
['′', '′', true, 'minutes / feet'],
['″', '″', true, 'seconds / inches'],
['§', '§', true, 'section sign'],
['¶', '¶', true, 'paragraph sign'],
['ß', 'ß', true, 'sharp s / ess-zed'],
// quotations
['‹', '‹', true, 'single left-pointing angle quotation mark'],
['›', '›', true, 'single right-pointing angle quotation mark'],
['«', '«', true, 'left pointing guillemet'],
['»', '»', true, 'right pointing guillemet'],
['‘', '‘', true, 'left single quotation mark'],
['’', '’', true, 'right single quotation mark'],
['“', '“', true, 'left double quotation mark'],
['”', '”', true, 'right double quotation mark'],
['‚', '‚', true, 'single low-9 quotation mark'],
['„', '„', true, 'double low-9 quotation mark'],
['<', '<', true, 'less-than sign'],
['>', '>', true, 'greater-than sign'],
['≤', '≤', true, 'less-than or equal to'],
['≥', '≥', true, 'greater-than or equal to'],
['–', '–', true, 'en dash'],
['—', '—', true, 'em dash'],
['¯', '¯', true, 'macron'],
['‾', '‾', true, 'overline'],
['¤', '¤', true, 'currency sign'],
['¦', '¦', true, 'broken bar'],
['¨', '¨', true, 'diaeresis'],
['¡', '¡', true, 'inverted exclamation mark'],
['¿', '¿', true, 'turned question mark'],
['ˆ', 'ˆ', true, 'circumflex accent'],
['˜', '˜', true, 'small tilde'],
['°', '°', true, 'degree sign'],
['−', '−', true, 'minus sign'],
['±', '±', true, 'plus-minus sign'],
['÷', '÷', true, 'division sign'],
['⁄', '⁄', true, 'fraction slash'],
['×', '×', true, 'multiplication sign'],
['¹', '¹', true, 'superscript one'],
['²', '²', true, 'superscript two'],
['³', '³', true, 'superscript three'],
['¼', '¼', true, 'fraction one quarter'],
['½', '½', true, 'fraction one half'],
['¾', '¾', true, 'fraction three quarters'],
// math / logical
['ƒ', 'ƒ', true, 'function / florin'],
['∫', '∫', true, 'integral'],
['∑', '∑', true, 'n-ary sumation'],
['∞', '∞', true, 'infinity'],
['√', '√', true, 'square root'],
['∼', '∼', false,'similar to'],
['≅', '≅', false,'approximately equal to'],
['≈', '≈', true, 'almost equal to'],
['≠', '≠', true, 'not equal to'],
['≡', '≡', true, 'identical to'],
['∈', '∈', false,'element of'],
['∉', '∉', false,'not an element of'],
['∋', '∋', false,'contains as member'],
['∏', '∏', true, 'n-ary product'],
['∧', '∧', false,'logical and'],
['∨', '∨', false,'logical or'],
['¬', '¬', true, 'not sign'],
['∩', '∩', true, 'intersection'],
['∪', '∪', false,'union'],
['∂', '∂', true, 'partial differential'],
['∀', '∀', false,'for all'],
['∃', '∃', false,'there exists'],
['∅', '∅', false,'diameter'],
['∇', '∇', false,'backward difference'],
['∗', '∗', false,'asterisk operator'],
['∝', '∝', false,'proportional to'],
['∠', '∠', false,'angle'],
// undefined
['´', '´', true, 'acute accent'],
['¸', '¸', true, 'cedilla'],
['ª', 'ª', true, 'feminine ordinal indicator'],
['º', 'º', true, 'masculine ordinal indicator'],
['†', '†', true, 'dagger'],
['‡', '‡', true, 'double dagger'],
// alphabetical special chars
['À', 'À', true, 'A - grave'],
['Á', 'Á', true, 'A - acute'],
['Â', 'Â', true, 'A - circumflex'],
['Ã', 'Ã', true, 'A - tilde'],
['Ä', 'Ä', true, 'A - diaeresis'],
['Å', 'Å', true, 'A - ring above'],
['Æ', 'Æ', true, 'ligature AE'],
['Ç', 'Ç', true, 'C - cedilla'],
['È', 'È', true, 'E - grave'],
['É', 'É', true, 'E - acute'],
['Ê', 'Ê', true, 'E - circumflex'],
['Ë', 'Ë', true, 'E - diaeresis'],
['Ì', 'Ì', true, 'I - grave'],
['Í', 'Í', true, 'I - acute'],
['Î', 'Î', true, 'I - circumflex'],
['Ï', 'Ï', true, 'I - diaeresis'],
['Ð', 'Ð', true, 'ETH'],
['Ñ', 'Ñ', true, 'N - tilde'],
['Ò', 'Ò', true, 'O - grave'],
['Ó', 'Ó', true, 'O - acute'],
['Ô', 'Ô', true, 'O - circumflex'],
['Õ', 'Õ', true, 'O - tilde'],
['Ö', 'Ö', true, 'O - diaeresis'],
['Ø', 'Ø', true, 'O - slash'],
['Œ', 'Œ', true, 'ligature OE'],
['Š', 'Š', true, 'S - caron'],
['Ù', 'Ù', true, 'U - grave'],
['Ú', 'Ú', true, 'U - acute'],
['Û', 'Û', true, 'U - circumflex'],
['Ü', 'Ü', true, 'U - diaeresis'],
['Ý', 'Ý', true, 'Y - acute'],
['Ÿ', 'Ÿ', true, 'Y - diaeresis'],
['Þ', 'Þ', true, 'THORN'],
['à', 'à', true, 'a - grave'],
['á', 'á', true, 'a - acute'],
['â', 'â', true, 'a - circumflex'],
['ã', 'ã', true, 'a - tilde'],
['ä', 'ä', true, 'a - diaeresis'],
['å', 'å', true, 'a - ring above'],
['æ', 'æ', true, 'ligature ae'],
['ç', 'ç', true, 'c - cedilla'],
['è', 'è', true, 'e - grave'],
['é', 'é', true, 'e - acute'],
['ê', 'ê', true, 'e - circumflex'],
['ë', 'ë', true, 'e - diaeresis'],
['ì', 'ì', true, 'i - grave'],
['í', 'í', true, 'i - acute'],
['î', 'î', true, 'i - circumflex'],
['ï', 'ï', true, 'i - diaeresis'],
['ð', 'ð', true, 'eth'],
['ñ', 'ñ', true, 'n - tilde'],
['ò', 'ò', true, 'o - grave'],
['ó', 'ó', true, 'o - acute'],
['ô', 'ô', true, 'o - circumflex'],
['õ', 'õ', true, 'o - tilde'],
['ö', 'ö', true, 'o - diaeresis'],
['ø', 'ø', true, 'o slash'],
['œ', 'œ', true, 'ligature oe'],
['š', 'š', true, 's - caron'],
['ù', 'ù', true, 'u - grave'],
['ú', 'ú', true, 'u - acute'],
['û', 'û', true, 'u - circumflex'],
['ü', 'ü', true, 'u - diaeresis'],
['ý', 'ý', true, 'y - acute'],
['þ', 'þ', true, 'thorn'],
['ÿ', 'ÿ', true, 'y - diaeresis'],
['Α', 'Α', true, 'Alpha'],
['Β', 'Β', true, 'Beta'],
['Γ', 'Γ', true, 'Gamma'],
['Δ', 'Δ', true, 'Delta'],
['Ε', 'Ε', true, 'Epsilon'],
['Ζ', 'Ζ', true, 'Zeta'],
['Η', 'Η', true, 'Eta'],
['Θ', 'Θ', true, 'Theta'],
['Ι', 'Ι', true, 'Iota'],
['Κ', 'Κ', true, 'Kappa'],
['Λ', 'Λ', true, 'Lambda'],
['Μ', 'Μ', true, 'Mu'],
['Ν', 'Ν', true, 'Nu'],
['Ξ', 'Ξ', true, 'Xi'],
['Ο', 'Ο', true, 'Omicron'],
['Π', 'Π', true, 'Pi'],
['Ρ', 'Ρ', true, 'Rho'],
['Σ', 'Σ', true, 'Sigma'],
['Τ', 'Τ', true, 'Tau'],
['Υ', 'Υ', true, 'Upsilon'],
['Φ', 'Φ', true, 'Phi'],
['Χ', 'Χ', true, 'Chi'],
['Ψ', 'Ψ', true, 'Psi'],
['Ω', 'Ω', true, 'Omega'],
['α', 'α', true, 'alpha'],
['β', 'β', true, 'beta'],
['γ', 'γ', true, 'gamma'],
['δ', 'δ', true, 'delta'],
['ε', 'ε', true, 'epsilon'],
['ζ', 'ζ', true, 'zeta'],
['η', 'η', true, 'eta'],
['θ', 'θ', true, 'theta'],
['ι', 'ι', true, 'iota'],
['κ', 'κ', true, 'kappa'],
['λ', 'λ', true, 'lambda'],
['μ', 'μ', true, 'mu'],
['ν', 'ν', true, 'nu'],
['ξ', 'ξ', true, 'xi'],
['ο', 'ο', true, 'omicron'],
['π', 'π', true, 'pi'],
['ρ', 'ρ', true, 'rho'],
['ς', 'ς', true, 'final sigma'],
['σ', 'σ', true, 'sigma'],
['τ', 'τ', true, 'tau'],
['υ', 'υ', true, 'upsilon'],
['φ', 'φ', true, 'phi'],
['χ', 'χ', true, 'chi'],
['ψ', 'ψ', true, 'psi'],
['ω', 'ω', true, 'omega'],
// symbols
['ℵ', 'ℵ', false,'alef symbol'],
['ϖ', 'ϖ', false,'pi symbol'],
['ℜ', 'ℜ', false,'real part symbol'],
['ϑ','ϑ', false,'theta symbol'],
['ϒ', 'ϒ', false,'upsilon - hook symbol'],
['℘', '℘', false,'Weierstrass p'],
['ℑ', 'ℑ', false,'imaginary part'],
// arrows
['←', '←', true, 'leftwards arrow'],
['↑', '↑', true, 'upwards arrow'],
['→', '→', true, 'rightwards arrow'],
['↓', '↓', true, 'downwards arrow'],
['↔', '↔', true, 'left right arrow'],
['↵', '↵', false,'carriage return'],
['⇐', '⇐', false,'leftwards double arrow'],
['⇑', '⇑', false,'upwards double arrow'],
['⇒', '⇒', false,'rightwards double arrow'],
['⇓', '⇓', false,'downwards double arrow'],
['⇔', '⇔', false,'left right double arrow'],
['∴', '∴', false,'therefore'],
['⊂', '⊂', false,'subset of'],
['⊃', '⊃', false,'superset of'],
['⊄', '⊄', false,'not a subset of'],
['⊆', '⊆', false,'subset of or equal to'],
['⊇', '⊇', false,'superset of or equal to'],
['⊕', '⊕', false,'circled plus'],
['⊗', '⊗', false,'circled times'],
['⊥', '⊥', false,'perpendicular'],
['⋅', '⋅', false,'dot operator'],
['⌈', '⌈', false,'left ceiling'],
['⌉', '⌉', false,'right ceiling'],
['⌊', '⌊', false,'left floor'],
['⌋', '⌋', false,'right floor'],
['⟨', '〈', false,'left-pointing angle bracket'],
['⟩', '〉', false,'right-pointing angle bracket'],
['◊', '◊', true,'lozenge'],
['♠', '♠', false,'black spade suit'],
['♣', '♣', true, 'black club suit'],
['♥', '♥', true, 'black heart suit'],
['♦', '♦', true, 'black diamond suit'],
[' ', ' ', false,'en space'],
[' ', ' ', false,'em space'],
[' ', ' ', false,'thin space'],
['‌', '‌', false,'zero width non-joiner'],
['‍', '‍', false,'zero width joiner'],
['‎', '‎', false,'left-to-right mark'],
['‏', '‏', false,'right-to-left mark'],
['­', '­', false,'soft hyphen']
];
tinyMCEPopup.onInit.add(function() {
tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
});
function renderCharMapHTML() {
var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
var cols=-1;
for (i=0; i<charmap.length; i++) {
if (charmap[i][2]==true) {
cols++;
html += ''
+ '<td class="charmap">'
+ '<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] + '">'
+ charmap[i][1]
+ '</a></td>';
if ((cols+1) % charsPerRow == 0)
html += '</tr><tr height="' + tdHeight + '">';
}
}
if (cols % charsPerRow > 0) {
var padd = charsPerRow - (cols % charsPerRow);
for (var i=0; i<padd-1; i++)
html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"> </td>';
}
html += '</tr></table>';
return html;
}
function insertChar(chr) {
tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
// Refocus in window
if (tinyMCEPopup.isWindow)
window.focus();
tinyMCEPopup.editor.focus();
tinyMCEPopup.close();
}
function previewChar(codeA, codeB, codeN) {
var elmA = document.getElementById('codeA');
var elmB = document.getElementById('codeB');
var elmV = document.getElementById('codeV');
var elmN = document.getElementById('codeN');
if (codeA=='#160;') {
elmV.innerHTML = '__';
} else {
elmV.innerHTML = '&' + codeA;
}
elmB.innerHTML = '&' + codeA;
elmA.innerHTML = '&' + codeB;
elmN.innerHTML = codeN;
}